[운영체제 기초]2. 역사
역사
학습목표
- 현대의 운영체제로 발전하게된 계기와 과정을 설명할 수 있다.
1. 운영체제가 없던 시절 (1940년대)
아주 옛날 초창기의 컴퓨터에는 OS가 없었다.
프로그래머는 프로그램의 소스코드를 천공카드에 작성했으며, 컴파일러를 탑재, 라이브러리 링크, 메모리 로드 등의 작업들을 직접 처리해야했다.
코드를 실행하는것 외에도 컴퓨터를 구동하기 위해 할일이 매우 많았던것이다.
그래서 이런 부수적인 업무를 담당하는 오퍼레이터(Operator)라는 별도의 직군이 존재했다.
2. 일괄처리 시스템(Batch processing system)
일련의 작업들을 오퍼레이터가 수작업으로 처리하는 상황은 굉장히 불편했다.
그래서 당시 사람들은 오퍼레이터의 업무를 대신 수행하는 프로그램을 만들자는 생각에 도달했고 이것이 일괄처리 시스템이 탄생하게된 배경이 되었다.
그렇게 메모리에 상주하면서 오퍼레이터의 컴파일러 탑재, 라이브러리 링크, 메모리 로드 등의 업무를 일괄적으로 처리하는 프로그램을 만들게 된다.
이렇게 탄생한 프로그램이 최초의 OS였으며 Resident monitor라고 불렸다.
3. 다중프로그래밍 시스템(Multiprogramming system)
다중프로그래밍 시스템 이전의 OS는 메모리의 프로세스 중 1개만을 실행할 수 있었다.
실행중인 프로세스가 작업이 끝나면 다음 프로세스를 처리하는 방식이었다.
CPU의 처리속도는 I/O와 비교하면 굉장히 빠른 속도이다.
그래서 프로세스를 처리할 때 I/O처리작업이 있는 경우에는 CPU가 I/O의 작업이 완료되기를 기다려야했다.
당시 CPU는 굉장히 비싼 자원이었는데, CPU를 활용하지 못하고 놀리는 상황(Idle)이 발생할때마다 금전적으로나 시간적으로나 손해를 보는셈이었다.
그래서 사람들은 프로세스를 처리하는 방식을 변경해서 CPU를 최대한 활용하려는 시도를 하게된다.
프로세스에서 I/O작업을 만나면, CPU가 다음 프로세스로 이동해 계속해서 쉬지않고 처리할 수 있도록 하는 방안을 고안했는데, 바로 다중프로그래밍 시스템이다.
하지만 다중프로그래밍의 탄생은 또 다른 문제거리들을 해결해야만 했다.
그건 바로 기존의 단일 프로그래밍 시스템에서는 신경쓰지 않아도 됐을 CPU 스케쥴링, 메모리관리, 보호 등 이었다.
4. 시분할 시스템(Time-sharing system)
다중프로그래밍 시스템의 시대가 되면서 컴퓨터는 동시에 더 많은 일들을 할 수 있게 되었다.
그러나 컴퓨터는 여전히 비싼 자원이었기 때문에 여러 사람이 컴퓨터를 같이 사용해야 하는 상황이었다.
그래서 당시에는 컴퓨터를 대화식으로 사용하려는 시도가있었다.
사람들은 컴퓨터와 연결된 터미널을 통해서 요청과 응답을 했는데, 컴퓨터 한대에 여러대의 모니터와 입력장치가 연결된 형태였다.
여러 사람이 같이 컴퓨터를 사용하게 되면서 어떤 문제에 직면하게된다.
그것은 바로 사용자에게 균일하게 CPU를 분배할 수 없다는점이었다.
기존의 다중 프로그래밍 시스템에서는 I/O작업을 만나야 CPU가 다음 프로세스로 이동할 수 있었다.
그런데 만약 프로세스가 계산이 오래걸리거나, 무한루프에 빠지게 되는 경우에는 CPU가 다음 프로세스로 이동하지 못해 프로세스가 순환하지 않는 상황이 발생했다.
이런 경우에는 한명의 유저가 CPU를 차지하는 동안 다른 유저들은 처리중인 프로세스가 완료될 때 까지 대기할 수 밖에 없었다.
그래서 컴퓨터를 여러 사용자가 사용하는 환경에서 발생하는 문제를 해결하기 위해 시분할 시스템이 등장하게 되었다.
시분할 시스템에서는 CPU를 일정 시간마다 다음 프로세스로 이동하도록 만들었기 때문에, 특정 사용자가 계속해서 CPU를 점유하는 상황을 해결할 수 있었고, 프로세스의 통신도 가능해졌다.
그리고 CPU가 순환하는 속도가 굉장히 빨랐기 때문에 사용자들에게 동시에 컴퓨터를 사용한다는 느낌을 줄 수 있었고, 사용자 개개인은 혼자서 컴퓨터를 사용한다는 느낌을 받을 수 있었다.
그러나 여러 사용자가 컴퓨터를 공유하게 되면서 해결해야하는 문제들도 추가로 생겨나게 됐다.
사용자 프로세스간의 실행순서를 제어가 필요해졌고, 여러 사용자를 수용하려면 부족한 메모리를 보완해야 했다.
이로 인해 프로세스 동기화, 가상 메모라는 개념이 등장하게 되었다.
대표적인 시분할 시스템으로는 Unix가 있으며, 오늘날의 운영체제인 Windows, MacOS, Linux의 경우도 시분할 시스템이다.
컴퓨터 규모별 분류의 변천사
- 초기 분류방식 (70, 80년대의 분류방식)
Supercomputer > Mainframe > Mini > Micro - 현재 분류방식
Supercomputer > Server > Workstation > PC > Handheld > Embedded
앞서 살펴본 시스템들은 대형 컴퓨터를 위해 개발되었지만, 현재는 기술이 발전하면서 스마트폰에도 시분할 시스템이 들어있다.
Reference
- 양희재 교수님의 운영체제 강의
https://youtu.be/jA8-E2TzAKY
'Computer Science > Operating System' 카테고리의 다른 글
[운영체제 기초]6. 운영체제 서비스 (0) | 2021.01.19 |
---|---|
[운영체제 기초]5. 이중모드와 하드웨어 보호 (0) | 2021.01.17 |
[운영체제 기초]4. 인터럽트 기반 시스템 (0) | 2021.01.15 |
[운영체제 기초]3. 고등운영체제 (0) | 2021.01.15 |
[운영체제 기초]1. 개요 (0) | 2021.01.06 |
댓글
이 글 공유하기
다른 글
-
[운영체제 기초]5. 이중모드와 하드웨어 보호
[운영체제 기초]5. 이중모드와 하드웨어 보호
2021.01.17 -
[운영체제 기초]4. 인터럽트 기반 시스템
[운영체제 기초]4. 인터럽트 기반 시스템
2021.01.15 -
[운영체제 기초]3. 고등운영체제
[운영체제 기초]3. 고등운영체제
2021.01.15 -
[운영체제 기초]1. 개요
[운영체제 기초]1. 개요
2021.01.06