스터디/운영체제

[운영체제] Context Switch

latter2005 2021. 1. 16. 00:21

Context Switch

Context란 CPU가 해당 프로세스를 실행하기 위한 정보로 지난 시간에 배운 PCB에 저장되어 있는 프로세스의 상태 정보를 의미합니다. 

우리가 사용하는 컴퓨터에서 여러가지 프로그램을 동시에 동작할 수 있도록 만들어 주기 위해 현재 Context를 저장해 두고 다른 프로세스의 Context를 불러와 실행시켜 마치 실시간으로 여러 개의 프로그램이 동작하는 것처럼 보여줍니다. 이러한 일련의 과정을 Context Switch로 부릅니다.

보통 프로세스에 주어진 CPU 시간이 다 되거나 입출력 등을 위해 스스로 인터럽트를 발생, 우선순위가 높은 프로세스가 CPU를 점유하기 위해 인터럽트 요청을 했을 경우 발생합니다.

 

Context Switch의 과정

프로세스 상태 변화에서 ready, running, wating 과정에서 Context Switch가 발생하며 다음과 같은 과정을 수행합니다.

 

Context Switch 과정

  1. 현재 프로세스에서 수행중인 명령어까지 마친 후 해당 프로세스는 동작을 멈춥니다.
  2. 해당 프로세스의 레지스터 값들이 PCB에 저장되고 PCB는 다른 곳에 저장됩니다.
  3. 새로 실행될 프로세스의 PCB를 가저오고 PC값과 레지스터 값들을 불러온 후 프로세스가 실행됩니다.

Context Switch가 끝날 때 까지 해당 CPU는 다른 동작을 할 수 없으며 PCB 변경 또한 많은 시간이 걸리는 작업입니다. Cache를 초기화해 주어야 하며 메모리와 레지스터의 매핑 정보를 다시 불러오고, PCB 저장, 불러오기 등 많은 작업이 필요합니다. 따라서 Context Switch 가 자주 발생하게 되면 성능이 저하되므로 빠르게 처리하는 것이 가장 중요합니다.

  • 하드웨어 가속 : 많은 레지스터 세트를 사용하거나 포인터연산을 가속화, 뒤에서 배울 TLB를 사용합니다.
  • 소프트웨어 가속 : 적절한 스케줄링 알고리즘을 통해 Context Switch와 프로세스를 조율합니다.

 

멀티 스레드 환경에서도 스레드간 Context Switch가 발생합니다. 스레드는 프로세스와 달리 자기 자신을 실행하기 위한 최소한의 독립적인 메모리(Stack)가 생성되고 그 외 영역인 Text, Data, Heap(Static) 메모리를 공유하므로 레지스터 매핑 정보가 무너지지 않아 비교적 Context Switch가 빠릅니다.

 

Context Switch는 OS의 핵심 기능중 하나이며 이러한 과정들을 OS 스케줄러가 담당하고 있습니다.

반응형