커널의 데이터 영역에 존재하며 각각의 프로세스마다 고유의 PCB가 있다.
프로세스가 생성되면 메타데이터들을 저장해 놓는 곳, 한 PCB 안에는 한 프로세스의 정보가 담김.
Linked List 방식으로 관리된다.
PCB List Head에 PCB들이 생성될 때마다 붙게 된다. 주소값으로 연결이 이루어져 있는 연결리스트이기 때문에 삽입 삭제가 용이하다.
즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료시 제거된다.
CPU에서는 프로세스의 상태에 따라 교체작업이 이루어진다.
ex) 인터럽트 발생 시 할당 받은 프로세스가 대기상태가 될 때 프로세스의 어느 부분이 수행중이었는지를 PCB에 프로세스 메타데이터를 저장한다.
(수행중이던 memory 주소, 레지스터값, 하드웨어 상태 ...)
Process Management
- CPU가 프로세스가 여러개일 때, CPU 스케줄링을 통해 관리하는 것을 말함
수행 중인 프로세스를 변경할 때, CPU의 레지스터 정보가 변경되는 것을 Context Switching이라고 한다.
CPU가 이전의 프로세스 상태를 PCB에 보관하고, 또 다른 프로세스의 정보를 PCB에 읽어 CPU의 레지스터에 적재하는 과정이다.
즉, 프로세스가 Ready → Running / Running → Ready / Running → Waiting 처럼 상태 변경 시 Context Switching 발생한다.
ex) 멀티 프로세싱
운영체제(OS)는 CPU를 최대한 효율적으로 사용해 사용자에게 빠른 일처리를 제공해야 한다.
즉, 계속 프로세스를 수행시키도록 하기 위해 Context Switching을 한다.
Context Switching이 발생하면 캐쉬에 있는 모든 데이터를 모두 리셋하고 다시 캐쉬 정보를 불러와야 한다.
Context Switching 과정에서 캐쉬 메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되는 등의 오버헤드(과부하)가 발생된다.
이러한 오버헤드 때문에 멀티 프로세싱은 멀티스레드보다 많은 메모리 공간과 CPU시간을 차지하는 단점이 있다.