- 프로세스의 메타데이터가 저장된 장소 (운영체제가 프로세스에 대한 중요 정보를 저장해 두는 공간)
- 프로세스 상태 관리와 Context Switching을 위해 필요하다.
- 프로세스 생성 시 PCB가 만들어진다. (프로세스 마다 고유의 PCB 가짐)
- 프로세스 식별자 (Process ID)
- 프로세스 상태
- 프로그램 카운터
- CPU 레지스터
- CPU 스케줄링 정보
- 메모리 관리 정보
- 입출력 상태 정보
프로세스 식별자(Process ID): 각 프로세스를 고유하게 식별하는 데 사용되는 프로세스 식별자입니다.
프로세스 상태: 프로세스의 현재 상태를 나타냅니다. 예를 들어, 실행 중(Running), 준비(Ready), 대기(Waiting) 등의 상태가 있습니다.
프로그램 카운터: 다음에 실행될 명령어의 주소를 저장하고 있는 프로그램 카운터입니다.
CPU 레지스터: 프로세스에 할당된 CPU의 레지스터 상태를 저장합니다. 이는 프로세스가 중단되었다가 재개될 때 이전 상태를 복원하는 데 사용됩니다.
CPU 스케줄링 정보: 프로세스의 우선순위, 스케줄링 큐에 대한 포인터, 다른 프로세스와의 관계 등의 CPU 스케줄링 관련 정보를 저장합니다.
메모리 관리 정보: 프로세스에 할당된 메모리 영역에 대한 정보를 저장합니다. 이는 프로세스의 주소 공간, 페이지 테이블, 세그먼트 테이블 등을 포함합니다.
입출력 상태 정보: 프로세스에 할당된 입출력 장치와 파일, 오픈한 파일 목록 등의 입출력 상태 정보를 저장합니다.
CPU에서는 프로세스 교체작업이 일어난다. 이때 CPU에 할당되지 않았지만 앞으로 할당될 프로세스의 관한 정보를 저장해 두어야 하기 때문
Linked List!
PCB List Head에 PCB에 생성되면 붙는다.
삽입, 삭제 용이 Why? Linked List (주소값으로 연결이 이루어져있음)
CPU가 수행중인 프로세스를 변경하면 CPU 레지스터 정보가 변경된다. -> Context Switching
운영 체제의 CPU 스케줄러가 현재 실행 중인 프로세스에서 다른 프로세스로 CPU의 제어를 전환하는 과정
인터럽트(Interrupt) 혹은 프로세스의 상태 변화(예: 입출력 요청, 종료 등)에 의해 컨텍스트 스위칭이 시작됩니다.
현재 실행 중인 프로세스의 상태(프로그램 카운터, 레지스터 값 등)를 해당 프로세스의 PCB(Process Control Block)에 저장합니다. 이를 통해 프로세스는 나중에 중단된 지점에서 다시 실행을 재개할 수 있습니다.
CPU 스케줄러는 다음에 실행할 프로세스를 결정합니다. 이 결정은 사용하는 스케줄링 알고리즘(예: 라운드 로빈, 우선순위 스케줄링 등)에 따라 다르게 이루어집니다.
선택된 프로세스의 PCB에서 상태 정보를 가져와 CPU의 레지스터와 프로그램 카운터에 적재합니다. 이렇게 하면 새로운 프로세스의 실행을 시작할 수 있습니다.