프로세스 상태 전이

do_it·2025년 10월 16일

os

목록 보기
6/13

1. 프로세스 상태 관리

상태설명
New (생성)프로세스가 막 생성된 상태 (아직 실행 준비 X)
Ready (준비)CPU를 할당받기 위해 대기 중인 상태
Running (실행)CPU를 점유하여 명령어를 수행 중인 상태
Waiting / Blocked (대기)입출력(I/O) 등 외부 이벤트를 기다리는 상태
Terminated (종료)실행이 끝난 상태 (시스템에서 PCB가 제거됨)

OS는 동시에 여러 프로세스를 관리해야 하기 때문에
각 프로세스가 지금 어떤 상태에 있는지를 추적해야 함

커널 & 스케줄러

[커널의 프로세스 관리 기능]
프로세스의 상태를 바꾸는 행위 자체는 OS의 커널이 담당함
커널은 이벤트를 감지하여 상태를 바꿈

c.f 이벤트
타임 슬라이스(time slice) 만료
I/O 요청 발생
I/O 완료 인터럽트 발생
새 프로세스 생성 (fork, exec 등)
프로세스 종료

커널 내부의 프로세스 관리 모듈(Process Manager)이 해당 프로세스의 PCB(Process Control Block)를 업데이트하면서 상태를 직접 변경

[스케줄러]

스케줄러는 커널 내부의 의사결정 모듈로
지금 어떤 프로세스를 Running 상태로 만들지 결정함

  • 스케줄러는 상태를 직접 바꾸지 않고, 어떤 프로세스가 다음 상태로 전이될지 결정

⇒ 커널: 프로세스의 상태 전이 주체

스케줄러: 어떤 프로세스가 그 전이에 참여할지 결정하는 의사결정 모듈

[스케줄러 종류별 전이 관여 방식]

스케줄러 종류담당 전이역할
장기 스케줄러 (Long-term)New → Ready시스템에 프로세스 입장 결정
단기 스케줄러 (Short-term)Ready ↔ RunningCPU 점유 프로세스 선택
중기 스케줄러 (Medium-term)Suspended ↔ Ready프로세스 스와핑(swap in/out) 관리



2. 프로세스 상태 전이 (Transition)

OS가 프로세스의 실행 흐름을 효율적으로 제어하기 위해 상태를 바꿔가며 관리하는 과정

상태 전이트리거설명
New → Ready프로세스 생성 완료PCB 생성, 준비 큐 등록
Ready → RunningCPU 스케줄러 선택실행 개시
Running → WaitingI/O 요청CPU 반납, I/O 큐 이동
Waiting → ReadyI/O 완료다시 CPU 대기 상태
Running → Ready타임 슬라이스 만료CPU 선점, Ready Queue로 복귀
Running → Terminated실행 완료PCB 제거, 메모리 해제

2-1. 상태 전이

(1) New → Ready

프로세스가 생성되어 PCB가 초기화되고, 실행 가능한 상태가 되었을 때 Ready Queue로 이동
e.g. 사용자가 프로그램 실행 버튼을 누른 직후

(2) Ready → Running

CPU 스케줄러가 Ready Queue에서 하나의 프로세스를 선택해 CPU를 할당
CPU 점유권을 얻은 순간
[선점형 스케줄링, Preemptive Scheduling]
우선순위가 높으면 바로 이 전이가 발생할 수 있음

(3) Running → Waiting / Blocked

프로세스가 입출력 (I/O) 작업을 요청할 때 발생
CPU는 그 동안 다른 프로세스를 실행시켜야 하므로, 해당 프로세스는 Waiting Queue로 이동
e.g. 파일 읽기, 네트워크 요청, 프린터 출력 등

(4) Waiting → Ready

대기하던 입출력 작업이 완료되면
프로세스는 다시 CPU를 요청할 수 있게 되어 Ready Queue로 돌아감

(5) Running → Ready

타임 슬라이스(Time Slice)가 만료되었거나
더 높은 우선순위의 프로세스가 등장하면 (선점형 스케줄링)
현재 프로세스는 다시 Ready 상태로 돌아감

(6) Running → Terminated

프로세스의 모든 명령이 완료되어 실행이 끝나면
PCB가 정리되고 메모리에서 제거됨
e.g. 프로그램 정상 종료 / 에러 종료

[e.g.] 사용자가 크롬 브라우저를 실행할 때

  1. 사용자가 크롬 실행: New → Ready
  2. CPU가 크롬 선택: Ready → Running
  3. 크롬이 웹 페이지 요청 (I/O 발생): Running → Waiting
  4. 네트워크 응답 도착 Waiting → Ready
  5. 다시 CPU 배정 Ready → Running
  6. 브라우저 종료 Running → Terminated

2-2. 상태전이 & PCB

[상태 전이 & PCB 정보 업데이트 시점]

OS가 프로세스 상태전이를 수행할 때마다 해당 정보를 PCB 안에 업데이트해야, 언제든지 중단 지점 이후로 실행을 재개할 수 있음

상태 전이PCB에 반영되는 주요 변화업데이트되는 정보 예시
New → ReadyPCB 생성 및 초기화PID, 초기 프로그램 카운터(PC), 메모리 주소, 우선순위, 상태=Ready
Ready → Running스케줄러가 CPU 배정
→ PCB의 상태 갱신상태=Running, CPU 점유시간 시작, 스케줄러 타임스탬프 기록
Running → WaitingI/O 요청 발생 → 실행 중단,
PCB에 현재 레지스터 값 저장상태=Waiting, 프로그램 카운터(PC), CPU 레지스터 값, 요청된 I/O 장치 ID
Waiting → ReadyI/O 완료 → 다시 실행 준비 상태상태=Ready, I/O 결과 갱신, 스케줄러 우선순위 재조정
Running → Ready타임 슬라이스 만료 or CPU 선점 발생상태=Ready, 현재 PC/레지스터 저장, 남은 CPU 시간 기록
Running → Terminated프로세스 실행 종료 → PCB 제거상태=Terminated, 자원 해제, CPU 사용 시간, 종료 코드(exit code) 저장

3. 프로세스 실행흐름 (자원 교환 관점)

OS의 프로세스 실행 흐름은
CPU, I/O 장치, 그리고 스케줄러(scheduler)가 서로 자원을 주고받는 과정

  • 스케줄러가 CPU 자원을 프로세스에게 배정 → CPU가 계산 수행 →
    I/O 요청 발생 시 I/O 장치로 작업 위임 → 완료 후 다시 스케줄러가 CPU 배정
구성 요소주요 역할전달/교환하는 자원
CPU (중앙처리장치)프로세스의 명령어를 실제로 실행연산 시간(Time slice), 프로그램 카운터, 레지스터
I/O 장치 (입출력 장치)파일, 네트워크, 디스크, 키보드, 프린터 등 외부 입출력 수행데이터 블록, 버퍼(Buffer), 인터럽트 신호
스케줄러 (Scheduler)어떤 프로세스가 CPU를 사용할지 결정프로세스 우선순위, 큐(Ready Queue, I/O Queue) 관리

## 3-1. 자원 교환의 순환 흐름
요소역할자원 교환 시점
CPU연산 수행스케줄러가 프로세스 선택 시 / I/O 요청 시
I/O 장치데이터 입출력CPU로부터 요청받을 때 / 완료 후 인터럽트 발생 시
스케줄러CPU 할당·회수Ready ↔ Running ↔ Waiting 전이마다

CPU는 계산을, I/O는 데이터 처리를, 스케줄러는 자원 분배를 담당하며 이 셋이 계속 순환적으로 자원을 교환

[e.g. 웹브라우저에서 파일 다운로드]

  1. 스케줄러가 브라우저 프로세스를 CPU에 올림

    Ready → Running

  2. CPU가 네트워크 요청 코드를 실행

    파일 다운로드 명령 발견

  3. CPU는 I/O 장치(네트워크 카드) 에 데이터 요청 위임

    Running → Waiting

  4. I/O 장치가 데이터를 수신 후 인터럽트를 발생

    스케줄러가 프로세스를 Ready로 이동

  5. 스케줄러가 다시 CPU에 프로세스를 배정

    Ready → Running

  6. CPU가 수신된 데이터를 처리하고 프로그램 종료

    Running → Terminate

0개의 댓글