운영체제발행일 2026. 8. 28.
프로세스와 스레드의 차이
주소 공간, 자원 공유, 문맥 전환 관점에서 프로세스와 스레드를 비교합니다.
#OS#Process#Thread
실행의 단위#
프로세스는 실행 중인 프로그램과 독립된 주소 공간을 의미합니다. 스레드는 한 프로세스 안에서 실행 흐름을 구성하며 코드와 힙 같은 자원을 공유합니다.
무엇을 공유하는가#
| 자원 | 프로세스 사이 | 같은 프로세스의 스레드 사이 |
|---|---|---|
| 주소 공간 | 기본적으로 분리 | 공유 |
| 파일 디스크립터 | IPC 또는 상속 필요 | 공유 가능 |
| 스택 | 각각 보유 | 각각 보유 |
동시성 문제#
스레드가 메모리를 공유하면 통신 비용은 줄지만 race condition이 생길 수 있습니다. 공유 상태를 줄이고 임계 구역을 명확히 해야 합니다.
Thread A: read(count) -> count + 1 -> write(count)
Thread B: read(count) -> count + 1 -> write(count)두 스레드가 같은 값을 읽으면 증가 연산 하나가 사라질 수 있습니다.
정리#
프로세스와 스레드의 선택은 격리 수준, 통신 비용, 실패 전파 범위를 함께 고려해야 합니다.