컨텍스트 스위칭(Context Switching)

Context Switching(컨텍스트 스위칭)

  • CPU/코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체 되는 것
  • 여러 프로세스/스레드를 동시에 실행시키기 위해서 필요
  • 컨텍스트(Context): 프로세스/스레드의 상태(CPU, 메모리 등)

스위칭이 발생할 떄

  • 주어진 time slice(quantum)를 다 사용할 떄
  • IO작업을 해야할 떄
  • 다른 리소스를 기다릴 떄

OS 커널(Kernel)

  • Context Switching을 실행하는 곳
  • 각종 리소스를 관리 및 감독하는 역할

 

Context Switching의 종류

  • 다른 프로세스끼리 스위칭하는 Process Context Switching
  • 같은 프로세스의 스레드들끼리 스위칭 Thread Context Switching

공통점

CPU실행흐름에서 컴퓨터의 리소스가 필요할 때, 운영체제의 커널 모드가 작동

 

  • 커널 모드에서 실행
    *커널 모드: 프로세스가 진행됨에 따라서 컴퓨터의 여러 리소스를 접근하기 위해서는 운영체제의 Kernel을 통해서 접근하는 모드
  • CPU의 레지스터 상태를 교체 *레지스터: 각종 명령어들을 수행하기 위해 필요한 여러 데이터들을 저장하는 곳
    • 프로세스가 교체 될 때마다 이전 프로세스의 상태 정보를 알고 있어야 함

차이점

Thread Context Switching 도식화
Process Context Switching 도식화

Thread Context Switching

  • 같은 프로세스의 스레드들은 메모리를 공유
  • 메모리 주소 관련 처리를 하지 않기 때문에, Process Context Switching보다 속도가 훨씬 빠름

Process Context Switching

  • 프로세스간에는 메모리를 공유하지 않아서 추가적인 메모리 작업 수행
  • 가상(Virtual) 메모리 주소 관련 처리를 추가로 수행 (MMU, TLB)