프로세스와 쓰레드
프로세스(Process)
- 정의: 실행 중인 프로그램. 자원(메모리, CPU 등)과 쓰레드로 구성
- 특징:
- 독립적인 메모리 공간 할당 (Code, Data, Stack, Heap)
- 프로세스 간 통신(IPC)은 복잡하고 비용이 큼
- 최소 하나 이상의 쓰레드를 가짐
쓰레드(Thread)
- 정의: 프로세스 내에서 실제 작업을 수행하는 단위
- 특징:
- 프로세스의 자원을 공유 (Heap, Data, Code 영역)
- 독립적인 Stack 영역 보유
- 가벼운 프로세스(LWP: Light Weight Process)라고도 함
멀티태스킹 vs 멀티쓰레딩
- 멀티태스킹: 여러 프로세스를 동시에 실행
- 멀티쓰레딩: 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업 수행
멀티쓰레딩의 장단점
장점:
- CPU 사용률 향상
- 자원을 효율적으로 사용
- 사용자 응답성 향상
- 작업 분리로 코드가 간결해짐
단점:
- 동기화(Synchronization) 문제
- 교착상태(Deadlock) 발생 가능
- 디버깅이 어려움