본문 바로가기
개발공부 개발새발/OS

OS ) 스레드의 컨텍스트 스위칭

by 휴일이 2024. 12. 24.

컨텍스트 스위칭

현재 실행하던 작업 내용(컨텍스트)을 저장하고, 다른 작업 내용(컨텍스트)를 가져와서 실행하는 것.

둘의 공통점

프로세스와 스레드의 컨텍스트 스위칭에서 공통적으로 나타나는 것들.

  • 둘 다 컨텍스트 스위칭이 발생할 경우 현재 실행중인 컨텍스트 값을 저장한다. (PCB 또는 TCB에 저장)
    • TCB : Thread Control Block
  • 새로운 작업의 내용을 CPU 에 로드한다.
  • CPU 가 새로운 작업을 실행한다.

둘의 차이

  1. 자원 공유
    • 프로세스 : 독립적인 메모리 공간을 가지고 있으니, 전체 메모리 맵을 전환하고 보호 메모리 설정도 변경된다. 한 마디로, 실행하고 있던 메모리말고 새 프로세스의 메모리를 가져와야하는 것을 의미한다.
    • 스레드 : 각 스레드의 독립적인 스택과 레지스터 상태만 전환한다.
      • 스레드는 프로세스의 메모리 공간을 공유하기 때문.
  2. 주소 공간 전환 여부
    • 프로세스 : 주소 공간 전체를 새 프로세스에 맞춰 전환해야 한다.
      • 이 과정에서 주소 변환 메모리와 메모리 매핑 테이블을 변경하는데, 캐시를 비우는 등 비용이 큰 작업.
    • 스레드 : 주소 매핑을 그대로 유지 가능.
  3. 캐시 사용 효율
    • 프로세스 : CPU 캐시와 TLB(Translation Looaside Buffer, 주소 변환 캐시) 내용이 새로운 프로세스에 맞지 않아서 비우게 됨.
    • 스레드 : 동일한 주소 공간을 사용하니 캐시 일부를 재사용 가능하다. 캐시 미스가 덜 발생하고 전환이 빠름.

스레드 컨텍스트 스위칭도 오버헤드는 발생할 수 있다.

  • 스택 포인터, 레지스터, 프로그램 카운터 등의 상태를 저장하고 복원해야 하는 작업은 있으니, 오버헤드 발생 가능성은 있음.
  • 스레드가 많아질 수록 컨텍스트 스위칭 빈도도 증가하니 잦은 전환은 CPU 리소스를 소모하는 것이긴 함.

 

다만, 스레드의 컨텍스트 스위칭은 같은 프로세스 내에서 실행되는 작업이므로 캐시를 그대로 사용하거나 주소 공간을 그대로 사용할 순 있고, 전체 메모리를 전환해야하는 것은 아니니 프로세스의 컨텍스트 스위칭보다 오버헤드 발생 가능성이 적다.
728x90