컨텍스트 스위치는 여러 프로세스가 하나의 CPU를 공유할 수 있도록 CPU의 상태와 같은 자원을 저장하고 복원하는 컴퓨팅 프로세스입니다. 컨텍스트 스위치는 멀티태스킹 OS에서 필수적인 요소입니다. 많은 운영 체제의 설계 시 컨텍스트 스위칭을 최적화하는 형태로 진행됩니다. 레지스터 컨텍스트 스위치, 태스트 컨텍스트 스위치, 스레드 컨텍스트 스위치 혹은 프로세스 컨텍스트 스위치 등을 의미합니다. 컨텍스트를 구성하는 것은 OS와 프로세서에 의해 결정됩니다. 하나의 프로세스에서 다른 프로세스로 스위칭할 때에는 레지스터들를 저장하고 불러오거나, 메모리 맵이나, 여러 테이블이나 리스트들을 업데이트하는 시간이 필요합니다.

아래는 컨텍스트 스위칭이 필요한 세 가지 시나리오입니다.
Multitasking

대부분 스케쥴링 스키마에서 하나의 프로세스는 다른 프로세스가 실행되기 위해 CPU 스위칭이 필요합니다. 선점형 멀티태스킹 OS 에서는 스케쥴러가 특정한 시간에만 태스크가 실행될 수 있도록 합니다. 그리고 이걸 타임 슬라이스라고 부르죠. 만약 프로세스가 스스로 CPU를 yield(포기)하지 않는다면(예를 들어 I/O 작업을 수행하는 것처럼), 타이머 인터럽트가 발생하고 운영체제는 다른 프로세스를 스케쥴해 실행되도록 합니다.
Interrupt handling

(Intel x86 같은) 몇몇 아키텍쳐는 인터럽트 드리븐 방식입니다. 이것은 만약 CPU가 디스크로부터 데이터를 요청하면 읽기가 끝날때까지 busy-wait일 필요가 없다는 거죠. 다른 요청을 계속 실행할 수 있습니다. 만약 읽기 작업이 끝나면 CPU는 중단될 수 있습니다. CPU는 디스크에 저장된 인터럽트 핸들러를 호출해 인터럽트를 처리합니다. 커널은 추후 이 프로세스가 다시 재개될 수 있도록 관련된 내용을 저장합니다.
User and kernel-mode switching

OS 내에서 유저 모드와 커널 모드 사이에서 트랜잭션이 요구될 때 컨텍스트 스위치는 필수 조건은 아닙니다. 이러한 모드 전환 자체가 컨텍스트 전환(프로세스를 전환하기 위해서 커널 모드로 잠시 동작하는 것을 말하는듯)이니까요. 하지만 운영체제에 따라 컨텍스트 스위칭이 발생할 수도 있습니다.
컨텍스트 스위치에서 첫번째 프로세스의 상태는 스케쥴러가 첫번째 프로세스의 실행으로 돌아가기 위해서 반드시 어떻게든 저장되어야 합니다, 이것이 상태를 복원하고 계속할 수 있게 합니다. 프로세스의 상태는 프로세스가 사용하고 있는 모든 레지스터(특히 프로그램 카운트와 반드시 필요한 OS 시스템의 특정 데이터들)들을 포함합니다. 이런 데이터들은 일반적으로 PCB(Process control block)이라고 불리는 구조체 혹은 switch frame에 저장됩니다. 프로세스를 스위칭하기 위해 첫 번째 프로세스의 PCB는 반드시 생성되고 저장되어야 합니다. PCB들은 유저 모드 스택과는 반대로 가끔씩 커널 메모리의 프로세스별 스택에 저장됩니다. 혹은 이런 데이터들을 저장하기 위해 시스템 내에 정의된 구조체가 있는 경우도 있습니다. 그래서 운영체제는 효과적으로 첫번째 프로세스의 실행을 suspend 시킬 수 있기 때문에 두 번째 프로세스의 PCB와 context를 로드할 수 있습니다. 이렇게 PCB의 프로그램 카운터가 로드되고 새로운 프로세스의 실행이 가능해집니다.