CS/OS

[OS] Multi-processing, Multi-programming, Multi-threading

Yeji Heo 2023. 2. 26. 15:06

세가지 방식 모두 여러 Process나 Thread에 동시 실행을 제공하는 방식이다.

 

1. Multi-processing

여러 개의 processor(CPU)를 이용해서 여러 프로세스를 물리적으로 동시에 실행하는 방식을 의미한다.

진정한 병렬 실행 방식이다.

 

2. Multi-programming

프로세스가 I/O event wait를 위해 block되었을 때, CPU를 다른 프로세스에게 할당하여 CPU의 활용률을 높이는 방식이다. 즉, cpu가 I/O wait등 대기하는 상태가 됐을 때 다른 프로그램이 돌아갈 수 있도록 실행 권한을 넘겨주는 것.

시간적으로 여러 프로세스에게 번갈아 가며 CPU를 할당하는 방식으로 동시 실행을 제공하게 된다.

또한, I/O event wait가 아니더라도 일정시간(quantum)시간 만큼만 할당한 후 대기중인 다른 프로세스에게 CPU 자원을 할당하여 동시 실행을 제공하는 방식도 multi-programming 방식이다.

 

3. Multi-threading

한 프로세스 내에 여러 thread를 생성하고 이들 thread에 multiprogramming과 같은 방식으로 thread간 동시 실행을 제공하는 방식이다.

애플리케이션을 실행하는 프로세스를 동시에 실행할 수 있는 쓰레드로 나눌 수 있는 기술이다.

Multi-threading은 해당 프로세스가 running 상태일 때에만 thread간 동시 실행이 이루어진다.