패스잇
CS 기초 · 중급

멀티스레딩 환경에서 문맥 교환(Context Switching)이 발생하는 시점과 그 과정에 대해 설명해주세요. 문맥 교환이 시스템 성능에 미치는 영향은 무엇이며, 이를 최소화하기 위한 방법에는 어떤 것들이 있는지 설명해주세요.

힌트 · 문맥 교환은 CPU가 한 스레드에서 다른 스레드로 제어를 넘길 때 발생하며, 레지스터, 프로그램 카운터 등의 상태를 저장하고 복원하는 오버헤드가 발생합니다. 락 최소화, 스레드 수 조절 등으로 오버헤드를 줄일 수 있습니다.

인터럽트스레드 상태 저장스케줄링 알고리즘캐시 미스스레드 풀

모범답안

문맥 교환은 멀티스레딩 환경에서 CPU가 실행 중인 스레드를 일시 중단하고 다른 스레드를 실행하기 위해 현재 스레드의 상태를 저장하고 새로운 스레드의 상태를 복원하는 과정입니다. 주로 다음과 같은 시점에 발생합니다.

  • 인터럽트 발생: 타이머 인터럽트, I/O 인터럽트 등으로 인해 현재 스레드의 실행을 중단해야 할 때
  • 스레드 블로킹: I/O 작업 완료 대기, 락 획득 대기 등으로 스레드가 스스로 블로킹될 때
  • 스케줄링 알고리즘: 운영체제의 스케줄러가 우선순위 또는 시간 할당량에 따라 스레드를 교체할 때

문맥 교환은 스레드 상태 저장 및 복원 과정에서 오버헤드를 발생시키고, 캐시 미스를 증가시켜 시스템 성능에 부정적인 영향을 미칠 수 있습니다.

문맥 교환 오버헤드를 최소화하기 위한 방법으로는 다음과 같은 것들이 있습니다.

  • 락 사용 최소화: 락 경쟁을 줄여 불필요한 문맥 교환을 방지합니다.
  • 스레드 풀 사용: 스레드 생성 및 소멸 비용을 줄여 문맥 교환 빈도를 낮춥니다.
  • 적절한 스레드 수 유지: 너무 많은 스레드는 오히려 문맥 교환 오버헤드를 증가시키므로, CPU 코어 수에 맞춰 적절한 스레드 수를 유지합니다.
  • 효율적인 스케줄링 알고리즘: 운영체제의 스케줄링 알고리즘을 조정하여 문맥 교환 빈도를 최적화합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 동시성 / 멀티스레딩 면접 질문

← 동시성 / 멀티스레딩 면접 질문 전체 보기