Задачи программного обеспечения ввода-вывода
Основные задачи, которые должно решать программное обеспечение ввода-вывода:
- Независимость от устройств - например, программа, читающая данные из файла не должна задумываться с чего она читает (CD, HDD и др.). Все проблемы должна решать ОС.
- Единообразное именование - имя файла или устройства не должны отличаться. (В системах UNIX выполняется дословно).
- Обработка ошибок - ошибки могут быть отловлены на уровне контроллера, драйвера и т.д.
- Перенос данных - синхронный и асинхронный (в последнем случае процессор запускает перенос данных, и переключается на другие задачи до прерывания).
- Буферизация
- Проблема выделенных (принтер) и невыделенных (диск) устройств - принтер должен предоставляться только одному пользователю, а диск многим. ОС должна решать все возникающие проблемы.
Три основных способа осуществления операций ввода-вывода:
- Программный ввод-вывод
- Управляемый прерываниями ввод-вывод
- Ввод-вывод с использованием DMA
Рассмотрим их подробнее.