[OS] Thread & Process - 3
Multi Processing
● 한 컴퓨터 내 2개 이상의 프로세서(=CPU)들이 같은 작업 내 2개 이상의 서로 다른 부분을
동시(Parallel)에 처리할 수 있는 프로그램
● 멀티 프로그래밍, 멀티 태스킹과는 다른건가?
○ 멀티 프로그래밍(multi-programming) :
- 한 CPU는 한 시점에 하나의 프로그램 수행하는 것
- 메인 메모리에 여러 프로그램 유지
- 수행 중인 프로그램 입출력 작업을 수행하면 CPU는 입출력 종료될 때까지
기다리지 않고 다른 프로그램을 수행하는 것
○ 멀티 태스킹(multi-tasking) :
- 작은 time quantum(시분할)을 사용하여 여러 메모리에 올라와 있는
여러 작업들을 번갈아가며 수행하는 것
- 매우 빠르게 수행되기 때문에 사용자가 동시에 수행된다고 느껴짐
● 멀티 프로세싱을 표현하자면 ▼

Multi Threading
● 한 프로세스(Process) 내에서 여러 스레드(Thread)를 생성할 수 있는 프로그램
● 여러 스레드들은 독립적으로 수행되지만 프로세스의 자원을 공유하며
동시(Concurrently)에 함께 수행

동시 처리, Concurrency & Parallelism
● Concurrency :
- 같은 시간에 많은 작업을 처리하는 것
- 대기 시간을 숨기며 동시적에 작업이 처리되는 것처럼 보이도록 함 (연막작전! Illusion!)
- 한 시점에 오직 한 가지의 작업만 처리하지만 여러 작업이 동시에
수행되게끔 착각을 주는 것
● Parallelism
- 실제로 같은 시간에 여러 작업을 동시에 처리하는 것

정리!
| 멀티 프로세싱(Multi-processing) | 멀티 스레딩(Multi-Threading) | |
| 동시 처리 | Parallelism | Concurrency |
| 목적 | 속도(performance)의 증가 | 여러 작업이 동시에 실행되게끔 착각하게 하는 것 |
| 효율 | 여러 연산 작업(Computations) | IO 작업 |