프로세스 제어 블록이란?
PCB (Process Control Block)
운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보를 저장하는 자료구조
- 프로세스가 생성될 때 마다 고유의 PCB가 생성되고, 프로세스가 완료되면 함께 제거된다
- 프로세스 상태 관리와 문맥 교환(Context Switch)를 위해 필요하다
- 프로세스가 CPU를 점유하여 처리하다가 상태가 전이되면, 진행하던 작업 내용을 정리하고 CPU를 반환해야 하는데, 이때 진행하던 작업들을 PCB에 저장한다
- 운영체제는 프로세스 테이블을 사용하여 각 프로세스의 PCB를 관리한다
다음과 같은 정보를 포함하고 있다
- 프로세스 번호
프로세스 식별자(PID)를 저장
- 포인터
부모 프로세스에 대한 포인터, 자식 프로세스에 대한 포인터, 프로세스의 메모리 포인터, 할당 자원 포인터
- 프로세스 상태
생성, 준비, 실행, 대기, 완료
- 프로그램 카운터
다음에 실행할 명령어의 주소를 저장
- 레지스터
CPU 레지스터 정보
- CPU 스케줄링 정보
우선순위, 최종실행시간, 점유시간 등
- 열린 파일 목록
프로세스를 위해 열린 파일 목록 등
문맥교환(Context Switching)이란?
문맥(Context)
동작을 관리하도록 하는 속성들을 포함하는 정보
문맥 교환(Context Switching)
현재의 Context를 중단하고 다른 Context를 실행하는 것
문맥교환 오버헤드
Context Switching에 걸린 시간과 메모리