본문 바로가기

CS

컨텍스트 스위칭(context Switching)

컨텍스트 스위칭의 정의

  • 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' 카테고리의 다른 글