컨텍스트 스위칭(context switching)

김승현·2023년 1월 16일
0
  • CPU/코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것
    - 프로세스 → 다른 프로세스로 교체된다는 의미는 현재에는 프로세스의 스레드 → 다른 프로세스 스레드로 교체된다는 의미

  • 컨텍스트(context)
    - CPU, 메모리에서의 프로세스/스레드의 상태

  • 컨텍스트 스위칭이 필요한 이유
    - 여러 프로세스/스레드를 동시에 실행시키기 위해서

  • 컨텍스트 스위칭은 언제 발생 시점
    - 주어진 time slice(quantum)를 프로세스 또는 스레드가 다 사용했거나
    - IO 작업을 해야하거나
    - 다른 리소스를 기려야 하거나 등등

  • 컨텍스트 스위칭은 OS 커널(kernel)에 의해서 실행된다.
    - OS 커널(kernel) : 각종 리소스를 관리/감독하는역할

  • 컨텍스트 스위칭은 구체적으로 어떤 과정
    - 프로세스 컨텍스트 스위칭(다른 프로세스끼리 스위칭)인지 스레드 컨텍스트 스위칭(같은 프로세스의 스레드들끼리 스위칭)인지에 따라 다르다.
    - 스레드 컨텍스트 스위칭

    - 스레드 컨텍스트 스위칭


  • 둘의 공통점
    1. 커널 모드에서 실행
    2. CPU의 레지스터 상태를 교체

  • 둘의 차이점
    - 프로세스 컨텍스트 스위칭은 가상(virtual) 메모리 주소 관련 처리를 추가로 수행
    - MMU(메모리 메니지먼트 유닛)도 새로운 프로세스의 주소체계를 바라볼수 있도록 수정
    - TLB라고 불리는 가상 메모리의 주소와 실제 물리적인 메모리의 주소에 맵핑 정보를 들고 있는 캐시역할을 하는 TLB도 비워줘야한다.

  • 스레드 컨텍스트 스위칭이 더 빠른 이유?
    - 같은 메모리 공간을 공유하기 때문에 메모리 주소 관련 처리를 하지 않아되기 때문이다.

  • 컨텍스트 스위칭이 미치는 간접적인 영향은?
    - 캐시(cache) 오염(pollution)
    - 프로세스 컨텍스트 스위칭의 경우 CPU안의 캐시에는 이전 프로세스의 정보가 있을 수있기때문에 메모리에 직접 접근해야한다.



참조

쉬운코드 : 컨텍스트 스위칭 뽀개기! 의미와 종류와 왜 스레드 컨텍스트 스위칭이 더 빠르다고 하는지까지..! 이 모든 것을 시원~~하게 설명합니다!!

profile
개발자로 매일 한 걸음

0개의 댓글