프로세스(Process)란?
프로세스는 실행 중인 프로그램으로, 운영체제로부터 자원을 독립적으로 할당받는 실행 단위이다.
하나의 프로세스는 고유한 메모리 공간을 가지며, CPU, 메모리, 파일, 입출력 자원 등을 할당받아 독립적으로 실행된다.
특징
- 코드, 데이터, 힙, 스택 등 고유의 메모리 공간을 가진다
- 다른 프로세스와 메모리를 공유하지 않음
- 프로세스 간 통신은 별도의 메커니즘(IPC, 파이프, 소켓 등)을 사용해야 하므로 통신 비용이 크다
- 하나의 프로세스가 오류로 종료되더라도 다른 프로세스에는 영향을 주지 않음
쓰레드(Thread)란?
쓰레드는 프로세스 내에서 실행 흐름을 분리한 최소 실행 단위이다.
한 프로세스 내에서 여러 쓰레드가 동시에 실행될 수 있으며, 메모리 공간을 공유하면서 작업을 나누어 수행한다.
특징
- 같은 프로세스 내의 쓰레드끼리는 코드, 데이터, 힙 영역을 공유
- 단, 스택은 각 쓰레드가 독립적으로 소유
- 공유 메모리를 통해 통신이 가능하므로 프로세스보다 통신 비용이 낮고 빠르다
- 하지만 동기화 문제와 경쟁 조건이 발생할 수 있어 주의가 필요하다
- 하나의 쓰레드가 예외로 종료되면 전체 프로세스에 영향을 줄 수 있다
프로세스와 쓰레드의 차이
항목 | 프로세스 | 쓰레드 |
정의 | 운영체제로부터 자원을 독립적으로 할당받은 실행 단위 | 프로세스 내에서 실행되는 실행 흐름 단위 |
메모리 공간 | 코드, 데이터, 힙, 스택 모두 독립 | 코드, 데이터, 힙은 공유, 스택은 독립 |
통신 방식 | 별도 IPC 필요, 느림 | 메모리 공유로 빠름 |
안정성 | 독립적이므로 다른 프로세스에 영향 없음 | 한 쓰레드 오류 시 전체 프로세스에 영향 가능 |
생성 비용 | 비교적 무겁고 느림 | 상대적으로 가볍고 빠름 |
사용 예 | 별개의 앱 실행, 독립적 서버 프로세스 | 게임 내 AI, 병렬 다운로드, UI 처리 등 |
'OS' 카테고리의 다른 글
멀티쓰레드 환경에서 생길 수 있는 문제들 (0) | 2025.06.24 |
---|---|
다양한 OS 스케줄링 기법 (0) | 2025.06.24 |
경쟁 조건(Race Condition)이란? (0) | 2025.06.24 |
파편화 (Fragmentation) (0) | 2025.06.24 |
동기화 객체란? (0) | 2025.06.23 |