PCB(Process Control Block)에 대해 알아보자

PCB(Process Control Block)

1. PCB 개념

프로세스 제어 블록은 운영체제 커널의 자료구조로, 운영체제가 프로세스를 제어하기 위해 프로세스의 상태 정보를 저장해 놓는 자료구조이다.

운영체제에서 프로세스는 PCB로 표현된다. 프로세스가 생성될 때마다 PCB가 생성되고, 프로세스가 완료되면 PCB도 삭제된다.

PCB는 프로세스 상태 관리와 문맥 교환을 위해 필요하다.

2. PCB 구성요소

image

  • 포인터 : 프로세스의 현재 위치
  • 프로세스 상태 : 프로세스의 상태 (생성, 준비, 실행, 대기, 종료)
  • 프로세스 번호 : 프로세스 ID == PID 프로세스를 식별자
  • 프로그램 카운터 : 프로세스를 위해 실행될 다음 명령어의 주소
  • 레지스터 : CPU 레지스터에 있는 정보
  • 메모리 제한 : 운영체제에서 사용하는 메모리 관리 시스템에 대한 정보 (페이지 테이블, 세그먼트 테이블 등)
  • 열린 파일 목록 : 프로세스를 위해 열린 파일 목록

프로세스 상태

  • 생성 상태 : PCB를 할당받았지만, CPU의 할당을 기다리는 상태
  • 준비 상태 : CPU를 할당받았지만, 아직 차례가 아닌 상태
  • 실행 상태 : CPU를 할당받아 실행 중인 상태
  • 대기 상태 : 입출력 작업을 요청한 프로세스가 입출력장치의 작업을 기다리는 상태
  • 종료 상태 : PCB와 프로세스가 사용한 메모리는 정리됨

운영체제는 빠르게 PCB에 접근하기 위해 프로세스 테이블을 사용하고 있다. 프로세스 테이블은 각 프로세스의 PCB를 관리한다.

3. 문맥 교환 (Context Switching)

PCB는 문맥 교환을 위해 필요한 자료구조라고 했다. 문맥 교환에 대해서도 간단히 요약해보자

CPU가 현재 작업중인 프로세스에서 다른 프로세스로 넘어갈 때, 이전에 프로세스 정보를 PCB에 저장하고 새롭게 실행할 프로세스의 정보를 PCB서 읽어와 레지스터에 적재하는 과정이다.

Context

  • 프로세스의 데이터
  • CPU 레지스터 값

CPU가 프로세스를 실행시키기 위해 필요한 정보들을 context라고 한다. 프로세스가 메모리에 올라가 실행될 때, CPU 내에 존재하는 레지스터들이 현재 실행중인 프로세스 관련 데이터로 채워지고 실행중인 프로세스가 변경되면 CPU 내의 레지스터 값이 변경된다.

4. 문맥 교환 과정

  • 요청 발생 : 인터럽트나 트랩에 의해 컨텍스트를 바꿔야한다는 요청이 들어옴
  • PCB에 프로세스 정보 저장 : 기존에 실행중인 프로세스의 정보를 해당 프로세스의 PCB에 저장
  • CPU 새롭게 할당 : 운영체제는 새롭게 실행할 프로세에 대한 정보를 해당 PCB에서 가져와 CPU 레지스터에 적재