Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_лекция.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.49 Mб
Скачать

Монтирование файловых систем vfs

15112012 Лекция 10 Управление вводом/выводом

http://bourabai.kz/os/lecture16.htm

Устройства ввода/вывода делятся на два типа:

  1. Блок-ориентированное устройство – хранит информацию в блоках фиксированного размера, каждый из которых имеет собственный адрес. Пример: жесткий диск.

  2. Байт-ориентированное устройство – не адресуемо и генерирует или потребляет последовательности байтов. Пример: монитор, сканер, сетевой адаптер.

Внешнее устройство, как правило, состоит из механического и электронного компонента (контроллер или адаптер). Каждый контроллер имеет несколько регистров, использующихся для взаимодействия с ЦП и являющихся частью физического адресного пространства. Адреса регистров ввода/вывода могут образовывать свое адресное пространство.

Программное обеспечение ввод/вывода представляет собой несколько уровней, экранирующих особенности аппаратуры. Большинство операций ввода/вывода выполняется асинхронно, но представляется для пользовательских программ в синхронном виде.

Функциями подсистемного ввода/вывода являются:

  1. изоляция устройств и взаимодействия с ними

  2. единообразное именование

  3. обработка ошибок

Большая часть ПО ввода/вывода не зависит от устройств и выполняет функции:

  1. Обеспечение общего интерфейса к драйверам устройств.

  2. Именование устройств.

  3. Защита устройств.

  4. Обеспечение независимого размера блоков.

  5. Буферизация.

  6. Распределение памяти для блок-ориентированных устройств.

  7. Распределение и освобождение выделенных устройств.

  8. Уведомление об ошибках.

Пользовательский слой ПО ввода/вывода включает:

  • системные библиотеки;

  • спулинг (spooling) – это способ работы с выделенными устройствами в мультипрограммной среде. Спул – это буфер, содержащий входные или выходные данные устройства, разделяемый системными средствами между процессами.

С каждым устройством связана очередь запросов процессов, находящихся в состоянии ожидания, и запросов, выполняющихся асинхронно. Каждая очередь управляется отдельно в соответствии с системой планирования.

Задача планирования использования устройства может быть реализована:

  1. В базовой подсистеме ввода/вывода.

  2. Внутри драйвера соответствующего устройства.

Приложения, библиотечные функции – пользовательский слой;

Системные вызовы, система буферных данных – независимый слой;

Драйвер устройств, обработка прерываний – зависимый слой.

Драйверы устройств

Драйвер – это программа/программный модуль, управляющий внешним устройством и содержащий весь зависимый от устройства код.

При реализации запроса драйвера он:

  1. Преобразуется из абстрактной формы в конкретную.

  2. Передается контроллеру записью в его регистр.

  3. Принимается решение о блокировке драйвера.

Драйверы являются частью ядра системы, исполняются в привилегированном режиме и имеют доступ на запись с элементом данных программ и части ядра.

Для каждого класса устройств используется фиксированный набор операций (команд). Базовый набор команд может быть расширен при помощи:

  1. Интерпретация данных в пользовательскую программу

  2. Использование терминальной БД.

  3. Использование фильтров – заключается в использовании промежуточного языка команд интерпретируемого фильтром.

Обработку запроса можно разделить на три фазы:

  1. Фаза предобработки:

    1. Проверка допустимости параметров

    2. Копирование или отображение данных из пользовательского АП в системное

    3. Преобразование выводимых данных

    4. Обращение к процедурам драйвера и передача запроса

  2. Исполнение запросов

  3. Постобработка

    1. Анализ результата операции

    2. Действие по восстановлению в случае неуспеха

    3. Копирование или отображение данных в пользовательское АП (преобразование данных)

    4. Оповещение программы о завершении запроса