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


1

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

2

Я не знаю, что там на самом деле такая вещь, как общего контроллер сетевого интерфейса, но ближайшую вещь я знаю - спецификации NE2000 интерфейса, реализованный с помощью большого количества дешевых контроллеров - появляется иметь хотя бы ограниченную поддержку DMA, а более сложные контроллеры, вероятно, будут включать более сложные функции.


2

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

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

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