출처:
https://www.youtube.com/watch?v=nxl_cUd55Ag&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=2
Lec 02. OS overview
운영체제의 역할
운영체제의 구분
운영체제의 구조
운영체제의 기능
운영체제의 역할
- user interface (편리성)
- CUI (Character User Interface)
- GUI (Graphical User Interface)
- EUCI (End-Usr Comfortable Interface)
- Resource Management (효율성)
- HW resource (processor, memory, I/O devices...)
- SW resource (file, application, message, signal...)
- Process and Thread Management: 프로그램을 실행하는 주체(프로세스)를 관리
- System Management
컴퓨터 시스템의 구성
운영체제: 하드웨어를 관리하면서 사용자에게 서비스를 제공
kernel: 운영체제의 핵심
system call interface (시스템 라이브러리):
- 사용자가 직접 커널을 접근해서 조작하면 하드웨어에 문제가 생길 수 있음
필요한게 있으면, 커널에게 요청을 보내게 되고, 그 때 필요한 통로이다
- 커널이 제공하는 것들 기능 중에서 사용자가 사용할 수 있는 기능을 모아놓은 것들
운영체제의 구분
동시 사용자수에 따라 (이 운영체제를 혼자 쓰는지/ 여러명이서 쓰는지)
(1) single-user system
- 단 한명의 사용자만 시스템 사용 가능
- 한 명의 사용자가 모든 시스템 자원독점
- 자원관리 및 시스템 보호 방식이 간단함
- 개인용 장비(pc, mobile)등에 사용 (windows 7/10, android, MS-DOS)
(2) multi-user system
- 동시에 여러 사용자들이 시스템 사용
- 각종 시스템 자원(파일 등)들에 대한 소유 권한 관리 필요
- 기본적으로 multi-tasking 기능 필요
- os의 기능 및 구조가 복잡
- 서버, 클러스터 장비등에 사용 (unix, linux, windows server)
동시 실행 프로세스 수에 따라
(1) 단일작업(single tasking system)
- 시스템내에 하나의 작업(프로세스 -> 일단은, program이라고 생각하자)만 존재
- 하나의 프로그램 실행을 마친 뒤 다른 프로그램 실행
- 간단한 운영체제 구조 (예. MS-DOS)
(2) 다중작업(multi tasking system)
- 동시에 여러작업(프로세스)의 수행 가능
- 작업들 사이의 동시수행, 동기화 관리 필요
- 복잡한 운영체제의 기능, 구조 (예. unix/linux, windows)
작업 수행 방식에 따라
순차처리 (feat. 운영체제 발전 역사)
- 운영체제 개념이 존재하지 않음
- 사용자가 기계어로 직접 프로그램 작성
- 컴퓨터에 필요한 모든 작업 프로그램에 포함(프로세서에 명령어 저장 방법, 계산 대상 등)
- 실행하는 작업별 순차처리
(1) Batch processing system (1950-60)
- 모든 시스템을 중앙(전자 계산소 등)에서 관리 및 운영
- 사용자의 요청작업(천공카드 등)을 일정 시간 모아두었다가 한번에 처리
- java -> 파이썬으로 전환되는 준비 시간이 100번 해야될 것 한 번으로 줄어들게 됨
예. java로 짠 프로그램들 모이놓고, 파이썬으로 짠 프로그램들 모아놓고... 이렇게 각 언어별로 만든 뭉탱이 배치들을 모아놨다가 실행함
- 시스템 지향적
- 장점
- 많은 사용자가 시스템 자원 공유
- 처리 효율 향상
- 단점
- 생산성 저하; 같은 유형의 작업들이 모이기를 기다려야 함
- 개인적인 관점으로 보면, 나는 프로그램을 시스템에 한번 제출해놓고, 이게 언제 실행될지 모르니까
- 긴 응답시간; 약 6시간
(2) Time-sharing system (1960-70)
- 시분할 시스템
- 여러 사용자가 자원을 동시에 사용
- 사용자 지향적
- 장점
- 응답시간 단축
- 생산성 향상; 프로세서 유휴시간 감소
- 단점
- 통신 비용 증가 (단말기를 통해서 접속해야하므로)
- 개인 사용자 체감 속도 저하
- 동시 사용자 수 증가 -> 시스템 부하 증가 -> 속도 저하
이렇게 하나의 컴퓨터를 나눠쓰니까 답답쓰~
-> personal computing의 시작!
- 개인이 시스템 전체 독점
- cpu활용률이 중요 고려대상이 아님
- os가 단순함 -> 그러나 편리한 사용
- 빠른 응답시간 but 낮은 성능
Parellel Processing system
- 병렬 처리 시스템
- 단일 시스템 내에서 둘 이상의 프로세서 사용
- 메모리 등의 자원 공유 (tightly-coupled system)
- 사용목적
- 성능향상
- 신뢰성 향상 (cpu중 하나가 고장나도 정상 동작 가능)
- 프로세서 간의 관계 및 역할 관리 필요
(3) Distributed processing system
- 병렬 처리 시스템에서 발전됨 (그냥 컴퓨터를 여러대 붙이자)
- 네트워크(통신)를 기반으로 구축된 병렬 처리 시스템 (loosely coupled system)
- 물리적인 분산, 통신망을 이용한 상호 연결 (붙이기 쉬움)
- 각 노드 (붙어있는 컴퓨터들)은 각각 자기만의 os를 탑재한 다수의 범용 시스템으로 구성됨-> 각자 관리하면 힘드니까
- 사용자는 분산운영체제를 통해 하나의 프로그램, 자원처럼 사용 가능 (은폐성)
- 각 구성요소들 간의 독립성 유지, 공동작업 가능
예. cluster system, client-server system, P2P 등
- 장점
- 자원 공유를 통한 높은 성능
- 고신뢰성, 높은 확정성
- 단점
(4) real-time system
- 작업 처리에 제한 시간을 갖는 시스템
- 제한 시간내에 서비스를 제공하는 것이 자원활용 효율보다 중요
- 작업의 종류
- hard real-time task
- 시간제약을 못지키면 시스템에 치명적 영향
예. 원자력 온도 체크를 해서 1초만에 알려줘야 하는 시스템이 있다고 가정 -> 1초라는 제한 시간을 못지키면 큰일남!!
- soft real-time task
- non real-time task
운영체제의 구조
- 커널
- os의 핵심 부분(메모리에 항상 올라가있다)
- 가장 빈번하게 사용되는 기능들을 담당
- 시스템 관리(processor, memory...)
- 동의어
- 핵, 관리자(supervisor) 프로그램, 상주(resident) 프로그램, 제어(control) 프로그램 등
- 유틸리티
- 비상주 프로그램
- UI등 서비스 프로그램
단일 구조
운영체제 기능들을 하나의 거대한 커널로 모아놓은 것 -> 메인함수 안에 모든 것을 다 짜놓은 것이로 비유가능
- 장점
- 커널 내 모듈간 직접 통신가능 -> 빠르고 효율적으로 자원관리 및 사용 가능
- 단점
- 커널의 거대화 (기능이 추가됨에 따라...)
- 오류 및 버그, 추가/유지보수 어려움
- 동일 메모리에 모든 기능이 있어, 한 모듈의 문제가 전체 시스템에 영향을 줌 (예. 악성코드)
계층 구조
기능 별로 따로 떼어서 계층적으로 묶자!
- 장점
- 모듈화: 계층간 검증 및 수정 용이
- 설계 및 구현의 단순화
- 단점
- 단일 구조 대비 성능저하
- 원하는 기능 수행을 위해 여러 계층을 거쳐야함
마이크로 커널 구조
커널이 점점 커지니까 문제가 생겨서, 커널에는 진짜 필수적인 요소만 넣고 나머지는 사용자 영역에서 응용 프로그램처럼 실행을 하자
운영체제의 기능
프로세스 관리
- 프로세스란? (=/= 프로세서!!)
- 커널에 등록된 실행 단위 (실행 중인 프로그램)
- 사용자 요청/프로그램의 수행 주체(entity)
- os의 프로세스 관리 기능
- 생성/삭제, 상태 관리
- 자원 할당
- 프로세스 간 통신 및 동기화
- 교착상태(deadlock) 해결; 하나의 컴퓨팅 자원을 두고 여러 프로그램이 싸울때
- 프로세스 정보관리
- PCB(Process Control Block)
프로세서 관리
- 프로세서(CPU)를 누구한테 줄 것 인가
- 프로세스 스케줄링: 시스템 내의 프로세스 처리 순서 결정
- 프로세서 할당 관리: 프로세스들에 대한 프로세서 할당
메모리 관리
- 주기억장치: 작업을 위한 프로그램 및 데이터를 올려놓는 공간
- multi-user, multi-tasking 시스템
- 프로세스에 대한 메모리할당 및 회수
- 메모리 여유 공간 관리
- 각 프로세스의 할당 메모리 영역 접근 보호
- 메모리 할당 방법(스키마)
- 전체 적재
- 일부 적재(virtual memory concept)
- 프로그램 및 데이터의 일부만 적재
- 장점: 메모리의 효율적 활용
- 단점: 보조기억장치 접근 필요
파일 관리
- 파일: 논리적 데이터 저장 단위
- 사용자 및 시스템의 파일 관리
- 디렉토리 구조 지원
- 파일 관리 기능
- 파일 및 디렉토리 생성/삭제
- 파일 접근 및 조작
- 파일을 물리적 저장공간으로 mapping
- 백업
I/O 관리
- 프로세스가 키보드에 직접 입출력 불가. 반드시 os를 거쳐야함
그 밖에...
- 디스크
- 네트워크
- 보안
- command interpreter system
- system call interface