본문 바로가기

운영체제/기본

운영체제의 발전(1) - Batch Monitor

운영체제의 발전(1) - Batch Monitor


50~60년대의 컴퓨터는 ENIAC 으로써 카드 덱(card deck)을 컴퓨터에 입력하는 방식으로 연산이 이루어졌다. 그 때 당시에 이 카드 덱 연산을 관리하는 주체는 사람(Human)이었기 때문에 하나의 Job을 수행한 뒤 다른 Job의 수행으로 넘어가는 데 많은 시간이 소모되었다.

- Job-to-Job transition에 너무 많은 시간이 소모되어 CPU utilization이 떨어졌다.

* Job : 프로그램 최소 실행 단위


따라서, 초기 운영체제(operating system)은 이러한 Job-to-Job transition 속도를 향상시켜 CPU utilization을 증가시키는 것이 주된 목적이었다.

그 목적을 달성한 최초 운영체제가 Batch Monitor이다. ( Batch : 동일한 속성들(Jobs)의 묶음)

결과적으로 Batch Monitor 운영체제를 이용하여 위 문제를 해결하고 CPU utilization을 향상시켰다.


그러나, CPU utilization을 감소시키는 다른 요인이 있었는데 그것이 I/O operation( input/output operation)이다.

즉, I/O operation을 수행할 때는 CPU가 idle해지므로 CPU utilization이 떨어진다는 것이다.

(I/O operation의 대표적인 예는 저장장치로부터 data read, 저장장치로 data write가 있다.)


컴퓨터 엔지니어들은 Batch Monitor이후 I/O operation에 의한 컴퓨터 성능저하를 막아보고자 H/W mechanism을 개발했다.

(성능저하를 극복하기위한 hardware의 발전)


I/O channel의 등장(Interrupt Mechanism)

I/O channel은 I/O operation을 I/O channel이 관리하고 CPU는 I/O operation의 시작과 끝만 관리한다는 것이다.

즉, CPU는 I/O channel에 I/O command만 전달하고 다른 일을 수행하는 것이다.

I/O channel은 I/O operation을 모두 마친 뒤에 그 결과를 "interrupt" 라는 mechanism을 이용해 CPU에게 전달한다.

-> Interrupt mechanism

결과적으로 Interrupt mechanism을 이용하여 I/O operation을 비동기처리(asynchronous)함으로써 CPU utilization을 향상시켰다.


그러나, 모든 I/O operation을 비동기처리(asynchronous)할 수 있는 것은 아니다.

저장장치로부터 데이터를 읽고 그 데이터를 처리하는 Job의 경우에는 반드시 데이터가 모두 읽힐때까지 기다려야 한다.

이러한 I/O operation을 동기(synchronous) I/O operation이라고 한다.


따라서, I/O operation은 크게 두 가지로 나뉜다

1) Synchronous I/O operation

- 해당 I/O operation이 모두 완료되어야만 CPU 연산이 가능

- 대표적으로 data read와 같은 input operation이 있다.


2) Asynchronous I/O operation

- 해당 I/O operation의 결과를 기다리지 않고도 CPU가 다음 명령들을 처리할 수 있다.

- 대표적으로 data write와 같은 output operation이 있다. ( 단, write가 모두 완료되었음을 요구하는 write command의 경우는 synchronous operation이다.)


결과적으로 I/O channel이라는 하드웨어를 도입하여 I/O interrupt mechanism을 개발함으로써 CPU utilization을 향상시켰다.


그렇다면, synchronous I/O operation인 경우에는 CPU가 Idle할 수 밖에 없는 것일까?

컴퓨터 엔지니어들은 이 부분을 해결하고 CPU utilization을 높이고 싶었다.

그 해결방법은 어떤 Job-(A)에서 sync I/O operation을 처리하는 경우에는 Job-(A)를 처리하지 않고 다른 Job-(B)를 처리하자는 것이다.

이 방법을 사용하면 sync I/O operation을 만났을 때도 CPU는 다른 Job을 처리함으로써 CPU idle time을 줄여 CPU utilization을 상승시킬 수 있을 것이다. 


이 해결책을 구현한 운영체제가 Multi-programmed Batch Monitor이다.