iOS Developer 2025. 1. 16. 19:55

프로세스 상태(Process States)

운영체제에서 프로세스(Process) 는 실행 단위로서, 여러 단계(상태)를 거쳐가며 수행된다. 컴퓨터를 사용할 때 우리는 여러 프로세스를 동시에 사용하는 것처럼 보이지만, 사실은 하나의 CPU(또는 여러 CPU 코어)가 빠르게 프로세스 간을 전환(context switching) 하면서 마치 동시 실행되는 듯한 환경을 만든다. 이 전환 과정에서 각 프로세스는 여러 상태를 거치게 되는데, 운영체제는 각 프로세스의 상태 정보를 PCB(Process Control Block) 에 저장하고 관리한다. 아래에서는 전형적으로 많이 사용하는 프로세스 상태와 그 흐름을 살펴본다.

 


1. 프로세스 상태의 개념

프로세스는 실행 중에 입출력이나 CPU 스케줄링 등 다양한 이벤트에 따라 상태가 바뀐다. 운영체제마다 구체적 상태 명칭과 개수는 조금씩 다를 수 있지만, 보통은 다음과 같은 5가지 상태를 주로 다룬다.

  1. 생성(New) 상태
  2. 준비(Ready) 상태
  3. 실행(Running) 상태
  4. 대기(Waiting/Blocked) 상태
  5. 종료(Terminated) 상태

 


2. 프로세스 상태 상세

2.1 생성 상태 (New)

  • 설명
    프로세스가 이제 막 생성되는 상태를 말한다.
    • 메모리에 적재되어 PCB가 할당되고,
    • 초기화 과정을 거쳐 준비(Ready) 상태로 넘어갈 준비를 하는 시점이다.
  • 특징
    • 이 단계가 끝나면 프로세스는 즉시 실행되지 않고, CPU 스케줄러에 의해 실행될 대기 목록(Ready Queue)에 들어간다.

 

2.2 준비 상태 (Ready)

  • 설명
    프로세스가 CPU를 할당받기를 기다리는 상태다.
    • 실행 가능하지만 아직 자신의 차례가 오지 않았다.
  • 특징
    • 준비 상태의 프로세스는 CPU 스케줄러가 CPU를 할당하면 바로 실행(Running) 상태로 전이된다.
    • 여러 프로세스가 동시에 준비 상태에 있을 수 있으며, 어떤 프로세스에게 먼저 CPU를 할당할지는 스케줄링 알고리즘에 따라 결정된다 (예: FCFS, Round Robin, SJF 등).

 

2.3 실행 상태 (Running)

  • 설명
    CPU를 할당받아 실제로 실행 중인 상태다.
    • 프로세스는 프로그램 카운터(PC)레지스터를 갱신하며 명령어를 수행한다.
  • 특징
    • CPU 할당 시간(Time Quantum) 이 끝나면(타이머 인터럽트 발생) 다시 준비(Ready) 상태로 전환된다.
    • 실행 중에 입출력(I/O) 을 요청하거나 특정 이벤트를 기다려야 한다면, 대기(Waiting/Blocked) 상태로 전환된다.
    • 프로세스가 종료 조건을 만족하면, 곧바로 종료(Terminated) 상태가 된다.

 

2.4 대기 상태 (Waiting / Blocked)

  • 설명
    프로세스가 실행 도중, 입출력(I/O) 작업을 요청하거나 특정 이벤트가 발생하기를 기다려야 할 때, CPU 사용을 멈추고 대기열에서 입출력 완료 또는 이벤트 발생을 기다리는 상태다.
  • 특징
    • 입출력 장치는 CPU보다 처리 속도가 느리므로, 해당 작업이 끝나기 전까지 프로세스는 CPU를 사용할 필요가 없다.
    • 입출력이 완료(Interrupt 발생) 되면 프로세스는 다시 준비(Ready) 상태로 돌아가 CPU 할당을 대기한다.

대기 상태의 일반적 정의

  • 프로세스가 대기(Waiting) 상태에 놓이는 이유는 크게 입출력뿐 아니라, 파일 I/O, 특정 신호(Signal), 자원(Resource) 획득 등 다양한 조건에 해당할 수 있다.
  • 하지만 실제 운용에서는 대부분 입출력 처리가 주요 대기 원인이 된다.

 

2.5 종료 상태 (Terminated)

  • 설명
    프로세스가 실행을 모두 마치고(또는 에러로 인해 중단되어) 완전히 종료된 상태다.
  • 특징
    • 운영체제는 종료된 프로세스의 PCB 와 메모리 등을 정리(clean up)한다.
    • 종료 상태에 들어간 프로세스는 시스템에서 더 이상 스케줄링되지 않는다.

 


3. 프로세스 상태 다이어그램(Process State Diagram)

프로세스 상태 간 전이는 일반적으로 아래 그림처럼 표현된다.

  • 프로세스는 생성(New) - 준비(Ready) - 실행(Running) - 대기(Waiting) - 준비(Ready) - 실행(Running) - 종료(Terminated) 등으로 전이하며, 특정 이벤트나 CPU 스케줄링에 따라 순환을 반복한다.

image

(그림 출처: 혼자 공부하는 컴퓨터 구조 + 운영체제)

위와 같이, 운영체제는 각 프로세스의 상태를 PCB 에 기록하며, 프로세스 스케줄러디스패처를 통해 CPU 할당, 대기 전환, 종료 처리 등을 관리한다.

 


4. 핵심 요약

  1. 프로세스는 보통 생성 - 준비 - 실행 - 대기 - 종료의 상태 변화를 거친다.
  2. 준비(Ready) 상태에서는 CPU 할당을 기다리며, 실행(Running) 상태에서는 CPU를 실제로 사용한다.
  3. 대기(Waiting) 상태는 입출력(I/O)이나 특정 이벤트가 일어날 때까지 블록(block) 되어 있는 상태다.
  4. 모든 프로세스 정보는 PCB에 기록되어, 운영체제가 이를 참고해 스케줄링자원 할당을 제어한다.

 


5. 참고 자료

  • Operating System Concepts (A. Silberschatz, P.B. Galvin, G. Gagne)
  • Modern Operating Systems (A. Tanenbaum, H. Bos)
  • 혼자 공부하는 컴퓨터 구조 + 운영체제