본문 바로가기
카테고리 없음

[Chapter 1. 서론] 운영체제의 발전 - 다중 프로그래밍,시분할 시스템

by 베어 그릴스 2022. 8. 10.
본 정리는 운영체제(Operating System: Concepts) 9th edition과 22학년도 1학기 건국대학교 운영체제 수업을 바탕으로 하고 있습니다.

 

다중 프로그래밍 (Multiprogramming)


1. 시스템에 들어오는 모든 작업은 디스크의 작업 풀에 적재된다.

2. 한 시점에 운영체제의 정책에 따라 작업 풀 내의 여러 작업이 선택되어 메모리에 탑재된다.

3. 운영체제는 메모리에 탑재된 작업들 중 하나를 선택하여 CPU가 실행을 한다.

4. 입출력 혹은 인터럽트 발생 시 다른 프로그램을 운영체제가 선정하여 CPU가 실행한다.

 

즉, CPU는 항상 일을 하고 있게된다.

 

다중프로그래밍에서 Buffering과 SPOOLing

Buffering은 그냥 출력 및 입력의 속도는 프린터를 예로들면 매우 느리므로 이런 CPU와의 속도 차를 해소하기 위해 메모리 버퍼를 이용하여 I/O와 독립된 동작을 허용하는 것을 말한다.

 

각 프로그램의 실행이 산발적으로 일어나므로, 해당 프로그램의 출력 또한, 프로그램마다 나뉘지 않고 산발적으로 일어나기 마련이다.

 

ex) 프로그램 1에서 출력 a 프로그램2에서 출력 b 프로그램 1이 끝나지 않아 다시 출력 c 하면, 사용자가 원하는 출력은 ac b 여도, 출력은 산발적이므로 abc의 출력을 얻게된다.

 

이를 극복할 수 있게한 기능이 Spooling으로 디스크 저장 장치에 출력을 모아두고, 프린터를 공유하여 출력할 수 있게하여 올바른 출력을 할 수 있게 하는 기능이다. 

 

즉, 하나의 순차적 처리 장치(예: 프린터)를 여러 프로세스(프로그램)가 디스크를 활용하여 동시에 공유하는 기능이다.

 

이로 인해 속도차이도 극복할 수 있고, 올바른 출력을 얻을 수 있게 된다.

 

 

* vs 일괄처리 시스템

 

일괄처리 시스템은 실행 중인 프로그램에서 입출력이 필요하다면, 입출력이 끝날 때까지 CPU가 해당 프로그램을 제외한 다른 일을 하지 못하는 반면 다중 프로그래밍에서는 입출력에 요구되는 시간 동안 CPU가 다른 프로그램을 실행할 수 있어서 효율적이다.

 

 

* 다중 프로그래밍의 한계

 

입출력이 일어날 때에만 스케줄링 되므로 아직 한 프로그램의 수행 시간이나 입출력 빈도가 다른 프로그램에 영향을 준다.

ex) 한 프로그램에서 무한 루프 발생 시 다른 프로그램도 무한 대기

 

 

 

시분할 시스템


다중 프로그래밍의 스케줄링 시점이 입출력이었다면, 시분할 시스템의 스케줄링 시점은 타임 슬라이스이다.

 

일정한 간격의 타임 슬라이스가 올때마다 무조건 다른 프로그램으로 스케줄링 한다.

 

 

프로그램이 실행되는 동안에 사용자들은 각자 자기의 프로그램과 상호 작용할 수 있는데

여러 작업들이 빈번하게 교대가 일어나기 때문에 각 작업이 동시에 실행되는 것 같은 착각을 주게 하며,

사용자와의 대화성이 증진되었다.

 

따라서 효율성과 편의성이 동시에 증진되는 효과가 발생, 현재까지 운영체제의 기본적인 체계로 자리 잡았다.

 

 

 

* 타임슬라이스란?

 

사용자에게 빠른 응답시간을 주기 위하여 보다 작은 단위로 CPU 시간 나누어 할당(Time Slice).

즉, CPU가 계속 일하고 있는 것은 같지만, 매우 빠른 교대로 사용자 입장에서 여러 프로그램이 동시에 실행되고 있는 것 같은 착각을 불러일으킨다.


* 시분할 시스템의 등장으로 나타난 이슈들

 

1. Time Slice

사용자에게 빠른 응답 시간을 주기 위하여 보다 작은 단위로 CPU 시간을 나누어 할당한다.

 

2. 가상 메모리

여러 프로그램을 동시에 적재하는 것으로 메모리 부족 현상이 나타난다.

→ 가상 메모리 기법으로 실제 메모리보다 더 큰 프로그램을 수행할 수 있게 되었다.

 

3. CPU 스케줄링, 디스크 스케줄링, 프로세스 간 통신, 동기화, 교착 상태 처리 등등..