프로세서 제어 블록이라고도 하며, 운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터를 의미합니다. 프로세스가 생성되면 운영체제는 PCB를 생성합니다.
프로그램이 실행되면 프로세스가 생성되고, 스택과 힙 등 여러 자료 구조를 기반으로 메모리가 할당됩니다. 프로세스의 메타데이터들이 PCB에 저장되어 관리되며, 중요한 정보를 포함하고 있기 때문에 커널 스택에서 관리됩니다.
PCB의 관리는 LinkedList의 방식으로 관리됩니다.
PCB의 구조
프로세스 스케줄링 상태 : 프로세스가 CPU에 대한 소유권을 얻은 이후의 상태
프로세스 ID : 프로세스 ID, 해당 프로세스의 자식 프로세스 ID
프로세스 권한 : 컴퓨터 자원 또는 I/O 디바이스에 대한 권한 정보
프로그램 카운터 : 프로세스에서 실행해야 할 다음 명령어의 주소에 대한 포인터
CPU 레지스터 : 프로세스를 실행하기 위해 저장해야할 레지스터에 대한 정보
CPU 스케줄링 정보 : CPU 스케줄러에 의해 중단된 시간이나 CPU 점유 시간 등에 대한 정보
계정 정보 : 프로세스 실행에 사용된 CPU 사용량, 실행한 유저나 부모 프로세스 등에 대한 정보
I/O 상태 정보 : 프로세스에 할당된 I/O 디바이스 목록
PCB를 교환하는 과정을 말하며, 한 프로세스에 할당된 시간이 끝나거나 인터럽트에 의해 발생합니다.
컨텍스트 스위칭이 일어날 때, 유휴 시간이 발생하며 더하여 캐시미스가 발생하게 됩니다.