Tech

Diary

Lecture

About Me

개발중

Context Switching

JeongSeulho

2023년 02월 04일

준비중...
클립보드로 복사

컨텍스트 스위칭(CS)

  • 코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것

엄밀히 말하면 코어의 실행단위는 항상 스레드이므로

  1. 같은 프로세스의 다른 스레드로 스위칭되거나 => 스레드 컨텍스트 스위칭
  2. 다른 프로세스의 스레드로 스위칭되는 것 => 프로세스 컨텍스트 스위칭

컨텍스트란

  • 스레드에대한 CPU, 메모리 상태
  • CPU의 레지스터, 메모리의 위치 정보 등

컨텍스트 스위칭의 필요성

  • 여러 프로세스/스레드를 동시에 실행하기 위해서

컨텍스트 스위칭 발생 시점

  • 주어진 time slice를 다 사용한 경우
  • I/O 작업을 하는 경우
  • 다른 스레드에서 사용하는 리소스를 기다려야하는 경우

프로세스 CS와 스레드 CS의 비교

공통점

  1. 커널이 주체이며 커널모드에서 실행
  2. CPU의 레지스터 상태를 교체 => 실행하던 스레드의 레지스터 상태를 저장해두고 다음 스레드의 레지스터 상태를 불러옴

스레드 CS

Image

프로세스 CS

  • 가상 메모리 주소 관련 처리를 추가로 진행
  • MMU(Memory Management Unit)가 다른 프로세스의 메모리 공간을 참조하도록
  • TLB(Translation Lookaside Buffer) 비우기
    • TLB는 논리적 주소와 물리적 주소를 맵핑해둔 캐시 메모리

Image

컨텍스트 스위칭의 영향

캐시 오염

  • 자주쓰는 정보를 CPU 캐시에 저장해두는데 프로세스 CS에서는 이 캐시가 쓸모없어짐
  • CPU에 따라서 프로세스 CS마다 이 캐시를 비우기도 함

오버헤드

  • 사용자 관점에서 CS가 많이 발생할수록 성능이 저하됨