- CPU/코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것
- 프로세스 → 다른 프로세스
로 교체된다는 의미는 현재에는 프로세스의 스레드 → 다른 프로세스 스레드
로 교체된다는 의미
- 컨텍스트(context)
- CPU, 메모리에서의 프로세스/스레드의 상태
- 컨텍스트 스위칭이 필요한 이유
- 여러 프로세스/스레드를 동시에 실행시키기 위해서
- 컨텍스트 스위칭은 언제 발생 시점
- 주어진 time slice(quantum)를 프로세스 또는 스레드가 다 사용했거나
- IO 작업을 해야하거나
- 다른 리소스를 기려야 하거나 등등
- 컨텍스트 스위칭은 OS 커널(kernel)에 의해서 실행된다.
- OS 커널(kernel) : 각종 리소스를 관리/감독하는역할
- 컨텍스트 스위칭은 구체적으로 어떤 과정
- 프로세스 컨텍스트 스위칭
(다른 프로세스끼리 스위칭)인지 스레드 컨텍스트 스위칭
(같은 프로세스의 스레드들끼리 스위칭)인지에 따라 다르다.
- 스레드 컨텍스트 스위칭
- 스레드 컨텍스트 스위칭
- 둘의 공통점
1. 커널 모드에서 실행
2. CPU의 레지스터 상태를 교체
- 둘의 차이점
- 프로세스 컨텍스트 스위칭은 가상(virtual) 메모리 주소 관련 처리를 추가로 수행
- MMU(메모리 메니지먼트 유닛)도 새로운 프로세스의 주소체계를 바라볼수 있도록 수정
- TLB라고 불리는 가상 메모리의 주소와 실제 물리적인 메모리의 주소에 맵핑 정보를 들고 있는 캐시역할을 하는 TLB도 비워줘야한다.
- 스레드 컨텍스트 스위칭이 더 빠른 이유?
- 같은 메모리 공간을 공유하기 때문에 메모리 주소 관련 처리를 하지 않아되기 때문이다.
- 컨텍스트 스위칭이 미치는 간접적인 영향은?
- 캐시(cache) 오염(pollution)
- 프로세스 컨텍스트 스위칭의 경우 CPU안의 캐시에는 이전 프로세스의 정보가 있을 수있기때문에 메모리에 직접 접근해야한다.
참조
쉬운코드 : 컨텍스트 스위칭 뽀개기! 의미와 종류와 왜 스레드 컨텍스트 스위칭이 더 빠르다고 하는지까지..! 이 모든 것을 시원~~하게 설명합니다!!