: CPU가 프로세스 여러 개일 때, CPU 스케줄링을 통해 관리하는 것
→ CPU는 각 프로세스들이 누군지 알아야 관리가 가능함
프로세스들의 특징을 갖고 있는 것이 Process Metadata
Process Metadata
→ 이 메타데이터는 프로세스가 생성되면 PCB(Process Control Block)에 저장됨
: 프로세스 메타데이터들을 저장하는 곳, 한 PCB 안에는 한 프로세스의 정보가 담김
**프로그램 실행 - 프로세스 생성 - 프로세스 주소 공간에 (코드, 데이터, 스택) 생성
- 프로세스의 메타 데이터들이 PCB에 저장**
PCB가 필요한 이유
: CPU에서는 프로세스 상태에 따라 교체 작업이 이루어짐 ( 인터럽트가 발생하여 할당받은 프로세스가 wating상태가 되고 다른 프로세스를 running으로 바꿔 올릴 때)
→ 이때 앞으로 다시 수행할 대기 중인 프로세스에 관한 저장 값을 PCB에 저장해두는 것
PCB 관리
: Linked List 방식으로 관리
PCB들이 생성될 때 마다 PCB List Head에 붙게 된다. 주소값으로 연결 되어있는 연결리스트이기 때문에 삽입, 삭제가 용이하다
→ 프로세스가 정의되면 해당 PCB가 생성되고 프로세스 완료 시 제거된다
수행 중인 프로세스를 변경할 때, CPU의 레지스터 정보가 변경되는 것 = Context Switching
: CPU가 이전 프로세스 상태를 PCB에 보관, 다른 프로세스 정보를 PCB레지스터에 저장하는 과정
→ 프로세스가 Ready - Running, Running - Ready, Runnin - Waiting 처럼 상태 변경 시 발생
Context Switching의 OverHead?
: 오버헤드 = 과부하
하지만 프로세스 작업 중에는 오버헤드를 감수해야 하는 상황이 있음
→ 프로세스를 수행하다가 입출력 이벤트가 발생하여 대기 상태로 전환
→ CPU를 그냥 두는 것보다 다른 프로세스를 수행시키는 것이 효율적