컨텍스트 스위치는 프로세스에 관한 이야기여서 프로세스에 대해 선학습이 필요하다.
단어가 주는 느낌으로만 유추 해보자.
Context는 문맥, 어떤 흐름의 뜻이고 Switch는 변경, 바꾸다 정도의 뜻이니 합치면 문맥을 변경하다, 흐름을 바꾸다. -> 계속 해오던걸 그만하고 새로운 걸 한다.
단어만으로도 대충 어떤 느낌인지 알 수 있다.
컨텍스트 스위치는 다중 작업(멀티태스킹) 환경에서 일어난다. 여러 프로세스나 쓰레드가 동시에 실행 될 때, 각 프로세스나 쓰레드는 CPU를 할당받아 작업을 수행하다가 다른 프로세스나 쓰레드로 전환될 수 있다. 이 때, 현재 작업 중인 프로세스나 쓰레드의 상태를 저장하고 다음 실행할 프로세스나 쓰레드의 상태로 전환하는 과정을 말한다.
컨텍스트는 CPU가 해당 프로세스를 실행하기 위한 정보다. 이 정보들은 PCB(위 이미지)라는 곳에 저장되어 스위칭이 일어나도 이전에 하던 일을 새로하지 않고 이어서 할 수 있다.
컨텍스트 스위치는 오버헤드가 발생한다.
현재 작업 하던 레지스터와 메모리에 있는 정보를 PCB에 저장하고, 스위칭해서 작업할 정보를 PCB에서 불러온다.
메모리 캐시를 Flushing하고 Reloading한다.
다양한 테이블과 리스트를 갱신한다.
플러싱은 데이터를 지우는게 아니라 다른곳으로 저장한다고 생각하면 된다.
오버해드는 일반적인 자원, 시간보다 추가적으로 더 사용되는걸 뜻한다.

Interrupt가 컨텍스트 스위칭 요청을 함.
프로세스0의 Context를 PCB0에 저장
PCB1에 저장되어 있던 프로세스1의 Context를 가져와서 CPU에 할당.
Interrupt는 현재 실행 중인 프로그램 또는 작업을 중단하고, 어떤 이벤트나 조건이 발생했음을 CPU에 알리는 신호다.
한 줄평 : 컨텍스트 스위치는 엄청 빈번하게 발생한다. 우리가 게임을 하면서 옆에 유튜브를 띄워 놓는 것도 컨텍스트 스위치를 통해 동시에 작업 중인 것 처럼 느끼게 한다.
참고 -
https://uzun.dev/92