패스잇
CS 기초 · 중급

운영체제에서 컨텍스트 스위칭(Context Switching)이 발생하는 과정과 이로 인해 발생할 수 있는 성능상의 오버헤드에 대해 설명하고, 이를 최소화하기 위한 방법은 무엇이 있을까요?

힌트 · 현재 프로세스의 상태를 저장하고 다음 프로세스의 상태를 로드하는 과정이며, 이 과정에서 CPU 캐시 무효화 및 레지스터 저장/복원 비용이 발생합니다. 스레드 사용이나 효율적인 스케줄링으로 오버헤드를 줄일 수 있습니다.

PCB레지스터캐시TLB스케줄링

모범답안

컨텍스트 스위칭은 운영체제가 CPU를 다른 프로세스에게 넘겨주기 위해 현재 프로세스의 상태를 저장하고, 다음 프로세스의 상태를 복원하는 과정입니다. 이때 PCB(Process Control Block)에 레지스터 값, 메모리 정보 등을 저장하고, 다음 프로세스의 PCB로부터 해당 정보를 로드합니다.

컨텍스트 스위칭은 CPU 캐시, TLB(Translation Lookaside Buffer) 무효화, 레지스터 저장/복원 등의 오버헤드를 발생시켜 성능 저하를 유발할 수 있습니다.

이러한 오버헤드를 줄이기 위해 다음과 같은 방법을 고려할 수 있습니다. 첫째, 스레드를 사용하여 컨텍스트 스위칭 비용을 줄일 수 있습니다. 스레드는 프로세스 내에서 자원을 공유하므로 컨텍스트 스위칭 비용이 더 적게 듭니다. 둘째, 스케줄링 알고리즘을 최적화하여 컨텍스트 스위칭 횟수를 줄일 수 있습니다. 예를 들어, 우선순위 스케줄링이나 Round Robin 스케줄링의 time slice 크기를 조정하여 불필요한 컨텍스트 스위칭을 줄일 수 있습니다. 셋째, CPU 캐시 효율성을 높이는 코드를 작성하여 캐시 미스율을 줄이는 것도 도움이 됩니다.

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

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

함께 보는 운영체제 면접 질문

← 운영체제 면접 질문 전체 보기