Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС 2 модуль все части ПЕЧАТАТЬ.docx
Скачиваний:
72
Добавлен:
18.12.2018
Размер:
328.96 Кб
Скачать

4)_Ч6Опишите необходимость и организацию поддержки широкого спектра драйверов, динамической загрузки и выгрузки драйверов.

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

5)_Ч6Опишите необходимость и организацию поддержки нескольких фс, синхронных и асинхронных операций ввода-вывода.

Большая часть системных и пользовательских данных хранится на дисках, делая дисковые накопители важнейшими УВВ. Данные на дисках организуются в различные ФС, а свойства отдельной ФС во многом определяют такие свойства самой ОС, как отказоустойчивость, быстродействие, максимальный объем хранимых данных. Популярность некоторой ФС часто приводит к ее миграции из «родной» ОС в другие ОС. Например, ФС «таблица расположения файлов» (FileAllocationTable, FAT) была создана для MS-DOS, но затем была реализована в OS/2, семействеMSWindows и многих реализациях UNIX. Именно поэтому поддержка нескольких популярных ФС для подсистемы ввода-вывода имеет принципиальное значение. При этом архитектура подсистемы ввода-вывода должна обеспечивать легкое включение в ее состав новых типов ФС без необходимости переписывания кода ОС. Обычно в ОС имеется специальный слой, отвечающий за решение этой задачи, например, слой «виртуальная файловая система» (VirtualFileSystem,VFS) в разных реализациях UNIXна основе SystemVRelease 4. Операция ввода-вывода по отношению к запросившему ее программному модулю может выполняться, как и в случае ранее рассмотренных системных вызовов, синхронно (с приостановкой работы модуля и ожиданием ее завершения) или асинхронно (с продолжением работы модуля параллельно с операцией ввода-вывода). Причем, операция ввода-вывода может быть инициирована не только пользовательским процессом (когда она выполняется в рамках системного вызова), но и кодом ядра, например, подсистемы виртуальной памяти для считывания отсутствующей в ОП страницы.Системные вызовы ввода-вывода чаще выполняются как синхронные, поскольку такие операции длятся долго, и пользовательскому процессу/потоку все равно необходимо ожидать их результатов для продолжения своей работы. Внутренние же вызовы операций ввода-вывода из модулей ядра обычно выполняются как асинхронные, поскольку ядру нужна свобода в выборе дальнейшего поведения после запроса операции ввода-вывода. Асинхронный вариант дает более гибкое решение, позволяя всегда добавить при необходимости промежуточную синхронную процедуру, блокирующую выполнение асинхронной до завершения ввода-вывода

6)_Ч6Представьте и опишите обобщенную структуру подсистемы ввода-вывода.

Идея многослойной организации ОС оказывается полезной и при построении подсистемы ввода-вывода. При большом разнообразии УВВ, обладающих существенно разными характеристиками, ее иерархическая структура позволяет соблюсти баланс между двумя противоречивыми требованиями. При этом нижние слои подсистемы ввода-вывода должны включать индивидуальные драйверы, написанные для конкретных физических устройств, а верхние слои должны обобщать процедуры управления этими устройствами, представляя общий интерфейс для всех устройств или для групп устройств, обладающих некоторыми общими характеристиками, например, для лазерных принтеров компании HewlettPackard.Обобщенная структура подсистемы ввода-вывода представлена на рис.6.1.ПО ввода-вывода здесь делится не только на горизонтальные слои, но и на вертикальные. Необходимость вертикальных слоев обусловлена наличием групп разнотипных УВВ со своими способами управления [1-2].

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

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

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

7)_Ч6Опишите организацию и особенности менеджера ввода-вывода.

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

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

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

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

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

Наличие стандартного внутреннего межмодульного интерфейса повышает устойчивость и улучшает расширяемость подсистемы ввода-вывода, но может и несколько замедлять ее работу за счет взаимодействия слоев (по сравнению с монолитной организацией с прямыми передачами управления) [2].

8)_Ч6Опишите организацию и особенности многоуровневых драйверов.

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

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

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

    • обрабатывает прерывания от контроллера УВВ;

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

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

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

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

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

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

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

Отметим, что в схеме рис.6.1 не показаны все возможные вертикальные слои УВВ, а также допустимые исключения, которые могут быть связаны с ориентацией высокоуровневого интерфейса не только на блоки или байты. Например, таймер как устройство вывода не содержит адресуемой информации, не порождает потока байтов, а только выдает сигнал прерывания в некоторые моменты времени [2].