프로세스 제어 블록
프로세스 제어 블록PCB은 프로세스를 실행하는 데 필요한 중요한 정보를 보관하는 자료구조로 TCB(Task Control Block)라고도 한다.
프로세스 제어 블록의 구성

PCB 구성도
- 포인터 : 프로세스 제어 블록의 첫 번째 블록에는 포인터가 저장된다. 준비상태나 대기상태는 큐로 운영되는데, 프로세스 제어 블록을 연결하여 준비 상태나 대기상태의 큐를 구현할 때 포인터를 사용한다.
- 프로세스 상태 : 프로세스 상태에는 생성, 준비, 실행, 대기, 보류 준비, 보류 대기 등이 있다. 이는 프로세스가 현재 어떤 상태에 있는지를 나타내며, 프로세스 제어 블록의 두 번째 블록에 저장된다.
- 프로세스 구분자 : 운영체제 내에 있는 여러 프로세스를 구별하기 위한 구분자를 저장한다.
- 프로그램 카운터 : 다음에 실행될 명령어의 위치를 가리키는 프로그램 카운터의 값을 저장한다.
- 프로세스 우선순위 : 대기 상태의 큐도 우선순위별로 따로 운영된다. 다시말해 우선순위에 따라 프로세스 제어 블록들이 여러 줄로 서 있다. CPU스케줄러가 준비 상태에 있는 프로세스 중 실행 상태로 옮겨야 할 프로세스를 선택할 때는 프로세스 우선순위를 기준으로 삼는다.
- 각종 레지스터 정보 : 이전에 실행할 때 사용한 레지스터의 값을 보관해야 다음에 실행할 수 있기 때문에 자신이 사용하던 레즈스터의 중간값을 보관한다.
- 메모리 관리 정보 : 프로세스 제어블록에는 프로세스 메모리의 어디에 있는지 나타내는 메모리 위치 정보, 메모리 보호를 위해 사용하는 경계 레지스터 값과 한계 레지스터 값 등이 저장된다.
- 할당된 자원 정보 : 프로세스를 실행하기 위해 사용하는 입출력 자원이나 오픈 파일 등에 대한 정보를 말한다.
- 계정 정보 : 계정 번호, CPU 할당 시간, CPU 사용 시간 등으로, 이러한 정보는 프로세스 제어 블록에 저장된다.
- 부모 프로세스 구분자와 자식 프로세스 구분자 : 프로세스 제어 블록에는 부모 프로세스를 가리키는 PPID와 자식 프로세스를 가리키는 CPID 정보도 저장된다.
포인터의 역할
입출력이 완료되기를 기다리는 프로세스는 대기 상태로 모인다. 시스템 내에는 다양한 종류의 입출력장치가 있기 때문에 대기 상태로 모이는 프로세스도 다양하다. 그런데 이것들을 하나로 모아놓으면 관리하기가 불편하다.(필요한 프로세스를 찾고자 대기 상태의 모든 프로세스를 뒤져야한다.)
이러한 불편함이 없도록 대기 상태에서는 같은 입출력을 요구한 프로세스끼리 모아놓는다.