[OS] 프로세스의 상태(Process State)

YUZAMONG·2025년 2월 8일

OS

목록 보기
2/4

프로세스의 상태

프로세스의 상태는 프로세스가 실행되는 동안의 단계를 나타낸다.
여러 프로세스가 동시에 실행될 때, 상태 관리를 통해 각 프로세스가 사용하는 자원과 상태에 따라 적절한 처리를 할 수 있다.

운영체제가 효율적으로 CPU 자원을 관리하고, 여러 프로세스를 처리할 수 있도록 하는 중요한 개념이다.

일반적으로 5가지 주요 상태로 나눠지고, 특별한 경우로 휴식과 보류 상태가 추가될 수 있다.

1. 생성(Create)

프로세스가 메모리를 할당받고 *PCB가 생성되어 실행 준비를 완료한 상태이다.

🔗 프로세스와 PCB

2. 준비(Ready)

생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태이다.
프로세스의 순서는 여러 개의 준비 큐(Ready Queue)로 관리되며, 준비 큐의 종류는 *스케줄링 정책에 따라 결정된다.

  • dispatch(PID): 스케줄러가 준비 큐에서 실행할 프로세스를 선택하고, 해당 프로세스를 CPU에 할당하는 명령어

CPU 스케줄링
CPU를 사용할 프로세스를 선택하는 작업이다. CPU의 사용률을 극대화하고, 프로세스 간 자원을 공평하게 배분하며, 시스템 성능을 최적화하는 과정이다.

3. 실행(Running, Excute)

CPU에서 프로세스가 실행 중인 상태로, *CPU의 개수 만큼의 프로세스가 실행 상태가 된다.

🔗 CPU | 멀티 프로세서

  • timeout(PID): 주어진 시간(time slice)을 다 사용하고도 작업이 끝나지 않았다면 ready 상태로 돌아가 다음 차례를 기다림
  • exit(PID): running 상태 동안 작업이 완료되면 프로세스가 정상 종료됨
  • block(PID): running 상태의 프로세스가 입출력을 요청하면 CPU는 입출력 관리자에게 입출력을 요청하고, 해당 프로세스를 waiting 상태로 옮김 -> dispatch

4. 대기(Waiting) / 블로킹(Blocking)

입출력 요청에 의해 해당 I/O 작업이 끝날 때까지 대기하는 상태이다.
입출력 종료를 running 상태로 기다리면 효율성이 떨어지기 때문에, 입출력 장치 별로 마련된 queue에서 기다린다.
waiting 상태로 옮기고 CPU 스케줄러가 waiting 상태에 있는 프로세스 중 하나를 가져다 running 상태로 만든다.

  • wakeup(PID): 입출력이 완료되면 인터럽트가 발생하고, waiting 상태에 있는 여러 프로세스 중 해당 인터럽트로 깨어날 프로세스를 찾아서 해당 프로세스의 PCB를 ready 상태로 옮김

5. 완료(Terminate)

프로세스가 정상 및 강제 종료되어 자신이 가지고 있던 메모리를 반환하고 PCB가 삭제된 상태이다.

  • exit(): 프로세스 종료

Core Dump
오류나 *abort를 만나면 디버깅을 위해 강제 종료 직전의 메모리 상태를 저장 장치로 옮기는데, 그 메모리 상태를 기록한 파일을 말한다.

abort
다른 프로세스에 의해 비정상적으로 종료되는 강제 종료.

6. 휴식(Pause)

프로세스가 작업을 일시적으로 쉬고 있는 상태이다. sleep()을 호출하는 등 특정 조건이 충족될 때까지 실행을 잠시 멈춘다.
메모리의 데이터와 PCB가 유지되기 때문에 프로세스는 멈춘 지점에서부터 재시작할 수 있다.

7. 보류(Suspend)

프로세스가 메모리에서 잠시 쫓겨난 상태로, 다음과 같은 경우에 보류 상태가 된다.

  1. 메모리가 꽉 차서 일부 프로세스를 메모리 밖으로 내보낼 때
  2. 프로그램에 오류가 있어서 실행을 미뤄야 할 때
  3. 바이러스와 같이 악의적인 공격을 하는 프로세스라고 판단될 때
  4. 매우 긴 주기로 반복되는 프로세스라 메모리 밖으로 쫓아내도 문제가 없을 때
  5. 입출력을 기다리는 프로세스의 입출력이 계속 지연될 때 등

쫓겨난 프로세스는 swap area에 상태를 구분하여 보관되며, 재시작하면 원래 활성 상태로 들어간다.

  • 대기 상태에서 옮겨진 보류 대기 상태
  • 준비 상태에서 옮겨진 보류 준비 상태

단, 보류 대기 상태에서 입출력이 완료됐을 때는 활성 상태가 아닌 보류 준비 상태로 옮겨진다.


Reference

https://babebab.tistory.com/18

profile
유자맛 찹쌀유과

0개의 댓글