Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Многослойная модель подсистемы ввода-вывода




Многослойное построение программного обеспечения характерно для ОС вообще, оказывается особенно полезным при построении подсистемы ввода-вывода . При большом разнообразии устройств ввода-вывода, обладающих различными характерами, иерархическая структура программного обеспечения позволяет соблюсти баланс между двумя противоречивыми требованиями:

- с одной стороны необходимо учесть все особенности каждого устройства;

- с другой стороны обеспечить единое логическое представление и унифицированный интерфейс для устройств всех типов.

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

        Общая структура подсистемы ввода-вывода приведена на рис.5.1.

 

Рис. 6.1.Общая структура подсистемы ввода-вывода

 

Менеджер ввода-вывода

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

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

Верхний слой менеджера составляет системные вызовы ввода-вывода, которые принимают от пользовательских процессов запросы на ввод-вывод и переадресуют их отвечающим за предельный класс устройств модуля и драйвера, а также возвращает процессам результаты операции ввода-вывода.

Нижний слой менеджера реализует непосредственное взаимодействие с контроллерами внешних устройств, экранируя драйверы от особенности аппаратной платформы компьютере, шины ввода-вывода , системы прерываний и т. д.

Этот слой принимает от драйверов запрос на обмен данных с регистрами контроллеров к некоторой обобщенной форме с использованием не зависимо от шины ввода-вывода адресации и формата, а затем преобразует эти запросы в зависящие от аппаратной платформы формат.

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

Рассмотрим в качестве примера менеджер ввода-вывода Windows NT:

- он организует взаимодействием между модулями с помощью пакета запроса ввода-вывода IRP (Input/output Request Packet). Получив запрос от процедуры системного вызова менеджер формирует IRP-пакет и передает его нужному драйверу. Драйвер, после выполнения завершенной операции возвращает ответ в виде другого IRP менеджеру, а тот в свою очередь может при необходимости передать этот IRP другому драйверу.

Менеджер позволяет драйверам задавать между собой взаимосвязи и на основании информации о взаимосвязях происходит передача пакетов IRP. Кроме того, менеджер ввода-вывода Windows NT поддерживает загрузку и выгрузку драйверов без остановки системы.

 

Многоуровневые драйверы

Первоначально, первый драйвер применяли в доступно узком смысле. Под драйвером понимается программный модуль, который:

- входит в состав ядра операционной системы, работая в привилегированном режиме;

- непосредственно управляет внешним устройством, взаимодействует с его контроллером с помощью команды ввода-вывода в компьютере;

- обрабатывает прерывания от контроллера устройства;

- предоставляет прикладному программисту удобный1 логический интерфейс для работы с устройством, экранируя от него низкоуровневые детали управления устройством и организации его данных;

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

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

Традиционные драйверы, которые стали называть аппаратными низкоуровневыми или драйверами устройств занимаются только низкоуровневыми операциями. При таком подходе повышается гибкость и расширяемость функций по управлению устройств.

На практике в подсистеме ввода-вывода чаще всего используют от 2 до 5 уровней драйверов. высокоуровневые драйверы не вызываются по прерываниям, т.к. взаимодействуют с управляющим устройством через посредничество аппаратных драйверов.

Менеджер ввода-вывода управляет драйверами однотипно не зависимо от того, к какому уровню он относится.

В вертикальной подсистеме сетевых устройств приведенной на схеме аппаратными драйверами являются драйверы сетевых адаптеров, которые выполняют функции низкоуровневых канальных протоколов (Ethernet, FR, ATM). Они организуют передачу кадров данных между компьютерами одной сети. Над ними располагается слой модулей, которые реализуют функции более интеллектуальных протоколов (IP, IPX), которые могут обеспечить взаимодействие компьютеров разных сетей с производительными связями. Они находятся в промежуточном слое и непосредственно с аппаратурой не взаимодействуют.

Еще выше располагается слой транспортных протоколов (CP/UDP,SPX), которые отвечают за надежную связь между компьютерными сетями.

Драйверы верхнего уровня (HTTP,FTP,SMB) представляют пользователям конечные услуги по доступу к гипертекстовой информации к архивам файла и т.д.

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

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

Понятие файла такие драйверы не поддерживают. Для этого в ОС устанавливается несколько высокоуровневых драйверов файловых систем (UFS, NTFS, FAT), работающих с общеаппаратными драйверами, но по-своему представляющих файловую систему пользователя процессов. Может присутствовать общий драйвер верхнего уровня, играющий роль диспетчера нескольких драйверов файловых систем.

Условно разделяют как драйверы, так и периферийные устройства делятся на два типа: блок-ориентированные и байт-ориентированные .

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

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

Специальные файлы

В унификацию драйверов большой вклад внесла операционная система UNIX. В этой системе все драйверы были разделены на два больших класса: блок-ориентированные (block-oriented) драйверы и байт-ориентированные (character-oriented) драйверы. Например, драйверы графических устройств и драйверы сетевых устройств относятся к классу байт-ориентированных. Блок-ориентированные драйверы управляют устройствами прямого доступа, которые хранят информацию в блоках фиксированного размера, каждый из которых имеет собственный адрес. Самое распространенное внешнее устройство прямого доступа - диск. Адресуемость блоков приводит к тому, что для устройств прямого доступа появляется возможность кэширования данных в оперативной памяти, и это обстоятельство значительно влияет на общую организацию ввода-вывода для блок-ориентированных драйверов.

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

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

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

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

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

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

Традиционно специальные файлы помещаются в каталог /dev, хотя ничто не мешает создать их в любом каталоге файловой системы.










Последнее изменение этой страницы: 2018-05-10; просмотров: 272.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...