Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[Проектирование операционных систем] - Курс лек....doc
Скачиваний:
22
Добавлен:
14.11.2018
Размер:
347.14 Кб
Скачать

Подсистема управления вводом/выводом

Условно все устройства ввода/вывода делятся на 2 класса:

  • Устройства ввода/вывода информации из системы.

  • Устройства хранения информации.

Устройства 1го класса могут быть использованы только монопольно. Устройства 2го класса допускают как монопольное, так и совместное использование.

Система ввода/вывода – вещь сложная. Причины:

  • Мы имеем несколько развивающихся процессов.

  • Даже аналогичные устройства ввода/вывода имеют различные характеристики.

  • Механические компоненты могут является причинами сбоев, которые нужно уметь обрабатывать.

Программа пользователя не в состоянии самостоятельно управлять устройствами ввода/вывода. Эту функцию на себя берет ОС.

Требования к подсистеме управления ввода/вывода:

  • Пользователю должен быть предоставлен удобный и понятный интерфейс.

  • Обращение к устройствам ввода/вывода должны быть унифицированы, обеспечивая независимость программы от внешних устройств.

  • Должна выполнятся необходимая обработка и регистрация сбоев.

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

  • Прямой. Когда центральный процессор напрямую управляет устройством ввода/вывода

  • Косвенный. Когда центральный процессор управляет процессором устройства ввода/вывода, а тот в свою очередь управляет устройством ввода/вывода.

В первом случае в составе команд ЦП должны быть команды инициирования работы устройства ввода/вывода, останова, проверки состояния, чтения, записи и т.д. Особенностями этих команд заключается в занятости устройства во время их выполнения, и как следствие блокирование работы центрального процессора.

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

Буферизация ввода вывода

Цели:

  • Увеличение скорости ввода вывода.

  • Реализация режима мультипрограммирования.

Скорость работы центрального процессора и устройств ввода вывода существенно различается. Для сглаживания разницы процесса ввода/вывода производится буферизация.

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

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

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

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

Spooling (Спулинг) – замена вывода на медленное устройство выводом на более быстрое (вывод на диск вместо принтера).