2-1. 운영체제의 개념
운영체제는 사용자가 응용 프로그램을 실행할 수 있는 기반 환경을 제공하여 컴퓨터를 편리하게 사용할 수 있도록 도와주고, 하드웨어를 효율적으로 사용할 수 있도록 다양한 기능을 제공하는 소프트웨어이다.
소프트웨어
- 시스템 소프트웨어: 자원을 관리. 응용 프로그램 실행을 지원.
- 유틸리티: 응용 프로그램보다 작은 프로그램. 컴퓨터 처리 과정 보조.
- 응용프로그램:특정 작업을 수행하기 위한 프로그램.
운영체제의 역할
- 조정자
- 하드웨어와 소프트웨어, 데이터를 제어
- 작업을 할 수 있는 환경을 제공
- 자원 할당자/관리자
- 각 응용 프로그램에 필요한 자원을 할당
- 응용 프로그램과 입출력 제어자
- 하드웨어 사용 조정
- 응용 프로그램 실행 제어
- 입출력장치 동작, 통제
- 커널: 시스템 호출, 인터럽트에 응답. 운영체제에 상시 머물기 때문에 작을 수록 좋음.
2-2. 운영체제의 기능
자원 관리, 시스템 관리로 분류.
자원 관리
- 메모리 관리
- 메인 메모리 관리
- 프로세서가 직접 주소로 지정할 수 있는 메모리
- 명령어는 메인 메모리에 있어야 수행 가능 → 프로그램을 절대 주소로 저장해야 함
- 운영체제는 메모리에 저장할 프로세스 결정
- 보조기억장치 관리
- 대부분의 응용 프로그램은 용량 문제로, 메인 메모리에 적재되기 전엔 보조기억장치에 저장됨
- 운영체제는 메모리 접근 요청을 스케줄링 함
- 프로세스 관리
- 프로세스는 실행 중인 프로그램
- 프로세스는 자원이 있어야 업무를 수행할 수 있음
- 시스템 = 운영체제 프로세스 + 사용자 프로세스
- 모든 process는 processor를 분할하여 병행 수행 가능
- 운영체제는 프로세스와 스레드를 스케줄링, 프로세스 생성과 제거
- 주변장치 관리
- buffer-caching 시스템 기능 제공
- 파일(file/data) 관리
- 파일 위치 저장, 검색 관리
시스템 관리
- 시스템 보호
- 네트워킹
- 명령 해석기 (command interpreter)
용어 정리
- buffering
- 프로세서와 입출력장치의 속도 차이로 인한 유휴시간을 없애기 위해, 입출력장치별로 입출력 버퍼를 둠
- 프로세서가 연산을 할 때 동시에 다른 작업을 입출력 할 수 있음
- Spooling
- 속도가 빠른 디스크를 버퍼처럼 사용
- 프로세서에 일정한 디스크 공간과 테이블이 있어야 함
-
버퍼링 스풀링 버퍼(하드웨어)를 사용 별개의 오프라인 장치 사용 하나의 입출력 + 그에 대한 계산 여러 작업의 입출력과 계산
- 클라우드 컴퓨팅
- 자원, 스토리지, 소프트웨어를 서버 가상화 기술을 이용하여 제공
- Grid computing의 분산 컴퓨팅, Utility computing의 과금 모델, Server based computing의 처리 모델을 적용
- IaaS: Infrastructure as a Service. 데이터 센터에 있는 서버, 스토리지, 네트워크 등의 인프라와 자원을 가상화하여 제공
- PaaS: Platform … 통합 개발환경을 웹으로 제공
- SaaS: Software … 특정 소프트웨어를 인터넷으로 제공
2-3. 운영체제의 유형
- 일괄 처리 시스템
- 다중 프로그래밍 시스템
- 여러 프로그램을 메모리에 나눠 적재 후, 프로세서를 번갈아 할당
- 프로세서가 유휴 상태일 때 실행 중인 작업이 프로세서를 전환
- 프로세서 사용 극대화 + 여러 프로그램 동시 실행
- 다중 처리 시스템 (multiprocessing)
- 둘 이상의 프로세서를 이용해 동시에 둘 이상의 프로세스 지원
- 신뢰성 높음
- 주종적 구성 or 대칭적 구성
- 시분할 시스템 (Time Sharing System)
- 다중 프로그래밍 + 프로세서 스케줄링
- 일정한 프로세서 사용 시간 할당
- 실시간 처리 시스템 (real time processing system)
- 즉각 응답
- 경성(hard): 시간 제약 어기면 치명적
- 연성(soft): 시간 제약이 있지만 강제적X (ex. 동영상 재생)
- 분산 처리 시스템 (distributed precessing system)
- 시스템마다 독립적으로 운영, 필요할 때 통신
2-4. 운영체제의 서비스
- 부팅 서비스
- booting: 운영체제를 메인 메모리에 적재하는 과정
- 사용자 서비스
- 프로그래머의 쉬운 작업을 위함
- 인터페이스 제공 (CLI, 메뉴 인터페이스, GUI)
- 프로그램 실행: 메모리에 적재 + 프로세서 시간 할당
- 입출력 동작 수행
- 파일 시스템 조작: 디스크에 저장 시, 특정 블록에 할당
- 통신, 오류 탐지
- 시스템 서비스
- 자원 할당, 계정, 보호와 보안
- 시스템 호출 (system call)
- API (Application Programming Interfaces)형태로 제공됨
- 시스템 호출을 통해 OS 기능을 제공 받음
- 핵심 커널 서비스와 통신, 프로세스 생성과 실행, 하드웨어 관련 서비스가 존재
- 프로그램의 명령이나 서브 루틴의 호툴 or command interpreter 사용
2-5. 운영체제의 구조
- 단일(Monolithic) 구조 운영체제
- OS의 모든 기능을 커널과 동일한 메모리에 적재 후 System call로 사용
- ex) 도스, 초기 유닉스
- 대부분의 기능을 커널에 그룹화해서 구현
- 장점: 자원 관리가 효율적
- 단점: 커널 크기가 커지면서 오류 수정 힘듦, 유지 보수 어려움, 동일 메모리이기 때문에 신뢰성 낮음
- 계층 구조 운영체제
-
하드웨어 프로세서 스케줄링 메모리 관리 메시지 해석기 IO 관리 사용자 인터페이스 - 장점: 모듈화가 잘 되어 있음 (유지 보수, 설계가 편함)
- 단점: 인접한 계층으로 데이터 전달할 때 마다, system call이 발생하여 느림
-
- micro-kernel 구조 운영체제
- 커널에 최소 기능만 남기고 축소
- 커널의 기타 기능은 사용자 공간으로 이동
- 하드웨어 초기화, 메모리 관리, 프로세스 관리와 통신, 동기화 (프로세스 간 협력)등의 기본 기능만 실행
- 남은 대부분의 운영체제 구성 요소는 커널 외부(사용자 영역)에서 구현
- OS 서비스를 사용자 영역의 독립적인 서버에서 수행 → 서로 악영향 X, 개발 용이, OS 기능 변경 쉬움
- 장점: 모듈화 정도가 높음 → 확장성, 이식성, 규모 확장성이 높음
- 단점: 모듈 간 통신이 많아 성능 저하