프로세스는 실행되는 동안 CPU 스케줄링, I/O 대기, 실행 중단 등의 다양한 상황을 거친다.
운영체제는 이러한 상황을 효과적으로 관리하기 위해 프로세스의 상태를 PCB를 통해 인식하고 관리한다.

 

📌  프로세스의 주요 상태

운영체제마다 다소 차이는 있지만, 일반적으로 프로세스는 다음과 같은 상태를 가진다.

 

1️⃣ 생성 상태( New )

  • 프로세스가 생성되고, 이제 막 메모리에 적재되어 PCB를 할당 받은 상태를 말한다.
  • 생성 상태를 거쳐, 실행 준비가 완료된 프로세스는 곧바로 실행되지는 않고, 준비 상태가 되어 CPU의 할당을 기다린다.

2️⃣ 준비 상태( Ready )

  • CPU를 할당받아 실행할 수 있지만, 아직 할당받지 못한 상태를 말한다.
  • 여러개의 프로세스가 동시에 준비 상태가 될 수 있고, 운영체제의 스케줄러( Scheduler )가 이들 중 하나를 선택하여 실행한다.

3️⃣ 실행 상태( Running )

  • CPU를 할당받아 실행 중인 상태를 말한다.
  • 실행 상태인 프로세스는 할당된 일정 시간 동안만 CPU를 사용할 수 있다.
  • 할당된 시간을 모두 사용하면 다시 준비 상태가 되고, 실행 도중 입출력장치를 사용하면 입출력 작업이 끝날때까지 대기 상태가 된다.

4️⃣ 대기 상태( Waiting / Blocked )

  • 프로세스가 실행되던 중 I/O 작업( 예: 디스크 읽기, 네트워크 요청 )이 발생하거나 특정 이벤트( 예: 동기화 변수 )가 발생하면 대기하는 상태를 말한다.
  • 입출력 완료 인터럽트를 받을 때까지 대기하고, 이 동안은 CPU를 점유하지 않는다.
  • 입출력 완료 인터럽트를 받아 I/O 요청이 완료되면 다시 준비 상태가 된다.

5️⃣ 종료 상태( Terminated )

  • 프로세스가 실행을 완료하거나, 오류 또는 강제 종료에 의해 더 이상 실행되지 않는 상태를 말한다.
  • 운영체제는 종료된 프로세스의 메모리 및 리소스를 해제하고, PCB를 정리한다.

📌 프로세스 상태 전이( State Transition )

프로세스는 실행 중 다음과 같은 상태 변화를 겪는다.

 

1️⃣ 생성 ▶ 준비 ( New ▶ Ready )

  • 새로운 프로세스가 생성되면, 실행을 위해 준비 상태( Ready )로 이동한다.

2️⃣ 준비 ▶ 실행 ( Ready ▶ Running )

  • CPU 스케줄러가 준비 상태에 있는 프로세스 중 하나를 선택하여 CPU를 할당하면 실행 상태( Running )로 이동한다.

3️⃣ 실행 ▶ 준비 ( Running ▶ Ready )

  • 프로세스가 CPU 시간을 초과했거나, 우선순위가 높은 다른 프로세스가 스케줄링될 경우 다시 준비 상태( Ready )로 이동한다.

4️⃣ 실행 ▶ 대기 ( Running ▶ Waiting )

  • 프로세스가 I/O 요청으로 인해 CPU 사용을 중단해야 할 경우, 대기 상태( Waiting )로 이동한다.

5️⃣ 대기 ▶ 준비 ( Waiting ▶ Ready )

  • 대기 상태에 있던 프로세스가 I/O 작업이 완료되거나 필요한 이벤트가 발생하면, 다시 준비 상태( Ready )로 이동한다.

6️⃣ 실행 ▶ 종료 ( Running ▶ Terminated )

  • 프로세스가 정상적으로 실행을 마치거나, 오류 또는 강제 종료되면 종료 상태( Terminated )로 이동한다.

📌 추가적인 프로세스 상태

중단 상태( Suspended )

프로세스가 일시적으로 메모리에서 제거되고 보조 저장장치( 디스크 등 )에 저장된 상태를 말한다.
  • 메모리에서 프로세스가 제거된 상태( 보조 기억장치로 스왑됨 )
  • CPU를 포함한 모든 자원을 사용하지 않는다.
  • 운영체제가 직접 상태를 변경한다.

중단 상태( Suspended ) 상태가 필요한 이유

일반적인 프로세스 상태( Running, Ready, Waiting )와 달리, Suspended 상태는 프로세스가 '실행할 수 없는 상황'을 말한다. 운영체제는 아래와 같은 이유로 프로세스를 중단 상태로 전환한다.

 

1️⃣ 메모리 부족( Swapping, 스왑 아웃 )

  • RAM이 부족할 때, 운영체제는 일부 프로세스를 디스크로 옮겨 메모리를 확보한다.
  • 보통은 오랫동안 실행되지 않은 프로세스가 먼저 중단된다.
  • 메모리가 다시 확보되면, 프로세스는 디스크에서 다시 RAM으로 복원( Swapping In )되어 Ready 상태로 변경된다.

2️⃣ 외부 자원의 문제( I/O 장치 사용 불가 )

  • 프로세스가 특정 하드웨어( 프린터, 네트워크, 디스크 등 )를 기다리고 있는데, 장치가 사용할 수 없는 상태라면 운영체제는 해당 프로세스를 Suspended 상태로 변경한다.
  • 자원이 사용 가능해지면 다시 Ready 상태로 복귀한다.
    • 프린터 대기열에 있는 작업이, 프린터가 오프라인 상태라서 처리되지 못하는 경우
    • 네트워크가 끊겨 다운로드 중이던 프로그램이 일시 정지 되는 경우

 

'CS > 혼공컴운' 카테고리의 다른 글

[CS] 스레드  (0) 2025.02.11
[CS] 프로세스 계층 구조  (0) 2025.02.11
[CS] 프로세스의 메모리 영역  (0) 2025.02.10
[CS] 문맥 교환  (0) 2025.02.10
[CS] 프로세스 개요  (0) 2025.02.10

+ Recent posts