CS/운영체제

프로세스의 상태 전이와 CPU 스케줄링의 흐름

민톨이 2025. 5. 18. 21:51
728x90

운영체제는 여러 개의 프로세스를 동시에 관리해야 한다. 이때 운영체제는 각 프로세스의 상태를 관리하고, CPU를 어떤 프로세스에 할당할지 결정하는 역할을 한다. 이 과정에서 CPU 스케줄링, 프로세스 상태(준비/대기/실행 등), PCB(Process Control Block), 그리고 인터럽트 같은 개념들이 유기적으로 연결된다.


1. 프로세스가 생성되면

프로그램이 실행되면 운영체제는 해당 프로세스를 위한 PCB(Process Control Block)를 생성한다. 이 PCB는 프로세스의 상태, 프로그램 카운터, 레지스터 정보, 메모리 정보 등을 저장하는 구조체다. 이 PCB는 프로세스의 전체 실행 정보를 관리하는 데 필수적이다.


2. 준비 상태

프로세스가 실행 준비가 되면 준비 큐(Ready Queue)에 들어간다. 이 상태에서는 CPU를 할당받기만 기다리고 있다.
운영체제의 스케줄러(Scheduler)는 준비 큐에 있는 프로세스들 중 하나를 선택해 CPU를 할당한다. 이때 선택된 프로세스는 실행 상태(Running)로 전환된다.


3. 실행 상태

CPU를 할당받은 프로세스는 명령어를 실행하기 시작한다. 하지만 실행 도중 I/O 작업 요청이 발생하거나, 정해진 시간(Time Slice)을 초과하면 프로세스는 중단된다. 이때 발생하는 이벤트를 인터럽트(Interrupt)라고 한다.

운영체제는 인터럽트가 발생하면 해당 프로세스의 정보를 PCB에 저장하고, 현재 프로세스를 중단시킨다.


4. 대기 상태

I/O 요청과 같은 처리를 기다리는 동안 프로세스는 대기 상태(Waiting)로 전환되어 **대기 큐(Blocked Queue)**에 들어간다.
I/O 작업이 끝나면 다시 준비 상태로 전환되어 Ready Queue에 들어간다.


5. 종료

프로세스가 모든 작업을 마치면 종료 상태가 된다. 이때 PCB는 제거되고, 프로세스는 시스템 자원을 반환한다.

'CS > 운영체제' 카테고리의 다른 글

프로세스와 스레드의 차이  (0) 2025.05.12
운영체제와 응용프로그램  (0) 2025.05.10