- 인터럽트나 ,시스템 호출 등으로 실행 중인 프로세스의 제어를 다른 프로세스에 넘겨 실행 상태가 되도록 하는 것, 프로세스 문맥교환이 일어나면 프로세서의 레지스터에 있던 내용을 나중에 사용할 수 있도록 저장
- 현재 CPU를 사용중인 프로세스의 CPU제어권이 다른 프로세스로 이양되는 과정
- Context Switching은 동작 중인 프로세스의 상태를 PCB에 보관하고 context를 바꿀 프로세스의 상태를 불러와 복구하는 과정
- 운영체제는 타이머 인터럽트 처리 루틴으로 가서 직전까지 수행중이던 프로세스 A의 문맥(PC 등.. )을 자신의 PCB에 저장하고 프로세스 B는 예전에 저장했던 자신의 문맥을 PCB로 부터 실제 하드웨어로 복원 시키는 과정을 거침
*Process의 Context란 프로그램 카운터(PC), CPU 레지스터들의 값, 메모리 관리 상태 등을 포함한프로세스의 상태를 뜻한다.
*오버헤드: 문맥교환에 필요한 시간, 메모리

- P0를 실행 중 interrupt가 발생하거나 system call이 발생하면 P0의 상태를 PCB0에 저장한다.
- PCB1에 저장된 P1의 상태를 불러와 복구한다.
- P1를 실행한다.
- 이때 다시 interrupt가 발생하거나 system call이 발생하면 P1의 상태를 PCB1에 저장한다.
- PCB0에 저장된 P0의 상태를 불러와 복구한다.
- P0를 실행한다.
context switching이 아닌경우 프로세스가 실행 상태일 때 시스템 콜이나 인터럽트가 발생하면 CPU의 제어권이 운영체제에게로 넘어와 원래 실행중이던 프로세스의 업무를 잠시 멈추고 운영 체제 커널의 코드가 실행된다. 이 경우 cpu의 실행 위치 등 프로세스 문맥 중 일부를 PCB에 저장하지만 이런 과정을 context switching이라고 하지 않음
