프로세스 제어 블록(PCB)
프로세스 제어 블록
프로세스 제어 블록(Process Control Block)이란?
프로세스 제어 블럭(PCB)
은 프로세스를 실행하는 데 필요한 중요한 정보를 보관하는 자료 구조이며, TCB(Task Control Block)
이라고도 불린다.
- 모든 프로세스는 고유의 프로세스 제어 블록을 갖고 있다.
- 프로세스 생성 시 프로세스 제어 블록이 만들어진다. 프로세스가 실행을 완료하면 폐기된다.
프로세스 제어 블록 저장되는 정보는 무엇일까 ?
- 프로세스 제어 블록의 구성
- 포인터
- 프로세스 제어 블럭의 첫 번째 블록에는 포인터가 저장된다.
준비 상태
나대기 상태
는 큐로 운영된다. 프로세스 제어 블록을 연결하여준비 상태
나대기 상태
의 큐를 구현할 때 포인터를 사용한다.
- 프로세스 제어 블럭의 첫 번째 블록에는 포인터가 저장된다.
- 프로세스의 상태
- 프로세스의 상태에는 생성, 준비, 실행, 대기, 보류 준비, 보류 대기 등이 있다. 이는 프로세스가 현재 어떤 상태에 있는지를 나타내며 프로세스 제어 블록의 두 번째 블록에 저장된다.
- 프로세스 구분자
- 운영체제 내에 있는 여러 프로세스를 구별하기 위한 구분자(PID)를 저정한다.
- 프로그램 카운터
- 다음에 실행될 명령어의 위치를 가리키는 프로그램 카운터의 값을 저장한다.
- 프로세스 우선순위
- 프로세스에서
대기 상태
에서 기다리는 프로세스 마다 중요도가 각각 다르다. - 커널 프로세스 > 사용자 프로세스 안에서도 우선순위가 나뉜다.
- 다양한 우선순위의 프로세스가
대기 상태
로 들어오기 때문에대기 상태
의 큐도 우선순위별로 따로 운영된다. - CPU 스케쥴러가
준비 상태
에 있는 프로세스 중실행 상태
로 옮겨야 할 프로세스를 선택할 때는 프로세스 우선순위를 기준으로 삼는다. - 높은 우선순위의 프로세스가 낮은 우선순위를 갖고 있는 프로세스보다 먼저 실행되고 더 자주 실행된다.
- 프로세스에서
- 각종 레지스터 정보
- 프로세스 제어 블록에는 프로세스가 실행되는 중에 사용하던 레지스터,
누산기(accumulator)
,색인 레지스터(index register)
,스택 포인터(stack pointer)
와 같은 레지스터 값이 저장된다. - 이전 실행할 때 사용한 레지스터의 값을 보관해야 다음에 실행할 수 있기 때문에 자신이 사용하던 레지스터의 중간값을 보관한다.
- 프로세스 제어 블록에는 프로세스가 실행되는 중에 사용하던 레지스터,
- 메모리 관리 정보
- 프로세스가 메모리안에 어디에 있는지 나타내는 메모리의 위치 정보
- 메모리 보호를 사용하는
경계 레지스터 값
과한계 레지스터 값
등이 저장됨. 세그먼테이션 테이블(segmentation)
.페이지 테이블(page table)
등의 정보도 보관한다.
- 할당된 자원 정보
- 프로세스를 실행하기 위해서 사용하는 입출력 자원이나 오픈 파일 등에 대한 정보를 말함
- 어떤 프로세스가 하드디스크에 저장된 파일을 열어서 작업하거나 음악을 출력하기 위해 사운드 카드에 접근하고 있다면 파일이나 사운드카드에 대한 정보가 필요한데, 이러한 정보를 프로세스 제어 블록에 저장함
- 계정 정보
- 계정 번호, CPU할당 시간, CPU 사용 시간 등등… 이러한 정보들을 프로세스 제어 블록에 저장된다.
- 부모 프로세스 구분자(PPID, Parent PID)와 자식 프로세스 구분자(CPID, Child PID)
- 부모 프로세스(Parent Process) 정보와 자식 프로세스(Child Process) 프로세스 제어 블록에 저장된다.
참고 문헌
- 조성호, “쉽게배우는 운영체제”