컨텍스트 스위칭

창둥·2023년 12월 18일
0
post-thumbnail

컨텍스트 스위칭

CPU 혹은 코어에서 실행 중이던 프로세스, 스레드가 다른 프로세스, 스레드로 교체되는 것을 의미한다.

컨텍스트 : 프로세스, 스레드의 상태(CPU(registers), 메모리 등)

컨텍스트 스위칭이 발생하는 경우

  • 주어진 quantum을 다 사용한 경우
  • IO작업을 해야 하거나 다른 리소스를 기다려야 하는 경우

멀티태스킹 시스템에서 컨텍스트 스위칭 (싱글코어 두개의 프로세스)
→ CPU를 quantum으로 나누어 p1, p2 번갈아 가며 동작

컨텍스트 스위칭이 과정

컨텍스트 스위칭은 OS 커널(kernel)에 의해 실행된다
CPU의 레지스터 상태를 교체(기존의 레지스터 상태를 저장)

커널 : 각종 리소스를 관리, 감독하는 역할

스레드 컨텍스트 스위칭 (싱글코어, 듀얼 스레드, 프로세스 한 개)

  1. 스레드1 작동 중 컨텍스트 스위칭
  2. 커널모드로 들어간 후 스레드1의 CPU상태 저장, 스레드2의 이전 정보 불러온 후 커널모드 종료
  3. 스레드2 작동 중 컨텍스트 스위칭
  4. 커널모드로 들어간 후 스레드2의 CPU상태 저장, 스레드1의 이전 정보 불러온 후 커널모드 종료

프로세스 컨텍스트 스위칭 (싱글코어, 싱글 스레드, 프로세스 두 개)

  1. 스레드1 작동 중 컨텍스트 스위칭
  2. 커널모드로 들어간 후 스레드1의 CPU상태 저장, 스레드2의 이전 정보 불러옴
  3. MMU가 프로레스2의 메모리를 보도록 설정, TLB 정보를 비운 후 커널모드 종료
  4. 스레드2 작동 중 컨텍스트 스위칭
  5. 커널모드로 들어간 후 스레드2의 CPU상태 저장, 스레드1의 이전 정보 불러옴
  6. MMU가 프로레스1의 메모리를 보도록 설정, TLB 정보를 비운 후 커널모드 종료

MMU(memory management unit) : 실제 메모리와 가상 메모리 사이에서 주소 변환 역할
TLB(translation lookaside buffer) : 가상 메모리 주소와 물리 주소의 변환테이블에 대한 정보를 담고 있는 캐시

스레드 컨텍스트 스위칭이 프로세스 컨텍스트 스위칭 보다 빠른 이유

스레드 컨텍스트 스위칭은 메모리 주소 관련 처리는 하지 않기 때문이다.

컨텍스트 스위칭에 의한 영향

컨텍스트 스위칭 후 캐시에 접근하면 기존의 프로세스에 대한 정보를 담고 있기 때문에 필요한 정보가 없을 가능성이 높음

profile
개발꿈나무

0개의 댓글