프로세스 제어 블록이라고도 불리는 PCB는 운영체제에서 프로세스에 대한 메타데이터(프로세스의 정보)를 저장한 구조체를 말한다.
프로세스가 생성되면 운영체제는 해당 PCB를 생성하게 된다. 그 이유는 각각의 프로세스는 프로세스 식별번호(PID)를 할당하게 되는데 운영체제는 다중 프로그래밍을 지원하므로 모든 프로세스를 추적해야 된다. 이때 PCB를 사용하여 프로세스의 실행 상태를 추적한다.
또한 PCB가 만들어지면 CPU에 저장되었다가 프로세스가 완료되면 PCB도 함께 제거된다.
프로세스의 메타데이터들이 PCB에 저장되어 관리된다. 이는 프로세스의 중요한 정보를 포함하고 있기 때문에 일반 사용자가 접근하지 못하도록 보호된 메모리 영역 즉, 커널 스택의 가장 앞부분에서 관리된다.
메타데이터가 저장되어 있기 때문에 프로세스가 한 상태에서 다른 상태로 전환될 경우 운영 체제는 프로세스의 PCB에 있는 정보를 업데이트해야 한다.

운영 체제는 빠르게 PCB에 접근하기 위해서 프로세스 테이블을 사용해 각 프로세스의 PCB를 관리하고 PCB는 연결 리스트 방식으로 관리된다. 프로세스가 생성, 삭제될 때 PCB의 삽입 및 삭제가 용이하다.
PCB를 사용하는 이유로 실행되고 있는 프로세스를 추적 및 관리와 Context Switching을 진행할 때 프로세스의 정보를 저장하기 위해서 사용된다.

Context Switching은 CPU가 현재 작업 중인 프로세스에서 다른 프로세스로 교체되는 기술입니다.
이는 CPU가 프로세스를 실행하기 위해 필요한 정보인 컨텍스트를 교환하는 것으로, 프로세스 제어 블록(PCB)에 이전 프로세스 정보를 저장하고 새 프로세스 정보를 로드해 실행을 전환합니다.
컨텍스트 스위칭은 우선순위가 높은 프로세스가 준비 상태가 되거나, 인터럽트가 발생하거나, 사용자 모드와 커널 모드 전환 시, 선점형 스케줄링 알고리즘을 사용할 때 발생합니다.
싱글코어 CPU에서 여러 프로세스가 동시에 실행되는 것처럼 보이는 이유는 빠른 속도의 컨텍스트 스위칭 때문입니다.
이 과정에서 캐시미스가 발생하여 성능 저하가 일어날 수 있습니다.
그럼 이제 컨텍스트 스위칭이 어떻게 이뤄지는지 살펴보자.
요청 발생

이전에 살펴봤던 것처럼 컨스트 스위칭은 프로세스가 멈출 때 발생한다. 대표적으로 인터럽트나 시스템 콜이 호출될 경우 기존에 작업 중이던 프로세스는 잠시 멈추게 된다.
PCB에 프로세스 정보를 저장

프로세스가 멈추게 되면 기존에 실행 중이던 프로세스와 관련된 정보들 즉 Context를 PCB0에 저장한다.
CPU 새롭게 할당

기존의 프로세스 정보를 PCB에 저장한 뒤 새롭게 실행할 PCB1을 운영 체제가 가져와서 CPU 레지스터에 적재하고 해당 프로세스를 실행하게 된다.
운영체제는 새롭게 실행할 프로세스에 대한 정보를 해당 PCB에서 가져와 CPU 레지스터에 적재한다.
새로운 프로세스 종료 후 기존 프로세스 다시 실행

간단하게 컨텍스트 스위칭이 수행하는 작업을 정리해 보면
추후에 스레드를 공부해 보면 스레드에도 컨텍스트 스위칭이 있는데 프로세스 컨텍스트 스위칭 보다 더 좋은 성능을 가진다고 한다. 왜 그런 건지는 따로 스레드에 대해서 공부해 보면서 정리해 볼 계획이다.