Contents
프로세스 제어 블록(PCB)
   Oct 13, 2022     2 min read

프로세스 제어 블록

프로세스 제어 블록(Process Control Block)이란?

프로세스 제어 블럭(PCB)은 프로세스를 실행하는 데 필요한 중요한 정보를 보관하는 자료 구조이며, TCB(Task Control Block)이라고도 불린다.

  • 모든 프로세스는 고유의 프로세스 제어 블록을 갖고 있다.
  • 프로세스 생성 시 프로세스 제어 블록이 만들어진다. 프로세스가 실행을 완료하면 폐기된다.

프로세스 제어 블록 저장되는 정보는 무엇일까 ?

  • 프로세스 제어 블록의 구성

Untitled

  • 포인터
    • 프로세스 제어 블럭의 첫 번째 블록에는 포인터가 저장된다. 준비 상태대기 상태는 큐로 운영된다. 프로세스 제어 블록을 연결하여 준비 상태대기 상태의 큐를 구현할 때 포인터를 사용한다.
  • 프로세스의 상태
    • 프로세스의 상태에는 생성, 준비, 실행, 대기, 보류 준비, 보류 대기 등이 있다. 이는 프로세스가 현재 어떤 상태에 있는지를 나타내며 프로세스 제어 블록의 두 번째 블록에 저장된다.
  • 프로세스 구분자
    • 운영체제 내에 있는 여러 프로세스를 구별하기 위한 구분자(PID)를 저정한다.
  • 프로그램 카운터
    • 다음에 실행될 명령어의 위치를 가리키는 프로그램 카운터의 값을 저장한다.
  • 프로세스 우선순위
    • 프로세스에서 대기 상태 에서 기다리는 프로세스 마다 중요도가 각각 다르다.
    • 커널 프로세스 > 사용자 프로세스 안에서도 우선순위가 나뉜다.
    • 다양한 우선순위의 프로세스가 대기 상태로 들어오기 때문에 대기 상태의 큐도 우선순위별로 따로 운영된다.
    • CPU 스케쥴러가 준비 상태 에 있는 프로세스 중 실행 상태로 옮겨야 할 프로세스를 선택할 때는 프로세스 우선순위를 기준으로 삼는다.
    • 높은 우선순위의 프로세스가 낮은 우선순위를 갖고 있는 프로세스보다 먼저 실행되고 더 자주 실행된다.
  • 각종 레지스터 정보
    • 프로세스 제어 블록에는 프로세스가 실행되는 중에 사용하던 레지스터, 누산기(accumulator), 색인 레지스터(index register), 스택 포인터(stack pointer) 와 같은 레지스터 값이 저장된다.
    • 이전 실행할 때 사용한 레지스터의 값을 보관해야 다음에 실행할 수 있기 때문에 자신이 사용하던 레지스터의 중간값을 보관한다.
  • 메모리 관리 정보
    • 프로세스가 메모리안에 어디에 있는지 나타내는 메모리의 위치 정보
    • 메모리 보호를 사용하는 경계 레지스터 값한계 레지스터 값 등이 저장됨.
    • 세그먼테이션 테이블(segmentation). 페이지 테이블(page table) 등의 정보도 보관한다.
  • 할당된 자원 정보
    • 프로세스를 실행하기 위해서 사용하는 입출력 자원이나 오픈 파일 등에 대한 정보를 말함
    • 어떤 프로세스가 하드디스크에 저장된 파일을 열어서 작업하거나 음악을 출력하기 위해 사운드 카드에 접근하고 있다면 파일이나 사운드카드에 대한 정보가 필요한데, 이러한 정보를 프로세스 제어 블록에 저장함
  • 계정 정보
    • 계정 번호, CPU할당 시간, CPU 사용 시간 등등… 이러한 정보들을 프로세스 제어 블록에 저장된다.
  • 부모 프로세스 구분자(PPID, Parent PID)와 자식 프로세스 구분자(CPID, Child PID)
    • 부모 프로세스(Parent Process) 정보와 자식 프로세스(Child Process) 프로세스 제어 블록에 저장된다.

참고 문헌

  • 조성호, “쉽게배우는 운영체제”