
프로세스 제어 블록 (PCB)

- 프로세스를 실행하는 데 필요한 중요한 정보를 보관하는 자료 구조이다. TCB라고도 한다. 프로세스가 생성될 때 만들어져 프로세스 실행이 완료되면 폐기된다.
- 포인터 : 준비상태나 대기상태는 큐로 운영되는데, 프로세스 제어 블록을 연결하여 준비 상태나 대기상태의 큐를 구현할 때 포인터를 사용한다.
- 프로세스 상태 : 생성, 준비, 실행, 대기, 보류 준비, 보류 대기 등이 있다. 프로세스의 현재 상태를 나타낸다.
- 프로세스 구분자 : 여러 프로세스를 구별하기 위한 구분자를 저장한다.
- 프로그램 카운터 : 다음에 실행될 명령어의 위치를 가르키는 프로그램 카운터의 값을 저장한다.
- 프로세스 우선순위 : 사용자 프로세스보다 커널 프로세스는 우선 순위가 높고, 사용자 프로세스끼리도 우선순위가 다르다. 높은 우선순위의 프로세스가 낮은 우선순위의 프로세스보다 먼저 실행되고 더 자주 실행된다.
- 각종 레지스터 정보 : 프로세스가 실행될 때 사용하던 레지스터 값이 저장된다.
- 메모리 관리 정보 : 프로세스가 메모리 어디에 있는지 나타내는 메모리 위치 정보, 메모리 보호를 위한 경계레지스터, 한계레지스터 값, 세그멘테이션 테이블, 페이지 테이블 등의 정보 보관
- 할당된 자원 정보
- 계정 정보
- 부모 프로세스 구분자와 자식 프로세스 구분자 : PPID, CPID
문맥 교환
문맥 교환의 의미
- 문맥 교환 : CPU를 차지하던 프로세스가 나가고 새로운 프로세스를 받아들이는 작업을 말한다.
- 실행 상태에서 나가는 프로세스 제어 블록에는 지금까지의 작업내용을 저장한다.
- 실행 상태로 들어온 프로세스 제어 블록의 내용으로 CPU가 세팅 된다.
문맥 교환의 절차

- 실행상태에 있는 P1 프로세스가 타임아웃되면 P1의 상태를 PCB 1에 저장 후 P1은 준비 상태로 쫒겨 난다.
- 준비상태에 있던 P2가 실행 상태로 가면 CPU의 레지스터가 PCB2의 값으로 채워져 다음 작업을 한다.
문맥 교환과 타임 슬라이스의 크기
- 타임 슬라이스는 되도록 작게 설정하되 문맥 교환에 걸리는 시간을 고려하여 적당한 크기로 설정해야한다.
- 너무 작은 타임 슬라이스는 문맥교환에 많은 시간을 낭비한다.
- 유닉스 운영체제에서 타임 슬라이스는 10~200밀리초로 대략 100밀리초이다.
![업로드중..]()