Chapter 3-2. 프로세스 제어 블록과 문맥 교환

Posted by yunki kim on February 1, 2023

프로세스 제어 블록

  PCB는 다음과 같은 구조를 가진다.

포인터

  PCB를 연결해 준비 상태나 대기 상태의 큐를 구현할 때 포인터를 사용한다. 대기 상태에서 빠르게 프로세스를 탐색하기 위해 같은 입출력을 요구하는 프로세스들끼리만 하나의 대기 큐에 모아놓는다. 이후에 입출력 매니저로 부터 인터럽트가 도착하면 PCB를 대기 큐에서 찾아 준비 상태로 이동시키면서 큐에서 제거한다.

프로세스 상태

  프로세스의 현재 상태를 나타낸다.

프로세스 구분자

  여러 프로세스를 구별하기 위한 구분자를 저자앟ㄴ다

프로그램 카운터

  다음에 실행될 명령어의 위치를 가리키는 프로그램 카운터 값을 저장한다.

프로세스 우선순위

  대기 큐에 있는 모든 프로세스는 각자의 우선순위를 가진다. 사용자 프로세스 보다 커널 프로세스의 우선순위가 더 높다. 사용자 프로세스끼리도 우선순위가 갈린다. CPU 스케줄러는 준비 상태에서 실행 상태로 프로세스를 옮길 때 이 우선순위를 기준으로 한다. 높은 우선순위를 가진 프로세스가 더 먼저 더 자주 실행된다.

각종 레지스터 정보

  프로세스가 실행 중 사용하면 레지스터의 중간값이 저장된다. 

메모리 관리 정보

  프로세스가 위치하는 메모리 주소, 메모리 보호를 위한 경계 레지스터 값과 한계 레지스터 값 등이 저장된다. 

할당된 자원 정보

  프로세스를 실행하기 위해 사용하는 입출력 자원이나 오픈 파일 등에 대한 정보다.

계정 정보

  계정 번호, CPU 할당/사용 시간 등의 정보

부모 프로세스 구분자(PPID)와 자식 프로세스 구분자(CPID)

  부모 프로세스를 가리키는 PPID, 자식 프로세스를 가리키는 CPID가 저장된다.

문맥 교환(Context Switching)

  Context swithcing은 실행 상태이던 프로세스가 준비 상태가 되고, 다른 프로세스가 실행 상태가 되는 것을 의미한다. Context switching은 다음과 같은 절차로 이루어진다.

출처 - 쉽게 배우는 운영체제