Одной из главных задач ОС является обеспечение обмена данными между приложениями и периферийными устройствами компьютера. В современной ОС функции обмена данными с периферийными устройствами выполняет подсистема ввода-вывода. Основными компонентами подсистемы ввода-вывода являются драйверы, управляющие внешними устройствами, и файловая система.
Устройства ввода-вывода делятся на два типа: блок-ориентированные устройства (хранят ин-формацию в блоках фиксированного размера, каждый из которых имеет свой собственный адрес) и байт-ориентированные устройства (не адресуемы и не позволяют производить операцию поиска, они генерируют или потребляют последовательность байтов).
Внешнее устройство обычно состоит из механического (само устройство) и электронного компонента (контроллером устройства).
ОС выполняет ввод-вывод, записывая команды в регистры контроллера. Когда команда принята, процессор оставляет контроллер и занимается другой работой. При завершении команды контроллер организует прерывание для того, чтобы передать управление процессором ОС, которая должна проверить результаты операции. Процессор получает результаты и статус устройства, читая информацию из регистров контроллера.
|
|
Ошибки при вводе-выводе следует обрабатывать как можно ближе к аппаратуре. Если контроллер обнаруживает ошибку чтения, то он должен попытаться ее скорректировать. Если же это ему не удается, то исправлением ошибок должен заняться драйвер устройства. И только если нижний уровень не может справиться с ошибкой, он сообщает об ошибке верхнему уровню.
Большинство операций физического ввода-вывода выполняется асинхронно – процессор начинает передачу и переходит на другую работу, пока не наступает прерывание.
ПО ввода-вывода можно разделить на четы-ре слоя:
1. Обработка прерываний.
2. Драйверы устройств.
3. Независимый от устройств слой операционной системы.
4. Пользовательский слой программного обеспечения.