공정제어블록

Process control block

PCB(Process Control Block)는 컴퓨터 운영체제가 프로세스에 대한 모든 정보를 저장하기 위해 사용하는 데이터 구조다.프로세스 설명자로도 알려져 있다.프로세스가 생성(초기화 또는 설치)되면 운영 체제는 해당 프로세스 제어 블록을 생성한다.

이것은 프로세스 상태(예: 새, 준비, 실행, 대기 또는 종료)를 지정한다.

역할

PCB의 역할은 프로세스 관리의 중심이다. PCB는 대부분의 유틸리티, 특히 스케줄링 및 리소스 관리와 관련된 유틸리티에 의해 액세스 및/또는 수정된다.

구조

멀티태스킹 운영 체제에서 PCB는 정확하고 효율적인 프로세스 관리에 필요한 데이터를 저장한다.[1]이러한 구조물의 상세 내역은 시스템에 의존하지만 공통 요소는 크게 세 가지 범주로 구분된다.

  • 공정식별
  • 공정 상태
  • 공정관리

상태 테이블은 메모리, I/O 장치, 파일 및 프로세스를 설명하는 것과 같이 각 관련 엔터티에 대해 존재한다.

예를 들어 메모리 테이블에는 각 프로세스에 대한 기본 및 보조(가상) 메모리 할당에 대한 정보, 서로 다른 프로세스 간에 공유되는 메모리 영역에 액세스하기 위한 권한 부여 속성 등이 포함되어 있다.I/O 테이블에는 디바이스의 가용성 또는 프로세스에 대한 할당, I/O 작업 상태, 해당 디바이스에 사용되는 메모리 버퍼의 위치 등을 기재한 항목이 포함될 수 있다.

프로세스 식별 데이터에는 프로세스에 대한 고유 식별자(대부분 변함없이 정수)가 포함되며, 다중 사용자 멀티태스킹 시스템에서는 상위 프로세스의 식별자, 사용자 식별자, 사용자 그룹 식별자 등과 같은 데이터가 포함된다.프로세스 ID는 위에서 정의한 표를 상호 참조하는 데 자주 사용되므로, 예를 들어 어떤 프로세스가 I/O 장치 또는 메모리 영역을 사용하고 있는지 보여주는 데 특히 유용하다.

프로세스 상태 데이터는 프로세스가 일시 중단되었을 때의 상태를 정의하여 OS가 나중에 프로세스를 재시작할 수 있도록 한다.여기에는 항상 범용 CPU 레지스터, CPU 프로세스 상태 워드, 스택 및 프레임 포인터 등이 포함된다.컨텍스트 스위치 중에는 실행 중인 프로세스가 중지되고 다른 프로세스가 실행된다.커널은 실행 중인 프로세스의 실행을 중지하고 하드웨어 레지스터의 값을 PCB에 복사하며 하드웨어 레지스터를 새 프로세스의 PCB의 값으로 업데이트해야 한다.

프로세스 제어 정보는 OS가 프로세스 자체를 관리하기 위해 사용한다.여기에는 다음이 포함된다.

  • 공정 스케줄링 상태-"ready", "suspended" 등의 측면에서 프로세스의 상태 및 우선 순위 값, 프로세스가 CPU를 제어한 후 또는 프로세스가 중단된 이후 경과한 시간 등의 스케줄링 정보.또한, 공정이 정지된 경우, 공정이 대기 중인 사건에 대해 사건 식별 데이터를 기록해야 한다.
  • 프로세스 구조화 정보 - 프로세스의 하위 ID 또는 현재 프로세스와 관련된 다른 프로세스의 ID(대기열, 링 또는 기타 데이터 구조로 표현될 수 있음)
  • 프로세스 간 통신 정보 - 독립 프로세스 간의 통신과 관련된 플래그, 신호 및 메시지
  • 프로세스 권한 - 시스템 리소스에 대한 액세스 허용/허용되지 않음
  • 프로세스 상태-신규, 준비, 실행, 대기, 사용 안 함
  • 프로세스 번호(PID)– 각 프로세스에 대한 고유 식별 번호(프로세스 ID라고도 함)
  • 프로그램 카운터(PC)–이 프로세스에 대해 실행할 다음 명령의 주소를 나타내는 포인터
  • CPU 레지스터-실행 상태를 실행하기 위해 프로세스를 저장해야 하는 위치 설정
  • CPU 스케줄링 정보 - CPU 시간 스케줄링 정보
  • 메모리 관리 정보 - 페이지 테이블, 메모리 제한, 세그먼트 테이블
  • 회계 정보 - 프로세스 실행, 시간 제한, 실행 ID 등에 사용되는 CPU
  • 프로세스에 할당된 I/O 장치의 I/O 상태 정보 목록

위치

PCB는 정상적인 프로세스 접근으로부터 보호되는 메모리 영역에 보관되어야 한다.일부 운영 체제에서는 PCB가 프로세스의 커널 스택 시작 부분에 배치된다.[2]

참고 항목

메모들

  1. ^ Gagne, Abraham Silberschatz, Peter Baer Galvin, Greg (2013). Operating system concepts (9th ed.). Hoboken, N.J.: Wiley. pp. 107–108. ISBN 9781118063330.
  2. ^ 용, 장, 「최대 공정 번호 돌파」, 「리눅스 저널」, 2004년 1월 1일.