운영체제
Process & Thread프로세스와 스레드
프로세스(Process)는 실행 중인 프로그램이고, 스레드(Thread)는 프로세스 내부의 실행 단위다. 운영체제는 프로세스를 독립적으로 관리하며, 하나의 프로세스 안에 여러 스레드가 존재해 병렬 작업을 처리한다.
프로세스 (Process)
프로그램을 실행하면 운영체제가 메모리를 할당하고 프로세스를 생성한다.
프로세스 상태 전이
| 상태 | 설명 |
|---|---|
| 준비 | CPU 할당을 기다리는 상태 |
| 실행 | CPU를 점유해 명령어 실행 중 |
| 대기 | I/O 완료 등 이벤트를 기다리는 상태 |
스레드 (Thread)
스레드는 프로세스 내에서 실제로 실행되는 흐름이다.
멀티스레딩 장점
프로세스 vs 스레드
| 항목 | 프로세스 | 스레드 |
|---|---|---|
| 메모리 | 독립된 메모리 공간 | 프로세스 내 메모리 공유 |
| 생성 비용 | 높음 (무거움) | 낮음 (가벼움) |
| 통신 | IPC 필요 (파이프, 소켓) | 공유 메모리로 직접 통신 |
| 격리 | 한 프로세스 장애 시 다른 프로세스 영향 없음 | 한 스레드 장애 시 전체 프로세스 영향 |
| 전환 비용 | 높음 (컨텍스트 스위칭 비용 큼) | 낮음 |
컨텍스트 스위칭 (Context Switching)
CPU가 한 프로세스/스레드에서 다른 것으로 전환할 때, 현재 상태(레지스터, PC 등)를 저장하고 다음 것의 상태를 복원하는 과정.
빈번한 컨텍스트 스위칭은 오버헤드를 유발한다.
동시성 문제 — 경쟁 조건
스레드가 공유 자원에 동시 접근할 때 예기치 않은 결과가 발생한다.
해결: 세마포어, 뮤텍스(Mutex), Lock으로 임계 구역 보호.
교착상태 (Deadlock)
두 스레드가 서로가 가진 자원을 기다리며 무한 대기하는 상태. 자세한 내용은 데드락 문서 참고.
멀티프로세싱 vs 멀티스레딩
| 방식 | 설명 | 적합한 경우 |
|---|---|---|
| 멀티프로세싱 | 여러 프로세스 병렬 실행 | CPU 집약적 작업, 안정성 중요 |
| 멀티스레딩 | 하나의 프로세스 내 여러 스레드 | I/O 집약적 작업, 빠른 통신 필요 |
관련 개념
참고문헌
- •Silberschatz et al. Operating System Concepts — Chapter 3, 4
- •Tanenbaum. Modern Operating Systems — Chapter 2
