컨텍스트 스위칭이란 무엇인가?

hoon·2023년 2월 14일
0

1. PCB(Process Control Block)

컨택스트 스위칭에 대해서 알아보기 이전에 PCB에 대해서 알아보자

PCB는 운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터를 말하며 프로세스 제어블록이라고도 한다. 프로세스가 생성되면 운영체제는 해당 PCB를 생성한다.

프로그램이 실행되면 프로세스가 생성되고 스택, 힙 등의 구조를 기반으로 메모리가 할당된다. 그리고 이 프로세스의 메타데이터들이 PCB에 저장되어 관리된다. 이는 프로세스의 중요한 정보를 포함하고 있기 때문에 일반 사용자가 접근하지 못하도록 커널 스택의 가장 앞부분에서 관리된다.

1.1 PCB의 구조

PCB는 프로세스 스케쥴링 상태, 프로세스 ID등의 다음과 같은 정보로 이루어져 있다.

  • 프로세스 스케쥴링 상태 : ‘준비’, ‘일시중단’ 등 프로세스가 CPU에 대한 소유권을 얻은 이후의 상태
  • 프로세스 ID : 해당 프로세스의 자식 프로세스 ID
  • 프로세스 권한: 컴퓨터 자원 또는 I/O 디바이스에 대한 권한 정보

이외에도 PCB는 프로그램 카운터, CPU 레지스터 등 다양한 정보를 지닌다.

2. 컨텍스트 스위칭

Context Switching(문맥 교환)이란 CPU에 실행할 프로세스를 교체하는 기술을 말한다.(PCB를 교환하는 과정)

한 프로세스에 할당된 시간이 끝나거나 인터럽트에 의해 발행한다. 컴퓨터는 많은 프로그램을 동시에 실행하는 것처럼 보이지만 어떠한 시점에서 실행되고 있는 프로세스는 단 한 개 이며, 많은 프로세스가 동시에 구동되는 것처럼 보이는 이유는 다른 프로세스와의 컨텍스트 스위칭이 매우 빠른 속도로 실행되기 때문이다. (하지만 최근 컴퓨터는 멀티코어 CPU를 가지고 있기 때문에 컨택스트 스위칭을 설명할때는 싱글코어를 가정한다)

위의 그림처럼 한 개의 프로세스 P0가 실행하다 멈추고, 프로세스 P0의 PCB를 저장하고 다시 프로세스 P1을 로드하여 실행한다. 그리고 다시 프로세스 P1의 PCB를 저장하고 프로세스 P0의 PCB를 로드한다.

컨텍스트 스위칭의 동작을 더 자세히 보면 다음과 같다.

2.1 컨텍스트 스위칭 세부동작

  1. 실행 중지할 프로세스 정보를 해당 프로세스의 PCB정보(Program Counter, Stack Pointer)에 업데이트해서 메인 메모리에 저장한다.
  2. 다음 실행할 프로세스 정보를 메인메모리에 있는 해당 PCB정보 (Program Counter, Stack Pointer)를 CPU의 레지스터에 넣고 실행한다.

Program Counter(PC, 다음 실행할 코드 주소)와 Stack Pointer(SP, 스택최상단 주소)만 바꿔주면 프로세스 저장 상태를 기반으로 실행 가능하다. P0 프로세스를 실행하다가 P1프로세스를 실행후 다시 P0프로세스를 실행하면 P0프로세스의 처음부터 실행되는 것이 아니라 실행이 끝난곳부터 이어서 실행된다.

컨텍스트 스위칭이 일어날 때 앞의 그림처럼 유휴 시간(idle time)이 발생하는 것을 볼 수 있다. 또한, 이 컨텍스트 스위칭 과정에서 드는 비용이 바로 캐시미스이다.

  • 캐시미스 : 컨택스트 스위칭이 일어날 때 프로세스가 가지고 있는 메모리 주소가 그대로 있으면 잘못된 주소 변환이 생기므로 캐시 클리어 과정을 겪게되고 이 때문에 캐시미스가 발생한다.
profile
프론트엔드 학습 과정을 기록하고 있습니다.

0개의 댓글