해당 게시글은 서울대학교 홍성수 교수님의 운영체제 온라인 강의 내용을 보고 정리한 내용을 바탕으로 작성되었습니다.
☞ Operating System 은, 자료구조와 알고리즘을 포함하고 있다.
☞ Operating System 은 컴퓨터 시스템 중에서 가장 복잡한 시스템 중 하나이다.
☞ Operating System 은 하드웨어의 기술적 문제를 해결하기 위해서 진화되었다.
☞ Operating System 은 스마트 기기를 사용하는 사용자의 요구를 만족하기 위해 진화되었다.
Operator 의 역할,
(1) 사용자로부터 카드 덱을 수령
(2) 카드 덱을 컴퓨터 시스템에서 로딩하고 수행 (수행은 하나씩 하나씩)
(3) 수행 결과를 프린터로 출력
(4) 출력된 결과물을 사용자에게 전달
그리고 위와 같은 Operator 의 역할을 사람이 수행하였다. 이른바, Human Operator. 초기의 시스템은 컴퓨터 CPU 관점에서 보면 많은 비효율, 느린 장치, 한 job 처리하고 다른 사용자의 job 을 처리하는 과정. 이를 job To job Operator 라고 부르며 이 과정이 느리다.
이런 비효율적인 내용의 극복을 위하여 최초의 Operating System이 개발될 수 밖에 없었다. Batch Monitor 의 개발이다.
여러 개의 카드 덱 (Batch of jobs) 을 하나의 Tape 에 기록하고, 컴퓨터 시스템은 이 Tape 에 있는 job 들을 순차적으로 수행하였다. 이로 인해 CPU Utilization 을 극대화 시켰다. CPU Utilization 은 중요하다.
CPU Utilization 을 극대화시키기 위한 방안
I/O 하고 있을 때, CPU 는 idle 할 수 밖에 없다. 하지만 idle 하지 않고 CPU 는 그 시간에 다른 일을 하고있으면 좋겠다라는 필요성이 제기.
1) I/O Channel
위의 필요성 제기에 대한 결과로 CPU 와 I/O 연산 오버랩 하드웨어 메커니즘을 개발하였다. 바로 I/O Channel. CPU 를 대신하여 I/O 를 수행한다. (단, CPU 는 I/O Operation 의 시작가 끝만을 수행)
2) Interrupt
I/O 가 진행되는 동안 CPU 가 I/O 작업을 관리하면서 기다리고 있어야 함.
I/O Operation 모든 종류가 CPU 와 I/O Operation을 분리할 수 있는가? CPU 연산 & I/O 연산의 중복을 피한다. 결과적으로 I/O Operation 을 두 가지 종류로 분리.
Synchronous I/O
CPU 가 어떤 연산을 하다가 I/O 를 만드는 경우, 해당 I/O 수행이 종료해야만 다음의 연산 수행이 가능한 것이 동기 I/O 이다. 대부분의 Input Operation 이 여기에 해당한다.
Asynchronous I/O (CPU & IO Operation Overlapping)
CPU 가 I/O 를 만드는 경우, 그 결과를 기다리지 않고 다음 연산의 수행을 하는 것이 비동기 I/O 이다. 대부분의 Output Operation 이 여기에 해당한다. 하지만 항상 Output Operation 들이 비동기 I/O 에 해당하는 것은 또 아니다. 만약 Write 연산의 결과를 모니터링 해야한다면 동기적으로 해야하기 때문이다.
Synchronous IO 와 Asynchronous 의 차이는 CPU Utilization 이 작냐 혹은 크냐의 차이점을 지니고 있으며, 이런 문제의식 때문에 CPU 의 idle 을 최소화시키고 다른 유용한 연산을 동시에 다른 job 수행해야 한다는 이야기가 나온 것이다.
'운영체제 > 운영체제 강의 들은 것 정리' 카테고리의 다른 글
20181117 Introduction to OS 2 (0) | 2018.11.17 |
---|