Process Management
CPU에 프로세스가 여러개일 때, CPU 스케줄링을 통해 관리하는 것
=> CPU는 각 프로세스들이 누군지 알아야 관리가 가능하다.
=> 프로세스들의 특징을 가지고 있는 것이 바로 'Process Metadata' 이다.
프로세스 메타 데이터들을 저장해 놓는 곳, 한 PCB안에는 한 프로세스의 정보가 담긴 운영체제 커널의 자료구조이다.
프로그램 실행 -> 프로세스 생성 -> 프로세스 주소 공간에(코드, 데이터, 스택)생성 -> 이 프로세스의 메타데이터들이 PCB에 저장


프로세스의 특징을 가진 데이터
이 메타데이터는 프로세스가 생성되면 PCB(Process Control Block)이라는 곳에 저장된다.
PCB가 필요한 이유?
CPU에서는 프로세스의 상태에서 따라 교체작업이 이루어진다.
(interrupt가 발생해서 할당받은 프로세스가 waiting 상태가 되고 다른 프로세스를 running으로 바꿔 올릴 때)
이 때, 다시 수행할 프로세스에 관한 값을 PCB에 저장해두어 나중에 사용할 때 가져와서 수행한다.
PCB는 어떻게 관리되나요?
Linked List 방식으로 관리한다.
PCB List Head에 PCB들이 생성될 때마다 붙게 된다. 주소값으로 연결이 이루어져 있는 연결리스트이기 때문에 삽입 삭제가 용이함.
즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료시 제거됨
이렇게 수행 중인 프로세스를 변경할 때, CPU의 레지스터 정보가 변경되는 것을 Context Switching이라고 한다.
TCB는 PCB보다 적은 데이터를 가지고 자료구조
스레드끼리는 사용자 수준 문맥의 text영역과 data영역은 공유, stack영역은 따로 갖는다.

멀티 프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행한던 중 인터럽트가 발생하거나, 실행 중인 CPU 사용 허가시간을 모두 소모하거나, 입출력을 위해 대기해야 하는 경우에 기존의 프로세스의 상태 또눈 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업 => PCB 활용
즉, 프로세스의 상태 변경시 발생한다.

컨텍스트 스위칭이 미치는 영향
장점
단점
프로세스끼리의 스위칭 VS 스레드끼리의 스위칭
다른 프로세스끼리의 스위칭은 주소 체계와 관련된 일들도 추가적으로 처리를 해야 한다 ⇒ 이러한 추가적인 작업이 필요하기 때문에 프로세스 컨텍스트 스위칭보다 스레드 컨텍스트 스위칭이 더 빠름
참고 및 참조
프로세스 제어 블록 (PCB: Process Control Block) 알아보기
운영체제 - PCB(Process Control Block)란?
Process, PCB(Process Control Block)
[Operating System] PCB(Process Control Block)
PCB(Process Control Block) & TCB(Thread Control Block)
Context Switching에서의 Thread와 Process의 관계 + PCB, TCB