24. epoll 엣지 트리거 vs 레벨 트리거와 논블로킹 EAGAIN 드레인
난이도 상 해설 보기 →
문제
문제 24 — epoll 엣지 트리거 vs 레벨 트리거와 논블로킹 EAGAIN 드레인
리눅스 게임서버를 epoll + 논블로킹 소켓으로 구현한다. 다음을 설명하라.
- 레벨 트리거(LT) 와 엣지 트리거(ET) 의 차이를 "언제 이벤트가 다시 보고되는가" 관점에서 설명하라.
- ET 모드에서 소켓이 읽기 가능(EPOLLIN)으로 통지됐을 때, 왜
recv를 EAGAIN이 날 때까지 반복(드레인) 해야 하는가? 한 번만 읽으면 어떤 버그가 나는가? - 논블로킹 소켓에서
recv/send가 돌려주는 0, -1(EAGAIN/EWOULDBLOCK), -1(EINTR) 을 각각 어떻게 해석·처리해야 하는가? - ET 모드에서 쓰기(EPOLLOUT) 는 어떻게 다뤄야 하며, 왜 EPOLLOUT을 상시 등록해두면 안 되는가?
- LT와 ET 각각의 장단점(구현 난이도, 시스템콜 횟수, starvation)과 게임서버에서의 선택 기준을 논하라.
답안 작성
내 답안 · 자동 저장
직접 답을 작성한 뒤, 위 해설 보기에서 모범답안과 대조하세요.