JANGUN


운영체제


지음 : 김진욱



목차

제1장 운영체제 개요
제2장 프로세스
제3장 스케줄링 알고리즘
제4장 병행 프로세스
제5장 교착상태
제6장 메모리 관리
제7장 가상 메모리
제8장 장치 관리
제9장 저장장치
제10장 분산 운영체제
제11장 운영체제 보안
제12장 운영체제 사례


제1장 운영체제 개요

- 운영체제는 컴퓨터 시스템의 자원을 관리하고 컴퓨터 프로그램이 동작하기 위한 서비스를 제공하는 시스템 소프트웨어임
- 응용 프로그램은 하드웨어 자원을 직접 액세스할 수 없으며, 시스템 호출이라는 절차를 통해 필요한 서비스를 운영체제에게 요청하여야 함
- 커널은 응용 프로그램과 하드웨어 수준의 처리 사이의 가교 역할을 하는 운영체제의 핵심 요소로, 대표적인 두 가지로 일체형 커널과 마이크로 커널이 있음
- 운영체제의 주요 구성 요소에는 프로세스 관리자, 메모리 관리자, 장치 관리자, 파일 관리자가 있음
- 운영체제의 유형은 크게 일괄처리 운영체제, 대화형 운영체제, 실시간 운영체제, 그리고 하이브리드 운영체제로 분류됨



제2장 프로세스

- 프로세스는 실행 중인 프로그램을 의미하며, CPU, 메모리, 입출력장치, 파일 등 실행에 필요한 자원이 할당됨
- 프로세스는 생성, 준비, 실행, 대기, 종료의 다섯 상태 중 하나로 존재하며, CPU의 스케줄링, I/O 대기 등에 따라 준비, 실행, 대기 등으로 상태가 변화되며 동작함
- 프로세스 제어 블록(PCB)은 프로세스를 명시해 주는 다양한 내용을 포함하고 있음
- 쓰레드란 하나의 프로그램 내에서 제어의 단일 순차적 흐름으로 정의되며, 하나의 쓰레드 내에서는 하나의 실행점만이 존재하며, 각 쓰레드는 수행에 필요한 최소한의 정보만으로 구성됨
- 하나의 프로세스 내에는 하나 이상의 쓰레드가 있을 수 있어 쓰레드를 생성하여 프로세스 내에서 다중처리를 할 수 있음
- 프로세스의 스케줄링을 위해 상위단계, 하위단계 및 중간단계 스케줄러가 사용됨
- 스케줄링 기법 중 어떤 프로세스도 CPU를 빼앗길 수 없는 경우를 비선점이라 하며, 그렇지 않으면 선점이라고 함



제3장 스케줄링 알고리즘

- FCFS 스케줄링은 준비 큐에 도착한 순서에 따라 디스패치하는 비선점 방식의 스케줄링 알고리즘임
- SJF 스케줄링은 준비 큐에서 기다리는 프로세스 중 수행 시간이 가장 짧다고 예상되는 것을 먼저 디스패치하는 비선점 알고리즘임
- SRT 스케줄링은 실행이 끝날 때까지 남은 시간 추정치가 가장 짧은 프로세스를 먼저 디스패치하는 선점 방식의 알고리즘임
- RR 스케줄링은 정해진 시간 간격만큼씩 순서대로 돌려 가며 디스패치하는 선점 방식의 알고리즘임
- HRN 스케줄링은 대기시간과 서비스 받을 시간을 함께 고려한 우선순위에 따라 스케줄링하는 비선점 방식의 알고리즘임
- 다단계 피드백 큐 스케줄링은 입출력 위주의 프로세스(대화식 작업)가 CPU 스케줄링에 우선권을 갖도록 하는 선점 방식의 알고리즘임
- 다단계 피드백 큐 스케줄링은 각 단계의 큐마다 주어진 시간 할당량을 모두 소비하고 선점된 프로세스는 큰 단계 큐로 가고, 그렇지 않은 프로세스는 점차 작은 단계로 갈 수 있게 하는 적응적 방식의 변형도 있음



제4장 병행 프로세스

- 병행 시스템은 여러 개의 프로세스가 동시에 실행되며, 이들이 상호작용함에 따라 공유자원 점유, 동기화, 통신 등의 문제가 발생함
- 동기화는 2개 이상의 프로세스에 대한 처리 순서를 결정하는 것을 의미
- 2개 이상의 프로세스가 동시에 액세스하면 안 되는 공유 자원을 액세스하는 코드 영역을 임계영역이라고 함
- 2개 이상의 프로세스가 동시에 임계영역에 진입하지 못하도록 하는 것을 상호배제라고 함
- P와 V라는 원자연산에 의해서만 접근되는 정수형 공용변수인 세마포어를 이용하여 상호배제 및 동기화를 구현할 수 있음

- 생산자/소비자 문제는 상호배제와 동기화가 필요한 문제로 세마포어를 이용하여 구현할 수 있음
- 판독기/기록기 문제에서 판독기는 동시에 공유 데이터 객체에 접근할 수 있으나, 기록기는 배타적 접근이 필요함
- 프로세스 사이의 통신은 공유기억장치나 메시지 교환방식을 이용하여 구현함
- 메시지 전달은 수신자나 송신자의 이름을 명시하여 직접 통신을 하거나, 우편함을 통한 간접 통신을 통해 이루어짐



제5장 교착상태

- 교착상태(deadlock)는 2개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태임
- 교착상태의 필요조건은 상호배제, 점유 대기, 비선점, 환형 대기 조건이며, 이 조건들이 모두 만족될 경우 교착상태가 발생할 수 있음
- 교착상태를 처리하는 방법은 교착상태를 방지하는 방법, 교착상태를 회피하는 방법, 교착상태를 탐지하여 이를 복구하는 방법 등이 있음
- 교착상태를 방지하는 방법은 교착상태의 네 가지 필요조건 중 어느 하나라도 발생할 수 없도록 막는 방법임

- 교착상태를 처리하는 방법은 교착상태를 방지하는 방법, 교착상태를 회피하는 방법, 교착상태를 탐지하여 이를 복구하는 방법 등이 있음
- 교착상태 회피 방법은 프로세스의 자원 사용에 대한 사전 정보를 활용하여 교착상태가 발생할 수 있는 불안전상태가 되는 것을 피함
- 은행원 알고리즘은 프로세스가 요구한 자원을 할당해 줄 경우 안전 순서열이 존재하는지를 검사하여 요구 수용 여부를 결정함
- 변형된 자원할당 그래프에서 선언간선을 할당간선으로 바꾸어도 사이클이 발생하지 않는 안전상태일 경우 자원 요청을 수용함
- 교착상태 탐지 및 복구 방법은 교착상태가 발생하였는가를 탐지한 후, 희생자를 선택하여 프로세스를 중지시키거나 자원을 선점함



제6장 메모리 관리

- 프로세스가 실행되기 위해서는 수행될 명령이 메모리상에 존재해야 함
- 컴퓨터 시스템의 기억장치는 적은 비용으로 높은 성능을 제공하기 위해 계층적으로 구성됨
- 단일 프로그래밍 환경에서의 연속 메모리 할당기법은 관리기법이 단순하지만, 컴퓨터 자원을 효율적으로 사용하는 데 문제가 있음
- 다중 프로그래밍을 통해 CPU와 주변장치의 이용률을 높일 수 있음
- 고정 분할 방식은 정해진 크기의 분할 영역으로 메모리를 활용하는 방식으로 각 분할 영역에서 내부 단편화가 발생할 수 있음
- 동적 분할 방식은 각각의 작업에 필요한 만큼의 메모리를 할당함으로써 내부 단편화를 제거하지만 외부 단편화가 발생할 수 있음
- 외부 단편화는 통합과 집약기법으로 해결 가능
- 메모리 배치기법은 프로세스를 메모리의 어디에 배치할 것인가 하는 결정과 관련되어 있으며, 최초 적합, 후속 적합, 최적 적합, 최악 적합 기법이 있음



제7장 가상 메모리

- 가상 메모리는 메모리 크기보다 더 큰 기억공간을 사용하는 프로세스를 실행할 수 있음
- 프로세스에서 사용되는 가상주소는 동적 주소 변환을 통해 메모리의 실주소로 변환됨
- 연속적인 가상주소가 실주소 공간에서도 연속적일 필요는 없음
- 페이징 기법은 페이지라는 고정 크기 블록 단위로 기억장치를 관리함
- 세그먼테이션 기법은 모듈화에 따른 논리적 의미에 부합하는 다양한 크기의 세그먼트 단위로 기억장치를 관리함
- 요구 페이지 호출기법은 페이지가 필요한 시점에 메모리에 적재함
- 예상 페이지 호출기법은 앞으로 사용될 것으로 예상되는 페이지를 미리 메모리에 적재함

- 페이지 교체기법은 메모리가 완전히 사용되고 있을 때 새로이 적재되어야 할 페이지를 위하여 어느 페이지가 교체되어야 하는지에 관계됨
- 페이지 교체기법으로는 FIFO, LRU, LFU, NUR, 2차 기회, 클럭, 워킹세트, PFF 등이 있음
- 최적의 페이지 교체기법은 앞으로 가장 오랫동안 사용되지 않을 페이지를 선택하는 방법임
- 프로세스는 기억장치 내의 정보를 균일하게 액세스하는 것이 아니라, 어느 한 순간에는 특정 부분을 집중적으로 참조하는 국부성을 보임
- 워킹세트는 어떠한 시점을 기준으로 정해진 크기의 과거 시간 구간 동안 참조된 페이지의 집합임
- 워킹세트 알고리즘은 프로그램의 효율적 실행을 위해 워킹세트가 메모리 내에 유지되도록 함
- PFF 알고리즘의 기본 아이디어는 페이지 부재 비율이 높으면 페이지 프레임을 더 배정하고, 낮으면 회수하는 것임



제8장 장치 관리

- 운영체제에서 장치 관리자는 시스템의 모든 주변기기를 관리하며 입출력의 균형을 유지함
- 장치는 일반적으로 전용장치, 공유장치, 그리고 가상장치의 세 가지 범주로 구분됨
- 입출력이 발생하는 경우 이를 처리하는 방법으로 프로그램 방법, 인터럽트 방법, DMA 방법이 있음
- 프로그램 방법은 CPU가 입출력장치의 상태를 지속적으로 확인하여 CPU가 원하는 상태가 될 때까지 기다리는 폴링을 이용하는 방법임
- 인터럽트 방법은 어떤 장치가 다른 장치의 작업을 잠시 중단시키고 자신의 상태를 알리는 인터럽트를 이용하는 방법임
- DMA는 DMA 제어기를 이용하여 CPU를 통하지 않고 직접 주기억장치에 접근하여 데이터를 전송하는 방법임
- 장치와는 독립적으로 입출력을 관리하는 방법으로 버퍼링과 스풀링이 있음
- 버퍼링은 CPU의 데이터 처리 속도와 데이터 전송 속도의 차이로 인한 문제를 메모리의 일부를 일시적 데이터 저장 장소로 사용하는 버퍼를 이용하여 해결함
- 버퍼링에는 단일 버퍼링, 이중 버퍼링, 순환 버퍼링이 있음
- 스풀링은 입출력의 속도를 높이기 위하여 입출력 프로세스와 저속 입출력장치 사이의 데이터 전송을 자기 디스크와 같은 고속 장치를 통하도록 하는 방법임



제9장 저장장치

- 저장장치는 순차접근 저장장치와 직접접근 저장장치로 나뉨
- 직접접근 저장장치인 자기 디스크의 접근시간은 탐구시간, 회전지연시간, 전송시간으로 구성됨
- 디스크 스케줄링은 디스크 접근 요구를 효율적으로 처리하는 순서를 결정하는 작업으로, 탐구시간을 최소화하는 것이 중요함
- SSTF는 마지막으로 서비스 받은 요구에 가장 인접한 요구를 먼저 서비스하는 방법임
- SCAN은 현재의 진행 방향에 있는 모든 요구를 서비스하고 진행 방향의 마지막 실린더까지 진행한 후 방향을 바꾸어 동일하게 서비스하는 방법임
- N-Step SCAN은 새로이 도착하는 요구들은 다음번 되돌아올 때 서비스를 받도록 하는 방법임
- C-SCAN은 정해진 한 방향으로의 진행이 완료되면 디스크의 반대편 끝으로 점프한 후 다시 같은 방향으로 진행하며 서비스하는 방법임
- LOOK과 C-LOOK은 진행 방향에서 앞을 보고 서비스 요구가 없을 경우 더 이상 마지막 트랙까지 이동하지 않도록 하는 방법임
- SLTF는 회전시간 최적화를 위한 알고리즘으로, 일단 디스크 암이 특정 실린더에 도착하면 가장 짧은 회전지연을 갖는 요구를 우선적으로 서비스하는 방법임
- 파일 관리자는 파일의 생성, 수정, 삭제 연산, 파일의 공유 및 접근제어, 백업, 정보 보호 등의 기능을 수행함



제10장 분산 운영체제

- 분산 시스템은 네트워크를 통해 서로 약하게 결합된 프로세서들의 집합으로, 프로세서들은 각자의 메모리와 클럭을 사용함
- 분산 시스템의 목적은 자원 공유, 연산속도 향상, 신뢰성 향상, 통신의 용이성임
- 분산 운영체제는 사용자가 로컬 자원을 사용하는 것과 동일한 방식으로 원격지 자원을 사용할 수 있도록 함
- 분산 파일 시스템은 클라이언트가 서버에 저장된 파일을 마치 로컬 파일인 것처럼 처리할 수 있도록 함
- 분산 메모리는 분산 시스템에 연결된 컴퓨터들이 메모리를 공유할 수 있도록 하는 구조임
- 원격 메모리는 논리적 메모리를 정의하고 공유하도록 하는 메모리 API를 통해 분산 메모리를 구현함
- 분산 공유 메모리는 로컬 컴퓨터의 페이징 시스템을 확장하여 분산 메모리를 구현함
- 원격 프로시저 호출(RPC)을 통해 한 컴퓨터에서 작동하는 애플리케이션이 다른 컴퓨터에 있는 프로시저를 호출할 수 있음



제11장 운영체제 보안

- 운영체제 보안의 기본 목표는 기밀성, 무결성, 가용성의 세 가지임
- 정보 침해 위협 요소로는 흐름 차단, 가로채기, 변조, 위조 등이 있음
- 임의적 접근제어는 개별 사용자가 자율적 판단에 따라 보유하고 있는 자원의 접근권한을 다른 사용자에게 부여하는 기법임
- 강제적 접근제어는 각각의 객체의 비밀등급, 개별 사용자의 허가등급에 따라 제어가 이루어짐
- 역할 기반 접근통제에서는 사용자는 역할의 멤버가 됨으로써 권한을 배정받음
- 비밀키 암호 알고리즘은 암호화에 사용된 키를 일반에게 공개하지 않고, 이 키를 아는 자만이 볼 수 있도록 하는 알고리즘임
- 공개키 암호화 방식에서는 암호화에 공개키를, 복호화에 개인키를 사용함
- 참조 모니터는 주체와 객체의 접근권한을 정의한 데이터베이스를 참조하여 보안 정책을 수행함
- 벨-라파듈라 모델은 상위 보안 수준에서 하위 보안 수준으로 정보가 흐르는 것을 방지하는 것에 관심을 둠
- 비바 모델은 정보가 하위 보안 수준에서 상위 보안 수준으로 흐르는 것을 방지하는 것에 관심을 둠



제12장 운영체제 사례

- 리눅스 커널은 일체형(monolithic) 구조이며, GNU GPL하에 커널 소스를 공개함
- 임베디드 시스템이란 미리 정해진 특정한 기능들을 수행하기 위해 하드웨어와 소프트웨어가 결합된 특수 목적 컴퓨터 시스템임
- 실시간 운영체제는 정해진 시간 내에 필요한 결과를 얻을 수 있어야 함
- Windows 1.0은 퍼스널 컴퓨터에서 GUI 환경을 제공하기 위한 운영 환경
- Windows 95부터 32비트 운영체제의 형태를 갖춤
- Windows 9x 계열은 가정용 PC를 위한 운영체제, Windows NT는 서버 및 사무용 데스크톱 운영체제로 활용됨
- Windows NT는 멀티 쓰레드 마이크로 커널 기반 수정 마이크로 커널 운영체제임
- NT의 커널, 실행부 서브시스템, 커널 드라이버, 윈도우 관리자, GDI, I/O 관리자, 장치 드라이버 등은 커널 모드에서 동작함
- NT 실행부는 I/O 관리자, 객체 관리자, 프로세스 관리자, 가상 메모리 관리자 등 운영체제의 대부분의 기능을 포함함