프로세스가 여러 개일 때, CPU 스케줄링을 통해 프로세스들을 관리하는 것
이때, CPU는 각 프로세스들이 누군지 알아야 관리가 가능하다.
이러한 프로세스들의 특징을 갖고 있는 것이 바로 Process Metadata 이다.
이 메타데이터는 프로세스가 생성되면 PCB에 저장된다.
프로세스 메타데이터들을 저장해 놓는 곳
Linked List 방식으로 관리한다. PCB List Head에 PCB들이 생성될 때마다 붙게 된다.
PCB List Head
-> PCB1
-> PCB2
-> PCB3
주소값으로 연결이 이루어져 있는 연결리스트이기 때문에 삽입 삭제가 용이하다.
즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료시 제거된다.
CPU가 이전의 프로세스 상태를 PCB에 보관하고, 또 다른 프로세스의 정보를 PCB에서 읽어서 레지스터에 적재하는 과정
보통 인터럽트가 발생하거나, 실행 중인 CPU 사용 허가시간을 모두 소모하거나, 입출력을 위해 대기해야 하는 경우에 Context Switching이 발생한다.
Context Switching에 걸린 시간과 메모리를 말한다.
I/O 이벤트가 발생했을 때 디스크에 명령을 내렸는데 끝날 때까지 기다리면서 CPU가 가만히 있으면 CPU가 낭비된다. 때문에 다른 프로세스로 바꾸면서까지 CPU를 더 사용하는게 이익이다.
overhead를 감수하면서 기존 프로세스를 새 프로세스로 바꾸는 것이 더 낫다.
스레드는 Context Switching 될 때 text, data, heap 영역은 프로세스 것이기 때문에 자신의 PCB에는 stack 및 간단한 정보만 저장하기에 프로세스 컨텍스트 스위칭보다 빠르다.
https://m.blog.naver.com/adamdoha/222019884898
https://jhnyang.tistory.com/33