Асинхронная работа с диском с помощью Linux AIO. В чем заключается асинхронность?

Почитал про linux AIO, не понимаю в чем заключается асинхронность. Мы же не можешь читать с диска в память в фоновом режиме, нам все равно нужен поток/процесс который будет производить операцию чтения из диска в память. Или AIO использует какую то невиданную мне магию? Прочитал статью где Linux AIO сравнивают с POSIX AIO и говорят, что 2 вариант использует дополнительные потоки а первый нет, как это возможно?

Еще один вопрос, возможно ли подружить данное api с еполом и отслеживать окончание чтение через него, я знаю что сам AIO предоставляет свой мультиплексор, но это крайне не популярное решение.


Ответы (1 шт):

Автор решения: user7860670

Мы же не можешь читать с диска в память в фоновом режиме, нам все равно нужен поток/процесс который будет производить операцию чтения из диска в память.

Как раз смысл асинхронного IO в том, что устройство само, без участия ЦП, пишет или читает память. Это называется direct memory access, DMA. Именно это происходить в при overlapped io в Windows. На linux же API Linux AIO обычно по разным причинам не работоспособно, а POSIX AIO предоставляет асинхронное апи выполняя обычное чтение и запись в фоном потоке. Так же что используйте неблокирующий ввод.

→ Ссылка