![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Для решения поставленных проблем программное обеспечение ввода-вывода разделяется на четыре слоя (рис.4.9):
- обработка прерываний;
- драйверы устройств;
- независимый от устройств слой операционной системы;
- пользовательский слой программного обеспечения.
Рисунок 4.9 - Многоуровневая организация подсистемы ввода-вывода
Обработка прерываний. Прерывания должны быть скрыты как можно глубже в недрах операционной системы, чтобы как можно меньшая часть ОС имела с ними дело. Наилучший способ состоит в разрешении процессу, инициировавшему операцию ввода-вывода, блокировать себя до завершения операции и наступления прерывания, свидетельствующего о завершении этой операции. При наступлении прерывания процедура обработки прерывания выполняет разблокирование процесса, инициировавшего операцию ввода-вывода. Эффект от прерывания будет состоять в том, что ранее заблокированный процесс теперь продолжит свое выполнение.
Драйверы устройств. Весь зависимый от устройства код помещается в драйвер устройства. Каждый драйвер управляет устройствами одного типа. Только драйвер устройства знает о конкретных особенностях какого-либо устройства. Например, только драйвер диска имеет дело с дорожками, секторами, цилиндрами, временем установления головки и другими факторами, обеспечивающими правильную работу диска.
Драйвер устройства принимает запрос от устройств программного слоя и решает, как его выполнить. Типичным запросом является чтение n блоков данных. Если драйвер был свободен во время поступления запроса, то запрос начинает выполняться немедленно, иначе он ставится в очередь запросов к драйверу.
Первый шаг в реализации запроса ввода-вывода состоит в преобразовании его из абстрактной формы в конкретную, т.е. в последовательность операций контроллера. Например, для дискового драйвера это означает преобразование номеров блоков в номера цилиндров, головок, секторов, проверку, работает ли мотор, находится ли головка над нужным цилиндром.
После передачи команды контроллеру драйвер должен решить, блокировать ли себя до окончания заданной операции или нет. Если операция занимает значительное время (например, при печати некоторого блока данных), то драйвер блокируется до завершения операции и обработчик прерывания не разблокирует его. Если команда ввода-вывода выполняется быстро (например, прокрутка экрана), то драйвер ожидает ее завершения без блокирования.
Независимый от устройств слой операционной системы. Большая часть программного обеспечения ввода-вывода является независимой от устройств. Точная граница между драйверами и независимыми от устройств программами определяется системой, так как некоторые функции, которые могли бы быть реализованы независимым способом, в действительности выполнены в виде драйверов для повышения эффективности или по другим причинам. Типичными функциями для независимого от устройств слоя являются:
· обеспечение общего интерфейса к драйверам устройств,
· именование устройств,
· защита устройств,
· обеспечение независимого размера блока,
· буферизация,
· распределение памяти на блок-ориентированных устройствах,
· распределение и освобождение выделенных устройств,
· уведомление об ошибках.
Остановимся на двух характерных функциях этого перечня - обеспечении независимого размера блока и распределении памяти на блок-ориентированных устройствах.
Верхние слои программного обеспечения используют понятие логического блока как единицы обмена с внешним устройством независимо от его физических характеристик, например, размера сектора. Логические и физические блоки - единицы разных уровней обмена; логический блок может состоять из нескольких физических или наоборот. Данный слой обеспечивает единый размер блока, например, за счет объединения нескольких различных блоков в единый логический блок.
При создании файла или заполнении его новыми данными необходимо выделить ему новые блоки. Для этого ОС должна вести список или битовую карту свободных блоков диска. Алгоритм поиска свободного блока может быть разработан как независимый от устройства и реализоваться программным слоем, находящимся выше слоя драйверов.
Дата публикования: 2015-10-09; Прочитано: 1280 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!