2009-11-03 5 views
0

Я хотел бы написать приложение интенсивного ввода-вывода без базовой ОС, работающее на архитектуре x86 и управляющее любым современным контроллером сетевого интерфейса.Есть ли способ управлять сегодняшним компьютерным сетевым адаптером без базовой ОС?

Обращаясь к исходному коду драйверов Linux, я знаю, что для подключения, например, гигабитного контроллера Intel e1000e требуется, чтобы тысячи строк кода были необходимы для управления. Я думаю, что такой код довольно сложно извлечь из исходного кода Linux.

Знаете ли вы какое-либо решение/проект, обеспечивающий способ управления сегодняшним компьютером (включая его сетевой адаптер), возможно, путем переноса драйверов Linux?

Большое спасибо

+2

Почему вы не хотите ОС? Возьмите Linux, разделите его на голые кости, и вот вы ... – bdonlan

ответ

4

Вы должны написать драйвер, и ОС (сортов), чтобы управлять всем этим. Планирование, управление памятью, внеполосный ввод-вывод, IP-стек (если вы решите пойти по этому маршруту). Зачем изобретать колесо? Получите дистрибутив Linux в режиме реального времени или захватите vxworks или QNX - что-то специально сконструированное для интенсивных требований ввода-вывода.

+1

На самом деле ему придется написать много драйверов. Я могу понять, что хочу запускать что-то на bare x86, но желание сделать это и использовать различные сетевые адаптеры - это, конечно, странно. –

1

UNDIуниверсальный интерфейс программирования для сетевых устройств и должен работать на всех сетевых картах, поддерживающих PXE (в основном это все они в наши дни).

UNDI предназначен для работы в реальном (16-разрядном незащищенном) режиме, что упрощает его использование без ОС. (Гораздо проще без ОС или с немой операционной системой, такой как DOS, чем в современной ОС, работающей в 32- или 64-разрядном режиме защиты.)

+0

Но это будет медленно. – bdonlan

+0

Да, производительность с использованием API UNDI не может приблизиться к производительности надлежащего драйвера для оборудования. Это полезно только в том случае, если вы работаете в ограниченной среде, где вам не так много внимания уделяется производительности, поскольку у вас не так много драйверов NIC. – ephemient

+0

Преимущество использования драйвера заключается в том, чтобы использовать DMA и все эти забавные вещи для повышения производительности. Он определенно может это сделать, особенно используя драйверы GPLed в качестве базовой линии, но это будет более жестким и намного менее стабильным, и, вероятно, в конце концов это будет стоить больше, чем лицензия QNX. –