728x90
반응형
프로세스 vs 쓰레드
- 프로세스 (Process) :
- 실행 중인 프로그램의 인스턴스
- 각 프로세스는 서로 독립된 메모리 공간을 사용
- 프로세스 간 통신은 일반적으로 IPC 를 통해 이루어짐
- 프로세스 생성과 종료가 상대적으로 비쌈
- 문맥 전환 시 오버헤드가 큼
- 한 프로세스가 비정상적으로 종료되더라도 다른 프로세스에 영향을 주지 않음
- 쓰레드 (Thread) :
- 프로세스 내에서 실행되는 더 작은 단위
- Code, Data, BSS, Heap 영역을 공유하며 Stack 영역은 독립적
- 쓰레드 간 통신은 같은 프로세스 내에서 메모리 공유로 통신
- 쓰레드 생성과 종료가 상대적으로 저렴
- 문맥 전환 시 오버헤드가 작음
- 동기화 문제와 경합 상태를 관리해야 함
컨텍스트 스위칭 (Context Switching)
컨텍스트 스위칭은 CPU 가 한 작업 (프로세스 또는 쓰레드) 에서 다른 작업으로 전환할 때 발생하는 과정입니다. 작업 전환 시 CPU 는 현재 작업의 상태 (문맥) 를 PCB (프로세스 제어 블록) 나 TCB (쓰레드 제어 블록) 에 저장하고, 다음 작업의 상태로 복구해야 합니다.
- 멀티 프로세스 (Multi-Process) :
- 각 프로세스는 독립적인 메모리 공간을 가지므로, 더 많은 상태 정보를 저장하고 복구해야 하여 문맥 전환 비용이 큽니다.
- 멀티 쓰레드 (Multi-Thread) :
- 쓰레드는 같은 프로세스 내에서 메모리를 공유하므로, 저장하고 복구해야 할 정보가 상대적으로 적어 문맥 전환 비용이 작습니다.
728x90
반응형
'CS > OS' 카테고리의 다른 글
메모리 (Memory) (5) | 2024.10.05 |
---|---|
표준 스트림 stdin, stdout, stderr (3) | 2024.09.30 |
커널 (Kernel) (3) | 2024.09.24 |
프로그램 vs 프로세스 (1) | 2024.09.23 |
CLI 환경의 이해 (6) | 2024.09.16 |