2. 컨텍스트 스위칭, 스케줄링, CPU 캐시/캐시라인/지역성

난이도 중 해설 보기 →
문제

문제 2 — 컨텍스트 스위칭, 스케줄링, CPU 캐시/캐시라인/지역성

면접 질문

  1. 컨텍스트 스위칭(context switch)이란 무엇이며, 한 번 일어날 때 어떤 작업들이 수반되나요? 직접 비용과 간접 비용을 나누어 설명해보세요.

  2. CPU 캐시 계층(L1/L2/L3)과 "캐시라인(cache line)"의 개념을 설명하고, 캐시라인 크기가 일반적으로 얼마인지 말해보세요. 시간 지역성(temporal)과 공간 지역성(spatial)이 캐시 성능에 어떻게 기여하나요?

  3. 선점형(preemptive) 스케줄링과 협력형(cooperative) 스케줄링의 차이, 그리고 타임 슬라이스(time quantum)가 너무 짧거나 너무 길 때 각각 어떤 문제가 생기는지 설명해보세요.

응용 시나리오

게임 서버에서 동시 접속자가 늘자 "스레드를 많이 만들면 동시 처리량이 올라가겠지" 하고 접속 1개당 스레드 1개(thread-per-connection)로 10,000개의 스레드를 띄웠습니다. 그런데 CPU 사용률은 높은데 실제 처리량(throughput)은 오히려 떨어지고 지연(latency)이 들쭉날쭉해졌습니다.

  • 왜 이런 현상이 발생하는지 컨텍스트 스위칭과 캐시 관점에서 설명해보세요.
  • 또한 같은 서버에서 플레이어 객체를 Player* 포인터 배열로 관리하며 매 틱마다 전체를 순회해 위치를 갱신하는데, 객체들이 힙 여기저기에 흩어져 있습니다. 이 순회가 느린 이유와, 데이터 배치를 어떻게 바꾸면 캐시 효율이 좋아질지 설명해보세요.
답안 작성
내 답안 · 자동 저장

직접 답을 작성한 뒤, 위 해설 보기에서 모범답안과 대조하세요.