운영체제는 프로세스가 실행되는 동안 그 상태를 지속적으로 모니터링하고 관리합니다. 또한 프로세스가 입출력(I/O) 작업을 수행할 때 막히는지(Blocking), 아닌지(Non-Blocking)에 따라 CPU 사용 방식도 달라집니다.
이번 글에서는 프로세스가 어떤 상태를 거치는지, 그리고 블로킹/논블로킹 I/O의 차이가 무엇인지 간단하게 정리해봅니다.
1. 프로세스의 상태

1️⃣ 🟦 프로세스의 5가지 상태
1) 생성 상태(New)
- 프로세스가 막 만들어진 상태
- PCB 생성됨
2) 준비 상태(Ready)
- CPU를 사용할 준비가 된 상태
- 대기열(Ready Queue) 에서 차례를 기다림
3) 실행 상태(Running)
- CPU를 실제로 할당받아 명령어를 실행 중
- 타이머 인터럽트가 발생하면 실행상태 → 준비상태로 이동
4) 대기 상태(Waiting / Blocked)
- 즉시 실행할 수 없음
- 보통 입출력(I/O)을 요청한 경우 발생
- I/O 완료 시 다시 준비 상태로 복귀
5) 종료 상태(Terminated)
- 모든 실행이 끝나고 PCB가 제거됨
2. 상태 전이 흐름
1️⃣ 디스패치(dispatch)
- 준비 상태 → 실행 상태로 전환
- CPU 스케줄러가 수행
2️⃣ 타이머 인터럽트
- 실행 시간이 끝남
- 실행 → 준비로 이동
3️⃣ I/O 요청
- 실행 → 대기로 이동
4️⃣ I/O 완료
- 대기 → 준비로 이동
이러한 상태 변화가 반복되면서 운영체제는 수많은 프로세스를 안정적으로 관리합니다.
3. 블로킹 I/O vs 논블로킹 I/O

입출력(I/O)은 컴퓨터에서 가장 오래 걸리는 작업 중 하나입니다.
프로세스는 I/O 요청 시 막히느냐(Blocking), 막히지 않느냐(Non-Blocking) 에 따라 상태 변화가 달라집니다.
1️⃣ 블로킹 I/O (Blocking I/O)
✔ 특징
- I/O 작업이 끝날 때까지 프로세스 실행이 막힘(blocked)
- CPU는 해당 프로세스 대신 다른 프로세스를 실행함
- 프로세스 상태 변화:
실행 → 대기 → 준비 → 실행
✔ 예시 이미지 흐름
- 프로세스가 시스템 콜 실행
- I/O 요청 → 프로세스 대기 상태로 전환
- I/O 완료 후 준비 상태 복귀
- 다시 CPU를 받아 실행
=> 전통적인 I/O 방식, 단순하고 안전하지만 속도 저하 발생
2️⃣ 논블로킹 I/O (Non-blocking I/O)
✔ 특징
- I/O 요청 시 프로세스 실행이 막히지 않음(non-blocked)
- I/O 작업은 장치가 수행
- 프로세스는 즉시 다음 명령 실행
✔ 상태 변화
- 실행 상태를 유지하면서 I/O 요청 가능
- I/O 완료 시 별도의 신호(interrupt)로 알려줌
✔ 예시 이미지 흐름
- 시스템 콜 실행 후 즉시 돌아와 계속 실행
- I/O 완료 시점에만 결과를 확인하거나 인터럽트 처리
=> 빠른 응답성 필요 시 사용 (예: 네트워크, 이벤트 기반 시스템)
정리하면
| 항목 | 설명 |
| 생성/준비/실행/대기/종료 | 프로세스가 거치는 5단계 상태 |
| 타이머 인터럽트 | 실행 → 준비 상태로 전환시키는 핵심 역할 |
| 블로킹 I/O | I/O 동안 실행이 멈추고 대기 상태로 이동 |
| 논블로킹 I/O | 멈추지 않고 다음 명령을 이어서 실행 |
프로세스 상태와 I/O 방식의 차이만 이해해도
운영체제가 어떻게 CPU를 효율적으로 사용하는지 확실히 이해할 수 있습니다.
'컴퓨터 과학' 카테고리의 다른 글
| [운영체제] 프로세스와 스레드 - 프로세스 간 통신 (0) | 2025.11.27 |
|---|---|
| [운영체제] 프로세스와 스레드 - 멀티 프로세스와 멀티 스레드 (0) | 2025.11.27 |
| [운영체제] 프로세스와 스레드 - 문맥교환 (0) | 2025.11.25 |
| [운영체제] 프로세스와 스레드 - 커널영역 (0) | 2025.11.25 |
| [운영체제] 프로세스와 스레드 - 사용자 영역 (0) | 2025.11.25 |