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

프로세스 제어 블록

  • Process Control Block (PCB), Task Control Block (TCB)
  • 프로세스를 실행하는 데 필요한 중요한 정보를 보관하는 자료 구조

프로세스 제어 블록 구성

image.png

포인터: 준비 상태나 대기 상태는 큐로 운영되는데,프로세스 제어 블록을 연결하여 준비 상태나 대기 상태의 큐를 구현할 때 포인터를 사용

프로세스 상태: 프로세스가 현재 어떤 상태에 있는지 나타냄 (생성, 준비,실행,대기, 보류 준비, 보류 대기)

프로세스 구분자: 운영체제 내에 있는 여러 프로세스를 구별하기 위한 구분자

프로그램 카운터: 다음에 실행될 명령어의 위치

프로세스 우선순위: 우선순위에 따라 프로세스 제어 블록들이 여러 줄로 서 있다

각종 레지스터 정보: 프로세스가실행되는중에 사용하던 레지스터(누산기, 색인 레지스터, 스택 포인터)

메모리 관리 정보: 프로세스가 메모리의 어디에 있는지 나타내는 메모리 위치 정보,메모리 보호를 위해 사용하는 경계 레지스터 값과 한계 레지스터 값

할당된 자원 정보: 프로세스를 실행하기 위해 사용하는 입출력 자원이나 오픈 파일 등에 대한 정보, 어떤 프로세스가 하드디스크에 저장된 파일을 열어서 작업하면 그 파일에 대한 정보

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

부모 프로세스 구분자와 자식 프로세스 구분자: ppiD (Parent PID), child process (Child PID)

포인터의 역할

  • 입출력이 완료되기를 기다리는 프로세스는 대기 상태로 모인다
  • (하나로 모아놓으면 해당 프로세스를 찾기 위해 대기 상태의 모든 프로세스를 뒤져야 한다)
  • 대기 상태에는 같은 입출력을 요구한 프로세스끼리 모아놓는다

image.png


문맥 교환

  • CPU를 차지하던 프로세스가 나가고 새로운 프로세스를 받아들이는 작업
  • 두 프로세스 제어 블록의 내용이 변경된다
  • 두 프로세스의 프로세스 제어 블록을 교환하는 작업

image.png

  • P1이 주어진 시간 다 써서 타임아웃이 되면 P1의 상태를 프로세스 제어 블록(PCB)에 현재까지의 작업 결과를 저장하고 P1는 준비 상태로 쫓겨난다
  • P2가 준비 상태에서 실행 상태로 바뀌면서 CPU의 레지스터가 P2의 PCB로 채워져서 다음 작업을 한다

문맥 교환이 일어나는 경우:

  • 한 프로세스가 자신에게 주어진 시간을 다 사용하면
  • 주어진 메모리 공간을 넘어가려 한다면 (경계 레지스터의 범위를 벗어난다면)

Did you find this article valuable?

Support Software Engineer at Your Service by becoming a sponsor. Any amount is appreciated!