컨텍스트 스위칭이란?
CPU가 프로세스(또는 스레드)를 실행하다가 다른 프로세스로 작업을 교체하는 과정이다.
일반적인 상황으로는 CPU 현재 실행 중인 작업의 상태를 저장하고, 다른 작업의 상태를 복원해서 작업을 전환하는 과정이다.
컨텍스트 스위칭이 필요한 이유?
멀티태스킹 지원을 위해서 컨텍스트 스위칭이 존재한다.
(물론 CPU 코어 하나는 하나의 일 밖에 처리하지 못해 실제로 동시 진행은 아니지만, 컨텍스트 스위칭을 통해 여러 작업을 돌아가며 수행하면 사용자 입장에서는 동시에 진행되는 거처럼 느껴진다.)
만약 컨텍스트 스위칭이 되지 않는다면 여러 작업이 있을 때 하나의 작업이 마무리될 때까지 CPU 코어에 할당되지 않은 작업들은 계속해서 대기를 해야 하는 현상이 발생한다.
컨텍스트 스위칭의 과정
컨텍스트 스위칭이 발생할 때 기존에 실행 중이던 프로세스의 상태를 PCB에 저장해 둔다.
(PCB는 Process Controller Block의 약자이며 운영체제의 커널 영역에 존재하고, 프로세스의 상태, 다음 실행 명령어의 주소, CPU 레지스터 값 등의 정보를 담고 있다.)
그리고 교체할 프로세스(복원할 프로세스)에 대한 정보를 다시 PCB에서 가져와 프로세스를 CPU에 복원하여 컨텍스트 스위칭이 마무리된다.
컨텍스트 스위칭의 단점?
얘가 일단 위의 과정을 보면 알 수 있듯이 프로세스를 갈아 끼우는데 드는 비용이 있다.
즉, 컨텍스트 스위칭이 잦아질수록 성능 저하가 발생할 수 있다.
또한 프로세스 컨텍스트 스위칭의 경우 기존 프로세스에서 사용 중이던 캐시 메모리 영역이 바뀐 프로세스에서는 사용되지 않을 확률이 매우 높기 때문에 캐시 낭비 또한 발생한다.