Context Switching이란 CPU가 여러 프로세스를 처리해야 할 때, 현재 실행 중인 Task(프로세스 또는 스레드)의 상태를 저장하고, 다음에 실행할 Task의 상태를 복원하는 과정을 말한다. 이는 CPU가 한 번에 하나의 프로세스만 처리할 수 있기 때문에 필요하다.
Context Switching은 많은 비용이 소모된다. 그 이유는 다음과 같다:
프로세스의 Context Switching 비용은 스레드보다 더 많이 든다. 그 이유는 스레드는 스택 영역을 제외한 모든 메모리를 공유하기 때문에 Context Switching 발생 시 스택 영역만 변경하면 되기 때문이다.
예를 들어, 프로세스 A가 실행 중일 때, 프로세스 B를 실행하려면 다음과 같은 단계가 필요하다:
1. 프로세스 A의 상태를 PCB에 저장한다.
2. 프로세스 B의 상태를 PCB에서 레지스터로 복원한다.
3. CPU가 프로세스 B를 실행한다.
4. 프로세스 B의 실행이 끝나면 다시 프로세스 A의 상태를 복원하고 실행을 계속한다.
Context Switching은 CPU가 여러 프로세스를 처리할 수 있도록 하는 중요한 메커니즘이다. 그러나 많은 비용이 소모되기 때문에 효율적으로 관리하는 것이 중요하다. 스레드는 프로세스보다 Context Switching 비용이 적게 들기 때문에, 멀티스레딩을 통해 효율성을 높일 수 있다. Context Switching을 잘 이해하고 관리하면 시스템 성능을 최적화하는 데 도움이 된다.