История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

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

2017-11-16 435
Многослойная модель подсистемы ввода-вывода. 0.00 из 5.00 0 оценок
Заказать работу

Вверх
Содержание
Поиск

Общая схема

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Количество уровней драйверов в подсистеме ввода-вывода обычно не ограничи­вается каким-либо пределом, но на практике чаще всего используют от двух до пяти уровней драйверов – слишком большое количество уровней может снизить скорость операций ввода-вывода. Несколько драйверов, управляющих одним устройством, но на разных уровнях, можно рассматривать как набор отдельных драйверов или как один многоуровневый драйвер.

Высокоуровневые драйверы оформляются по тем же правилам и придерживают­ся тех же внутренних интерфейсов, что и аппаратные драйверы. Единственным отличием является то, что высокоуровневые драйверы, как правило, не вызыва­ются по прерываниям, так как взаимодействуют с управляемым устройством че­рез посредничество аппаратных драйверов.

 



Поделиться с друзьями:

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

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

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.