Context Switching
JeongSeulho
2023년 02월 04일
준비중...
클립보드로 복사
컨텍스트 스위칭(CS)
- 코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것
엄밀히 말하면 코어의 실행단위는 항상 스레드이므로
- 같은 프로세스의 다른 스레드로 스위칭되거나 => 스레드 컨텍스트 스위칭
- 다른 프로세스의 스레드로 스위칭되는 것 => 프로세스 컨텍스트 스위칭
컨텍스트란
- 스레드에대한 CPU, 메모리 상태
- CPU의 레지스터, 메모리의 위치 정보 등
컨텍스트 스위칭의 필요성
- 여러 프로세스/스레드를 동시에 실행하기 위해서
컨텍스트 스위칭 발생 시점
- 주어진 time slice를 다 사용한 경우
- I/O 작업을 하는 경우
- 다른 스레드에서 사용하는 리소스를 기다려야하는 경우
프로세스 CS와 스레드 CS의 비교
공통점
- 커널이 주체이며 커널모드에서 실행
- CPU의 레지스터 상태를 교체 => 실행하던 스레드의 레지스터 상태를 저장해두고 다음 스레드의 레지스터 상태를 불러옴
스레드 CS
프로세스 CS
- 가상 메모리 주소 관련 처리를 추가로 진행
- MMU(Memory Management Unit)가 다른 프로세스의 메모리 공간을 참조하도록
- TLB(Translation Lookaside Buffer) 비우기
- TLB는 논리적 주소와 물리적 주소를 맵핑해둔 캐시 메모리
컨텍스트 스위칭의 영향
캐시 오염
- 자주쓰는 정보를 CPU 캐시에 저장해두는데 프로세스
CS
에서는 이 캐시가 쓸모없어짐 - CPU에 따라서 프로세스
CS
마다 이 캐시를 비우기도 함
오버헤드
- 사용자 관점에서
CS
가 많이 발생할수록 성능이 저하됨