컨텍스트 스위칭은 왜 비쌀까

dropKick·2020년 11월 19일
0

기본적으로 공부할 때 스레드는 컨텍스트 스위칭 비용이 적기때문에 프로세스보다 효율적이라고 배웠다.
그렇다면 두 컨텍스트 스위칭 사이에는 어떤 차이가 있길래 효율적이라는 걸까?

기본 구조

  • 기본적으로 PCB 교환
    이 안에는 파일 테이블, 메모리 페이지 테이블, 메모리 등이 모두 들어가 있음

멀티 프로세스의 컨텍스트 스위칭

  • 문맥전환과 함께 메모리 전환이 이루어짐
  • 레지스터 메모리 전환이 일어남
  • 프로세스 메모리 할당이 필요함
  • 새 메모리 공간의 할당은 TLB(Transtation Lookaside Buffer) 플러싱이 일어남
    TLB를 이용하여 가상 메모리 공간을 할당 속도를 높이는데(물리<->가상 매핑 캐시 역할)
    TLB 플러싱이 일어나면 다시 메모리를 읽고 매핑해야 함
  • 캐싱의 효율이 급감함
    캐싱은 메모리를 유지하여 지역성 효율(hit)을 높이는데 의미가 있음

가상 메모리 공간이 유지되지 않기 때문에, 운영체제에서 메모리 입출력(할당)이 필요
메모리 할당은 굉장히 오버헤드가 큰 작업
결론적으로 실행 컨텍스트, 메모리, 주소공간 모두 전환

멀티 스레드의 컨텍스트 스위칭

  • 문맥전환만 이루어짐
  • 메모리 전환이 없기에 할당도 필요없음
  • 캐싱 효율 좋음
    공유 메모리라면 메모리 접근 시 지역성 효율이 높음
  • 커널 스레드 간의 교환, 종료 후엔 사용자 스레드 전환

가상 메모리 공간이 유지되기 때문에, 메모리 할당이 필요 없음
결론적으로 스레드 간 컨텍스트만 교환

0개의 댓글