윈도우 운영체제를 사용해 봤다면 아찔한 다음과 같은 화면을 본 적이 있을 것이다. 이는 해당 프로세스 상태가 ‘응답 없음’을 알려주는 화면이다.
이번에는 윈도우 작업 관리자에서 [세부 정보] 탭에서 프로세스의 [상태] 탭을 한번 확인해보자. 어떤 프로세스는 ‘실행 중’ 상태이고 어떤 프로세스는 ‘일시 중단됨’ 상태이다.
이렇듯 프로세스는 모두 저마다의 상태가 있다. 운영체제는 이런 프로세스의 상태를 PCB에 기록하여 관리한다. 그리고 많은 운영체제는 이처럼 동시에 실행되는 수많은 프로세스를 계층적으로 관리한다. 이번 강의에서는 프로세스들의 상태와 계층적 관리에 대하 자세히 알아보자.
우리가 컴퓨터를 사용할 때 여러 프로세스들이 빠르게 번갈아 가면서 실행된다고 했다. 그 과정에서 하나의 프로세스는 여러 상태를 거치며 실행된다. 그리고 운영체제는 프로세스의 상태를 PCB를 통해 인식하고 관리한다. 프로세스의 상태를 표현하는 방식은 운영체제마다 조금씩 차이가 있지만, 프로세스가 가질 수 있는 대표적인 상태는 아래와 같다.
1) 생성 상태
프로세스를 생성 중이 상태를 생성 상태(new)라고 한다. 이제 막 메모리에 적재되어 PCB를 할당받은 상태를 말한다. 생성 상태를 거쳐 실행할 준비가 완료된 프로세스는 곧바로 실행되지 않고 준비 상태가 되어 CPU의 할당을 기다린다.
2) 준비 상태
준비 상태(ready)는 당장이라도 CPU를 할당받아 실행할 수 있지만, 아직 자신의 차례가 아니기에 기다리고 있는 상태이다. 준비 상태 프로세스는 차례가 되면 CPU를 할당받아 실행 상태가 된다. 참고로 준비 상태인 프로세스가 실행 상태로 전환하는 것을 디스패치(dispatch)라고 한다.
3) 실행 상태
실행 상태(running)는 CPU를 할당받아 실행 중인 상태를 의미한다. 실행 상태인 프로세스는 할당된 일정 시간 동안만 CPU를 사용할 수 있다. 이때 프로세스가 할당된 시간을 모두 사용하면 (타이머 인터럽트가 발생하면) 다시 준비 상태가 되고, 실행 도중 입출력장치를 사용하여 입출력 장치의 작업이 끝날 때까지 기다려야 한다면 대기 상태가 된다.
4) 대기 상태