Программный интерфейс ввода-вывода

Вектор прерываний– резидентный массив, содержащий адреса обработчиков прерываний в операционной системе, - используется с целью переадресовки прерывания для обработки соответствующим обработчиком (handler).

Прерывания

Опрос устройств

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

  • command-ready – готово к выполнению команд;
  • busy – занато;
  • error – ошибка.

При выполнении ввода-вывода аппаратура организует цикл busy-waitожидания ввода-вывода с устройством: если устройство занято, процесс ждет его освобождения.

Линия запросов на прерывания (interrupt request – IRQ)переключается устройством ввода-вывода, которое сигнализирует с помощью запроса на прерывание о начале или окончании ввода-вывода.

Обработчик прерываний получает сигнал о прерывании. Сигнал может быть замаскирован (maskable),чтобы игнорировать или задержать прерывание – например, если прерывание произошло в обработчике другого прерывания.

Работа с вектором прерываний основана на приоритетах внешних устройств, инициировавших прерывания.

На рис. 21.2 приведена схема ввода-вывода, управляемого прерываниями.

Рис. 21.2. Ввод-вывод, управляемый прерываниями.

В таблица 2 приведены номера прерываний в процессоре Intel Pentium.

Таблица 2. Tаблица номеров прерываний в процессоре Intel Pentium
Номер прерывания Описание
ошибка при делении
исключение при отладке
прерывание по null
точка остановки
прерывание, обнаруженное INTO
исключение по выходу за границы
неверный код операции
устройство недоступно
двойное прерывание
переполнение сегмента сопроцессора
неверный сегмент состояния задачи
сегмент отсутствует
ошибка стека
общее прерывание по защите
отказ страницы
(зарезервировано Intel, не использовать)
ошибка в операции с плавающей точкой
контроль выравнивания
контроль аппаратуры
19-31 зарезервировано Intel, не использовать
32-255 маскируемые прерывания

Ввод-вывод с прямым доступом к памяти (DMA)

Как уже отмечалось ранее, при традиционной организации ввода-вывода контроллер устройства использует собственную буферную память, что приводит к необходимости двойной пересылки данных – сначала процессор пересылает данные в буфер, созданный ОС, затем ОС пересылает данные в буфер устройства. Ввод-вывод с прямым доступом к памяти (Direct Memory Access – DMA)- более эффективная схема организации ввода-вывода, основанная на использовании фрагмента основной памяти в качестве буфера устройства для выполнения ввода-вывода. Схема .используется с целью избежать программируемого ввода-вывода для больших пересылок данных. Схема требует специальной аппаратуры – DMA-контроллера – в настоящее время такие контроллеры приобретают все более широкое распространение. DMA позволяет избежать участия процессора в пересылках больших объемов данных непосредственно между устройством ввода-вывода и памятью.

На рис. 21.3 приведена схема организации DMA.

Рис. 21.3. Процесс выполнения ввода-вывода по схеме DMA.

При проектировании и реализации программного интерфейса (API) ввода-вывода используются принципы уровней абстракции.

Модули операционной системы, реализующие системные вызовы для ввода-вывода, инкапсулируют поведение конкретных устройств ввода-вывода и обеспечивают более абстрактный интерфейс.

Более низкий уровень, уровень драйверов устройств, скрывает различия между контроллерами ввода-вывода конкретных устройств от ядра ОС.

Устройства ввода-вывода различаются по многим параметрам в силу их специфики, например:

  • Устройство для работы с потоками символов или с блоками;
  • Устройство последовательного или прямого доступа;
  • Разделяемое или специализированное (монополизируемое) устройство;
  • Различия по скорости выполнения операций устройствами;
  • Устройство для чтения/записи, или только для чтении, или только для записи.

Структура модулей ввода-вывода в ядре, разработанная и реализованная по этим принципам, изображена на рис. 21.4.

Рис. 21.4. Структура модулей ввода-вывода в ядре ОС.

Классификация устройств ввода-вывода по различным характеристикам и их примеры приведены в таблица 3.

Таблица 3. Характеристики устройств ввода-вывода
классификация варианты примеры
режим передачи данных
  • символьный
  • блочный
  • терминал
  • диск
метод доступа
  • последовательный
  • произвольный
  • модем
  • CD-ROM
метод передачи данных
  • синхронный
  • асинхронный
  • лента
  • клавиатура
возможность совместного доступа
  • монопольный
  • общий
  • лента
  • клавиатура
скорость устройства
  • латентность
  • время поиска
  • скорость передачи
  • задержка между операциями
 
направленнность ввода-вывода
  • только чтение
  • только запись
  • чтение-запись
  • CD-ROM
  • графический контроллер
  • диск