컨텍스트 스위칭(Context Switching)
: CPU가 현재 실행 중인 프로세스나 스레드의 작업을 멈추고, 다른 프로세스나 스레드의 작업을 수행하기 위해 그 상태를 변경하는 작업입니다.
: 멀티태스킹 운영체제에서 여러 프로그램을 동시에 실행하는 것처럼 보이게 하는 중요한 기술입니다.

프로세스 간 컨텍스트 스위칭
: 프로세스 간의 컨텍스트 스위칭은 현재 실행 중인 프로세스의 상태 정보를 저장하고, 다음 프로세스의 상태를 복구하는 과정을 포함합니다.
- 현재 프로세스의 상태 저장: CPU 레지스터(PC, 스택 포인터 등)와 같은 프로세스의 상태 정보를 PCB(Process Control Block)에 저장합니다.
- 메모리 매핑 해제: 프로세스가 사용하는 메모리 맵핑을 해제하여, 다른 프로세스가 CPU와 메모리 자원을 사용할 수 있도록 합니다.
- 다음 프로세스 상태 복구: 새로 실행할 프로세스의 PCB에서 상태 정보를 복구하여 CPU에 로드합니다.
- 메모리 매핑 재설정: 새 프로세스의 주소 공간에 맞게 메모리를 다시 매핑합니다.
- 프로세스 실행: 새로운 프로세스가 이전에 중단된 위치에서 실행을 시작합니다.

스레드 간 컨텍스트 스위칭
: 스레드는 같은 프로세스 내에서 실행되기 때문에, 스레드 간의 컨텍스트 스위칭은 프로세스 간의 컨텍스트 스위칭보다 빠르게 수행됩니다. 이는 스레드가 프로세스의 자원을 공유하기 때문에 메모리 매핑을 변경할 필요가 없기 때문입니다.
- 현재 스레드 상태 저장: CPU 레지스터와 같은 상태 정보를 스레드의 TCB(Thread Control Block)에 저장합니다.
- 다음 스레드 상태 복구: 새로 실행할 스레드의 TCB에서 상태 정보를 복구하여 CPU에 로드합니다.
- 스레드 실행: 새로운 스레드가 이전에 중단된 위치에서 실행을 시작합니다.
컨텍스트 스위칭에서 발생하는 작업
- 레지스터 저장 및 복구
: 현재 실행 중인 작업의 CPU 레지스터 상태를 저장하고 복구하여 중단된 지점에서 다시 시작할 수 있게 합니다.
- 메모리 맵핑
: 프로세스 간 컨텍스트 스위칭 시에는 해당 프로세스의 주소 공간에 맞는 메모리 맵핑을 설정해야 합니다.
- 캐시 무효화 및 재로딩
: 다른 프로세스의 메모리 접근이 다를 수 있기 때문에 CPU 캐시를 무효화하고 새롭게 로딩할 필요가 있습니다.
- 스케줄러의 개입
: 어느 프로세스를 다음에 실행할지 결정하는 스케줄러가 관여하여 CPU 자원을 효율적으로 배분합니다.
컨텍스트 스위칭은 여러 작업을 “동시에” 실행하는 효과를 내기 위해 필수적이지만, 전환 과정에서 발생하는 오버헤드는 줄일 수 없는 부분입니다.