В большинстве современных ядер используется DMA для сетевого ввода-вывода с универсальными контроллерами Ethernet?
==================================================================================================================

В большинстве современных операционных систем, таких как Linux и Windows, выполняется ли сетевое IO, как правило, с использованием DMA? Это касается общих контроллеров Ethernet; Я не спрашиваю о вещах, для которых требуются специальные драйверы (например, многие беспроводные карты, по крайней мере, в Linux). Я думаю, что ответ «да», но меня интересуют любые источники (особенно для ядра Linux), а также ресурсы, предоставляющие более общую информацию. Благодарю.

Я не знаю, что там на самом деле такая вещь, как *общего контроллер* сетевого интерфейса, но ближайшую вещь я знаю - спецификации [NE2000](http://wiki.osdev.org/Ne2000) интерфейса, реализованный с помощью большого количества дешевых контроллеров - появляется иметь хотя бы ограниченную поддержку DMA, а более сложные контроллеры, вероятно, будут включать более сложные функции.



Вопрос должен быть немного по-другому:

> 
> типична сетевой адаптер имеет ДМА
> контроллер на борту?
> 
> 
> 

После нахождения ответа на этот вопрос (думаю, в 99,9% это будет да), вы должны спросить о конкретном драйвере для каждой карты. Я предполагаю, что любой достойный драйвер полностью использует аппаратные возможности (например, поддержка DMA в нашем случае), но вопрос об ОС не имеет значения, поскольку ни одна ОС не может заставить драйвер реализовать поддержку DMA. ОС высокого уровня, такой как Windows и Linux, обеспечивает примитивы для упрощения реализации DMA, но внедрение несет ответственность за драйвер.