Программный интерфейс ввода-вывода
Вектор прерываний– резидентный массив, содержащий адреса обработчиков прерываний в операционной системе, - используется с целью переадресовки прерывания для обработки соответствующим обработчиком (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. Характеристики устройств ввода-вывода | ||
классификация | варианты | примеры |
режим передачи данных |
|
|
метод доступа |
|
|
метод передачи данных |
|
|
возможность совместного доступа |
|
|
скорость устройства |
| |
направленнность ввода-вывода |
|
|