운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터로 프로세스가 생성되면 운영체제는 해당 PCB를 생성한다. 프로그램이 실행되면 프로세스가 생성되고 프로세스 주소값들에 스택, 힙 등의 구조를 기반으로 메모리가 할당된다. PCB는 중요한 정보를 포함하고 있기 때문에 일반 사용자가 접근하지 못하도록 커널 스택의 가장 앞부분에서 관리된다.
PCB 구조
•
프로세스 스케줄링 상태 : 준비, 일시중단 등 프로세스가 CPU에 대한 소유권을 얻은 이후의 상태
•
프로세스 ID : 프로세스 ID, 해당 프로세스의 자식 프로세스 ID
•
프로세스 권한 : 컴퓨터 자원 또는 I/O 디바이스에 대한 권한 정보
•
프로그램 카운터 : 프로세스에서 실행해야 할 다음 명령어의 주소에 대한 포인터
•
CPU 레지스터 : 프로세스를 실행하기 위해 저장해야 할 레지스터에 대한 정보
•
CPU 스케줄링 정보 : CPU 스케줄링에 의해 중단된 시간 등에 대한 정보
•
계정 정보 : 프로세스 실행에 사용된 CPU 사용량, 실행한 유저의 정보
•
I/O 상태정보 : 프로세스에 할당된 I/O 디바이스 목록
컨텍스트 스위칭
PCB를 기반으로 프로세스의 상태를 저장하고 로드시키는 과정을 말한다. 한 프로세스에 할당된 시간이 끝나거나 인터럽트에 의해 발생한다.
비용 : 캐시미스
컨텍스트 스위칭이 일어날 때 프로세스가 가지고 있는 메모리 주소가 그대로 있으면 잘못된 주소변환이 생기므로 캐시클리어 과정을 겪게 되고 이로 인해 캐시미스가 발생한다.
스레드에서의 컨텍스트 스위칭
스레드는 스택영역을 제외한 모든 메모리를 공유하기 때문에 스레드 컨텍스트 스위칭의 경우 비용이 더적고 시간도 더적게 걸린다.