Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Структура подсистемы ввода-вывода



Для решения поставленных проблем программное обеспечение ввода-вывода раз­деляется на четыре слоя (рис.4.9):

- обработка прерываний;

- драйверы устройств;

- независимый от устройств слой операционной системы;

- пользовательский слой программного обеспечения.

Рисунок 4.9 - Многоуровневая организация подсистемы ввода-вывода

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

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

Драйвер устройства принимает запрос от устройств программного слоя и решает, как его выполнить. Типичным запросом является чтение n блоков данных. Если драй­вер был свободен во время поступления запроса, то запрос начинает выполняться немедленно, иначе он ставится в очередь запросов к драйверу.

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

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

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

· обеспечение общего интерфейса к драйверам устройств,

· именование устройств,

· защита устройств,

· обеспечение независимого размера блока,

· буферизация,

· распределение памяти на блок-ориентированных устройствах,

· распределение и освобождение выделенных устройств,

· уведомление об ошибках.

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

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

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





Дата публикования: 2015-10-09; Прочитано: 1242 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...