프로세스 제어 블록
프로세스 제어 블록(Process Control Block)은 프로세스를 실행하는 데 필요한 정보를 보관하는 자료 구조
모든 프로세스는 고유의 프로세스 제어 블록을 가진다.
프로세스 제어 블록은 프로세스 생성 시 만들어져서 프로세스가 실행을 완료하면 폐기된다.
프로세스 제어 블록의 구성
포인터: 프로세스 제어 블록을 연결하여 준비 상태나 대기 상태의 큐를 구현할 때 포인터를 사용한다.
프로세스 상태: 생성, 준비, 실행, 대기, 보류 준비, 보류 대기 등이 있다.
이것은 프로세스의 현재 상태를 나타낸다.
프로그램 구분자(PID): 여러 프로세스를 구별하기 위해 사용한다.
프로그램 카운터: 다음에 실행될 명령어의 위치를 가리키는 값이다.
프로세스 우선순위: 프로세스의 중요도는 각각 다르다. 높은 우선순위의 프로세스는 낮은 우선순위의 프로세스보다
더 자주 실행된다.
각종 레지스터 정보: 이전에 실행할 때 사용한 레지스터의 값을 보관해야 다음에 실행할 수 있기 때문에 자신이 사용하던 레지스터의 중간값을 보관한다.
메모리 관리 정보: 메모리 위치 정보, 경계 레지스터 값과 한계 레지스터 값 등이 저장된다.
할당된 자원 정보: 프로세스를 실행하기 위해 사용하는 입출력 자원이나 오픈 파일 등에 대한 정보를 말한다.
계정 정보: 계정 번호, CPU 할당 시간, CPU 사용 시간 등이 있다.
부모 프로세스 구분자(PPID), 자식 프로세스 구분자(CPID)가 있다.
포인터의 역할
준비상태나 대기 상태에 있는 프로세스 제어 블록을 하나의 대기 큐가 아닌 여러개로 다루기 위해 포인터를 사용한다.
예를 들어 포인터를 사용하면 대기 상태에 각각의 입출력장치에 대한 요청에 따라 다른 대기 큐를 구성할 수 있다.
대기 상태의 대기 큐
문맥 교환(CONTEXT SWITCHING)
문맥 교환이란 CPU를 차지하던 프로세스(실행 상태에 있는 프로세스)와 준비 상태에 있는 프로세스의 상태교환을 말한다.
문맥 교환의 절차
실행 상태에 있는 프로세스 P1이 자신에게 주어진 시간을 다 소모하면 P1의 PCB에 현재까지의 작업 결과가 저장되고
P1은 준비상태가 된다.
준비 상태에 있는 프로세스 P2가 실행 상태로 가면 CPU의 레지스터가 P2의 PCB값으로 채워진다.
'COMPUTER SCIENCE > 운영체제' 카테고리의 다른 글
스레드 (0) | 2023.12.29 |
---|---|
프로세스의 상태 (1) | 2023.12.23 |