연결 하나가 느려지자 나머지가 전부 멈췄다 · 여럿을 한 자리에서 지켜본다 · 퀴즈
퀴즈: 여럿을 한 자리에서 지켜본다
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
읽기 준비 통지가 뜻하는 것은?
- 상대가 보낸 데이터가 반드시 남아 있다
- 지금 읽기를 시도해도 멈추지 않는다
- 한 메시지가 완전히 도착했다
- 연결이 앞으로도 열려 있다
select(2) 문서가 적어 둔 FD_SETSIZE 관련 내용은?
- 커널이 제한을 없애서 번호 제한이 사라졌다
- epoll 에도 같은 1024 제한이 적용된다
- glibc 구현에서 1024 보다 작은 번호만 다룰 수 있다
- 번호 제한은 설정 파일로 올릴 수 있다
듣는 소켓이 읽기 준비로 한 번 깨어났을 때 올바른 처리는?
- accept 를 한 번만 부르고 다음 깨어남을 기다린다
- 깨어난 즉시 관심 목록에서 듣는 소켓을 뺀다
- accept 가 EAGAIN 을 낼 때까지 반복해 큐를 비운다
- 연결 수를 미리 세어 그만큼만 accept 한다
다중화를 쓰면서도 소켓을 논블로킹으로 두는 이유는?
- 논블로킹이어야 준비 통지를 받을 수 있어서
- 준비로 보고된 뒤에도 읽기가 막힐 수 있어서
- 논블로킹 소켓만 관심 목록에 등록할 수 있어서
- 블로킹 소켓은 커널이 준비 목록에 넣지 않아서
epoll(7) 이 말하는 관심 목록과 준비 목록의 관계는?
- 준비 목록은 관심 목록과 무관하게 채워진다
- 두 목록은 사용자 공간에서 관리된다
- 관심 목록은 준비 목록의 부분집합이다
- 준비 목록은 관심 목록의 부분집합이다
이벤트 하나를 처리하다가 블로킹 호출을 하면?
- 그 연결만 느려지고 나머지는 영향이 없다
- 커널이 자동으로 다른 흐름에 넘겨 처리한다
- 다중화 호출이 그 호출을 취소해 준다
- 지켜보던 연결 전부가 그동안 함께 멈춘다