Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Поддержка синхронных и асинхронных операций ввода – вывода



Операции ввода – вывода могут выполняться в синхронном и асинхронном режимах.

Синхронный режим означает, что процесс, запросивший операцию, приостанавливает свою работу до тех пор, пока операция ввода – вывода не завершится.

При асинхронном режиме процесс выполняется в мультипрограммном режиме одновременно с операцией ввода – вывода.

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

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

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

 

 

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

При большом разнообразии устройств ввода – вывода, обладающих весьма отличающимися позволяет соблюсти баланс между двумя противоречивыми требованиями:

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

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

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

 


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

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

Эта оболочка называется менеджером ввода – вывода.

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

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

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

Наличие стандартного виртуального межмодульного интерфейса повышает устойчивость и улучшает расширяемость подсистемы ввода – вывода, хотя и замедляет ее работу.

 

 

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

Традиционные особенности и функции, выполняемые драйвером состоят в следующем:

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

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

· обрабатывает прерывания от контроллера;

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

· взаимодействует с другими модулями

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

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

Количество уровней драйверов обычно не ограничивается. На практике используется от 2 до 5 уровней.

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

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

 

 

 


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

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

Для унификации представления различных файловых систем может использоваться общий драйвер верхнего уровня VFS(Virtual File System). Такой драйвер используется, например в системах UNIX.

В унификацию драйверов большой вклад внесла ОС UNIX. В ней все драйверы разделены на 2 больших класса; блок – ориентированные и байт – ориентированные.

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

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

 

 

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

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

Со специальным файлом можно работать так же, как и с обычным – открывать, читать или записывать байты, а после завершения операции закрывать.

Для этого используется те же системные вызовы, что и для работы с обычными файлами; open, create, read, write, close.

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

 

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-07-13; Просмотров: 793; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.017 с.)
Главная | Случайная страница | Обратная связь