[CS] 프로세스와 스레드
[CS] 프로세스와 스레드
프로세스 vs 스레드, IPC
멀티태스킹 환경에서 효율적 자원 관리를 위해 운영체제는 프로세스(Process) 와 스레드(Thread) 라는 개념을 사용합니다. 이 문서는 두 개념의 차이, 병렬 처리 방식인 멀티프로세스/멀티스레드, 그리고 프로세스 간 통신(IPC)에 대해 정리합니다.
프로세스 vs 스레드
| 항목 | 프로세스 (Process) | 스레드 (Thread) |
|---|---|---|
| 기본 개념 | 실행 중인 프로그램 인스턴스 | 프로세스 내 실행 흐름 단위 |
| 메모리 공간 | 독립적 (주소 공간 분리) | 메모리 공유 (힙, 전역 변수 등) |
| 자원 공유 | 불가 (IPC 필요) | 가능 |
| 생성 비용 | 높음 (컨텍스트 등 생성) | 낮음 (스택, 레지스터만 필요) |
| 안정성 | 높음 (격리 실행) | 낮음 (전체 프로세스 영향 가능) |
| 통신 방식 | IPC 필요 | 동기화로 직접 통신 가능 |
| 사용 예 | 웹 브라우저 탭, 마이크로서비스 | 게임의 AI, 렌더링, UI 분리 |
멀티프로세스 vs 멀티스레드
| 항목 | 멀티프로세스 | 멀티스레드 |
|---|---|---|
| 실행 단위 | 여러 프로세스 | 한 프로세스 내 여러 스레드 |
| 메모리 구조 | 분리된 주소 공간 | 공유 주소 공간 |
| 충돌 영향 | 격리 (안정성 높음) | 전체 영향 가능 (불안정) |
| 통신 | 느림 (IPC 필요) | 빠름 (공유 변수, 메모리) |
| 관리 비용 | 높음 | 낮음 |
| 사용 예 | 웹 서버, 브라우저 탭 | 게임 엔진, UI/네트워크 분리 |
멀티프로세스 장단점
- ✅ 안정성: 하나의 프로세스 오류가 다른 프로세스에 영향을 주지 않음
- ❌ 성능 비용: 프로세스 간 통신이 느림, 메모리 사용량 큼
멀티스레드 장단점
- ✅ 속도: 스레드 간 통신이 빠르고 메모리 효율적
- ❌ 안정성 낮음: 하나의 스레드 오류로 전체 프로세스가 종료될 수 있음
IPC (Inter-Process Communication)
프로세스 간 메모리 접근이 불가능하므로 데이터를 주고받기 위한 기술
| 방식 | 설명 | 특징 |
|---|---|---|
| 파이프 (Pipe) | 부모-자식 간 단방향 통신 | 간단하지만 제한적 |
| FIFO | 이름 있는 파이프 | 독립 프로세스 간 통신 가능 |
| 메시지 큐 | 운영체제의 메시지 박스 활용 | 비동기 통신 가능 |
| 공유 메모리 | 공통 메모리 영역 공유 | 빠르지만 동기화 필요 |
| 소켓 | 네트워크 기반 통신 | 로컬/원격 모두 사용 가능 |
| 세마포어 | 자원 접근 동기화 도구 | 자체로는 데이터 전송 불가 |
| 시그널 | 이벤트 알림 방식 | 단순 제어용 |
사용 목적별 IPC 추천
| 목적 | 추천 방식 | |——|————-| | 빠른 데이터 공유 | 공유 메모리 | | 간단한 메시지 전송 | 메시지 큐, 파이프 | | 원격 서버 통신 | 소켓 | | 접근 동기화 | 세마포어, 뮤텍스 |
요약
| 항목 | 프로세스 | 스레드 |
|---|---|---|
| 실행 단위 | 독립적 | 공유 흐름 |
| 메모리 구조 | 격리 | 공유 |
| 안정성 | 높음 | 낮음 |
| 통신 | 느림 (IPC) | 빠름 (메모리 공유) |
| 항목 | 멀티프로세스 | 멀티스레드 |
|---|---|---|
| 성능 | 느림 | 빠름 |
| 안전성 | 높음 | 낮음 |
| 통신 난이도 | 높음 | 낮음 |
| 대표 용도 | 서버, 브라우저 탭 | 게임, 앱 UI 등 |
IPC는 멀티프로세스를 가능하게 하는 기반 기술로, 시스템 설계에서 병렬성과 안정성 사이의 균형을 결정하는 중요한 요소입니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.