0. 목표
Process와 Thread에 대해 알기
Process와 Thread의 차이를 알기
1. Process란?
- 운영체제로부터 시스템 자원을 할당받은 작업의 단위
- CPU 시간, 메모리 등을 할당받아 실행되는 프로그램
- Process <= 메모리 (Code + Data + Heap + Stack) 할당
- 어플리케이션, 프로그램 하나를 프로세스라 할 수 있다.
- 하나 이상의 Thread를 가지고 있다.
- Process마다 별도의 메모리 영역을 가지고 있기에 다른 프로세스와 데이터 공유를 위해서는 다른 메커니즘이 필요하다. (성능 저하)
- IPC(Inter-Process Communication)
2. Thread란?
- Process 내에서 할당 받은 자원을 이용하는 실행의 단위
- 고유한 Stack을 가진다. Thread와 Code, Data, Heap은 공유한다.
- Process 내 여러 Thread가 있을 수 있어 서로의 데이터 공유에 유리하지만, 하나의 Thread가 비정상이라면 전체 Process가 영향을 받는다.
3. Multi Process와 Multi Thread
Multi Process
- 하나의 프로그램에서 여러개의 Process를 구성 => 각 Process마다 하나의 작업을 처리
- 장점: Process 별로 독립되어 있기에 문제가 발생해도 다른 Process에 영향을 주지 않음
- 단점:
- Context Switching 오버헤드 (성능 저하)
- Process 사이에 캐쉬를 공유할 수 없음
Multi Thread
- 하나의 프로그렘에 여러개의 Thread를 구성 => 각 Thread마다 하나의 작업을 처리
- 장점:
- 성능 향상 및 자원 소모 감소
- Thread 간 자원을 공유함
- 단점:
- 디버깅이 어려움
- 하나의 Thread에 문제가 발생하면 프로그램 전체에 영향을 줌
- 동기화 이슈