Contents
프로세스와 스레드(문맥 교환)
   Dec 11, 2022     1 min read

문맥 교환

문맥 교환(Context switching)이란 ?

하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥)를 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다.

문맥 교환는 CPU를 차지하던 프로세스가 나가고 새로운 프로세스를 받아들이는 작업을 말한다.

이때 두 프로세스 제어 블록의 내용이 변경된다.

실행 상태에서 나가는 프로세스 제어 블록에는 지금까지의 작업 내용을 저장하고, 반대로 실행 상태로 들어오는 프로세스 제어 블록의 내용으로 CPU가 다시 세팅된다.

이전 작업 상태가 되어야 다음 작업을 할 수 있기 때문이다.


문맥 교환의 절차

프로세스 P1과 프로세스P2의 문맥 교환 과정을 그림으로 알아보자.

Untitled

  1. 프로세스 P1 실행 상태에 있다.
  2. 프로세스 P1에게 주어진 시간을 다 사용하면 타임아웃이 된다.
  3. 타임아웃이 되면 P1의 프로세스 제어 블록에 현재까지의 작업 결과가 저장되고 준비 상태로 쫓겨난다.
  4. 준비상태에 있던 프로세스 P2가 실행 상태로 가면 CPU의 레지스터가 P2의 프로세스 제어 블록 값으로 채워져 작업한다.

문맥 교환이 일어나는 경우는 여러 가지가 있다.

일반적으로 한 프로세스가 자신에게 주어진 시간을 다 사용하면 발생하고, 인터럽트가 걸렸을 때도 발생한다.

상황 예시) 어떤 프로세스가 자신에게 주어진 메모리 공간을 넘어가려 한다면 이는 경계 레지스터의 범위를 벗어나는 것이다. 이때 인터럽트가 발생하여 현재 실행 중인 프로세스의 제어 블록을 저장한 후 인터럽트 관리 프로세스를 실행 상태로 만든다.

인터럽트 관리 프로세스는 메모리 범위를 넘어선 프로세스를 강제로 종료하고 인터럽트 처리를 마치는데, 이와 같이 인터럽트 처리할 때도 문맥 교환이 일어난다.


**Reference**