Драйверы устройств

Devices programming
  • Это все не ново. Проблема с "некоторыми программными прерываниями". Нафиг нужен драйвер, который работает с аппаратурой, если ядро представления не имеет как работать (и зачем вообще нужен) этот драйвер? Основная проблема на данный момент - спроектировать интерфейсы взаимодействия с драйверами для всех типов устройств. Следует так же заметить, что нестандартным устройствам (видеокамеры, фотоаппараты, usb-вентиляторы, ...) требуется не только драйвер, но и user-mode программы для взаимодействия с ними.

    На данный момент я проектирую интерфейс взаимодействия драйверов файловых систем и дисковых устройств.
  • Если интересно - посмотри на рабочую версию моего предложения по внедрению драйверов дисковых систем: http://shade.msu.ru/~msu-se/driversystem.html
    Предложения/вопросы приветствуются. Если их много - можешь связаться со мной по icq (если, конечно, у тебя инет не повременный).
  • halyavin
    Андрей ты хотел конструктивных предложений? Ну, я попытаюсь не критиковать :-)
    1) Я не совсем согласен с концепцией - один драйвер файловой системы на каждый существующий раздел. Представь, насколько раздуется код? Пусть даже и подгружаемые драйвера.
    Ты плохо представил ситуацию, на самом деле на каждый накопитель (на каждое IDE устройство) достаточно всего 1 копии драйвера определенной файловой системы, если она присутствует в структуре данных физического устройства. Ведь все равно на одном устройстве мы не можем параллельно обрабатывать 2 запроса, приходится разделять их по времени, причем перемещение головки займет больше времени, чем изменение стека дополнительных 100-1000 байт в которых, будут содержаться данные выбранного раздела.
    Другой вопрос если обращение производиться к другому физическому устройству. Вот тут уж действительно нужен отдельный драйвер присутствующих файловых систем. Опять же по 1 копии на одно физическое устройство.
    2) В твоей концепции есть один неучтенный момент - параллельная работа 2-х приложений возможна лишь при обращении к двум разным физическим устройствам (я уже не беру в расчет 3 и более приложений ломящихся на одно физическое устройство). Нету разделения по времени доступа. Конечно, ее нету и в существующей системе, поскольку изначально все разрабатывалось с учетом монопольной работы одного приложения. Остальные приложения вынуждены были ждать. Но это очень даже плохо, так как мы видим печальные последствия, например если запустить АС97 плеер и запустить Doom, то в результате либо не загрузиться игра, либо плеер станет нервно заикаться, а потом вообще отключиться.
  • Mario79 wrote: ...один драйвер файловой системы на каждый существующий раздел.
    Один экземпляр драйвера файловой системы - то есть одна структура данных, описывающая раздел и информация об фс на нем. Код драйвера файловой системы будет один, даже если есть 100 разделов на 10 устройствах.

    На счет 2 пункта - параллельная работа с винтом является проблемой драйверов, а не концепции. Никто не мешает драйверу устройства или файловой системы позволять обрабатывать несколько запросов параллельно. Изначально все будет работать в последовательном режиме, как сейчас. Потом, возможно, я улучшу драйвера, позволив более параллельно исполнять запросы.
  • Violinier wrote:Я тут задумался, каким драйверы устройств должны "общаться" с системой. И вот, что я придумал:
    Драйверы работают к кольце 0
    1.Ядро загружает файл драйвера и запускает процедуру инициализации
    (entry-point).
    А можно услышать аргументы в пользу такого выбора?
    Кроме того что это проще реализовать плюсы какие?
    А вот на счет глюков и убиения ядра так оно прямо таки рядом, т.к. "...запускает процедуру инициализации" и она при критических ошибках делает систему, скажем "конвульсивной". Тогда что? Плюсов маловато будет, пожалуй при таком раскладе.
  • Who is online

    Users browsing this forum: No registered users and 5 guests