[운영체제]PCB

[운영체제]PCB

PCB는 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 저장장소.
즉, 여러 개의 프로세스를 수행하는 다중 프로그래밍 환경 하에서 각 프로세스를 구분하기 위한 프로세스 제어 블록이다.

PCB 테이블은 프로세스들의 현재 상태를 기록한 정보 테이블이며, 각 프로세스들의 주기억장치에 적재된 기억장치 위치 혹은 포인터(100, 200, 300, 400)와 식별자(식별자:1, 식별자:2, ...) 등이 PCB 항목으로 기록된다.

병원의 환자를 효과적으로 관리하기 위해서는 환자의 정보를 체계적으로 관리해야 한다. 운영체제에서는 관리 기록부 전체를 PCB 테이블이라고 한다.



환자 기록부에는 환자 번호, 현재 상태, 현재 치료 중인 위치 등을 파악해야한다.
운영체제에서는 환자 기록부에 존재하는 항목을 PCB의 항목이라고 한다.

PCB 항목

  • 프로세스 식별자
  • 프로세스 현재 상태
    • 현재 어느 정도?
  • 프로그램 카운터(계수기)
    • 지금 어디 하다가 멈췄니?
  • 프로세스 우선순위
  • 프로세스가 적재된 기억장치 부분을 가리키는 포인터
  • 프로세스에 할당된 자원을 가리키는 포인터
  • 중앙처리장치(CPU, 처리기) 레지스터 정보
    • 보관? 변화?
  • CPU의 각종 레지스터 상태를 가리키는 포인터
    • 보관?변화?
  • 계정 정보(시간 할당량)
    • 5분씩? 10분씩?
  • 기억장치 관리 정보
  • 입출력 정보
  • 부모 프로세스를 가리키는 포인터
    • 부모가 올라가서 필요할때만 자식을 부르는 것
  • 자식 프로세스를 가리키는 포인터


프로세스 생성 과정

  1. 새로운 프로세스를 위한 프로세스 식별자를 할당한다.
  2. 새로운 프로세스를 한 주소 공간과 프로세스 제어블록(Process Control Block)을 할당한다.
  3. 새로운 프로세스의 프로세스 제어블록을 초기화한다.
  4. 새로운 프로세스를 스케줄링 큐의 준비 또는 준비/보류 리스트에 연결한다.

댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?