핵심 인사이트 (3줄 요약)
> 1. **본질**: 프로세스 상태 전이 (Process State Transition)는 New, Ready, Running, Waiting/Blocked, Terminated 사이의 이동 규칙을 정의해 스케줄러가 CPU 시간을 공정하게 나누게 한다.
> 2. **가치**: 상태를 분리하면 CPU 바운드와 I/O 바운드의 차이를 설명할 수 있고, 문맥 교환과 대기 큐 관리도 명확해진다.
> 3. **판단 포인트**: 상태 전이를 단순 목록으로 외우지 말고, 어떤 사건이 상태를 바꾸는지와 그 결과가 스케줄링에 어떤 영향을 주는지 함께 봐야 한다.
---
## Ⅰ. 개요 및 필요성
프로세스는 실행 중인 프로그램이며, 운영체제는 이를 상태로 관리한다. 프로세스 상태 전이 (Process State Transition)는 프로세스가 생성에서 종료까지 어떤 조건으로 이동하는지 정리한 모델이다.
이 모델이 필요한 이유는 CPU가 한 번에 하나만 실행하는 것처럼 보이더라도, 실제로는 준비 큐와 대기 큐를 오가며 수많은 프로세스가 공존하기 때문이다. 상태를 분리해야 스케줄러와 디스패처가 언제 누구를 CPU에 올릴지 판단할 수 있다.
- **📢 섹션 요약 비유**: 운동장에서 한 사람이 줄 서기, 달리기, 쉬기를 오가는 규칙표라고 생각하면 된다.
---
## Ⅱ. 아키텍처 및 핵심 원리
전이의 핵심은 사건(event)이다. 입장(admit)되면 New에서 Ready로, 디스패치(dispatch)되면 Ready에서 Running으로, I/O 요청이나 대기 조건이 생기면 Running에서 Waiting으로 이동한다. 이벤트가 끝나면 Waiting에서 Ready로 돌아오고, 종료 시 Terminated가 된다.
| 상태 | 의미 | 대표 사건 |
|---|---|---|
| New | 생성은 되었지만 아직 입장 전 | admit |
| Ready | CPU를 기다리는 상태 | dispatch 대기 |
| Running | CPU를 실제 사용하는 상태 | preempt / exit |
| Waiting / Blocked | I/O나 이벤트를 기다리는 상태 | I/O 요청 |
| Terminated | 실행이 끝난 상태 | exit |
New ──admit──► Ready ──dispatch──► Running ──exit──► Terminated
▲ │
│ ├──I/O 요청──► Waiting
│ │ │
└──event complete───┴────ready─────────┘
상태 전이는 단순한 라벨이 아니라, 큐 이동과 문맥 교환 비용을 포함한 스케줄링 계약이다.
- **📢 섹션 요약 비유**: 선수는 대기줄과 경기장 사이를 옮겨 다니고, 심판은 언제 출전할지 정한다.
---
## Ⅲ. 비교 및 연결
프로세스 상태는 스레드 상태와도 연결된다. 프로세스는 주소 공간과 자원을 포함한 실행 단위이고, 스레드는 그 안에서 실행 흐름을 더 잘게 나눈 단위다.
| 비교 | 프로세스 | 스레드 |
|---|---|---|
| 관리 단위 | 자원 + 실행 | 실행 흐름 |
| 상태 전이 비용 | 큼 | 상대적으로 작음 |
| 문맥 교환 | 무거움 | 가벼움 |
| 대표 이슈 | PCB (Process Control Block) 관리 | 동기화와 경쟁 상태 |
또한 Ready와 Waiting을 구분해야 CPU 바운드와 I/O 바운드 작업을 다르게 다룰 수 있다. CPU를 많이 쓰는 프로세스는 Running 시간을 더 세밀하게 쪼개야 하고, I/O가 많은 프로세스는 대기 후 복귀가 빈번하므로 큐 관리와 우선순위 조정이 중요하다.
- **📢 섹션 요약 비유**: 같은 줄에 서 있어도 지금 달리는지, 기다리는지, 끝났는지는 다르다.
---
## Ⅳ. 실무 적용 및 기술사 판단
실무에서는 상태 전이가 비정상적으로 길어지는 지점을 찾는 것이 중요하다. Waiting이 길면 I/O 병목이나 외부 의존성 문제를, Ready가 길면 CPU 경쟁이나 우선순위 불균형을 의심할 수 있다.
체크리스트
- Ready 큐와 Waiting 큐가 분리되어 관측되는가?
- 컨텍스트 스위치 폭증이 성능 저하를 만들고 있지 않은가?
- I/O 요청 후 복귀 시 우선순위 역전이 없는가?
- 종료 후 좀비(zombie)나 고아(orphan) 관리가 필요한가?
안티패턴
-
Busy waiting으로 CPU를 낭비하는 것
-
상태 전이를 로그 없이 추적하는 것
-
I/O 바운드 프로세스를 CPU 바운드와 같은 기준으로 스케줄링하는 것
- 📢 섹션 요약 비유: 오래 기다리는 사람은 줄이 막혔는지, 일이 끝난 뒤 돌아오는 중인지 봐야 한다.
Ⅴ. 기대효과 및 결론
상태 전이 모델은 운영체제의 스케줄링, 성능 분석, 장애 분석을 한 프레임으로 묶어 준다. 상태를 보면 왜 CPU가 바빠 보이는데 실제 처리량은 낮은지, 왜 요청이 멈췄는지도 설명할 수 있다.
따라서 프로세스 상태는 외워야 하는 표가 아니라, 자원 경쟁의 흐름을 읽는 지도라고 기억하는 것이 맞다.
- **📢 섹션 요약 비유**: 놀이공원 줄처럼 상태를 나누면, 어디가 막혔는지 바로 알 수 있다.
---
### 📌 관련 개념 맵
| 개념 | 연결 포인트 |
| :-- | :-- | | PCB (Process Control Block) | 프로세스 상태와 자원 정보를 저장 | | Ready Queue | CPU 대기 프로세스 집합 | | Waiting Queue | I/O 대기 프로세스 집합 | | Context Switch | 상태 전이 시 비용 발생 | | Scheduler / Dispatcher | 상태 전이를 실제로 관리 |
### 📈 관련 키워드 및 발전 흐름도
생성(New)
│
▼
준비(Ready) ──► 실행(Running) │ │ │ ├──I/O 요청──► 대기(Waiting) │ │ │ │ └──종료──────────► 종료(Terminated) └────────────event complete◄─────┘
### 👶 어린이를 위한 3줄 비유 설명
1. 줄 서는 사람도 지금 기다리는지, 뛰는 중인지, 끝났는지가 달라요.
2. 컴퓨터도 일이 들어오면 기다리고, 시작하고, 잠깐 멈추고를 반복해요.
3. 그래서 상태표를 보면 컴퓨터의 하루 일과가 보여요.