Cтраница 2
Драйверы устройств могут быть самыми разнообразными, в том числе драйверами реального режима или виртуальными драйверами внешних устройств. Драйверы внешних устройств позволяют нескольким приложениям одновременно использовать одно устройство, например, экран дисплея. [16]
Драйверы устройств, входящие в СУВВ, предназначены для управления устройствами при обмене информацией с ЭВМ. Драйвер проверяет требования потребителя по вводу-выводу, подготавливает устройство к выполнению операций ввода-вывода и обменивается необходимой информацией в режиме прерываний. [17]
![]() |
Структура таблицы bdevsw. [18] |
Драйверы баиторнентированных устройств доступны через таблицу cdevsw ( см. рис. 3.9), в которой находятся указатели для выполнения функций открытия, закрытия, чтения, записи и управления. [19]
Драйверами устройств являются модули, обеспечивающие доступ к оборудованию. [20]
Кроме драйвера устройства на системный диск необходимо также скопировать специальный системный драйвер, обеспечивающий доступ к дисководу CD-ROM. EXE, входящая в состав операционной системы. [21]
Многие драйверы устройств обладают сходной общей структурой. Типичный драйвер начинает с проверки входных параметров. Если они не удовлетворяют определенным критериям, драйвер возвращает ошибку. В противном случае драйвер преобразует абстрактные термины в конкретные. Например, дисковый драйвер может преобразовывать линейный номер блока в номера головки, дорожки и секторы. [22]
![]() |
Структура типичной системы UNIX. [23] |
Над драйверами устройств находится система управления файлами. Она управляет именами файлов, директориями, расположением блоков на диске, защитой и выполняет многие другие функции. В системе файлов имеется так называемый кэш блоков для хранения недавно считанных с диска блоков, на случай если они понадобятся еще раз. [24]
Разумеется, драйверы устройств должны получать доступ к аппаратным регистрам устройств, поэтому необходим определенный механизм, обеспечивающий этот доступ. Если аппаратура это позволяет, то каждому драйверному процессу может быть предоставлен доступ только к нужным ему устройствам ввода-вывода. Например, если регистры устройств ввода-вывода отображаются на адресное пространство памяти, то у каждого драйверного процесса может быть страница памяти, на которую отображаются регистры соответствующего устройства, но не другие страницы. Если же пространство портов ввода-вывода частично защищено, каждому драйверу может быть разрешен доступ к нужной ему порции этого пространства. [25]
Ввод-вывод осуществляется драйверами устройств, согласующимися с моделью Windows Driver Model. При запуске каждого драйвера инициализируется объект драйвера, содержащий адреса процедур, к которым может обращаться операционная система, чтобы добавить новое устройство или выполнить операцию ввода-вывода. Драйверы могут собираться в стеки или действовать как фильтры. [26]
Могут добавляться и другие драйверы последовательных и дисковых устройств. [27]
В течение десятилетий драйверы устройств системы UNIX статически компоновались вместе с ядром, так что все они постоянно находились в памяти при каждой загрузке системы. Такая схема хорошо работала в условиях мало меняющихся конфигураций факультетских мини-компьютеров, а затем сложных рабочих станций, то есть в тех условиях, в которых росла и развивалась операционная система UNIX. Как правило, компьютерный центр формировал ядро операционной системы, содержащее драйверы для всех необходимых в данной конфигурации устройств ввода-вывода, которыми потом и пользовался. Если на следующий год покупался новый диск, компьютерный центр перекомпоновывал ядро, что было не так уж и сложно. [28]
Над микроядром и драйверами устройств находится исполняющая система. [29]
Над ядром и драйверами устройств располагается верхняя часть операционной системы, называемая исполняющей системой ( а также иногда супервизором или диспетчером), показанная в виде затененной области на рис. 11.2. Исполняющая система написана на С, она не зависит от архитектуры и может быть перенесена на новые машины с относительно небольшими усилиями. Исполняющая система состоит из 10 компонентов, каждый из которых представляет собой просто набор процедур, работающих вместе для выполнения некоторой задачи. Между отдельными компонентами нет жестких границ, и различные авторы, описывающие исполняющую систему, могут даже по-разному группировать составляющие ее процедуры в компоненты. Следует заметить, что компоненты одного уровня могут вызывать друг друга, и на практике они этим довольно активно занимаются. [30]