
CPU는 한 번에 하나의 프로세스만 실행할 수 있어서 OS가 여러 프로세스를 번갈아 실행시키는데, 이를 스케줄링이라고 한다.
대기 상태 없이 실행 ↔ 준비 만 존재한다면?
따라서 "어차피 기다려야 하는" 프로세스는 대기 상태로 빠지고,
CPU는 실행이 필요한 프로세스에게 집중하게 된다.
| 상태 | 의미 |
|---|---|
| 생성 | 프로세스가 막 만들어진 상태 |
| 준비 | CPU 할당을 기다리는 중 (언제든 실행 가능) |
| 실행 | CPU를 받아서 실제로 돌아가는 중 |
| 대기 | I/O나 이벤트를 기다리는 중 (CPU 불필요) |
| 종료 | 실행 완료 |
| 전이 | 트리거 |
|---|---|
| 실행 → 준비 | 할당 시간 초과, CPU 선점 (Time runout / preemption) |
| 준비 → 실행 | 스케줄러가 CPU 배분 (Dispatch) |
| 실행 → 대기 | I/O 요청, sleep() 호출 등 |
| 대기 → 준비 | 기다리던 이벤트 완료 (Wakeup) |
메모리가 부족할 때 준비/대기 중인 프로세스를 디스크로 내보내는 것 (Swap-out).
메모리 여유가 생기면 다시 불러온다 (Swap-in).
현대 시스템에서는 메모리가 충분해 자주 발생하지 않는다.