새소식

xub2의 개발 새발 🐾
🔬 CS/OS

프로세스 2 : PCB (프로세스 제어 블록)

2026. 7. 19. 20:15

  • -


PCB란 ?

지난 글에서 프로세스 문맥의 구성 요소로 PCB를 잠깐 언급했는데, 이번 편은 이 PCB에 대해 정리한다.

PCB는 프로세스마다 유지하는 정보를 담는 커널 내의 자료구조이다. -> 프로세스의 수행 상태 정보를 갖고 있으며, 커널의 데이터 영역에 저장된다(왜냐면 커널도 일종의 프로세스기 떄문에 똑같이 메모리에 코드, 데이터, 힙 가지고 있다).

프로세스가 생성되는 순간, 커널이 해당 프로세스를 위한 PCB를 하나 생성해서 그 프로세스의 메타데이터를 저장한다. 즉 프로세스 하나당 PCB 하나가 대응된다고 보면 된다.


PCB의 구성 요소

1) OS 정보

  • pointer: 큐에 담겨있는 PCB를 가리키는 용도 (Ready Queue, Device Queue 등에서 PCB들을 연결 리스트처럼 관리할 때 쓰임)
  • process state: ready, running, blocked 등 현재 프로세스 상태
  • process number(PID): 각 프로세스를 고유하게 식별하는 아이디
  • 스케줄링 정보: 우선순위, CPU 할당 시간 등

 

2) CPU 정보

  • program counter(PC): 다음에 수행할 명령어의 위치
  • registers: CPU 연산 시 사용했던 값의 정보

 

3) 메모리, 파일 관련 정보

  • memory limits: 프로세스의 코드, 데이터, 힙, 스택의 주소 정보
  • list of open files: 어떤 파일을 읽고 있는지에 대한 정보

 

다음 표 정도로 요약 가능할 듯?

구분 항목
OS 정보 pointer, process state, PID, 스케줄링 정보
CPU 정보 program counter(PC), registers
메모리·파일 정보 memory limits, list of open files

PCB가 중요한 이유

컨텍스트 스위칭이 일어날 때, CPU는 PCB를 통해 이전 작업을 불러온다.

좀 더 구체적으로 설명하면 컨텍스트 스위칭이 일어날 때, 운영체제는 지금 실행 중이던 프로세스의 CPU 상태(PC, 레지스터 값 등)를 그 프로세스의 PCB에 저장해두고, 다음에 실행할 프로세스의 PCB에서 저장된 상태를 불러와 복원한다. 즉 PCB는 "프로세스가 멈췄다가 나중에 정확히 그 시점부터 다시 이어서 실행될 수 있게" 해주는 저장소인 셈이다.

지난 편에서 봤던 Ready Queue, Device Queue도 사실은 이 PCB들이 줄 서 있는 큐라고 이해하면 된다. 프로세스 자체가 아니라 PCB(정확히는 PCB를 가리키는 pointer)가 큐 안에서 옮겨 다니는 구조이다!


정리

PCB는 커널이 프로세스마다 하나씩 만들어 관리하는 "프로세스의 신분증 + 상태 저장소"다. OS 정보, CPU 정보, 메모리·파일 정보를 담고 있고, 컨텍스트 스위칭 때 이 정보를 저장/복원하는 덕분에 프로세스가 멈췄던 지점부터 다시 실행될 수 있다.

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.