Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 35
Текст из файла (страница 35)
В противном случае пользователю (задаче) выдается соответствующее диагностическое сообщение о недействительности (некорректности) запроса.2. Супервизор ввода-вывода получает запросы на ввод-вывод от супервизора задач или от программных модулей самой операционной системы.3. Супервизор ввода-вывода вызывает соответствующие распределители каналови контроллеров, планирует ввод-вывод (определяет очередность предоставления устройств ввода-вывода задачам, затребовавшим эти устройства).
Запросна ввод-вывод либо тут же выполняется, либо ставится в очередь на выполнение.4. Супервизор ввода-вывода инициирует операции ввода-вывода (передает управление соответствующим драйверам) и в случае управления вводом-выводом с использованием прерываний предоставляет процессор диспетчеру задачс тем, чтобы передать его первой задаче, стоящей в очереди на выполнение.5. При получении сигналов прерываний от устройств ввода-вывода супервизоридентифицирует эти сигналы (см. раздел «Прерывания» в главе 1) и передаетуправление соответствующим программам обработки прерываний.6.
Супервизор ввода-вывода осуществляет передачу сообщений об ошибках, еслитаковые происходят в процессе управления операциями ввода-вывода.7. Супервизор ввода-вывода посылает сообщения о завершении операции вводавывода запросившей эту операцию задаче и снимает ее с состояния ожиданияввода-вывода, если задача ожидала завершения операции.В случае, если устройство ввода-вывода является инициативным1, управление состороны супервизора ввода-вывода будет заключаться в активизации соответствующего вычислительного процесса (перевод его в состояние готовности к выполнению).Таким образом, прикладные программы (а в общем случае — все обрабатывающиепрограммы) не могут непосредственно связываться с устройствами ввода-выводанезависимо от того, в каком режиме используются эти устройства (монопольноили совместно), но, установив соответствующие значения параметров в запросе наввод-вывод, определяющие требуемую операцию и количество потребляемых ресурсов, обращаются к супервизору задач.
Последний передает управление супервизору ввода-вывода, который и запускает необходимые логические и физическиеоперации.Инициативным называют такое устройство ввода-вывода, по сигналу прерывания от которого запускается соответствующая ему программа (обычно это не стандартное устройство ввода-вывода, анабор датчиков). Такая программа, с одной стороны, не является драйвером, поэтому ей не нужноуправлять операциями обмена данными, но, с другой стороны, запуск такой программы осуществляется именно по событиям, связанным с генерацией устройством ввода-вывода соответствующегосигнала.
Разница между драйверами, работающими по прерываниям, и инициативными программами заключается в их статусе. Драйвер является компонентом операционной системы и часто выполняется не как вычислительный процесс, а как системный объект, а инициативная программа является обычным вычислительным процессом, только его запуск осуществляется по инициативе внешнегоустройства.134Глава 5. Управление вводом-выводом в операционных системахУпомянутый выше запрос на ввод-вывод должен удовлетворять требованиям APIтой операционной системы, в среде которой выполняется приложение.
Параметры, которые указываются в запросах на ввод-вывод, передаются не только в вызывающих последовательностях, создаваемых по спецификациям API, но и как данные, хранящиеся в соответствующих системных таблицах. Все параметры, которыебудут стоять в вызывающей последовательности, предоставляются компилятороми отражают требования программиста, а также постоянные сведения об операционной системе и архитектуре компьютера в целом. Переменные сведения о вычислительной системе (ее конфигурация, состав оборудования, состав и особенностисистемного программного обеспечения) содержатся в специальных системных таблицах. Процессору, каналам прямого доступа в память и контроллерам необходимо передавать конкретную двоичную информацию, с помощью которой и осуществляется управление оборудованием.
Эта конкретная двоичная информация в видекодов и данных часто готовится с помощью препроцессоров, но часть ее хранитсяв системных таблицах.Режимы управления вводом-выводомКак известно, имеется два основных режима ввода-вывода: режим обмена с опросом готовности устройства ввода-вывода и режим обмена с прерываниями (рис.
5.1).Оперативная памятьАДанные/\. Командаввода-выводаlzЦентральныйпроцессорили процессорввода-вывода< ^ = ^Устройствоуправленияустройствомввода-вывода^>Устройствоввода-выводаСигналготовностиРис. 5 . 1 . Управление вводом-выводомПусть для простоты рассмотрения этих вопросов управление вводом-выводомосуществляет центральный процессор. В этом случае часто говорят о работе программного канала обмена данными между внешними устройством и оперативнойпамятью (в отличие от канала прямого доступа к памяти, при котором управление вводом-выводом осуществляет специальное дополнительное оборудование).Итак, пусть центральный процессор посылает команду устройству управления,режимы управления вводом-выводом135требующую, чтобы устройство ввода-вывода выполнило некоторое действие. Например, если мы управляем дисководом, то это может быть команда на включениедвигателя или команда, связанная с позиционированием магнитных головок.Устройство управления исполняет команду, транслируя сигналы, понятные ему ицентральному устройству, в сигналы, понятные устройству ввода-вывода.
Послевыполнения команды устройство ввода-вывода (или его устройство управления)выдает сигнал готовности, который сообщает процессору о том, что можно выдатьновую команду для продолжения обмена данными. Однако поскольку быстродействие устройства ввода-вывода намного меньше быстродействия центральногопроцессора (порой на несколько порядков), то сигнал готовности приходится оченьдолго ожидать, постоянно опрашивая соответствующую линию интерфейса на наличие или отсутствие нужного сигнала. Посылать новую команду, не дождавшисьсигнала готовности, сообщающего об исполнении предыдущей команды, бессмысленно.
В режиме опроса готовности драйвер, управляющий процессом обмена данными с внешним устройством, как раз и выполняет в цикле команду «проверитьналичие сигнала готовности». До тех пор пока сигнал готовности не появится, драйвер ничего другого не делает. При этом, естественно, нерационально используетсявремя центрального процессора. Гораздо выгоднее, выдав команду ввода-вывода,на время забыть об устройстве ввода-вывода и перейти на выполнение другой программы. А появление сигнала готовности трактовать как запрос на прерывание отустройства ввода-вывода. Именно эти сигналы готовности и являются сигналамизапроса на прерывание (см.
раздел «Прерывания» в главе 1).Режим обмена с прерываниями по своей сути является режимом асинхронногоуправления. Для того чтобы не потерять связь с устройством (после выдачи процессором очередной команды по управлению обменом данными и переключенияего на выполнение других программ), может быть запущен отсчет времени, в течение которого устройство обязательно должно выполнить команду и выдать-такисигнал запроса на прерывание.
Максимальный интервал времени, в течение которого устройство ввода-вывода или его контроллер должны выдать сигнал запросана прерывание, часто называют установкой тайм-аута. Если это время истеклопосле выдачи устройству очередной команды, а устройство так и не ответило, тоДелается вывод о том, что связь с устройством потеряна и управлять им большенет возможности.
Пользователь и/или задача получают соответствующее диагностическое сообщение.Драйверы, работающие в режиме прерываний, представляют собой сложный комплекс программных модулей и могут иметь несколько секций: секцию запуска, однуили несколько секций продолжения и секцию завершения.Секция запуска инициирует операцию ввода-вывода. Эта секция запускается длявключения устройства ввода-вывода или просто для инициализации очереднойоперации ввода-вывода.Секция продолжения (их может быть несколько, если алгоритм управления обменом данными сложный, и требуется несколько прерываний для выполнения одой логической операции) осуществляет основную работу по передаче данных.е1<Ция продолжения, собственно говоря, и является основным обработчиком пре-136Глава 5. Управление вводом-выводом в операционных системахрывания.
Поскольку используемый интерфейс может потребовать для управления вводом-выводом несколько последовательностей управляющих команд, а сигнал прерывания у устройства, как правило, только один, то после выполненияочередной секции прерывания супервизор прерываний при следующем сигналеготовности должен передать управление другой секции.