I/O TERMS

블로킹과 동기

면접에서는 두 축을 섞어 말하기 쉽습니다. 호출자가 멈추는지와 완료를 누가 전달하는지를 분리하면 네 칸으로 정리됩니다.

구분
블로킹
논블로킹
동기
Sync + Blocking 가장 흔한 read/write

데이터가 올 때까지 호출 스레드가 멈춥니다.

read()
Sync + Nonblock 직접 다시 확인

즉시 반환하고 호출자가 반복 확인합니다.

EAGAIN
비동기
Async + Blocking 실무에서는 드문 조합

완료 통지는 비동기지만 기다리면 장점이 줄어듭니다.

rare
Async + Nonblock 제출 후 완료 통지

요청을 맡기고 다른 일을 하다가 완료 큐나 콜백을 받습니다.

io_uring
Interview Answer 먼저 축을 정의하고, 예시를 한 칸씩 붙이면 답변이 흔들리지 않습니다

블로킹과 논블로킹은 호출 직후 스레드의 상태, 동기와 비동기는 완료 확인의 주체를 기준으로 설명합니다.

select와 epoll 여러 fd의 준비 상태를 감시하는 동기식 멀티플렉싱입니다.
aio와 io_uring 요청 제출과 완료 회수를 분리해 비동기 모델에 가깝습니다.
핵심 구분 멈춤 여부와 완료 통지 주체를 한 문장씩 나누어 말합니다.