뜌릅

PCB와 컨텍스트 스위칭 - 운영체제 본문

카테고리 없음

PCB와 컨텍스트 스위칭 - 운영체제

TwoCastle9 2024. 1. 22. 17:19
반응형

 

CPU의 여러 기능중 하나는 Process Management입니다. 단순히 Process Scheduling뿐만 아니라, Process을 수행하고 변경하는 등의 여러가지 일을 할 줄 알아야 합니다. 

 

CPU가 프로세스를 처리할줄 알려면, 프로세스에 대한 데이터(메타 데이터)가 있어야 합니다. 

프로세스를 제어하기 위한 메타 데이터들을 저장하는 곳이 PCB Process Control Block입니다. 

 

PCB

PCB의 구성은 아래와 같습니다. 

  • Process Metadata
    • Process ID
    • Process State
    • Process Priority
    • CPU Registers
    • Owner
    • CPU Usage
    • Memeory Usage

PCB는 프로세스가 생성 상태에서 생성이 이루어집니다. 

 

PCB는 프로세스 테이블 안에서 링크드 리스트 구조로 관리가 이루어지는데, 이는 동적으로 생성되고 종료되는 운영체제 환경에 매우 적합합니다. 

이러한 PCB들은 Kernal영역(메모리)에 저장이 됩니다.

 

Context Switching

CPU가 현재 작업중인 프로세스에서 다른 프로세스로 넘어갈 때, 이전의 프로세스 정보를 PCB에 저장하고 새롭게 실행할 프로세스의 정보를 PCB에서 읽어와 레지스터에 적재하는 과정을 말한다.

Context

  • 프로세스의 데이터
  • CPU의 레지스터 값
  • PC(Program Counter)

프로세스를 실행하기 위해 필요한 정보들을 Context라고 합니다.

 

프로세스가 메모리에 올라가 실행 될 때 CPU 내에 존재하는 레지스터들이 현재 실행중인 프로세스 관련 데이터로 채워지게 되고 실행중인 프로세스가 변경되면 CPU 내의 레지스터 값들이 변경됩니다.

Context Switching 과정

PCB관점에서 Context Switching을 설명하자면, CPU가 Context즉 PCB를 교체하는 과정이다.

기존에 사용하던( 곧 바뀌어야 할) 프로세스의 PCB와 레지스터를 제거하고 다음에 수행해야 할 PCB와 레지스터를 CPU에 할당하는 것이다. 기존에 수행하던 PCB와 레지스터의 값은 메모리에 저장하여 남겨둡니다.

 

자세한 내용은 아래 링크를 참조하세요.

https://twocastle9.tistory.com/98

 

이러한 과정속에서 Overhead가 발생하게 됩니다. Context Switching은 우선순위나 Interrupt등 동시성과  반응성을 향상시켜주지만 성능에 대한 Overhead적인 낭비가 일어나게 됩니다. 

 

갑자기 생긴 의문.... PCB를 삭제할때 O(1)에 어떻게 삭제하지?

정답은 매우 간단하다.

참조이다. 운영체제에서 참조는 매우 잘 사용되는데 이는 Uniform한 형태에 O(1)에 접근이 가능하기 때문.....

 

아래의 그림을 보면, 프로세스들이 CPU 스케줄링에 따라 Blocked, Suspend, Ready Queue에 오가게 되는데, 

이때 큐에 존재하는 값들에는 PCB의 참조값이 존재한다. 이 참조값을 통해서 링크드리스트를 순회 없이 도달하게 되고 O(1)을 통해 삭제가 가능해진다.

 

반응형