Context Switch가 발생하는 이유와 비용이 큰 이유를 설명해주세요.
답변 포인트
CPU가 실행 중인 프로세스/스레드를 바꾸기 위해 저장하고 복원해야 하는 정보를 생각해보세요.
정답 및 해설
빠른 요약
Context Switch는 CPU가 현재 실행 중인 작업을 멈추고 다른 프로세스나 스레드를 실행하기 위해 실행 문맥(context)을 교체하는 과정입니다. 타임 슬라이스가 끝났거나, I/O 대기, 우선순위 높은 작업 등장, 시스템 콜 등이 원인이 될 수 있습니다.
Context Switch는 CPU가 현재 실행 중인 작업을 멈추고 다른 프로세스나 스레드를 실행하기 위해 실행 문맥(context)을 교체하는 과정입니다. 타임 슬라이스가 끝났거나, I/O 대기, 우선순위 높은 작업 등장, 시스템 콜 등이 원인이 될 수 있습니다.
교체 시 운영체제는 현재 작업의 레지스터, 프로그램 카운터, 스택 포인터, 메모리 매핑 정보 등을 저장하고 다음 작업의 정보를 복원합니다. 이 시간 동안 CPU는 실제 애플리케이션 코드를 실행하지 못하므로 순수한 오버헤드가 됩니다.
비용이 큰 이유는 저장/복원 자체뿐만이 아닙니다. CPU 캐시, TLB, branch predictor 같은 하드웨어 수준의 locality가 깨질 수 있습니다. 특히 프로세스 간 전환은 주소 공간이 달라 TLB 영향이 더 커질 수 있습니다.
스레드를 많이 만들면 병렬성이 무조건 좋아지는 것이 아니라 Context Switch 비용과 동기화 비용이 함께 증가합니다. 그래서 서버에서는 작업 특성에 맞는 스레드 풀 크기, 비동기 I/O, 큐 기반 처리 등을 조합합니다.
면접에서는 “전환은 필요하지만 공짜가 아니며, 잦은 전환은 처리량과 지연시간을 모두 악화시킬 수 있다”고 정리하면 좋습니다.