카테고리 없음

[OS] 컨텍스트 스위치(Context Switch)란?

eunsour 2023. 1. 15.
반응형

컨텍스트 스위치 CPU를 한 프로세스 또는 스레드에서 다른 프로세스 또는 스레드로 전환하는 것이다. 여러 프로세스가 단일 CPU 리소스를 공유할 수 있도록 CPU의 상태(컨텍스트)를 PCB에 저장하고 복원하는 컴퓨팅 프로세스이다. 

 

컨텍스트 스위치는 커널 모드에서만 발생한다. 커널 모드는 커널만 실행되고 모든 메모리 위치 및 기타 모든 시스템 리소스에 대한 액세스를 제공하는 CPU의 특권 모드이다. 

 

 

컨텍스트 스위치가 발생하는 세 가지 시점

1. 멀티태스킹 (Multitasking)

 

멀티태스킹은 여러 프로세스가 서로 간섭하지 않고 단일 CPU에서 겉보기에 동시에 실행되는 것처럼 보이는 시스템이다. 이러한 동시성의 환상은 빠른 속도(초당 수십 또는 수백 회)로 발생하는 컨텍스트 스위치를 통해 달성된다. 프로세스가 CPU에서 시간을 자발적으로 양보하거나 스케줄러에 의해 할당된 CPU 시간 조각을 모두 사용했을 때 수행한다. 

 

 

2. 인터럽트 처리 (Interrupt handling)

 

컨텍스트 스위치는 하드웨어 장치(예: 키보드, 마우스, 모뎀 또는 시스템 시계)에서 커널로 전송되는 이벤트(예: 키 누르기, 마우스 이동 또는 네트워크 연결로부터의 데이터 도착)의 신호인 하드웨어 인터럽트의 결과로 발생할 수도 있다.

 

그러나 대부분의 현대 운영 체제는 향상된 성능을 얻기 위해 하드웨어 컨텍스트 스위칭 대신 모든 CPU에서 사용할 수 있는 소프트웨어 컨텍스트 스위칭을 수행한다. 하드웨어 메커니즘이 거의 모든 CPU 상태를 저장하는 반면 소프트웨어는 더 선택적이고 실제로 저장하고 다시 로드해야 하는 부분만 저장할 수 있다는 것이다.

 

인터럽트의 경우 인터럽트 핸들러라는 프로그램이 설치되어 있기 때문인데, 디스크에서 인터럽트를 처리하는 것이 인터럽트 핸들러이다. 커널은 인터럽트를 처리하기 위해 특별한 프로세스를 생성하거나 스케줄하지 않지만, 대신에 핸들러는 인터럽트 처리의 시작에서 설정된 컨텍스트에서 실행된다. 따라서 인터럽트 서비스가 완료되면 인터럽트가 발생하기 전에 유효한 컨텍스트가 복원되어 인터럽트된 프로세스가 적절한 상태에서 실행을 재개할 수 있다.

 

위 그림에서 Procces P1 에서 Executing 하는 동안, 인터럽트가 발생하면 PCB1에 상태 정보를 저장하고, Process P2 를 Executing 한다. 이 때 idle (유휴 시간)이 발생 하는데, 프로세스 사이에 idle 이 겹치는 구간이 많이 생길 수록 오버 헤드가 발생한다. 

 

 

3. 사용자 및 커널 모드 전환 (User and kernel mode switching)

시스템이 사용자 모드와 커널 모드 사이를 전환할 때는 컨텍스트 스위치가 필요하지 않으며 모드 전환은 Context Switch 가 아닌 mode switch 라고 한다. 그러나 운영 체제에 따라 이 때 컨텍스트 스위치가 발생할 수도 있다.

 


 

한 프로세스에서 다른 프로세스로 전환하려면 레지스터 및 메모리 맵 저장 및 로드, 다양한 테이블 및 목록 업데이트 등 관리를 수행하는 데 초당 수십 또는 수백 개의 스위치 각각에 대해 나노초 단위의 상당한 프로세서 시간이 필요하다. 

 

그래서 컨텍스트 스위치는 일반적으로 계산 집약적이며, 운영 체제 설계의 주요 초점은 컨텍스트 스위치 비용을 최적화하는 것이었다. 

 

그러나 실제로 소비되는 CPU 시간의 절대적인 양으로 측정했을 때 컨텍스트 전환 비용이 감소하고 있지만, 이는 주로 컨텍스트 스위치 자체의 효율성 향상보다는 CPU 클럭 속도의 증가에 기인하는 것으로 보였다.

 

 

 

Reference

 

Context Switch definition

A context switch (also sometimes referred to as a process switch or a task switch) is the switching of the CPU (central processing unit) from one process or thread to another. A process (also sometimes referred to as a task) is an executing (i.e., running)

web.archive.org

 

 

Context switch-Everything you need to Know - Huawei Enterprise Support Community

Context Switch:A context switch is the computing process of storing and restoring the state (context) of a CPU such that multiple processes can share ...

forum.huawei.com

 

반응형

댓글