Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория вычислительных процессов (1).doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
9.39 Mб
Скачать

Системы ввода вывода.

Управлением I/O в ОС — сложная проблема поскольку она обусловленна необходимостью решать следующие задачи:

  1. Эффективное управление устройствами.

  1. Поддержка виртуального интерфейсов I/O.

  1. Распределение встройств между задавами.

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

  1. Стремление к предотвращению возможных конфликтов доступов к устройству.

  1. Повышение эффективности пользования ресурсов.

При прямом доступе к ресурсу со стороны пользовательского приложения ошибка в программе I/O может привести к краху всей системы.

Управляет I/O специальная подсистема в ОС (OS I/O SS) подсистема I/O получает на вход запросы от прикладных программ и от модулей ОС, которые затем проверяются на корректность и в случае прохождения этого теста обрабатываются дальше, а в случае отказа задаче направившей запросы возвращается сообщение об ошибке.

Способы организации ввода вывода.

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

Драйвер выполняет системный цикл в котором опрашивает устройства на предмет завершения операции I/O. После завершения операции I/O данные помещаются в область памяти ассоциированную с этим устройством, управление возвращается программе. Недостаток такого способа организации необходимо постоянно опрашивать устройства на предмет завершение операции I/O. Достоинства — отсутствие простоев.

Второй способ. С помощью механизма прерывания. Драйвер запускает устройство и просит его генерировать специальный сигнал, который называется прерывание после завершения I/O. После запуска устройства программа ожидающая завершения операции I/O блокируется и процессор начинает выполнять другие задания. При генерации прерывания контролер прерывания выставляет на шину номер устройства так чтобы процессор мог узнать какое именно устройство завершило работу, прерывание определяется по приоритету устройств, в случае если в момент обработки более приоритетного прерывания пришел сигнал от менее приоритетного, то такой с гнал просто игнорируется контролером. Устройство будет удерживать сигнал на своей линии прерывания до тех пор пока он не будет обработан, если контролер решил обработать прерывание, то на адресную шину выставляется номер устройства, а на соответствующий контакт CPU подается сигнал прерывания. Если CPU решил обработать прерывание то в стеке сохраняется содержимое счетчика команд и переменное состояние процессора PSW (process status word) далее производится обращение в области памяти содержащий обработчик прерывания. При завершении обработки прерывания происходит возврат в программу которое это прерывание вызвало.

Существует два вида организации ввода вывода:

  1. Синхронный — основан на механизме блокировок. После вызова операции I/O программа автоматически приостанавливается до тех пор, пока в буфере не появится содержимое операции. Так операции I/O представляются на уровне ОС для прикладных программ.

  1. Асинхронный — основан на механизме прерываний.

Большинство операций I/O являются асинхронными.

SPOOLING — это способ организации ввода вывода имитирующее работу с устройством в режиме он-лайн. Задача спулинга — создать видимость параллельного разделения устройства с последовательным доступом, которое фактически может быть использовано только монопольно(принтер) и быть закрепленным за одной из исполняемых задач. Каждой из исполняемых задач предоставляется виртуальный ресурс(например виртуальный принтер) выходной поток перенаправляется в специальный файл на диске который называется SPOOLfile. По окончании виртуальной печати диспеьчер печати направляет эти файлы на принтер в соответствии с принятой в системе дисциплиной обслуживания. Системный процесс управляющий SPOOLfil'ми называется спулер