Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Sep 21, 2019 8:10 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 6 posts ] 
Author Message
PostPosted: Mon Jan 09, 2006 7:53 pm 
Я тут задумался, каким драйверы устройств должны "общаться" с системой. И вот, что я придумал:
Драйверы работают к кольце 0
1.Ядро загружает файл драйвера и запускает процедуру инициализации
(entry-point)
2. Драйвер перехватывае прерывания от той аппаратуры, которую обслуживает и возможно некоторые программные прерывания.
Таким образом драйвер становится частью системы.
Возможно, я не понятно написал, так что спрашивайте, поясню.


Top
   
 Post subject:
PostPosted: Tue Jan 10, 2006 10:54 am 
Это все не ново. Проблема с "некоторыми программными прерываниями". Нафиг нужен драйвер, который работает с аппаратурой, если ядро представления не имеет как работать (и зачем вообще нужен) этот драйвер? Основная проблема на данный момент - спроектировать интерфейсы взаимодействия с драйверами для всех типов устройств. Следует так же заметить, что нестандартным устройствам (видеокамеры, фотоаппараты, usb-вентиляторы, ...) требуется не только драйвер, но и user-mode программы для взаимодействия с ними.

На данный момент я проектирую интерфейс взаимодействия драйверов файловых систем и дисковых устройств.


Top
   
 Post subject:
PostPosted: Tue Jan 10, 2006 1:00 pm 
Если интересно - посмотри на рабочую версию моего предложения по внедрению драйверов дисковых систем: http://shade.msu.ru/~msu-se/driversystem.html
Предложения/вопросы приветствуются. Если их много - можешь связаться со мной по icq (если, конечно, у тебя инет не повременный).


Top
   
 Post subject:
PostPosted: Thu Jan 12, 2006 12:22 am 
halyavin
Андрей ты хотел конструктивных предложений? Ну, я попытаюсь не критиковать :-)
1) Я не совсем согласен с концепцией - один драйвер файловой системы на каждый существующий раздел. Представь, насколько раздуется код? Пусть даже и подгружаемые драйвера.
Ты плохо представил ситуацию, на самом деле на каждый накопитель (на каждое IDE устройство) достаточно всего 1 копии драйвера определенной файловой системы, если она присутствует в структуре данных физического устройства. Ведь все равно на одном устройстве мы не можем параллельно обрабатывать 2 запроса, приходится разделять их по времени, причем перемещение головки займет больше времени, чем изменение стека дополнительных 100-1000 байт в которых, будут содержаться данные выбранного раздела.
Другой вопрос если обращение производиться к другому физическому устройству. Вот тут уж действительно нужен отдельный драйвер присутствующих файловых систем. Опять же по 1 копии на одно физическое устройство.
2) В твоей концепции есть один неучтенный момент - параллельная работа 2-х приложений возможна лишь при обращении к двум разным физическим устройствам (я уже не беру в расчет 3 и более приложений ломящихся на одно физическое устройство). Нету разделения по времени доступа. Конечно, ее нету и в существующей системе, поскольку изначально все разрабатывалось с учетом монопольной работы одного приложения. Остальные приложения вынуждены были ждать. Но это очень даже плохо, так как мы видим печальные последствия, например если запустить АС97 плеер и запустить Doom, то в результате либо не загрузиться игра, либо плеер станет нервно заикаться, а потом вообще отключиться.


Top
   
 Post subject:
PostPosted: Thu Jan 12, 2006 1:08 pm 
Mario79 wrote:
...один драйвер файловой системы на каждый существующий раздел.

Один экземпляр драйвера файловой системы - то есть одна структура данных, описывающая раздел и информация об фс на нем. Код драйвера файловой системы будет один, даже если есть 100 разделов на 10 устройствах.

На счет 2 пункта - параллельная работа с винтом является проблемой драйверов, а не концепции. Никто не мешает драйверу устройства или файловой системы позволять обрабатывать несколько запросов параллельно. Изначально все будет работать в последовательном режиме, как сейчас. Потом, возможно, я улучшу драйвера, позволив более параллельно исполнять запросы.


Top
   
PostPosted: Fri Feb 24, 2006 6:32 pm 
Offline
Just Flooding
User avatar

Joined: Wed May 18, 2005 10:27 am
Posts: 430
Violinier wrote:
Я тут задумался, каким драйверы устройств должны "общаться" с системой. И вот, что я придумал:
Драйверы работают к кольце 0
1.Ядро загружает файл драйвера и запускает процедуру инициализации
(entry-point).

А можно услышать аргументы в пользу такого выбора?
Кроме того что это проще реализовать плюсы какие?
А вот на счет глюков и убиения ядра так оно прямо таки рядом, т.к. "...запускает процедуру инициализации" и она при критических ошибках делает систему, скажем "конвульсивной". Тогда что? Плюсов маловато будет, пожалуй при таком раскладе.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 6 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited