CPU 스케줄링

스케줄러는 준비 큐에서 실행할 프로세스를 고르고, 인터럽트가 다시 큐를 흔든다

Ready, Running, Waiting은 독립 카드가 아니라 디스패치와 인터럽트, I/O 완료에 의해 계속 전이되는 상태입니다.

Ready Queue

P2, P4, P7 대기

실행 가능하지만 CPU를 아직 받지 못한 프로세스입니다.

New

생성 후 진입

메모리와 PCB 준비가 끝나면 ready queue에 들어옵니다.

CPU Running: P1
Waiting

I/O 대기 큐

디스크, 네트워크, 락 대기 중에는 CPU 후보에서 빠집니다.

Terminated

완료 후 제거

작업이 끝나면 PCB 정리와 자원 반환이 이어집니다.

dispatch Ready Queue에서 CPU로 스케줄러가 고른 P1이 Running 상태가 된다.
preempt CPU에서 Ready로 타임 슬라이스 만료나 더 높은 우선순위 작업이 개입한다.
block CPU에서 Waiting으로 디스크, 네트워크, 락 같은 느린 작업을 기다린다.
wakeup Waiting에서 Ready로 I/O 완료 인터럽트가 다시 실행 후보로 올린다.
exit CPU에서 Terminated로 작업이 끝나면 PCB와 자원을 정리한다.

디스패치

스케줄러가 고른 프로세스가 CPU 문맥을 받아 Running 상태가 됩니다.

선점

타이머 인터럽트나 더 높은 우선순위 작업이 오면 다시 Ready로 밀릴 수 있습니다.

대기 해제

I/O 완료 인터럽트는 Waiting 프로세스를 Ready Queue로 되돌립니다.