- •Синхронизация скоростей обмена данными
- •Разделение устройств и данных между процессами
- •Поддержка синхронных и асинхронных операций ввода-вывода
- •Менеджер ввода-вывода
- •Способы доступа к устройствам ввода-вывода
- •Способы реализации ввода - вывода
- •Драйверы
- •Функции драйвера
- •Многоуровневые драйверы
- •Байт и Блок -ориентированность
- •Динамическая загрузка и выгрузка драйверов
- •Типы файлов
- •Создавать,
- •Иерархия файловой системы
- •Имена файлов
- •Монтирование
- •Атрибуты файлов
- •Вопросы по модулю №2
Способы реализации ввода - вывода
1. Программный ввод-вывод – когда всю работу выполняет ЦП. Процесс пользователя обращается к системному вызову и получает устройство во временное пользование. Если устройство, занято, процесс ждет его освобождения. Затем в цикле происходит процесс ввода-вывода, и после его окончания управление возвращается в процесс пользователя.
Основной недостаток – много времени ЦП тратит на ожидание готовности ВУ (например, принтера).
Достоинство – очень простая реализация.
2. Управляемый прерываниями ввод-вывод – позволяет ЦП делать что-либо в то время, пока ВУ переходит в состояние готовности. Когда ВУ (принтер) готово принять следующую порцию, оно инициирует прерывание. Это прерывание вызывает остановку текущего процесса в ЦП и сохранение его состояния. Затем запускается процедура обработки прерывания, которая затем возвращает управление ЦП.
Недостаток такой схемы – прерывания происходят при вводе-выводе каждой единицы информации (например символа). Обрабатывать приходится каждое прерывание.
3. Ввод-вывод с использованием DMA – ЦП полностью освобождается от реализации I/O.
Недостаток такого способа – DMA медленнее ЦП.
Если ЦП не загружен, то оба первых метода будут предпочтительнее.
Драйверы
Драйвер – программа, управляющая конкретной моделью физического или виртуального устройства и учитывающая все его особенности.
(Псевдоустройства: псевдофайловая система,
Изначально «Драйвер» - программный модуль, который:
входит в состав ядра ОС;
управляет ВУ, взаимодействуя с его контроллером с помощью команд;
обрабатывает прерывания от контроллера устройства;
экранирует от программиста низкоуровневые детали управления и организации данных ВУ;
взаимодействует с другими модулями ядра ОС с помощью установленного интерфейса, описывающего:
формат передаваемых данных,
структуру буферов,
способы включения драйвера в состав ОС,
способы вызова драйвера,
набор общих процедур подсистемы I/O, которыми драйвер может пользоваться, и т. п.
Для каждого драйвера существует 2 вида интерфейсов:
1. Драйвер – ядро;
2. Драйвер – пользовательский процесс.
Поэтому драйвер состоит минимум из 2 нитей:
Основная (для обработки запросов процессов).
Обработчик прерываний. ISR (Interrupt Service Routine), которая и вызывается при поступлении запроса от соответствующего устройства диспетчером прерываний.
Функции драйвера
Инициализация и деинициализация драйвера (освобождение занятых им ресурсов во время работы и подготовка устройства (например парковка головок)).
Проверка наличия устройства.
Инициализация копии драйвера (для управления несколькими однотипными устройствами).
Выгрузка драйвера как модуля (освобождение всех ресурсов).
Открытие устройства и Закрытие (освобождение устройства)..
Чтение и Запись данных в устройство.
Задание установок устройству (например видеорежим).
Отображение устройства в адресное пространство процесса (для установки прав на операции с устройством как для процесса).
Драйвер размещается в адресном пространстве ядра ОС и имеет доступ к для записи к сегментам данных как пользовательских программ, так и ядра. Из-за этого для уменьшения риска разрушения ОС драйвер пишут из двух частей:
Собственно драйвер, работающий в режиме ядра (только для обмена данными с устройством).
Программу, интерпретирующую полученные данные и формирующую команды для устройства (ошибка в этой программе не будет фатальной для ОС, так как исполняется в режиме пользователя).