위의 사이트를 참고하면서 작성한 내용입니다.
CPU가 프로세스가 여러 개일 때, CPU 스케줄링을 통해 관리하는 것을 말함.
이때, CPU는 각 프로세스들이 누군지 알아야 관리가 가능함
프로세스들의 특징을 갖고있는 것이 바로 Process Metadata
프로세스 메타데이터는 프로세스가 생성되면 PCB라는 곳에 저장된다.
#Process Metadata
- Process ID
- Process State
- Process Priority
- CPU Registers
- Owner
- CPU Usage
- Memory Usage
CPU가 이전의 프로세스 상태를 PCB에 보관하고, 또 다른 프로세스의 정보를 PCB에서 읽어 레지스터에 적재하는 과정
Context Switching이 발생하는 이유
- 인터럽트 발생
- 실행 중인 CPU 사용 허가시간을 모두 소모
- 입출력을 위한 대기
#Context Switching의 OverHead
프로세스를 수행하다가 입출력 이벤트가 발생해서 대기 상태로 전환시킨다. 이때, CPU를 그냥 놀게 놔두는 것보다 다른 프로세스를 수행시키는 것이 효율적
위와 같은 이유로, OverHead를 감수하고 Context Switching을 하는 것.
Process Control Block으로 프로세스 메타데이터들을 저장해 놓는 곳이다. 한 PCB 안에는 한 프로세스의 정보가 담긴다.
#PCB가 필요한 이유
CPU에서는 프로세스의 상태에 따라 교체작업이 이루어진다.
(interrupt가 발생해서 할당받은 프로세스가 waiting 상태가 되고 다른 프로세스를 running으로 바꿔 올릴 때)
이때, 앞으로 다시 수행할 대기 중인 프로세스에 관한 저장값을 PCB에 저장해두는 것이다.(수행 중인 프로세스를 변경할 때, CPU의 레지스터 정보가 변경되는 것을 Context Switching이라고 한다.)
#PCB 관리 방식
Linked List 방식으로 관리
PCB List Head에 PCB들이 생성될 때마다 붙게 된다.
주소값으로 연결이 이루어져 있는 연결리스트이기 때문에 삽입 삭제가 용이하다.
즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료 시 제거된다.