Context Switch Overhead 란 무엇일까?

박승우·2024년 5월 19일
0

자 서른 한 번째 키워드 'Context Switch Overhead'를 알아보겠다.

스레드를 알아보았던 키워드와 연관되는 개념이므로 같이 알아보았다.

Context Switch Overhead가 뭐에요?

Context Switch(문맥 전환)는 CPU가 현재 실행 중인 프로세스 또는 스레드의 상태(Context)를 저장하고, 다른 프로세스 또는 스레드의 상태를 복원하여 실행을 전환하는 과정이라고 한다.

Context Switch의 과정

  1. 현재 상태 저장: 현재 실행 중인 프로세스의 상태(레지스터 값, 프로그램 카운터, 스택 포인터 등)를 PCB(Process Control Block)에 저장
  2. 스케줄러 실행: CPU 스케줄러가 실행되어 다음에 실행할 프로세스를 선택
  3. 새로운 상태 로드: 선택된 프로세스의 상태를 PCB에서 레지스터로 복원
  4. 실행 전환: CPU가 새로운 프로세스를 실행하기 시작

Context Switch Overhead의 원인

  1. 상태 저장 및 복원: 프로세스의 상태를 저장하고 복원하는 작업은 시간이 소요
  2. 캐시 무효화: 새 프로세스가 실행되면 이전 프로세스의 캐시 데이터가 무효화될 수 있으며, 이는 캐시 미스를 증가시켜 성능 저하를 유발할 수 있음
  3. TLB 무효화: 주소 공간이 변경되면 TLB(Translation Lookaside Buffer)도 무효화되어 페이지 테이블을 다시 로드해야 함
  4. 커널 모드 전환: 문맥 전환은 사용자 모드에서 커널 모드로의 전환을 필요로 하며, 이 과정도 오버헤드를 유발

Context Switch Overhead의 영향

  1. CPU 사용률 감소: 빈번한 문맥 전환은 CPU 사용률을 낮추고, 실제 작업에 소요되는 시간을 줄인다
  2. 응답 시간 증가: 프로세스 전환으로 인해 응답 시간이 증가할 수 있다.
  3. 성능 저하: 전체 시스템의 성능이 저하될 수 있다.

Context Switch Overhead 줄이는 방법

  1. 스레드 수 조정: 필요 이상으로 많은 스레드를 생성하지 않도록 관리
  2. 바쁜 대기(Spinlock) 사용 최소화: 바쁜 대기는 CPU 자원을 낭비하므로, 뮤텍스나 세마포어 같은 효율적인 동기화 기법을 사용
  3. 효율적인 스케줄링: 운영체제의 스케줄러가 효율적으로 동작하도록 튜닝하여 불필요한 문맥 전환을 줄인다.
  4. 동작 단위 증가: 각 스레드나 프로세스가 실행되는 동안 더 많은 작업을 처리하도록 설계하여 문맥 전환 빈도를 줄입인다.
    문맥 전환의 오버헤드는 멀티태스킹 시스템에서 피할 수 없는 부분이지만, 이를 최소화하기 위한 노력은 시스템 성능을 크게 향상시킬 수 있음

결론 - 느낀 점

역시 스레드의 개념을파면 너무 어려운 지식이 쏟아져 나오게 된다...

profile
게임을 좋아하는 사람 입니다!

0개의 댓글