· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ZEN —› Принципы организации взаимодействия с драйверами в микроядерных ОС

Посл.отвђт Сообщенiе


Дата: Янв 12, 2004 12:24:52 · Поправил: coder

Кто чего дельного (кроме исходняков каких-нить :] )по сабжу может посоветовать почитать или прямо здесь рассказать? А то ведь когда-нибудь я допишу свою собственную ос ;) до такого состояния, что придётся плотно задумываться на сабжевую тему. Сам в сети кроме общих слов ничего не нашёл :(

Кстати, не так давно, когда я ещё свято верил, что ide контроллер на моей "чёртовой зидовской мамке" (с) таки сумеет заработать в режиме udma33 (как ему положено по спецификации), я пытался писать драйвер для него под BeOS, ибо имеющийся драйвер не давал системе грузиться, если я включал поддержку udma. Как и что написать, чтобы данные, собственно, передавались - я в курсе. Однако, я так и не смог глубоко осознать, каким образом ОС даёт драйверу понять, что файловая система решила прочитать вооон тот сектор. Очень плохо.


Кстати, контроллер мой так и не заработал. Чего я только не делал (перепрошивал биос, патчил фирмваре винта, принудительно выставляя в нём, умеющем udma5, режим udma2, +...) - результата зеро. Включаю в биосе PCI IDE bus master - комп перестаёт грузиться. Биос не может найти загрузочную запись ни на винте, ни на сидюке.

Если вдруг кто может помочь - дайте знать, создам отдельный топик


Дата: Янв 12, 2004 13:38:17

coder
погляди Windows DDK...


Дата: Янв 12, 2004 14:38:20 · Поправил: Sten

Как ни приколько это звучит, но Windows NT - это в основе своей тоже микроядерная OS. Подробности смотри у Соломона с Руссиновичем, там был довольно интересная сноска на эту тему.

А принципы взаимодействия драйверов в NT хорошо известны. В настоящее время рулит модель WDM, основу которой составляет стек драйверов. Т.е. имеются драйвера шины (предположим USB) они отвечают за перечисление устройств, подключенных к данной шине, и за передачу данных по этой шине к устрйству.

Для каждого конечного устройства есть свой драйвер (функциональный), который грузиться, когда соответствующее устройство обнаруживается шинным драйвером. Функциональный драйвер в идеале не общается напрямую со своим устройство, а обращается к нижележащему шинному драйверу с запросом, например, передать пакет данных. Шинные драйвера как правило поставляет Microsoft. Функциональные поставляет производитель устройства. Это позволяет, например, драйверу USB девайса избежать необходимости знать обо всех типах существующих USB контроллеров и умения их програмить - это задача шинного драйвера.

P.S. Это конечно очень упрощенная картина. Подробности действительно в DDK.


Дата: Янв 12, 2004 20:30:26

MACH os
PHOENIX os
and so on and so on.


Дата: Янв 15, 2004 09:38:06

coder
А в чем проблема?
В классическом понимании микроядерная = клиент-сервер + многопоточное ядро.
С драйверами точно такие же принципы взаимодействия как и с "обычными" процессами.
Надо только подумать о контроле доступа, чтобы не "взаимодействовал" кто попало.

Sten
Как ни приколько это звучит, но Windows NT - это в основе своей тоже микроядерная OS. Подробности смотри у Соломона с Руссиновичем, там был довольно интересная сноска на эту тему.

Процитируй, пожалуйста, "интересный сноска", а то не могу найти.

А я тем временем процитирую Таненбаум "Современные ОС" стр 857

| Над уровнем аппаратных абстракций располагается уровень, содержащий то, что
| корпорация Microsoft называет ядром, а также драйверы устройств. В некоторых
| старых документах ядро называлось "микроядром", которым оно никогда не было,
| так как менеджер памяти, файловая система и другие основные компоненты
| системы постоянно находились в пространстве ядра и с самого начала работали
| в режиме ядра. Ядро определенно не является микроядром и сейчас, так как,
| начиная с NT 4.0, практически вся операционная система была помещена
| в пространство ядра.


Дата: Янв 15, 2004 12:10:34

[ captain cobalt: Процитируй, пожалуйста, "интересный сноска", а то не могу найти. ]

В русском издании стр. 25. В е-буке ищи "Is Windows 2000 a Microkernel-Based System?" во второй главе. Только там написано, что Windows 2000 как раз не основана на микроядре.

"Although some claim it as such, Windows 2000 isn't a microkernel-based operating system in the classic definition of microkernels, where the principal operating system components (such as the memory manager, process manager, and I/O manager) run as separate processes in their own private address spaces, layered on a primitive set of services the microkernel provides."


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.161