본문 바로가기
CS 지식/운영체제

[운영 체제] PCB & Context Switching

by CSEGR 2024. 8. 21.
728x90

✔️ 프로세스 관리

 프로세스 관리란 실행중인 프로세스가 여러 개일 때, CPU 스케줄링을 통해 프로세스를 관리하는 것을 의미한다. 

CPU는 각 프로세스들이 누군지 알아야 관리가 가능한데, 이때 프로세스들의 각자의 특징을 갖고 있는 Process Metadata 라는 정보를 활용한다.

 

프로세스 메타데이터(Process Metadata) 
• Process ID
• Process State
• Process Priority
• CPU Registers
• Owner
• CPU Usage
• Memeory Usage

 

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

 

✔️ PCB(Process Control Block)

PCB(Process Control Block)는 프로세스들의 메타 데이터들을 저장하는 곳이다. 

하나의 PCB에 하나의 프로세스의 정보가 담기게 된다.

프로그램 실행 → 프로세스 생성 → 프로세스 주소 공간에 코드, 데이터, 스택 영역 생성 → 이 프로세스의 메타데이터들이 PCB에 저장

 

✔️ PCB는 왜 필요?

CPU에서는 프로세스의 상태에 따라 프로세스 교체 작업이 이루어지게 된다. 

하나의 예시로 어떤 프로세스에서 인터럽트(interrupt)가 발생하여, 현재 프로세스가 대기 상태가 되고 인터럽트가 발생된 프로세스를 실행 상태로 바꿀 때, 대기 중인 프로세스의 정보를 잃어버리면 프로그램을 처음부터 다시 시작해야한다. 

이런 상황을 방지하기 위해, 앞으로 다시 수행할 대기 중인 프로세스 정보를 저장하기 위해 PCB가 필요하다.

 

✔️ PCB는 어떻게 관리?

PCB들은 Linked List 형태로 관리된다. PCB List Head에 PCB들이 생성될 때마다 붙게 된다. 

프로세스가 종료되면 PCB도 소멸한다. 

 

 

✔️ Context Switching

Context Switching(문맥 교환)은 CPU가 이전의 프로세스 상태를 PCB에 보관하고, 프로세스의 정보를 PCB로 부터 읽어와 레지스터에 적재하는 과정이다. 

 

보통 1)인터럽트(interrupt)가 발생하거나 2)실행중인 CPU 사용 허가시간을 모두 소모하거나, 3)입출력을 위해 대기해야 하는 경우에 Context Switching이 발생한다. 

 

즉, 프로세스가 Ready → Running, Running → Ready, Running → Waiting처럼 상태 변경 시 발생한다. 

 

 

➕) Context Switching 을 하는 동안에는 CPU는 아무것도 하지 못하게 된다. 따라서, 만일 쓰레드 및 프로세스의 개수가 엄청 많아져 Context Switching 이 빈번히 일어나게 된다면, 오버헤드가 잦아져 성능이 악화될 가능성도 있다.

이를 Context Switching Overhead 라고 한다.

 

 

# 참고 문헌

https://gyoogle.dev/blog/computer-science/operating-system/PCB%20&%20Context%20Switching.html

https://velog.io/@haero_kim/PCB-%EC%99%80-Context-Switching-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0

728x90