앞서 타이머 인터럽트로 인한 프로세스 이양이나, 입출력을 할때도 CPU의 낭비를 막기위해 준비큐에있는 프로세스에게 CPU를 할당해준다고 했다. 이와 같이 프로세스의 상태를 바꿔주는것을 문맥교환(Context Switch) 이라고 한다.

 

문맥교환을 하게되면, 원래 CPU를 보유하고 있던 프로세스는 프로그램 카운터 값등 프로세스의 문맥을 자신의 PCB에 저장하고 새롭게 CPU를 할당받을 프로세스는 예전에 저장했던 자신의 문맥을 PCB로부터 실제 하드웨어로 복원한다.

시스템콜이나 인터럽트로 인해 운영체제에게 CPU제어권이 넘어와 잠시 프로세스의 문맥일부를 PCB에 저장하는것은 문맥교환이라고 하진 않는다.(사용자모드에서 커널모드로 실행모드만 바뀔뿐)

 

문맥교환에 소요되는 시간은 실제로 시스템에게 유용한 시간은 아니다. 따라서 타이머세팅간격을 짧게해 문맥교환이 빈번히 일어난다면 프로그램성능이 떨어지고, 반대로 너무 크게 정하면 시분할시스템의 의미가 퇴색하게 된다. 고로 적절한 CPU 시간할당이 중요하다.