3. IO 멀티플렉싱: select/poll/epoll/IOCP, Reactor vs Proactor

난이도 상 해설 보기 →
문제

문제 3 — IO 멀티플렉싱: select/poll/epoll/IOCP, Reactor vs Proactor

상황

면접관: "우리 서버는 한 머신에서 수만 개의 동시 연결을 처리해야 합니다. 신입 개발자가 '연결마다 스레드 하나씩 만들면 간단하지 않나요?'라고 물었습니다. 당신이라면 어떻게 설명하고, 실제로 어떻게 설계하겠습니까?"

질문

  1. 왜 thread-per-connection 모델이 대규모 동접에서 무너지는가? 구체적인 비용(메모리, 컨텍스트 스위칭, 스케줄링)을 들어 설명하라.

  2. select / poll / epoll 의 동작 방식과 성능 특성을 비교하라. 왜 select/poll은 연결 수가 많아지면 느려지고, epoll은 괜찮은가? (시간복잡도 관점)

  3. epoll의 레벨 트리거(LT) vs 에지 트리거(ET) 차이를 설명하라. ET를 쓸 때 반드시 지켜야 하는 규칙은?

  4. Windows의 IOCP는 epoll과 패러다임이 어떻게 다른가? 이것을 Reactor vs Proactor 개념으로 설명하라. 누가 "데이터를 읽는가"가 핵심이다.

  5. (응용) 멀티코어 머신에서 epoll/IOCP 기반 서버를 설계할 때, 스레드는 몇 개를 두고 어떻게 일을 나누겠는가? 단일 epoll을 여러 스레드가 공유할 때 생기는 문제(thundering herd)와 대안은?

답안 작성
내 답안 · 자동 저장

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