Техника - молодёжи 1995-08, страница 43

Техника - молодёжи 1995-08, страница 43

н

Е L

Р

Любой компьютер, от простейшего бытового до супер-ЭВМ, сводится к известной схеме "черного ящика": наряду со средствами обработки информации он обязательно имеет устройства, предназначенные для ее ввода и вывода (в/в) — без них самая совершенная машина бесполезна.

Таких устройств в окружении компьютера достаточно много, но все они могут быть объединены в три группы: только ввода, только вывода и ввода-вывода одновременно. К устройствам первого типа относятся клавиатура, мышь, джойстик, сканер, накопитель на лазерных компакт-дисках (CD-ROM), различные аналого-цифровые преобразователи (АЦП) и другие. Только вывод информации осуществляется на дисплей и динамик компьютера, на принтер, плоттер, фотоавтомат, на всевозможные цифро-аналоговые преобразователи (ЦАП). При работе пользователя с компьютерной сетью, с гибкими и жесткими магнитными дисками, стримерами и тому подобной периферией ему доступен как ввод информации с этих устройств, так и ее вывод на них.

Подключение устройств к компьютеру осуществляется через так называемые порты (не пу-с портами в/в процессора) — специальные ьемы на корпусе системного блока компьютера, электрически связанные с печатными платами особых электронных схем — контроллеров, задача которых обеспечить интерфейс между устройством и компьютером. Плата контроллера обычно подключается к шине ввода-вывода процессора и выступает как преобразователь специфических, цифровых или аналоговых сигналов "своего" устройства в цифровой формат, принятый в данной системе, и наоборот, ее сообщений — в сигналы, "внятные" устройству, а также реализует основные функции управления им. Построение компьютера, позволяющее добавлять контроллеры и, соответственно, устройства простым подключением дополнительных плат к базовой схеме, называется открытой архитектурой. Такая архитектура дает возможность применять в персональных ЭВМ множество самых разнообразных устройств, подключить которые способен даже рядовой пользователь.

Обычно в компьютере имеются как минимум три стандартных порта (и, соответственно, контроллера) для подключения устройств, имеющих схожие условия ввода-вывода информации: последовательный, параллельный, игро-- v Последовательный порт наиболее гибок, к у обычно подключают мышь, модем, иногда принтер, а также ряд иных устройств. Данные передаются в обоих направлениях, а скорость передачи достигает 19200 бод (2400 байт в секунду). Последовательный порт нередко называют портом RS-232C, так как протокол связи через него соответствует стандарту EIA RS-232С. Параллельный порт, разработанный фирмой Centronics, предназначен, как правило, для устройств вывода, прежде всего для многочисленного семейства принтеров. Данные выводятся через этот интерфейс по несколько бит одновременно (по параллельным проводникам), что существенно повышает скорость передачи в сравнении с RS-232C — до 10 Кб/с и выше. Игровой порт предназначен для обработки очень простых сигналов с малыми скоростями передачи данных и применяется для подключения к компьютеру джойстика и трекбола.

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

Александр ГУСЕВ

НЕЗРИМЫЕ

ПОСРЕДНИКИ

атура Direct Memory Access — "прямой доступ к памяти"), используются и для подключения других устройств, например, дисплея.

Существуют высокоскоростные интерфейсы универсального назначения, к примеру, SCSI (принято произносить"скази"), но на них мы останавливаться не будем.

Устройства компьютера могут подразделяться еще на два типа — символьные и блоковые. Символьные устройства передают или получают данные по одному символу (клавиатура, принтер), а блоковые оперируют блоками символов, например, по 512 или 1024 байт, и предназначены для работы с высокоскоростными процессами (накопители на дисках).

Таким образом, связь контроллера с процессором может происходить как через шину ввода-вывода, так и (для DMA-контроллеров) через память. Связь же с памятью в первом случае осуществляется через процессор, а во втором — непосредственно через шины данных и адреса компьютера.

Операции, выполняемые контроллерами, как правило, весьма специфичны и реализуют только базовые механизмы управления и передачи данных, поэтому для организации связи с контроллером в более удобной для пользователя форме между ними обычно внедряется невидимый резидент-посредник — специальный программный интерфейс. Программа, предназначенная для управления конкретным устройством, называется драйвером этого устройства. Главной задачей драйвера, таким образом, является обеспечение эффективного и удобного интерфейса между пользователем и устройством.

Эволюция драйверов происходила по мере совершенствования операционных систем (ОС). На заре развития ЭВМ каждая программа содержала в своем теле все необходимые инструменты для управления устройствами, а выделение драйвера в качестве отдельного элемента еще не произошло. В ОС типа монитора, а также в ОС СР/М и ранних версиях MS-DOS драйверы являлись частью операционной системы и были невидимы для пользователя. Эти драйверы, называемые стандартными, управляли набором основных устройств PC, таких, как клавиатура, дисплей, дисководы, последовательный и параллельный порты. До появления DOS версии 2.0 в ОС не был реализован унифицированный способ доступа к устройствам. Каждое подключаемое к компьютеру устройство требовало уникальных изменений ОС, что было неудобно, а главное, могло привести к конфликтам с другими программами, рассчитанными на работу в базовой системе. Кроме того, четко не разграничивались полномочия: что должна делать ОС, а что — драйвер. Начиная с версии 2.0 в DOS появилась возможность подключать к стандартной конфигурации драйверы, определенные пользователем.

Драйвер DOS, определяемый пользователем, должен соответствовать правилам и соглашениям унифицированного интерфейса стандарта Microsoft. Эти правила определяют специальный формат программы драйвера: она должна содержать заголовок и две процедуры — "стратегии" и "прерывания"— и храниться на диске в виде файла в СОМ-формате; в файле CONFIG.SYS необходима ссылка на файл программы драйвера в виде строки DEVICE=disk:\directory\filename, например, DEVICE=C:\DOS\HIMEM.SYS. При инициализации операционная система выстраивает в па

мяти компьютера цепочку драйверов, руководствуясь содержимым файла CONFIG.SYS, который должен находиться в корневом каталоге загрузочного диска.

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

Заголовок в этой программе содержит: адрес следующего драйвера в цепочке (-1, если конец цепи) — этот элемент определяется ОС; атрибуты устройства — данные о типе драйвера; адреса процедур "стратегии" и "прерывания"; имя драйвера.

Процедура "стратегия" получает управление в случае первого обращения к драйверу при каком-либо его вызове. В ее задачу входит запоминание адреса заголовка запроса — поля памяти, в котором содержится информация о том, что и с чем делать при поступившем вызове.

Последующие обращения к драйверу при данном вызове осуществляются через процедуру "прерывание". На этом этапе, руководствуясь содержимым заголовка запроса, драйвер выполняет конкретные действия. Следует отметить, что DOS выдает в нужный драйвер подчас несколько команд на один запрос со стороны пользователя. Процедура "прерывание" обычно используется как диспетчер команд, передавая управление процедуре, обрабатывающей конкретную команду, номер которой указывается в заголовке запроса.

Правила разработки драйверов устройств для ОС EXOS (и ее расширения EXDOS), под управлением которых работает хорошо известный читателям "ТМ" "Энтерпрайз", схожи со стандартом Microsoft, однако имеется несколько отличий. Во-первых, подключение драйвера осуществляется специальным вызовом ОС (сам драйвер при этом располагается в памяти); во-вторых, функции диспетчера команд выполняет ОС, процедуры "стратегия" и "прерывание" при этом объединены; а в-третьих, передача данных осуществляется через каналы — специальные магистрали между пользователем и драйвером.

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

100 ALLOCATE 180

110 CODE B=HEX$("00,00,00,00,00,00,00,00") 120 CODE =HEX$("2A,00,3F,7C,B5,C8,2B,22") 130 CODE =HEX$("00,3F,2A,02,3F,23,22,02") 140 CODE =HEX$("3F,2B,7C,07,07,E6,03,C6") 150 CODE =HEX$("04,16,3F,5F,1A,D3,B1 ,CB") 160 CODE =HEX$("BC,CB,F4,7E,D3,B6,C9,06") 170 CODE =HEX$("04,DB,B6,E6,08,C0,3A,F3") 180 CODE =HEX$("BF,F6,10,D3,B5,E6,EF,D3") 190 CODE =HEX$("B5,CD,08,3F,10,EB,C9,AF") 200 CODE =HEX$("57,5F,F7,1B,C9,3E,E7,C9") 210 CODE =HEX$("3E,01 ,D3,B1 ,C3,8E,67,ED") 220 CODE =HEX$("43,00,3F,EB,22,02,3F,09") 230 CODE =HEX$("E5,01,04,00,11,04,3F,21") 240 CODE =HEX$("FC,BF,ED,B0,CD,08,3F,D1") 250 CODE =HEX$("AF,C9,3E,EA,C9,2F,3F,47") 260 CODE =HEX$("3F,47,3F,70,3F,70,3F,4D") 270 CODE =HEX$("3F,4D,3F,50,3F,57,3F,4D") 280 CODE =HEX$("3F,4D,3F,72,3F,74,3F,74") 290 CODE =HEX$("3F,00,00,00,00,20,00,75") 300 CODE =HEX$("3F,F8,00,07")&"PRINTER" 310 CODE S=HEX$("01 ")&WORD$(S-B)&HEX$ ("11, 00, 3F,21")&WORD$(B)&HEX$("ED,BO, 11,94, 3F,F7,15,C9") 320 CALL USR(S,0) ■

ТЕХНИКА-МОЛОДЕЖИ 7 ' 9 5

25