봉황대 in CS

[Chapter 1. 서론] 다중 프로그래밍과 시분할 시스템 본문

Computer Science & Engineering/Operating System

[Chapter 1. 서론] 다중 프로그래밍과 시분할 시스템

등 긁는 봉황대 2022. 7. 2. 19:56

* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다.

 

다중 프로그래밍 (Multiprogramming)

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

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

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

 

다중프로그램 시스템의 메모리 배치

 

4. 실행 중 입출력이 발생하였을 경우 이것이 끝나기를 기다리지 않는다.

     인터럽트를 걸고, 해당 프로그램이 입출력을 하는 동안 스케줄링을 통해 다른 프로그램을 선정하여 CPU가 실행한다.

 

즉, 작업들이 메모리에 계속 유지되기 때문에 항상 실행할 작업을 가지게 되며

CPU가 수행할 작업을 항상 하나 가지도록 작업을 구성하기 때문에 CPU의 이용률이 증가한다. (CPU는 쉬지 않음)

 


추가로, 디스크를 이용한 Buffering과 Spooling으로 입출력과 CPU 수행의 중복 정도를 높일 수 있게 되었다.

 

* Buffering : 메모리 버퍼에 데이터를 잠깐 저장하는 것을 통해 입출력과 CPU의 속도 차이를 해소

 

* Spooling (SPOOL : Simultaneous Peripherial Operations On-Line)

: 병렬로 번갈아가면서 수행되는 프로그램들이 순차적 입출력 장치(프린터)를 공동으로 사용할 때 문제가 없도록 디스크를 활용하는 것

(디스크는 속도가 빨라 여러 프로그램에서 뱉어내는 출력들을 계속 빠르게 저장할 수 있고, 임의 접근이 가능하기 때문에 Spooling에 사용되었다.)

 

올바른 문서 출력 순서 : (1, 3), (2)

Spooling이 없었을 경우 출력 순서 : 1, 2, 3

 


하지만 다중 프로그래밍은 시스템 자원을 효율적으로 이용할 수 있는 환경을 제공해줄 뿐,

사용자와 컴퓨터 시스템과의 상호 작용은 제공해주지 않는다.

 

또한, 다중 프로그래밍에서는 스케줄링이 입출력이 일어났을 경우에만 일어나기 때문에

한 프로그램의 입출력 빈도와 수행 시간이 다른 프로그램의 수행에 영향을 주게 된다.

(무한 루프 발생 시 다른 프로그램은 영원히 대기하게 됨 → 프로그램 간에 간섭 발생)

 

따라서 사용자와의 빈번한 대화성(편리성) 증진에는 한계가 있다.

이를 해결하기 위해 다중 프로그램의 확장으로 시분할 시스템이 등장하게 되었다.

 

시분할 시스템

일정한 시간 간격(Time Slice)을 두어 해당 간격이 종료될 때마다 무조건 스케줄링을 실행한다.

 

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

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

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

 

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


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

 

1. Time Slice

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

 

2. 가상 메모리

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

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

 

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

 

 

반응형
Comments