이 글은 CS 대분류에 직접 속한 글이다 (소분류 없음). 폴더 blog/cs/ 에 바로 위치한다.
한 줄 정의
- 프로세스: 실행 중인 프로그램. 독립된 메모리 공간을 가진다.
- 스레드: 프로세스 안의 실행 흐름. 같은 프로세스의 메모리를 공유한다.
메모리 관점
프로세스끼리는 메모리가 격리되어 있어 안전하지만 통신(IPC) 비용이 크다. 스레드끼리는 힙·코드·데이터를 공유해 통신이 빠르지만, 동기화를 잘못하면 경쟁 조건(race condition)이 생긴다.
| 구분 | 프로세스 | 스레드 |
|---|---|---|
| 메모리 | 독립 | 공유(스택만 별도) |
| 생성 비용 | 큼 | 작음 |
| 통신 | IPC 필요 | 변수 직접 공유 |
| 안정성 | 하나 죽어도 격리 | 하나 죽으면 전체 영향 |
컨텍스트 스위칭 비용도 스레드가 더 작다 — 공유 자원이 많아 교체할 컨텍스트가 적기 때문이다.