컨텍스트 스위칭의 정의
- CPU/코어 에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것
- 컨텍스트란 프로세스 또는 스레드의 상태를 의미한다.
- 상태라는 것은 CPU,메모리에서의 상태를 의미한다.
컨텍스트 스위칭이 필요한 이유
- 여러 프로세스와 스레드들을 동시에 실행시키기 위해(그렇게 보이기 위해)
- 여러 프로세스와 스레드들이 공정하게 CPU 시간을 나눠 갖기 위해서
- 높은 우선순위의 작업이 빠르게 처리될 수 있게하기 위함
컨텍스트 스위칭 발생하는 대표적인 이유
- 주어진 Time Slice(Time Quantum)를 다 사용함.
- I/O 작업을 해야 함
- 다른 리소스를 기다려야 함
- 인터럽트(Interrupt)
컨텍스트 스위칭의 주체
- 컨텍스트 스위칭은 OS의 커널(Kernel)에 의해서 수행된다.
다른 프로세스끼리의 스위칭(Process Context Switching)
- 커널 모드에서 실행
- CPU의 레지스터 상태를 교체
- 가상 메모리 주소 관련 처리를 추가로 수행
같은 프로세스의 스레드들끼리의 스위칭(Thread Context Switching)
- 커널 모드에서 실행
- CPU의 레지스터 상태를 교체
- MMU(Memory Management Unit)와TLB(Translation Lookaside Buffer)도 관리
- MMU : 가상 메모리와 물리 메모리 사이의 주소 변환을 담당한다. 프로세스가 물리 메모리에서 할당되는 위치를 추상화하여 각 프로세스가 독립적인 주소 공간을 가지고 있는 것 처럼 만든다.
- TLB : MMU 내에 존재하는 캐시 메모리이다. 가상 주소를 물리 주소로 변환하는 과정을 상대적으로 느릴 수 있기 때문에, 이러한 변환의 결과를 TLB에 저장해 두고 빠르게 사용하는 데에 목적이 있다.
프로세스간의 스위칭에서는, 위의 작업에 더불어서 MMU가 실행 될 작업의 메모리를 보도록 해야 하고 캐시 역할을 하는 TLB를 완전히 비워줘야 합니다.
컨텍스트 스위칭이 미치는 영향
- 컨텍스트 스위칭이 발생하면서, 캐시 오염(Cache Pollution)이라는 간접 영향이 발생
어플리케이션 관점에서는, 컨텍스트 스위칭은 순수한 오버헤드(Overhead, 간접비용)
'CS' 카테고리의 다른 글
스레드 세이프(Thread Safe) (0) | 2025.03.13 |
---|---|
동기와 비동기의 차이(블로킹, 넌블로킹) (0) | 2025.03.13 |
프로세스와 스레드의 차이 (0) | 2025.03.12 |
CORS(교차 출처 리소스 공유) (0) | 2025.03.11 |
HTTP 메서드 (0) | 2025.03.10 |