http://www.kocw.net/home/search/kemView.do?kemId=978503
컴퓨터의 역사
하드웨어의 발전에 따른 운영체제의 발전은 아래와 같이 진행되었다. 왜 그렇게 발전했는지를 생각하며 각각의 장점과 단점에 대해 배워보자.
1. no-OS
2. Batch processing system(일괄 처리 시스템)
3. Multi programming system(다중 프로그래밍 시스템)
4. Time sharing system(시공유 시스템)
no-OS
no-OS는 말 그대로 OS가 없는 것이다. OS가 없으므로 사용자가 알아서 모든 것을 관리해야 한다. no-OS의 동작을 간단히 나타내면 아래와 같다.
1. 소스 코드를 천공 종이로 만들고 카드리더기에 넣는다.
2. 컴파일러를 천공 종이를 카드리더기에 넣는다.
3. 처리기(processor)는 2에서 넣은 컴파일러를 통해 1의 소스코드를 기계어로 번역한다.
4. 처리기가 기계어를 실행한다.
5. 결과를 프린터에 찍는다.
no-OS는 너무 귀찮다. 천공을 뚫고 소스 코드를 카드 리더기에 넣고, 컴파일러도 넣고, 링킹하고, 로딩하고, ......하는 작업을 일일이 사람이 하는 것이 불편하다. 그냥 컴퓨터가 알아서 했으면 좋겠다.
Batch processing system(일괄 처리 시스템)
컴파일링 하고, 그다음 링킹 하고, 그다음 로딩하고... 이처럼 순서가 있는 작업을 한 번에 메모리에 넣는 것을 Batch processing system이라 한다. 뭐 하나 할 때마다 사람이 직접 일해야 했던 no-OS와는 달리 이젠 한 번만 입력해 주면 알아서 순서대로 실행된다. 이러한 순서가 있는 작업 뭉탱이는 사람이 입력하지 않더라도 다음 작업을 계속 말해줘야 하니 항상 memory에 상주한다. 따라서 이를 resident monitor라 부르기도 한다. 이것을 최초의 OS라 할 수 있다.
아래 그림에 있는 memory의 UP는 user program의 줄임 말으로서 순서에 따라 컴파일러가 실행되기도 하고 링크 프로그램이 실행되기도 하고 로딩 프로그램이 실행되기도 하는 공간이다.
Batch processing system은 no-OS의 문제점을 해결해 주지만 user program에서 print()와 같은 I/O 작업을 한다면 CPU는 해당 I/O 작업이 끝날 때까지 그냥 노는(idle) 상태가 되는 문제가 있다. 이게 왜 문제냐면 CPU가 배우 비싼 장비이기 때문이다. CPU는 비싼 장비니까 가능한 한 쉬지 않고 계속 일했으면 좋겠는데 I/O를 만나면 idle 상태가 되니까 너무 아까운 것이다. 게다가 I/O는 CPU 속도에 비하면 매우 느려서 idle 상태가 심지어 너무 길다는 것도 문제다.
I/O가 동작한다는 것은 user program에 I/O라는 작업이 실행 중인 것이고 user program은 현재 단 하나이므로 해당 I/O가 일을 끝낼 때까지 CPU는 기다려야 한다.
한마디로 CPU가 안 쉬고 쭉 일했으면 좋겠다.
Multi programming system(다중 프로그래밍 시스템)
main memory에 하나의 프로그램이 아니라 여러 프로그램을 올리는 것을 다중 프로그래밍 시스템이라고 한다. memory에 여러 user program을 올려놓고 진행 중인 user program에서 I/O 작업을 만난다면 그 시간 동안 그다음 user program을 실행하는 방식으로 Batch programming system에서 일어나는 CPU idle 문제를 해결한다. 쉽게 말하면 CPU에게 I/O 만났어? 그러면 쉬지 말고 그다음 거 하고 있어라고 말하는 것.
Multi programming system이 효율적으로 작동하기 위해서는 CPU scheduling, memory management, protection 세 가지가 효율적으로 작동해야 한다. CPU scheduling은 I/O를 만났을 때 CPU가 어느 순서로 user program을 실행해야 하는지를 정하는 것이고, memory management는 말 그대로 메모리를 관리하는 것으로서 여러 일을 하지만 단 적인 예로, user program2가 모든 일을 마쳐서 사라지고 새로운 user program이 들어왔다고 가정해 보자. 이 새로운 user program은 어디에 들어가야 할까. user program2의 자리에 들어가야 할까. 아니면 다른 자리에 들어가야 할까. memory management는 이러한 일들을 처리한다. 마지막으로 protection은 여러 user program을 실행하는 도중 서로의 영역을 침범하는 경우가 생기는데, 이를 막는 일을 한다.
하드웨어의 발전으로 60년대 후반, 70년대 초 <모니터, 키보드>가 만들어졌다. 이러한 HW의 발전으로 우리는 interactive 한 컴퓨터 사용이 가능해졌다. (e.g. 키보드를 누르면 화면에 해당 내용이 출력됨) 하지만 컴퓨터는 여전히 비쌌고 따라서 개인용 PC는 없고 하나의 컴퓨터에 여러 개의 단말기를 붙여 사용하는 방식으로 컴퓨터를 사용했다. 종단에는 (모니터, 키보드)만 있고 CPU는 없는 방식으로, 쉽게 말해 하나의 컴퓨터를 여러 사람이 나눠 쓴 것이다. 다중 프로그래밍 시스템은 user program1을 다 끝낸 뒤 user program2를 실행하고 user program2가 다 끝난 뒤 user program3을 실행하는 방식이므로, 만약 user program1이 100년이 걸리는 작업을 한다면 나머지 사람들은 100년 동안 컴퓨터를 사용하지 못하게 된다. 이건 너무 억울하다.
Time sharing system(시공유 시스템)
Time sharing system(시공유 시스템)은 user program의 완료 여부와 관계없이 그냥 일정 시간이 지나면 그다음 user program으로 넘어가는(스위칭) 방식이다. 이렇게 하면 multi programming system에서 발생하는 유저 한 명이 CPU를 오랫동안 독점하는 문제를 해결할 수 있다. 그리고 아래 그림에서는 1/100초라 했지만 실은 그보다 훨씬 짧은 시간만에 스위칭이 되기 때문에 사용자들은 이를 인식하지 못하고 자신이 계속 컴퓨터를 점유하고 있다고 느끼므로 사용자들이 불편을 호소하지도 않는다. 요즘 대부분의 OS는 TSS이다.
현재 진행 중인 user program에서 다음 user program으로 옮겨갈 때(스위칭할 때) 현재 진행 중인 user program의 진행 사항들을 저장하고 다음 user program의 정보들을 불러들이는 등의 여러 작업이 뒤따르므로 오버헤드가 존재한다.
https://ecomputernotes.com/fundamental/disk-operating-system/time-sharing-operating-system
'운영체제' 카테고리의 다른 글
운영체제 기본 6 - 프로세스 관리 (0) | 2023.01.19 |
---|---|
운영체제 기본 5 - 운영체제 서비스 (0) | 2023.01.19 |
운영체제 기본 4 - 이중 모드, 하드웨어 보호 (0) | 2023.01.19 |
운영체제 기본 3 - 인터럽트 기반 운영체제 (0) | 2023.01.19 |
운영체제 기본 1 - 운영체제 서론 (0) | 2023.01.19 |