Программный комплекс реализующий ввод/вывод часто называется системой.
Управление вводом- выводом базируется на следующем основном принципе: команды на ввод/вывод являются привилегированными для ОС и могут исполняться только самой ОС, а не пользовательскими программами, по следующим причинам:
Необходимость устранять конфликты, возникающие при обращении к устройству со стороны пользовательских процессов или программ.
Необходимость повышения эффективности использования ресурсов (обращение 2-х программ к дискам).
Ошибки в самих программах, которые могут приводить к краху системы.
Основные требования предъявляемые к супервизору:
1. Он должен контролировать корректность самих запросов.
2. Он должен планировать очередность предоставления различных устройств процессу.
3. Он должен инициализировать начало ввода/вывода, передавая управление соответствующему драйверу.
4. При получении прерываний от устройств ввода/вывода, он должен передавать управление соответствующей программе обработки прерываний.
5. Он должен выдавать сообщения об ошибках при работе устройств ввода/вывода.
6. Сообщать процессу о завершении операции ввода/вывода и снимать процессы состояния «ожидания».
Одинарные стрелки - управление
Двойные – данные
С момента выдачи команда ввода/вывода со стороны центрального процессора, до получения им сигнала готовности, как правило проходит много времени в связи с тем, что устройство ввода/вывода обладает как минимум на порядок меньшим быстродействием, чем микросхемы центрального микропроцессора. Поэтому проблема состоит в том, как центральный процессор должен ждать сигналы готовности.
Различают 2 режима управления вводом/выводом:
Режим с опросом готовности устройства ввода/вывода. Сущность заключается в том что после выдачи команды ввода/вывода драйвер устройства, к которому обратились, постоянно (циклически) опрашивает наличие/отсутствие сигнала готовности.
+ Простая реализация
- Центральный процессор на все время использования команды ввода/вывода занят драйвером.
Пример: система Windows 95/98/NT использует этот режим при работе с принтером.
Режим ожидания прерываний. Основная идея состоит в том, что после выдачи команды ввода/вывода ЦП используется любыми другими программами. После появления сигнала готовности от устройства ввода/вывода, этот сигнал вызывает прерывание. Данный режим очень эффективен т.к. обеспечивает высокую производительность системы. Использование этого режима обеспечивает реализацию классического мультипрограммирования.
+ Высокая производительность.
- Если в системе работает процесс с большим приоритетом, следующие процессы будут долго ждать. Большая сложность реализации драйвера. Как правило требуется совокупность драйверов и кроме того драйвера должны учитывать массу прерываний.