Nonblocking I/O

아투·2025년 11월 14일
post-thumbnail

1. Nonblocking I/O란?

1.1 배경 – 왜 Nonblocking I/O가 필요해졌는가

1.2 Blocking I/O와의 개념적 차이

1.3 OS 수준에서의 Nonblocking I/O 동작 방식 개요

1.4 Nonblocking I/O를 사용하는 대표적 시스템(웹서버, 로드밸런서, DB 등)

2. Nonblocking I/O의 작동 원리

2.1 시스템 콜(read/write)의 즉시 반환 구조

2.2 EAGAIN / EWOULDBLOCK의 의미

2.3 이벤트 루프(Event Loop)의 필요성

2.4 Nonblocking + 이벤트 기반 아키텍처의 결합(Epoll, Kqueue 등)

3. Nonblocking I/O의 장점과 한계(트레이드오프)

3.1 장점 1: 대규모 동시 연결 처리 능력 향상

3.2 장점 2: CPU/스레드 자원 사용 효율 증가

3.3 한계(비용/제한): 구현 복잡성 증가 및 코드 난이도 상승

4. Nonblocking I/O와 관련된 핵심 기술

4.1 Epoll, Kqueue, IOCP 등 OS 이벤트 통지 메커니즘

4.2 Reactor 패턴 vs Proactor 패턴

4.3 Nonblocking I/O vs Async I/O vs Multiplexing 비교

5. Nonblocking I/O의 실제 사례

5.1 Nginx, HAProxy, Envoy 등의 Event-Driven 구조

5.2 Node.js의 Nonblocking Event Loop 구조

5.3 고성능 데이터베이스 및 메시지 시스템(Kafka 등)에서의 활용

6. Nonblocking I/O 적용 시 고려사항

6.1 어디까지 Nonblocking으로 설계할 것인가

6.2 Blocking 코드 섞일 때의 병목(Bottleneck) 문제

6.3 모니터링 관점(Epoll 대기 큐, 이벤트 밀림, CPU 사용 패턴)

7. 결론 및 요약

7.1 핵심 개념 정리

7.2 Nonblocking I/O 선택 기준 및 의사결정 가이드

7.3 향후 I/O 모델의 발전(IO_uring 등)과 전망


참고 문헌

0개의 댓글