PCB란?
- Process Control Block
- 운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터
- 하나의 PCB 안에는 하나의 프로세스의 정보가 담김
- 프로세스 제어 블록이라고도 부름
- 프로세스 생성 시 운영체제가 해당 PCB를 생성
- 프로그램 실행 → 프로세스 생성 → 프로세스 주소 공간에 (코드, 데이터, 스택) 생성
→ 이 프로세스의 메타데이터들이 PCB에 저장
- 중요한 정보를 담고 있기에, 일반 사용자가 접근 못하도록 커널 스택 가장 앞에서 관리됨
PCB의 구조
- Process ID
PID
: 프로세스를 식별하는 ID
- 프로세스 상태
Process State
: 생성Create
, 준비Ready
, 실행Running
, 대기Waiting
, 완료Terminated
상태
- 프로그램 카운터
Program Counter
: 코드 한 줄을 가리키는 주소 레지스터. 다음에 실행할 명령어의 주소를 가리킴
- CPU 레지스터 및 일반 레지스터 : 프로세스를 실행하기 위해 저장해야 할 레지스터에 대한 정보
- CPU 스케줄링 정보 : 우선 순위, 최종 실행시간, CPU 점유 시간 등
- 메모리 관리 정보 : 해당 프로세스의 주소 공간
- 프로세스 계정 정보 : 페이지 테이블, 스케줄링 큐 포인터, 소유자, 부모 등
- 입출력 상태 정보 : 프로세스에 할당된 입출력 장치 목록, 열린 파일 목록 등
- 포인터
Stack Pointer
: 부모 프로세스에 대한 포인터, 자식 프로세스에 대한 포인터, 프로세스가 위치한 메모리 주소에 대한 포인터, 할당된 자원에 대한 포인터 정보. 함수 실행 될때 Stack
최상단 주소 레지스터.
PCB 필요 이유
CPU에서는 프로세스의 상태에 따라 프로세스 교체가 이루어짐.
interrupt가 발생해서 할당받은 프로세스가 wating 상태가 되고,
다른 프로세스를 running으로 바꿔 올리기 위해서
다음에 수행해야할 PCB를 레지스터에 저장함
PCB 관리 방식
Linked List 방식으로 관리함
PCB List Head에 PCB들이 생성될 때마다 붙게 됨. 주소값으로 연결이 이루어져 있는 연결리스트이기 때문에 삽입 삭제가 용이함.
즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료시 제거됨
컨텍스트 스위칭
CPU가 이전의 프로세스의 PCB를 PCB에 보관하고, 또 다른 프로세스의 정보를 PCB에 읽어 레지스터에 적재하는 과정
컨텍스트 스위칭이 발생하는 상황
- I/O완료로 인한 interrupt
- CPU 사용시간 만료
- 자식 프로세스 Fork
즉, 프로세스가 Ready → Running, Running → Ready, Running → Waiting처럼 상태 변경 시 발생!
컨텍스트 스위칭 예시

- P0는 기존에 실행 중이던 프로세스고 실행하다가 인터럽트가 발생하여 CPU를 넘겨줘야 하는 상황
- 해제하기 전 지금까지 작업했던 내용들에 대해 PCB0에 저장. 이를 저장해둬야 다음에 다시 P0가 CPU를 할당받았을 때 작업을 재개할 수 있기 때문.
- 그 후 다음으로 실행시킬 프로세스 P1에 대해 CPU는 PCB1의 정보를 가지고 CPU를 설정하고 작업을 시작함.
- 그 후 이후 P1이 교체되어야 하는 상황에 위 절차를 반복
컨텍스트 스위칭의 Overhead
- overhead는 어떤 처리를 위해 필요한 처리 시간, 메모리 등이 있음
- Context Switching을 할 때도 오버헤드가 발생하여 효율이 떨어짐
- 그러나 다른 프로세스를 할당하는 것이 CPU를 놀게 두는 것보다 효율적.
- 이는 Multiprogramming을 지원하는 OS가 감내해야 하는 오버헤드
- 위 사진에서 idle에 해당하는 시간에는 CPU가 아무것도 하지 못함 (OverHead)
- cf) 일반적으로 Overhead를 줄이는 것이 성능을 위한 목적
부가적인 Overhead (Cache Miss)
- 캐시는 현재 실행 중인 process의 data를 저장하고 있음
- 그러니 컨텍스트 스위칭이 발생하면 현재 캐시에 존재하는 데이터들이 무의미해짐
- 그래서 캐시를 비워버림
- 컨텍스트 스위칭 직후 캐시가 비어있기에 직접 메모리에 접근하게됨
- 메모리 접근 횟수 증가로 인해 overhead 증가
예상질문
- PCB가 무엇인가요?
- 컨텍스트 스위칭은 언제 일어날까요?
출처