Приложения
Библиотечные
функ
III
Системные вызовы
Программные средства
обращения к подсистеме
ввода-вывода
Обработка системных вызовов
Система буферизации
данных
Подсистема
ввода-вывода
ОС
Драйверы устройств
Обработка прерывании
3 «тросы
гф*рыиннк
от упрогогп
Камшди
упроляны
устройствами
Дшкхк
Рисунок 25 — Многоуровневая организация подсистемы ввода-
вывода
7.3 Обработка прерываний
Прерывания должны быть скрыты как можно глубже в недрах
операционной системы, чтобы как можно меньшая часть ОС имела с
ними
дело. Наилучший способ состоит в разрешении процессу,
инициировавшему операцию
ввода-вывода, блокировать себя до
завершения операции и наступления прерывания.
Драйверы устройств.
Весь
зависимый от устройства код
помещается в драйвер устройства. Каждый драйвер управляет
устройствами одного типа или, может быть, одного класса.
В операционной системе только драйвер устройства знает о
конкретных особенностях какого-либо устройства.
Драйвер
устройства
принимает
запрос
от
устройств
программного слоя и решает, как его выполнить. Если драйвер был
свободен во время поступления запроса, то он начинает выполнять
запрос немедленно, т.е. посылает контроллеру
определенную
последовательность команд. Если же он был занят обслуживанием
65
другого запроса, то вновь поступившим запрос присоединяется к
очереди уже имеющихся запросов, и он будет выполнен, когда
наступит его очередь.
7.4 Независимый от устройств, слой операционной системы
Большая часть программного обеспечения ввода-вывода является
независимой от устройств. Точная граница между драйверами и
независимыми от устройств программами определяется системой, так
как некоторые функции, которые могли бы быть реализованы
независимым способом, в действительности выполнены в виде
драйверов для повышения эффективности или по другим причинам.
Типичными функциями для независимого от устройств слоя
являются:
- обеспечение общего интерфейса к драйверам устройств;
- именование устройств;
- защита устройств;
- обеспечение независимого размера блока;
- буферизация;
- распределение памяти на блок-ориентированных устройствах;
- распределение и освобождение выделенных устройств;
- уведомление об ошибках.
7.5 Пользовательский слой программного обеспечения
Хотя большая часть программного обеспечения ввода-вывода
находится внутри ОС, некоторая его часть содержится в библиотеках,
связываемых
с
пользовательскими
программами.
Стандартные
библиотеки ввода-вывода содержат большое число процедур, которые
выполняют ввод-вывод и работают как часть пользовательской
программы [6].
В современных ОС обеспечением ввода-вывода занимается
подсистема спулинга (spooling). Спулинг - это способ работы с
выделенными
устройствами
в
мультипрограммной
системе.
Рассмотрим типичное устройство, требующее спулинга - строчный
принтер.
Хотя
технически
легко
позволить
каждому
пользовательскому процессу открыть специальный файл, связанный с
принтером, такой способ опасен из-за того, что пользовательский
процесс может монополизировать принтер на произвольное время.
Вместо этого создается специальный процесс-монитор, который
получает исключительные права на использование этого устройства.
Также создается специальный каталог, называемый каталогом
спулинга. Для того, чтобы напечатать файл, пользовательский процесс
66
помещает выводимую информацию в этот файл и помещает его в
каталог спулинга. Процесс-монитор по очереди распечатывает все
файлы, содержащиеся в каталоге спулинга.
1
Контрольные вопросы
1. Какова одна из главных функций ОС связанная с вводом-
выводом?
2. На какие типы делятся устройства ввода-вывода?
3. В чем различия блок-ориентированных устройств от байт-
ориентированных? Назовите примеры этих устройств?
4. Каковы функции контроллера?
5. В чем состоит основная идея организации программного
обеспечения ввода-вывода?
6. Каковы вопросы программного обеспечения ввода-вывода?
7. Что
представляют
собой
Достарыңызбен бөлісу: