History of OS

운영체제

2020. 1. 8. 21:54

1. No O/S (1940 ~ 50s)

 

[그림] 진공관 컴퓨터와 펀치카드
[그림] 포트란(FORTRAN) 언어의 펀치카드

 

OS가 없던 시절에는 오퍼레이터라는 직업이 있었고, 오퍼레이터가 직접 컴퓨터를 동작시키는 일을 수행했음. 당시 컴퓨터에는 펀치카드와 프린터로 입출력을 수행했음. 프로그래머가 소스코드를 프로그래밍 한 후 오퍼레이터에게 전달하면 오퍼레이터는 그것을 컴퓨터에 입력하였음. 

 

[그림] OS가 없던 당시의 컴퓨터 구조

 

소스코드가 입력되면 이후에 컴파일러 카드와 링커 카드, 로더 카드 등을 순서대로 입력해서 컴파일(기계어 변환), 링크(코드연결), 로딩(메모리 적재)을 진행하였음. 입력된 카드들은 순서대로 작동하여 프로세서에서 처리되고 결과를 프린터로 출력하였음.

 

2. Batch Processing System (일괄처리 시스템)

 

[그림] 초기의 Batch Processing

 

프로그래머가 작성한 프로그램은 항상 다르지만, 컴파일러, 링커, 로더 카드는 매번 동일했기 때문에 사람들은 이 작업을 단순화 시키기 위해 컴파일-링크-로딩 과정을 순서대로 수행하는 프로그램을 항상 메모리에 적재해두는 방식을 고안하였음. 'Batch'라는 것은 '일괄'이라는 뜻으로 일련의 작업을 일괄적으로 한번에 처리해주는 시스템을 의미함. 이렇게 항상 메모리에 상주하며 오퍼레이터를 돕는 프로그램을 Resident Monitor라고 했으며 이는 최초의 O/S의 개념으로 평가받음. 

 

[그림] Operator와 Batch System

 

3. Multi Programming System (다중 프로그래밍 시스템, 1960s)

Batch Processing System이 개발되었지만 여전히 해결되지 않는 문제가 존재했는데, I/O (카드입력, 프린터출력)을 수행하는 도중에는 컴퓨터(프로세서)는 그 것이 끝나기만을 기다려야했고, 이 것을 유휴상태(Idle Condition)라고 한다. 그러나 컴퓨터 프로세서는 당시에 미국에도 몇 대밖에 없는 매우 비싸고 귀중한 자원이고 이 것을 쉬게 한다는 것은 막대한 손해였음. 또한 프로세서의 처리속도는 매우 빨랐으나, I/O과정은 굉장히 느렸기 때문에 매우 비효율적이였음. 이를 해결하기 위해 등장한 것이 다중 프로그래밍 시스템 (Multi Programming System)임. 

 

[그림] 다중 프로그래밍 시스템

 

다중 프로그래밍 시스템은 프로그램 A가 연산을 마치고 I/O에 돌입하면 (Idle Condition에 빠지면) 프로세서는 프로그램 B로 전환하여 프로세싱을 수행하게 하였고, 이로서 프로세서가 쉬지않고 계속해서 계산을 수행할 수 있게 되었음. 다중프로그래밍 시스템이 등장한 이후로 프로세서 스케줄링 문제 (A-B-C-D 순서로 실행할 것인가 C-A-B-D 순서로 수행할 것인가)와 메모리 관리 문제(프로그램을 메모리의 어떤 공간에 로드할 것인가, 다른 프로그램이 있는 메모리 영역을 침범하지 않게 하는 기법) 등이 대두되었음. 

 

4. Time Sharing System (시공유 시스템 e.g. UNIX, 1970~)

Multi Programming System이 개발된 이후 오늘날에 사용되는 모습의 I/O 장치들이 개발되었음 (키보드 + 모니터) 따라서 컴퓨터가 오늘날의 모습을 갖추게 되었음. 그러나 컴퓨터는 여전히 비싼 자원이였음. 요즘날처럼 1대의 본체에 1세트의 I/O 장치(키보드 + 모니터, 터미널이라고 부름)를 갖춘 시스템이 아니라 1대의 본체에 여러 세트의 I/O 장치를 연결하여 다수의 사용자가 동시에 하나의 프로세서와 메모리를 사용하였음.

 

[그림] 시공유 시스템

 

즉, 위의 그림처럼 다수의 사용자가 각자의 터미널을 이용해 중앙 컴퓨터에 접속하고, 하나의 중앙 컴퓨터에 다수의 사용자가 연결되어 동시에 컴퓨터를 이용하였음. 하나의 메모리에 여러 사용자의 프로그램을 로드하여 실행하는 구조였음.

 

[그림] 시공유 시스템

 

그런데 다중프로그래밍 방식으로 이러한 방식을 수행하게 되면 문제가 발생하게 됨. 사용자 1이 프로세서를 사용하는 중에는 사용자 2, 3, 4는 아무런 작업도 수행할 수 없었음. 때문에 메모리에 올라온 프로그램들을 짧은 시간마다 강제로 전환하여 수행하는 방식을 고안하였음. 덕분에 모든 사용자의 프로그램이 이전보다는 느리지만 동시에 수행되었음. CPU가 매우 빠르게 작업자들의 작업을 스위칭(Switching)하기 때문에 사용자들은 이를 의식하지 못하고 자신이 계속해서 컴퓨터를 점유하고 사용하는 것으로 느끼게 됨. 현대의 운영체제도 동시에 여러가지 프로그램을 동시에 수행하는 것처럼 보이는데, 이 역시 시공유 시스템이기 때문에 가능한 것임.

 

5. Reference

 

운영체제

운영체제의 정의 및 역할 등에 대해 알아보고, 운영체제의 주요 요소들, 즉 프로세스 관리, 주기억장치 관리, 파일 시스템 등에 대해 공부한다.

www.kocw.net

 

운영체제, OS, Operating System

운영체제를 처음 공부하는 사람 특히, 공학 또는 컴퓨터 관련 비전공자를 대상으로 합니다.

truemind5.blogspot.com

 

'운영체제' 카테고리의 다른 글

CPU Scheduling (1) - FCFS (First Come, First Served)  (0) 2020.02.04
CPU Scheduling Criteria & Kinds  (0) 2020.02.04
Process Management  (0) 2020.01.29
O/S Service  (0) 2020.01.21
Dual Mode & H/W Protection  (2) 2020.01.21
High Level OS & Interrupt based OS  (0) 2020.01.08
운영체제란 무엇인가?  (0) 2020.01.03