※ 질문/내용오류/공유할 내용이 있다면 jinkilee73@gmail.com으로 메일 주세요 :-)
OS의 역할을 논의하기에 앞서서 OS의 구조에 대해서 이야기 해보자.
기존에는 Multi Programming OS를 사용하였다. 이의 단점이 점점 부각되면서 요즘에는 거의 모든 OS가 time-sharing OS이다. 두 구조의 가장 큰 차이점은 OS가 control을 넘겨주는 방식에 있다.
Multi Programming OS
이 구조의 목적은 CPU를 최대한 바쁘게 하자에 있다.
여러 사람의 사용자가 이러한 OS를 사용하고 있을 경우, 한 사용자가 입출력을 할 경우 control이 다른 사람에게 넘어가게 된다. 이 구조의 단점은 명확하다.
한 사람이 사용하고 있을 경우 : 혼자 사용하고 있을 때, 입출력이 발생하면 CPU는 아무 것도 못 한다. 따라서 CPU가 놀고 있는 현상이 발생한다. 비효율적이다.
여러 사람이 사용하고 있을 경우 : 한 사람이 CPU를 길게 사용하고 있으면 아무도 못 쓴다. 다른 사용자들은 마냥 기다려야한다.
(여기에서 말하는 입출력은 넓은 의미를 갖는다. Hard Disk에 있는 데이터들이 메모리에 load되는 것 역시 입출력의 일종이며, 키보드를 통해 글자를 입력하는 것, 모니터로 화면을 출력하는 것 역시 입출력의 일종이다.)
Time-sharing OS
time-sharing OS의 가장 큰 특징은 말 그대로 시간을 분할하여 프로세스가 작동한다는 것이다. 여러 개의 프로세스가 각각 분할된 시간에 할당되어 동작한다.
밑의 그림이 충분히 설명을 하고 있다고 믿는다. 수행해야할 프로세스가 P1부터 P5까지 다섯 개가 있으면 단위 시간 별로 쪼개서 각각을 수행한다. 이때 T1과 같은 시간들은 1/60초처럼 고정적인 시간이 될 수도 있고, 0.01 ~ 0.1초 사이의 random한 숫자도 될 수 있다.
위와 같이 다섯 개의 프로세스가 실행 중일 때, 분할된 시간마다 하나씩 들어가서 작동을 한다. 이 때 중요한 것은 각각의 프로세스가 끝나지 않았음에도 불구하고 다른 프로세스로 바뀐다는 점이다.
여기에서 운영체제의 중요한 역할이 드러난다. 바로 프로세스 관리이다. 기본적으로 쪼개진 단위 시간동안 프로세스를 번갈아가면서 실행시키는 이런 환경 아래에서 여러 개의 프로세스가 메모리에 load되어있을 때, 어떤 프로세스를 선택해서 실행시킬 것인가? Chapter 3에서 scheduler라는 제목으로 공부하게 될 것이다 :-)
프로세스가 실행되려면 해당 프로세스는 반드시 메모리에 load되어야 한다. 이 말은 반드시 메모리 특정 공간에 자리를 차지하고 있어야 한다는 뜻인데, 어느 자리에 프로세스를 load할 것인가? 이것 역시 운영체제가 담당하는 일이다. 또한 할당된 공간이 겹쳐서도 안 된다. (전문 용어로 메모리 충돌이라고 한다.)
위와 같은 현상을 막기 위해 OS는 여러 가지 메모리 관리 기법을 통해 문제를 해결한다. 이 문제는 나중에 자세하게 다룰 예정이다.
이러한 메모리 관리 기법을 알기 위해서는 storage의 구조를 이해하는 것이 필수적이다. 메모리와 CPU 사이의 시간 gap을 채우기 위해 흔히 cache를 이용한 caching기법을 많이 사용한다.
요즘 컴퓨터 시스템에서는 아래와 같은 구조의 storage structure를 사용한다.
위로 갈수록 속도는 빨라지되 용량은 줄어들고, 밑으로 갈수록 속도는 느려지되 용량은 많아진다. 여기서 OS가 담당하는 또 하나의 부분이 나온다. storage management이다. storage management는 사실 굉장히 광범위한 영역이다. 다음과 같이 두 부분으로 분류될 수 있다.
1. file management : storage에는 여러 파일들이 저장 및 삭제될 수 있다. 따라서 file management가 storage management의 일부분이 된다.
2. I/O management : 각 storage 계층 간의 input과 output은 I/O관리로 분류될 것이다. 흔히들 말하는 장치 관리자(device driver)에 관한 이야기가 여기에 속하게 된다.
또한 OS는 컴퓨터간의 네트워킹이 필요할 때 네트워크를 위한 기능을 담당하기도 한다. TCP/IP가 바로 그것이다. OSI 7 layers를 살펴볼 때, 3계층과 4계층을 이루는 IP와 TCP는 OS에 구현되어있다.
이 외에도 사용자가 해당 프로그램을 실행할 수 있는 환경을 제공하기 위해 shell이나 batch 또는 GUI 환경 역시 OS가 제공하는 기능 중에 하나이다.
'Operating Systems' 카테고리의 다른 글
[OS] 프로세스 상태(Process State) (2) | 2012.12.31 |
---|---|
[OS] Interrupt Service Routine (ISR) (2) | 2012.12.24 |
[OS] OS의 역할 (more details) (0) | 2012.12.24 |
[OS] 운영체제 공부를 시작하기에 앞서... (3) | 2012.12.24 |
시작하며... (0) | 2012.12.15 |