Context Switching(컨텍스트 스위칭)
- CPU/코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체 되는 것
- 여러 프로세스/스레드를 동시에 실행시키기 위해서 필요
- 컨텍스트(Context): 프로세스/스레드의 상태(CPU, 메모리 등)
스위칭이 발생할 떄
- 주어진 time slice(quantum)를 다 사용할 떄
- IO작업을 해야할 떄
- 다른 리소스를 기다릴 떄
OS 커널(Kernel)
- Context Switching을 실행하는 곳
- 각종 리소스를 관리 및 감독하는 역할
Context Switching의 종류
- 다른 프로세스끼리 스위칭하는 Process Context Switching
- 같은 프로세스의 스레드들끼리 스위칭 Thread Context Switching
공통점
- 커널 모드에서 실행
*커널 모드: 프로세스가 진행됨에 따라서 컴퓨터의 여러 리소스를 접근하기 위해서는 운영체제의 Kernel을 통해서 접근하는 모드 - CPU의 레지스터 상태를 교체 *레지스터: 각종 명령어들을 수행하기 위해 필요한 여러 데이터들을 저장하는 곳
- 프로세스가 교체 될 때마다 이전 프로세스의 상태 정보를 알고 있어야 함
차이점
Thread Context Switching
- 같은 프로세스의 스레드들은 메모리를 공유
- 메모리 주소 관련 처리를 하지 않기 때문에, Process Context Switching보다 속도가 훨씬 빠름
Process Context Switching
- 프로세스간에는 메모리를 공유하지 않아서 추가적인 메모리 작업 수행
- 가상(Virtual) 메모리 주소 관련 처리를 추가로 수행 (MMU, TLB)