컴퓨터 과학

[운영체제] 프로세스와 스레드 - 프로세스의 상태

Data Jun 2025. 11. 25. 23:04

운영체제는 프로세스가 실행되는 동안 그 상태를 지속적으로 모니터링하고 관리합니다. 또한 프로세스가 입출력(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를 효율적으로 사용하는지 확실히 이해할 수 있습니다.