본문 바로가기
CS/운영체제

[Chapter 3. 프로세스] 프로세스 상태와 Context Switching, PCB(Process Control Block)

by 베어 그릴스 2022. 8. 17.
본 정리는 운영체제(Operating System: Concepts) 9th edition과 22학년도 1학기 건국대학교 운영체제 수업을 바탕으로 하고 있습니다.

 

 

프로세스의 상태


프로세스의 상태 천이도

 

1. 준비(ready)

준비 상태는 스케줄링에 의하여 언제든지 실행이 될 수 있는 상태이다.

준비 리스트 (ready list) 또는 준비 큐(ready queue)에서 CPU 스케줄러에 의해 스케줄링 되기를 기다린다.

 

준비 상태로 천이되어 오는 경우

(1) 프로세스 생성 후, 선정되어 CPU 할당을 대기

(2) 실행되던 프로세스에서 비자발적인 문맥교환이 일어났을 때. → CPU 의 독점 방지를 위해서 타임 슬라이스 소진 시 혹은 인터럽트 발생으로 커널이 CPU 를 회수하고 프로세스를 일시 중지시킨 상태

(3) 대기하고 있던 입출력 또는 시그널 사건이 완료된 경우

 

 

2. 실행(running)

CPU가 프로세스를 수행하는 상태이다.

 

프로세스가 CPU를 회수 당하거나, 반납할 때까지 실행 상태에 있게된다.

 

회수 당했을 때는 준비 상태로, 반납할 경우엔 대기 상태로 천이된다.

 

*실행에는 사용자 모드 실행과 커널 모드 실행 두가지가 있다.

사용자 모드 실행 : 사용자나 라이브러리 코드 (프로세스의 텍스트 영역)가 실행되고 있는 상태

커널 모드 : 프로세스가 시스템 호출(트랩)을 하여 커널 내부로 진입하 여 커널의 코드부분이 실행되는 상태

 

 

3. 대기(wait)

사용자 프로세스가 시스템 호출을 통한 입출력 요구나, 사건 발생 대기 중에는 CPU에 의하여 수행될 필요가 없기 때문에 CPU를 반납한다.

 

이렇게 프로세스가 자발적으로 CPU를 반납한 상태를 대기 상태라고 한다.

 

대기 상태의 프로세스는 사건의 종류별로 구성된 대기 리스트(wait queue, 또는 sleep queue)로 이동한다.

 

사건이 발생하였거나 완료되었을 때 준비 상태로 천이되어 스케줄링을 기다린다.

 

CPU의 멈춤 없이 I/O를 받을 수 있는 기반이다.

 

 

4. 종료(terminated)

프로세스가 종료된 상태

 

 

* Context Switching : 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CP가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업을 Context Switch(Context Switching)라고 한다. 위의 예시에선 실행 상태에 있는 프로세스가 준비 상태로 가는 것을 말한다.

 

 

프로세스 제어 블록 (Process Control Block, PCB)


커널 내의 프로세스 문맥 정보를 저장하는 자료 구조

프로세스의 일생 동안 해당 프로세스의 모든 정적, 동적인 정보를 가진다.

 

즉, 커널이 프로세스를 관리하기 위한 실체이다.

 

결국 위에서 설명한 준비 리스트나 대기리스트는 PCB의 리스트이다.

실행 상태 시 PCB는 준비 리스트에 존재하며, 상태 표시만 'RUNNING'으로 변경된다.

 

아래의 그림처럼 프로세스 각자의 문맥과 상태를 각자의 PCB에 저장 및 복원하며 프로세스들이 번갈아가면서 수행된다.

 

*PCB 구성 정보

PCB 정보 내용
프로세스 ID 식별자 고유번호
사용자 정보 프로세스를 발생시킨 사용자 정보
프로세스 상태 프로세스의 상태 정보
신규, 준비(READY), 대기(BLOCKED), 실행(RUNNING), 종료 중 하나이다.
레지스터 문맥 문맥 교환을 위한 커널 수준 문맥 보관
(PC, SP, PSR, 범용 레지스터 등)
CPU 스케줄링 정보 우선 순위, 우선순위 결정 정보
(최근 CPU 사용량, CPU 대기 시간, 잔여 타임 슬라이스 등)
메모리 정보 메모리 영역(text, data, stack)의 주소 및 크기
상,하한 레지스터
가상 메모리 정보
자원 할당 및 사용 정보 입출력 보호 및 오류에 의한 종료 시 자원 회수 용도이다.
(할당된 각종 입출력 자원, 사용 중인 파일 등의 정보)
각종 링크 연결 리스트를 활용한다.
기타