[OS] PCB 개념, 필요한 이유와 구성 요소

Yujeong·2024년 1월 24일
post-thumbnail

PCB

프로세스 제어 블록(PCB, Process Control Block)

  • 운영체제가 프로세스 스케줄링을 위해 프로세스에 관한 모든 정보를 가지고 있는 블록
  • 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영체제 커널의 자료구조
  • 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거됨

PCB가 필요한 이유

문제1
1. 프로세스는 CPU를 점유하여 작업을 처리하다가도 상태가 전이되면, 진행중인 작업 내용들을 모두 정리하고 CPU를 반환해야 한다.
2. 이때, 진행하던 작업들을 모두 저장하지 않으면 다음에 자신의 순서가 왔을 때 어떤 작업을 해야하는 지 알 수 없는 사태가 발생한다.
3. 이러한 사태를 막기 위해 운영체제가 프로세스를 식별할 수 있도록 프로세스에 관한 모든 정보가 있어야 한다.

문제2
운영체제의 스케줄링을 생각해보자.
1. 스케줄링은 큐(queue) 자료구조를 이용하는데, 큐 안에 각 프로세스에 대한 모든 정보를 넣는 것은 비효율적이며 메모리 소모가 클 수 있다.
2. 프로세스는 CPU가 처리하던 작업의 내용들을 자신의 PCB에 저장하고, 큐에는 PCB 주소를 저장한다.
3. 다음에 다시 CPU를 점유하여 작업을 수행해야 할 때 PCB로부터 해당 정보들을 CPU에 넘겨와서 계속해서 하던 작업을 진행할 수 있게 된다.

프로세스에 관한 정보를 담는 PCB에는 어떤 정보들이 담길까?
PCB의 구성 요소에 대해 알아보자.

PCB 구성 요소

  • 프로세스 식별자(PID, Process ID)
    : 유닉스, 맥 OS X 또는 마이크로소프트 윈도우 등의 운영 체제 커널이 사용되는 번호

  • 프로세스 상태(Process State)
    : 생성(create), 준비(ready), 실행(running), 대기(waiting), 완료(terminated) 상태가 저장된다.
    유예준비상태(suspended ready), 유예대기상태(suspended wait)는 주기억장치(스택)가 아닌 보조기억장치(디스크)에 저장된다.

  • 프로그램 계수기(Program Counter)
    : 프로세스가 다음에 실행할 명령어의 주소를 가리키는 것

  • CPU 레지스터 및 일반 레지스터(CPU Registers)
    : 프로세스의 레지스터 상태를 저장하는 공간

  • CPU 스케줄링 정보(Scheduling Information)
    : 우선순위, 최종 실행시각, CPU 점유시간 등

  • 메모리 관리 정보(Memory Management Information)
    : 해당 프로세스의 주소 공간

  • 프로세스 계정 정보(Accounting Information)
    : 페이지 테이블, 스케줄링 큐 포인터, 소유자, 부모 등

  • 입출력 상태 정보(I/O Status Information)
    : 프로세스에 할당된 I/O 디바이스 정보, 열린 파일 목록 등

  • 문맥 저장 영역(Context Save Area)
    : 프로세스의 레지스터 문맥(register context)를 저장하는 공간

  • 포인터(Pointer)
    : 프로세스에 할당된 입출력장치 목록, 열린 파일 목록 등


참고
운영체제, Abraham Silberschatz
PCB(Process Control Block)란?
Process Identifier
Program Counter

profile
공부 기록

0개의 댓글