Независимое от устройств программное обеспечение ввода-вывода
Функции независимого от устройств программного обеспечения ввода-вывода:
· Единообразный интерфейс для драйверов устройств,
· Буферизация
· Сообщения об ошибках
· Захват и освобождение выделенных устройств (блокирование)
· Размер блока, не зависящий от устройств
Единообразный интерфейс для драйверов устройств
Кроме интерфейса, в него также входят проблемы,
· именование устройств
· защита устройств
Буферизация
Рассмотрим несколько примеров буферизации.
a) Не буферизованный ввод - после ввода каждого символа происходит прерывание
b) Буферизация в пространстве пользователя - приходится держать загруженными необходимые страницы памяти в физической памяти.
c) Буферизация в ядре с копированием в пространство пользователя - страница загружается только когда буфер ядра полный, данные из буфера ядра в буфер пользователя копируется за одну операцию. Проблема может возникнуть, когда буфер ядра полный, а страница буфера пользователя еще не загружена.
d) Двойная буферизация в ядре - если один буфер заполнен, и пока он выгружается, символы пишутся во второй буфер.
Сообщения об ошибках
Наибольшее число ошибок возникает именно от операции ввода-вывода, поэтому их нужно определять как можно раньше. Ошибки могут быть очень разные в зависимости от устройств.
Захват и освобождение выделенных устройств
Для устройств (принтер) с которыми должен работать в одно время только один процесс, необходима возможность захвата и освобождения устройств. Когда один процесс занял устройство, остальные встают в очередь.
Независимый от устройств размер блока
Размер блока должен быть одинаковый для верхних уровней, и не зависеть от устройств (размеров секторов на диске).
Дата добавления: 2014-12-21; просмотров: 925;