Context Switching
컨텍스트 스위칭 시에는 어떤 일들이 일어나나요?
컨텍스트 스위칭
CPU / 코어에서 실행 중이던 프로세스나 스레드가 다른 프로세스나 스레드로 교체되는 현상이다.
컨텍스트 ⇒ 프로세스나 스레드의 상태라고 이해하면 된다.
컨텍스트 스위칭이 필요한 이유는 다음과 같다.
- 여러 프로세스와 스레드들을 동시에 실행시키는 것처럼 보이기 위해서
- 여러 프로세스와 스레드들이 공정하게 CPU 시간을 나눠 갖기 위해서
- 높은 우선순위의 작업이 빠르게 처리될 수 있게 하기 위해서

프로세스와 스레드는 컨텍스트 스위칭이 발생했을 때 어떤 차이가 있을까요?
프로세스 컨텍스트 스위칭
가상 메모리 주소 관련 처리가 추가적을로 실행
프로세스는 메모리 주소를 각각 가지고 있기 때문에 메모리 주소와 관련된 처리가 추가적으로 필요
- MMU (Memory Management Unit) 가상 메모리와 물리 메모리 사이의 주소 변환
- TLB (Translation Lookaside Buffer) MMU 내에 존재하는 캐시 메모리
MMU가 실행될 작업의 메모리를 보도록 해야 하고, 캐시 역할을 하는 TLB를 완전히 비워 줘야 함
스레드 컨텍스트 스위칭
스레드들끼리는 code, data, heap 영역을 공유하기 때문에 스위칭이 일어나더라도 메모리와 관련해서 챙겨 줘야 할 부분이 없다.
스레드의 상태를 저장하고 새로 실행될 스레드의 상태를 로딩하는 것으로 해결
컨텍스트 스위칭이 발생할 때, 기존의 프로세스 정보는 커널 스택에 어떠한 형식으로 저장되나요?
PCB에 PC, register, 메모리 관리 정보, 스택 및 힙 포인터, 기타 프로세스 정보 등의 정보를 포함하여 저장한다.
컨텍스트 스위칭은 언제 일어날까요?
- 주어진 Time Slice를 다 사용했을 경우
- I/O 작업이 일어나는 경우
- 다른 리소스를 기다려야 하는 경우
- 인터럽트