Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Поддержка синхронных и асинхронных операций ввода – вывода
Операции ввода – вывода могут выполняться в синхронном и асинхронном режимах. Синхронный режим означает, что процесс, запросивший операцию, приостанавливает свою работу до тех пор, пока операция ввода – вывода не завершится. При асинхронном режиме процесс выполняется в мультипрограммном режиме одновременно с операцией ввода – вывода. Подсистема ввода – вывода предоставляет своим клиентам (пользовательским процессам и ядру ОС) возможность выполнять как синхронные, так и асинхронные операции ввода – вывода в зависимости от потребностей вызывающей стороны. Системные вызовы ввода – вывода чаще оформляются как синхронные процедуры в связи с тем, что такие операции длятся долго и пользовательскому процессу или потоку все равно придется ждать результатов, чтобы продолжить работу. Внутренние вызовы из модулей ядра ОС выполняются как асинхронные процедуры, так как ядру нужна свобода в выборе дальнейшего поведения после запроса операции ввода – вывода.
Многослойная модель подсистемы ввода – вывода При большом разнообразии устройств ввода – вывода, обладающих весьма отличающимися позволяет соблюсти баланс между двумя противоречивыми требованиями: · необходимостью учета всех особенностей каждого устройства; · единое логическое представление и унифицированный интерфейс для устройств всех типов. Нижние слои подсистемы ввода – вывода должны включать индивидуальные драйвера конкретных физических устройств, а верхние слои должны обобщать процедуры управления этими устройствами, предоставляя по возможности общий интерфейс.
Менеджер ввода – вывода Модули подсистемы ввода – вывода, которые организуют согласованную работу всех компонентов подсистемы и взаимодействие с пользовательскими процессами и другими подсистемами ОС образуют как бы оболочку подсистемы. Эта оболочка называется менеджером ввода – вывода. Верхний слой менеджера поддерживает пользовательский интерфейс ввода – вывода, т.е. принимает запросы на ввод – вывод и переадресует их драйверам, а также возвращают процессам результаты операций ввода – вывода. Нижний слой взаимодействует с контроллерами внешних устройств, экранирую драйверы от особенностей аппар ввода – вывода, системы прерываний и т.п. Этот слой принимает от драйверов запросы на обмен данными с регистрами контроллеров в некоторой обобщенной форме с пользованием независимых от шины ввода – вывода адресации и формата, преобразуя эти запросы в формат, понятный аппаратной платформе. Еще одной функцией менеджера ввода – вывода является организация взаимодействия модулей ввода –вывода с модулями других подсистем ОС, таких как подсистемы управления процессами, виртуальной памятью и др. Наличие стандартного виртуального межмодульного интерфейса повышает устойчивость и улучшает расширяемость подсистемы ввода – вывода, хотя и замедляет ее работу.
Многоуровневые драйверы. Традиционные особенности и функции, выполняемые драйвером состоят в следующем: · входит в состав ядра ОС, работая в привилегированном режиме; · непосредственно управляет внешним устройством, взаимодействуя с его контроллером с помощью команд ввода – вывода компьютера; · обрабатывает прерывания от контроллера; · предоставляет программисту удобный логический интерфейс, экранируя от ненужных деталей и подробностей; · взаимодействует с другими модулями Традиционные драйверы н делились на слои. С развитием ОС наряду с традиционными появились высокоуровневые драйверы, которые располагаются над традиционными драйверами. При этом традиционные драйверы стали называть аппаратными. С помощью высокоуровневого драйвера повышается гибкость и расширяемость функций по управлению устройством – вместо жесткого набора функций, которые сосредоточены в низкоуровневом драйвере, администратор ОС может выбрать требуемый набор функций, установив нужный высокоуровневый драйвер. Если различным приложениям необходимо работать с различными логическими модулями одного и того же физического устройства, то для этого достаточно установить в системе несколько драйверов на одном уровне, работающих над одним аппаратным драйвером. Количество уровней драйверов обычно не ограничивается. На практике используется от 2 до 5 уровней. Высокоуровневые драйверы оформляются по тем же правилам и придерживаются тех де внутренних интерфейсов, что и аппаратные драйверы за исключением того, что они не вызываются по прерываниям, так как взаимодействуют Как общие принципы построения многоуровневых драйверов могут быть реализованы применительно к конкретным устройствам можно рассмотреть на примере управления дисками.
Аппаратные драйверы поддерживают для верхних уровней представление диска как последовательного набора блоков одинакового размера, преобразуя вместе с контроллером номер блока в более сложный адрес из номера цилиндра, головки и сектора. Понятие «файла» и файловой системы аппаратные драйверы не поддерживают Эти абстракции создаются на более высоком уровне. Они могут поддерживать несколько файловых систем одновременно. Для этого в ОС устанавливается несколько высокоуровневых драйверов (UFS, NTFS, FAT). Они работают с общими аппаратными драйверами, но по-своему организуют файловую систему пользователям и прикладными процессам. Для унификации представления различных файловых систем может использоваться общий драйвер верхнего уровня VFS(Virtual File System). Такой драйвер используется, например в системах UNIX. В унификацию драйверов большой вклад внесла ОС UNIX. В ней все драйверы разделены на 2 больших класса; блок – ориентированные и байт – ориентированные. Например, драйвера графических и сетевых устройств относятся к байт – ориентированным, а драйверы, управляющие устройствами прямого доступа, которые хранят информацию в блоках фиксированного размера, - к блок – ориентированным (диск). Адресуемость блоков приводят к тому, что для устройств прямого доступа имеется возможность кэширования данных в оперативной памяти. Это влияет на общую организацию ввода – вывода таких устройств.
Специальные файлы Специальные файлы, называемые иногда наборами данных, которые хранятся на дисках. Они используются для унифицированного представления устройств ввода – вывода. Со специальным файлом можно работать так же, как и с обычным – открывать, читать или записывать байты, а после завершения операции закрывать. Для этого используется те же системные вызовы, что и для работы с обычными файлами; open, create, read, write, close. Традиционно специальные файлы помещаются в каталог /dev, хотя ничто не мешает создать их любом каталоге файловой системы. При появлении нового устройства и, соответственно, нового драйвера администратор системы может создать новую зарись (например, с помощью команды mknod).
Популярное:
|
Последнее изменение этой страницы: 2016-07-13; Просмотров: 840; Нарушение авторского права страницы