Process와 Thread 핵심 정리
현대 운영체제에서의 프로그램 실행은 단순히 ‘코드 실행’ 그 이상이라고 할 수 있는데요. 사용자의 명령을 수행하기 위해 운영체제는 각각의 작업을 프로세스와 스레드라는 형태로 관리하게 됩니다.
이 두 개념은 시스템 자원 관리, 동시성 처리, 응답성 향상 등에서 핵심 요소로 작용합니다. 이 글에서는 프로세스와 스레드의 개념과 차이점을 명확히 정리하고, 시스템 프로그래밍과 병렬 처리에 대한 이해를 돕고자 합니다.
Process(프로세스)
- 실행 중인 프로그램
- 운영체제로부터 독립된 메모리 영역을 할당받아 실행된다
- 각 프로세스는 고유한 코드, 데이터, 힙, 스택 영역을 가진다
- 프로세스 간 통신은 파이프, 메시지 큐, 소켓 등 IPC(Inter-Process Communication)가 필요하다
- 컨텍스트 스위칭 시 오버헤드가 크다
Thread(스레드)
- 프로세스 내의 실행 흐름
- 하나의 프로세스는 여러 개의 스레드를 가질 수 있다
- 스레드들은 코드, 데이터, 힙은 공유하고, 스택은 별도로 가진다
- 스레드 간 통신은 메모리 공유로 간단하고 빠르다
- 컨텍스트 스위칭 비용이 적다
Process와 Thread 비교
구분 | Process | Thread |
---|---|---|
실행 단위 | 독립적인 실행 단위 | 프로세스 내의 실행 흐름 |
메모리 공간 | 독립적 | 공유 |
생성 비용 | 높음 | 낮음 |
컨텍스트 스위칭 | 느리고 비용 큼 | 빠르고 비용 적음 |
통신 방법 | IPC 필요 | 메모리 공유 |
Thread 사용의 장점과 주의점
장점
- 시스템 자원을 효율적으로 활용할 수 있다
- 응답성과 처리 속도를 향상시킬 수 있다
- 동시성 프로그래밍을 쉽게 구성할 수 있다
주의점
- 동기화 문제 발생 가능 (경쟁 상태, 데드락 등)
- 디버깅과 유지보수가 어려울 수 있음
마치면서
Process와 Thread 이 둘에 대해 각자의 특징을 이해하고 상황에 맞게 활용하는 것이 효율적이고 안정적인 시스템 설계에 있어 핵심이라고 할 수 있는데요. 올바른 선택 하나가, 프로그램의 성능과 안정성을 극적으로 바꿀 수 있습니다.
'크래프톤 정글 > CS기초(키워드, 개념정리)' 카테고리의 다른 글
[CS기초] Semaphore와 Mutex, 동시성 제어의 핵심 도구 (0) | 2025.05.09 |
---|---|
[CS기초] CPU Scheduling 알고리즘 핵심 정리 (0) | 2025.05.09 |
[중간정리] 8주차 - HTTP, 파일 디스크립터, TCP/UDP, C언어(포인터) (0) | 2025.05.06 |
[CS기초] 8주차 개념 정리 (1) | 2025.05.06 |
[CS기초] HTTP (요청/응답, 헤더, 메서드, 상태코드, HEAD 메서드) 핵심 정리 (0) | 2025.05.05 |