카테고리 없음

[Operating System] Uni-Programming, Multi-Programming, Time Sharing, Multi-Processing

짱일모 2023. 3. 15. 00:24

이번에는 Uni-Programming 과 Multi-Programming 그리고 Multi-Processing 에 대해 알아보겠습니다.

 

OS 가 없던 시절의 Processing 방식

 

OS 가 없던 시절의 초기 컴퓨터에서는 사람이 직접 스위치를 올리고 내려 컴퓨터에게 Binary 형태의 명령을 내려야 했습니다. 하나의 작업을 처리하는 명령어를 컴퓨터에 올리고 처리가 끝나면 모든 스위치를 리셋 한 후, 다음 작업을 처리하는 명령을 컴퓨터에 올리는 방식을 반복해야했습니다.

 

이를 해결하기 위해 Simple Batch System, Uni-Programming

OS 가 없던 초기 컴퓨터는 작업의 수행이 일일이 Manual 한 활동을 요구합니다. 이를 해결하기 위해 Simpe Batch System 이 나타납니다. Simple Batch System 에는 Monitor 라는 일종의 OS 가 존재하여, 사용자가 Job 을 올려 놓고, Monitor 가 이를 감시하며 작업이 끝나면 그 다음 작업을 수행하도록 합니다.

 

다음은 Uni-Programming 방식으로 Process 를 처리하는 방식입니다. Uni-Programming 은 순차적으로 프로세스를 완료하도록 합니다. 따라서, I/O 작업과 같이 속도가 느린 작업이 존재하더라도, CPU 는 현재 처리 중인 작업이 끝날 때까지 다른 작업을 처리할 수 없습니다.

 

 

조금 더 발전된 방식, Multi-Programming

 

Uni-Programming 에서는 I/O 작업과 같이 CPU 가 필요하지 않은 작업을 하는 동안에도, CPU 가 일을 하지 않고 대기하도록 프로세스를 처리하여 CPU Utilization 이 매우 낮은 문제가 있었습니다.

 이를 개선시킨 Multi-Programming 방식이 등장합니다. Multi-Programming 방식에서는 한 작업이 I/O 작업과 같이 CPU 가 필요하지 않은 작업을 처리하고 있을 때, CPU 를 요구하는 다른 작업을 처리할 수 있습니다.

따라서, Uni-Programming 방식보다 CPU Utilization 이 좋습니다.

 단점은, CPU 가 여러작업을 처리하기 위해서는 프로그램이 Main Memory 에 올라와 있어야 합니다. 따라서 Uni-Programming 방식보다 더 큰 Main Memory 저장 공간을 요구합니다.

 

 

Process Scheduling

프로세스 스케쥴링의 정의

 

빠른 반응속도, Time Sharing

 Time Sharing 방식은 Multi-Programming 방식을 조금 변형시킨 방식입니다. 각 Process 는 일정한 시간동안만 Processor 를 점유할 수 있습니다. 예를 들어, Time Slice (=Time Quantum) 이 0.1 초라면, Process A 를 Processor 가 0.1 초동안 처리하고, Process B 를 Processor 가 0.1 초동안 처리하고, 다시 Process A 를 Processor 가 0.1 초동안 처리하는 것을 반복하는 방식입니다.

 이러한 방식을 통해 각 프로세스의 Response Time 을 줄일 수 있습니다. Response Time 이란 프로그램이 Execute 된 뒤 Processor 를 점유하기까지 걸린 시간을 의미합니다. Response Time 이 줄어들어 User 는 마치 자신이 CPU 를 온전히 점유하고 있는 것처럼 느낄 수 있습니다. (Time Slice 가 매우 짧다고 생각해보세요!)

 

Multi-Programming VS Time Sharing

Time Sharing 방식이 Multi-Programming 에 비해 Response Time 이 짧다고 해서 Time Sharing 이 더 우월한 방식인 것은 아닙니다. 현대에 와서도 두 방식은 공존하고 있는 스케쥴링 방식입니다.

 Multi-Programming 방식은 Time Sharing 방식보다 Response Time 이 길지만, Throughput (단위 시간 당 처리한 Job 의 수) 이 좋습니다.

 Time Sharing 방식은 Multi-Programming 방식보다 Response Time 이 짧지만, Throughput 이 낮습니다. 왜일까요? 시스템 프로그래밍 시간에 배운 지식을 떠올려봅시다. 프로세서가 처리하는 프로세스를 전환하기 위해서는 Context Switching 이라는 작업을 수행합니다. 이 Context Switching 하는데 Overhead 의 시간이 소요되므로, 당연히 Throughput 이 낮아질 수밖에 없습니다.

 

 

Multi-Processing 의 등장

Processor 가 여러개인 것을 Multi Processor 혹은 Multi Core 라고 이야기합니다. 이 경우, Processor 가 여러개이므로, 당연히 여러개의 프로세서가 동시에 처리될 수 있습니다. 이러한 방식으로 Process 를 처리하는 것을 Multi-Processing 이라합니다.

 

Multi-Processing 에는 두가지 종류가 존재합니다.

 

AMP (Asymmetric Multi Processing), SMP (Symmetric Multi Processing)

AMP 는 각 프로세서의 역할이 분리되어 있는 것을 이야기합니다. 하나의 코어는 I/O 관련 프로세싱만 담당, 다른 하나의 코어는 메인 메모리에 올라와있는 프로세스 처리만 담당하는 것이 그 예시입니다.

SMP 는 모든 프로세서의 역할이 동일한 것을 이야기합니다. 모든 프로세서가 I/O, 메인 메모리에 올라와있는 프로세스 처리 등을 수행할 수 있습니다.

 

주의해야할 점은, Multi-Processing 과 Multi-Programming 은 완전히 다른 개념다는 것입니다. 

멀티 프로세싱은 멀티 코어에 관한 이야기고, 멀티 프로그래밍은 한 프로세서를 이용하여 프로세스를 어떻게 처리할 것인가에 대한 이야기입니다. 즉 멀티 프로세싱 방식에서 멀티 프로그래밍을 사용할 수 있습니다.

SMP 에 대한 설명

 

Multi-Programming VS Multi-Processing

 

멀티 프로그래밍은 하나의 코어에서 프로세스를 어떻게 처리할 것인가에 대한 문제이므로, 아래 그림과 같이 프로세스가 프로세서를 점유하고 있는 시간이 overlap 될 수 없습니다.

반면, 멀티 프로그래밍은 여러개의 코어에서 프로세스를 처리하고 있으므로, 프로세스가 프로세서를 점유하고 있는 시간이 Overlap 될 수 있고 이를 parallel programming 이라고 합니다.