✔️ 멀티 프로세스 (Mulit-Process)
- 하나의 프로그램을 여러 개의 프로세스로 나누어 작업 처리
- 장점
- 여러 프로세스 중에 하나에 문제가 생기면 해당 프로세스만 종료됨
- 단점
- Context Switching 과정에서의 오버헤드 : 캐시 메모리 초기화 등에서의 시간이 오래걸림, 공유 데이터가 없기 때문에 계속해서 캐시에 새로운 데이터를 가져와야하기 때문
- 프로세스들 간에 IPC를 사용해서만 통신할 수 있음
✔️ 멀티 스레드 (Multi-Thread)
- 하나의 프로세스 안에서 여러 개의 스레드를 사용하여 작업 처리
- 장점
- 메모리 효율 : 메모리 공간과 자원 소모 감소
- 통신 편이 : 전역 변수 공간, Heap을 사용해서 다른 스레드와 통신할 수 있음
- Context Switching 빠름 : 캐시 메모리 초기화할 필요 없음
- Throughput 감소, 응답시간 감소, 자원 사용량 감소
- 단점
- 동기화 문제 : 각 스레드가 동일한 자원에 동시에 접근하는 문제 발생 ⇒ 작업 처리 순서 정의 ⇒ 병목현상 ⇒ Lock 을 이용하여 해결
- 하나의 스레드에 문제가 생기면 전체 프로세스에 영향을 끼침
✔️ 멀티 프로세스 vs 멀티 스레드
| 멀티 프로세스 | 멀티 스레드 |
---|
메모리 | 메모리 큼 | 메모리 작음 |
Context Switching | 느림 | 빠름 |
종료시 | 다른 프로세스에 영향 X | 다른 스레드에 영향 O |
통신 | 복잡 (IPC) | 간단 (Heap, Data 사용) |
동기화 | 필요 없음 (각각 다른 자원 사용) | 필요함 (병목 현상 발생 가능) |
참고
https://velog.io/@dbsrud11/CS-면접-질문-정리#️-os-thread-vs-process
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html