늘 겸손하게

CS - Operating System - PCB & Context Switching 본문

Computer Science/Operating System

CS - Operating System - PCB & Context Switching

besforyou999 2022. 11. 23. 22:23

프로세스 관리 - Process Management

 

 

CPU가 실행해야 할 프로세스가 여러 개일 때, CPU 스케줄링을 통해 어떤 프로그램을 실행할지 관리하는 것을 프로세스 관리(Process Management)라 부릅니다.

 

이때, CPU는 각 프로세스들이 누군지 알아야 관리가 가능한데 프로세스들의 정보를 갖고 있는 것이 바로 Process Metadata

 

 

Process Metadata 구성 데이터

 

  • Process ID
  • Process State
  • Process Priority
  • CPU Registers
  • Owner
  • CPU Usage
  • Memory Usage

 

이 메타데이터는 프로세스가 생성되면 PCB(Process Control Block)이라는 곳에 저장됨

 

PCB (Process Control Block)

: 프로세스 메타데이터 저장소. 1개 PCB -> 1개 프로세스

 

 

정리하자면 프로그램 실행 -> 프로세스 생성 -> 프로세스 주소 공간에 (코드, 데이터, 스택) 생성 -> 이 프로세스의 메타데이터들이 PCB에 저장

 

 

PCB가 필요한 이유

 

 

CPU에 할당된 프로세스를 다른 프로세스에게 할당하기 위해서는 이전에 실행되었던 프로세스에 대한 정보를 가지고 있어야 하고 현재 실행되는 프로세스에 대한 정보를 어딘가에 저장해 두어야 재활용이 가능하다. 이러한 정보들을 모아둔 것이 PCB.

 

 

PCB 관리 방식

 

Linked List 방식으로 관리합니다. 

 

PCB들이 생성될 때마다 PCB List Head에 붙게 된다. 주소값으로 연결된 연결 리스트이기 때문에 삽입 삭제가 용이한 장점이 있습니다.

 

즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료시 제거됩니다.

 

 

이렇게 수행 중인 프로세스가 변경될 때, CPU의 레지스터 정보가 변경되는 것을 Context Switching 이라고 한다.

 

 

Context Switching

 

 

CPU가 교체할 프로세스 상태를 PCB에 보관하고, 실행할 프로세스의 정보를 PCB에서 읽어와 레지스터에 적재하여 CPU에 할당된 프로세스를 교체하는 과정을 의미합니다.

 

 

[ Context Switching overHead? ]

 

-> Context Switching을 위해 소비하는 PC자원이 너무 큰 것을 의미

 

하지만 이러한 overhead를 감수해야 하는 상황이 존재한다.

 

예로, 프로세스를 수행하다가 입출력 이벤트가 발생하여 대기 상태로 전환한 경우, CPU를 놀게 두지 않고 다른 프로세스를 수행시키는 것이 효율적.

 

'Context Switching을 통해 CPU가 놀지 않고 계속 프로세스를 실행할 수 있도록 한다.'

 

 

[ 출처 ]

https://github.com/gyoogle/tech-interview-for-developer