오늘 포스팅 내용은 PCB에 관한 내용이다.
PCB
정의
- CPU가 여러 프로세스를 스케줄링을 통해 관리하는 것을 Process Management라고 한다
- CPU가 각 프로세스를 식별할 수 있어야 관리가 가능한데, 이때 프로세스를 식별하기 위한 프로세스의 정보들을 저장하는 자료구조가 PCB이다
- OS는 프로세스의 생성과 동시에 고유한 PCB를 생성한다.
PCB 생성과 저장 과정
- 프로그램 실행
- 프로세스 생성(PCB 생성)
- 프로세스 주소 공간에 (Stack, data, code, heap) 생성
- 해당 프로세스의 메타 데이터 PCB 저장
- 메타 데이터(Meta Data)는 간단하게 다른 데이터(혹은 어떠한 객체)를 설명해주는 데이터라고 보면 된다
PCB에 저장되는 정보
- 프로세스 식별자(Process ID, PID): 프로세스 식별번호
- 프로세스 상태(Process State): new, ready, running, waiting, terminated 등의 상태 저장
- 프로그램 카운터(Program Counter, PC): 프로세스가 다음에 실행할 명령어의 주소
- 레지스터 정보(Register Infomation): CPU Register 정보
- CPU 스케줄링 정보(Scheduling Information): 프로세스의 우선순위, 스케줄 큐에 대한 포인터 등
- 메모리 관리 정보(Memory Related Information): 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보를 포함
- Accounting 정보(Accounting Information): 사용된 CPU 시간, 시간제한, 계정번호 등
- 입출력 상태 정보(Status Information related to I/O): 프로세스에 할당된 입출력 장치들과 열린 파일 목록
PCB에 저장되는 정보들이 무엇인지 모를 수도 있다. 하지만 앞으로 정리할 내용에 모두 한 번씩 등장할 내용들이니 추후에 포스팅 될 내용에서 알아가면 된다.
다음 포스팅에서는 Context Switching에 대한 내용을 다룰 예정이다.