Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Драйверы и устройства

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Pavelbeginner
Отправлено: 20 Февраля, 2014 - 03:05:52
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




Прочел, что, например, операционная система знает о существование принтера. В операционной системе есть методы, которые управляют принтером, и пользовательские программы дергают эти методы, чтобы управлять принтером. Поскольку принтеров куча и все они устроены по-разному, то реализацию этих методов доверяют производителям принтеров, то есть пишут драйверы. Итого получаем, к примеру, следующую картину:
я пишу программу пользовательскую, моя программа дергает в операционной системе метод, например, для рисования 1-пиксельной зеленой точки. Операционная система находит реализацию данного метода в загруженном в память драйвере и исполняет код реализации этого метода.
Возможно я коряво описал ситуацию, вот вырезка, прочитанная мною:
Цитата:
Драйвера - это совего рода прослойка между ОС и железом [1]. Железа бывает много и разного, а ОС одна (под каждую ОС свой драйвер - так в 99% случаев с дровами). ОС знает, что конкретный тип устройства (т.е. железа) умеет делать то-то и то-то, к примеру, ОС знает, что с винта можно получить данные и записать на него данные (очень упрощаем), каждый винт (т.е. конкретный тип железа) выполняет эти действия по-своему. Разработчики ОС не могут реалтзовать все ветки поведения "записать данные" для ОС, поэтому на помощь приходят драйвера, которые уже обладают реализацие метода "получить данные" и "записать данные" для своего типа железа. ОС же только дергает за методы драйвера и передает/получет параметры/значения от них, а драйверы в свою очередь работают уже с конкретным железом под которое были написаны.
Это описание можно назвать "на пальцах" или базовым описанием принципа работы драйверов. На самом деле типов драйверов много больше и функции, которые они выполняют тоже огромного количество.


Вопросы вот по этой части из вырезки "ОС знает, что конкретный тип устройства (т.е. железа) умеет делать то-то и то-то,":
1) допустим, ОС знает о том, что принтер умеет делать 5 вещей, например, рисовать точку зеленую, рисовать красную точку и любые другие действия, к примеру.
Так вот зная это, ОС имеет 5 методов, которые дергают прикладные программы. А производители принтеров уже пишут драйвера и тем самым реализуют эти методы.
Вопрос в следующем. Поскольку ОС знает, что тип устройства "принтер" имеет 5 методов, то и хранит в себе 5 методов, которые могут дергать прикладные программы.
А что, если вдруг, завтра появится новый принтер, который помимо этих вот 5 методов умеет делать ещё что-нибудь, например, танцевать? Как в таком случае
прикладной программе дергать метод "танцевать", который умеет делать принтер, но о котором ничего не знает ОС т.к. в ней уже заложено, что для типа устройства
"принтер" есть 5 методов и всё?

2) допустим на момент выхода ОС разработчики знали обо всех типах устройств, которые существовали на момент написания ОС и заложили поддержку этих устройств в ОС.
То есть ОС знает об, например, всё том же устройстве-принтере и содержит методы для манипуляций этим устройством. А что, если после выхода ОС я изобрету своё устройство,
например, транслятор моих мыслей на бумагу. ОС ничего не знает о таком устройстве и не знает какие методы существуют для данного типа устройства. И как тогда
писать прикладные программы для управления моим устройством?

Наверняка я вообще где-то имею абсолютно неправильное представление о том, как все это устроено, поэтому, очень надеюсь, что вы наведете меня в нужное русло. Спасибо, с уважением.
 
 Top
caballero
Отправлено: 20 Февраля, 2014 - 10:05:17
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




вообще то ОС знает один метод - печатать
ее задача передать драйверу принтера данные в определенном формате, например PCL


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Прочее »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB