> man operating_systems
Переход на страницу  1 [2] 3
Модераторы: Roman I Khimov, Wanderer, Dron
Автор Добавил
sem
Понедельник 25.04.2005 13:20
ID пользователя #76
Зарегистрирован: Вторник 31.08.2004 23:07
Местонахождение: Молдавия
Сообщений: 27
Dron написал(а) ...
Нет смысла на каждый винт свой драйвер, вполне логично, если на все винты один драйвер...


Ну, и будет он все запросы последовательно обслуживать!

Я тут крыльями похлопал, а главного-то не сказал, чем хороша модель драйверов NT: у нас есть один драйвер диска, как класс. На каждое устройство мы создаем отдельный объект: device. При этом создается новая управляющая структура данных, а код-то един на все драйверы!
Если у нас всего один драйвер, то все контроллеры будут обслуживаться последовательно. А если один драйвер на контроллер, то они могут параллельно работать!
P.S. А главное, в этой модели все может работать без вмешательства человека! Обнаружено новое устройство - вызывается конструктор класса, и оно уже работает!
По-моему, красиво!

<span class='smallblacktext'>[ Редактирование понедельник 25.04.2005 13:28 ]</span>
Наверх
Dron
Понедельник 25.04.2005 14:02


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
sem написал(а) ...
Dron написал(а) ...
Нет смысла на каждый винт свой драйвер, вполне логично, если на все винты один драйвер...


Ну, и будет он все запросы последовательно обслуживать!


Вот только не надо извращать...
Ты считаешь невозможным в одном драйвере сделать 10 очередей???

sem написал(а) ...
Я тут крыльями похлопал, а главного-то не сказал, чем хороша модель драйверов NT: у нас есть один драйвер диска, как класс. На каждое устройство мы создаем отдельный объект: device. При этом создается новая управляющая структура данных, а код-то един на все драйверы!


Дык драйвер то один... код один... в скольких ипостасях он существует в системе - это другой вопрос.
С учетом тридинга - эта грань вообще стирается...
Все относительно...

sem написал(а) ...
Если у нас всего один драйвер, то все контроллеры будут обслуживаться последовательно. А если один драйвер на контроллер, то они могут параллельно работать!
P.S. А главное, в этой модели все может работать без вмешательства человека! Обнаружено новое устройство - вызывается конструктор класса, и оно уже работает!
По-моему, красиво!


Ну почему-же последовательно то???
Для этого в алгоритмах и предусмотрены ветвления...
Есть потоки...

Хотя может проблема в том что мы имеем ввиду разные вещи.
Я имею ввиду драйвер - это программа обслуживания устройства. в данном вопросе я не говорю сколько раз ее надо запустить... или еще как...

Реализовать можно как угодно...

Объектная модель системы - очень красива.
Абстрактный класс устройства и вперед.

Только не стоит забывать что подключение нового устройства - это не темные силы эллектричества, а вполне определенный сигнал (прерывание быть может), которое надо обрабатывать... главное чтобы все красиво вписывалось в объектную модель.


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

Андрей Валяев
Наверх
Сайт
sem
Понедельник 25.04.2005 17:07
ID пользователя #76
Зарегистрирован: Вторник 31.08.2004 23:07
Местонахождение: Молдавия
Сообщений: 27
Dron написал(а) ...


Дык драйвер то один... код один... в скольких ипостасях он существует в системе - это другой вопрос.


Ага, я не понял. Я понял так, что один драйвер - это один объект.
С другой стороны, есть разница, кто создает новый объект.
Если конструктор вызывается снаружи, то каждый объект "автоматом" создает свой контекст устройства. При этом драйвер может ничего не знать о конфигурации периферии. А если драйвер изнутри создает контекст для каждого устройства, то он должен знать о конфигурации.
С точки зрения изоляции-инкапсуляции объектов это, на мой взгляд, хуже.
Наверх
nnivanov
Понедельник 25.04.2005 17:46

ID пользователя #253
Зарегистрирован: Вторник 29.03.2005 01:18
Местонахождение: Russia, Velikiy Novgorod
Сообщений: 123
Драйвер, как правило, всегда один. А вопрос совместного доступа решается с помощью семафоров.

- Зачем мотоциклу реактивный двигатель?
- Да потому что нам так нравится!
Discovery Channel
Наверх
Сайт
Dron
Понедельник 25.04.2005 22:40


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
Ну вопрос обслуживания нескольких однотипных устройств - это вопрос архитектуры... (обслуживающий код один, в крайнем случае шарится)

А для разнотипных устройств по любому понадобятся собственные драйвера (уж как бы они не выглядели - объекты ли, просто модули или еще как)

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

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

Андрей Валяев
Наверх
Сайт
sem
Вторник 26.04.2005 01:21
ID пользователя #76
Зарегистрирован: Вторник 31.08.2004 23:07
Местонахождение: Молдавия
Сообщений: 27
Dron написал(а) ...
Для себя я уже примерно представляю как это будет. у меня будут скорее всего разные процессы (но это вовсе не означает что у них будет разный код, то есть потери памяти - минимальны)


А не слишком ли жестко? По-моему, самый быстрый путь - инициация ввода-вывода в контексте потока - инициатора. А уж, если драйвер слишком "тяжелый", можно запрос поставить в очередь, и взвести семафор - пусть выполняется в отдельном процессе!?
Наверх
Dron
Вторник 26.04.2005 10:48


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
У меня архитектура такая, клиент-серверная... драйвер по любому сервер...

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

Андрей Валяев
Наверх
Сайт
sem
Вторник 26.04.2005 12:52
ID пользователя #76
Зарегистрирован: Вторник 31.08.2004 23:07
Местонахождение: Молдавия
Сообщений: 27
Dron написал(а) ...
У меня архитектура такая, клиент-серверная... драйвер по любому сервер...


Ясно, как в QNX...
Я понял, здесь не любят NT но разработчики его ядра сначала пошли по этому пути, а потом, где возможно, отказались: очень медленно получается...
Я в своей системе ввода-вывода буду инициировать ввод-вывод в кольце супервизора, но на уровне и в контексте потока-инициатора ввода-вывода. Т.е. процесс-инициатор
и клиент, и сервер. Так, во-первых, намного быстрей получается, во-вторых, нет проблем с инверсией приоритетов: каждый запрос в/в обрабатывается на приоритете его инициатора. Правда, и в твоей модели сервер может "щелкать" приоритетом...
Наверх
Dron
Вторник 26.04.2005 13:27


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
Запросто... тем более что каждый клиент ображается в сервере отдельной нитью...

Хотя у жесткого диска один клиент - сервер файловой системы.
ну два... или три... ну зависит от количества разделов. ну это тонкости.
[ Редактирование вторник 26.04.2005 13:31 ]

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

Андрей Валяев
Наверх
Сайт
sem
Вторник 26.04.2005 14:08
ID пользователя #76
Зарегистрирован: Вторник 31.08.2004 23:07
Местонахождение: Молдавия
Сообщений: 27
Dron написал(а) ...
Хотя у жесткого диска один клиент - сервер файловой системы.
ну два... или три... ну зависит от количества разделов. ну это тонкости.


Так это при твоем подходе так получается. А при моем - по другому приложение перешло кольцо, и, оставаясь на уровне процесса, т.е. переключаемым, вызвало драйвер ФС. А драйвер ФС вызывает драйвер HDD для чтения кластеров. Получается, сервер ФС работает от имени потока-инициатора. И когда ругой поток к диску обращается, аналогичная история... Получается, что сколько запросов, столько серверов ФС, каждый на своем приоритете, и все переключаемы. А синхронизация только в точке чтения/записи диска. Т.е. все работают практически "параллельно".
Наверх
Переход на страницу  1 [2] 3  

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System

© OSRC.info, 2004-2010.
Авторские права на любые материалы, авторы которых явно указаны, принадлежат их авторам. По вопросам публикации таких материалов обращайтесь к авторам.
Авторские права на любые другие материалы принадлежат OSRC.info.
Сайт является помещением библиотеки. Копирование, сохранение на жестком диске или иной способ сохранения произведений осуществляются пользователями на свой риск.
При использовании материалов сайта ссылка на OSRC.info обязательна.