[OS] Process vs. Thread
1. Process
Process란 disk에 있는 program이 memory로 올라온 상태의 것을 의미한다. Process별로 code, data, stack, heap memory 영역을 가지며 하나의 CPU를 점유하여 수행하게 된다.
Process간 context switching을 하기 위해선 Process Control Block (PCB)를 전환해야 하기 때문에 thread context switching에 비해 속도가 느리다.
또한 process간 data 통신을 위해선 Inter Process Communication (IPC)을 통해서 data를 주고 받을 수 있다.
2. Thread
각 process에는 1개 이상의 thread가 존재하게 되는데 이를 multi-threaded program이라고 부른다. 각 thread간에는 독립적인 register, stack 정보들을 관리하게 되며, 공통적으로는 code, data, heap data를 공유하게 된다.
Thread간 context switching은 단순하게 register, stack의 snap shot만 교체하면 되기 때문에 process context switching에 비해 상대적으로 overhead가 적다. 반면 process에 비해 단점들도 존재한다.
- Process 밖에서 thread 각각을 제어할 수 없다.
- Multi-threaded program을 작성하는 경우에는 주의 깊게 설계해야 한다.
- 잘못된 변수를 thread간 공유함으로써 오류가 발생할 수 있다.
- Program 수행 중 중간 중간 thread switching이 일어나기 때문에 program debugging이 어렵다.