- •5 Пара. Управление вводом-выводом (слайд №1) Система управления вводом-выводом
- •Физические принципы организации ввода-вывода
- •Общие сведения об архитектуре компьютера (слайд №4)
- •Структура контроллера устройства
- •Опрос устройств
- •Прерывания
- •Исключительные ситуации
- •Прямой доступ к памяти (Direct Memory Access - dma)
- •Логические принципы организации ввода-вывода
- •Задачи программного обеспечения ввода-вывода
- •Структура системы ввода-вывода
- •Функции базовой подсистемы ввода-вывода
- •Блокирующиеся, не блокирующиеся и асинхронные системные вызовы
- •Буферизация и кэширование
- •Спулинг и захват устройств
- •Планирование запросов
- •Обобщение уровней и функций ввода-вывода
- •Аппаратно зависимые и независимые свойства ос, драйверы. (слайд №20) Машинно-(не)зависимые компоненты ос
- •Переносимость операционной системы
- •Аппаратная платформа компьютера
- •Платформы-бренды (слайд №23)
- •Несовместимые аппаратные платформы
- •Несовместимость кода, выполняемого процессором
- •Несовместимость устройств и материнских плат
- •Кроссплатформенное программное обеспечение
- •Сравнение архитектур управления аппаратными устройствами
- •Архитектура управления устройствами в Windows (слайд №24)
- •Архитектура управления устройствами в Linux (слайд №25)
- •Драйвер (слайд №26)
- •Идеология построения драйверов
- •Интеграция драйверов
- •-Принципы, заложенные в подсистему управления вводом-выводом в ос unix
- •-Ввод и вывод в Linux
- •-Алгоритмы планирования запросов к жесткому диску
- •-Строение жесткого диска и параметры планирования
- •-Алгоритм First Come First Served (fcfs)
- •-АлгоритмShortSeekTimeFirst (sstf)
- •-Алгоритмы сканирования (scan, c-scan, look, c-look)
Сравнение архитектур управления аппаратными устройствами
Методы управления устройствами в Windows и Linux различны
Архитектура управления устройствами в Windows (слайд №24)
В Windows связь между пользовательским приложением и драйверами устройств осуществляется при помощи подсистемы ввода/вывода, которая также предоставляет инфраструктуру для поддержки драйверов устройств. Драйверы устройств обеспечивают интерфейс ввода/вывода для конкретных аппаратных устройств (см. рисунок 1).
Рисунок 1. Архитектура управления устройствами в Windows
При управлении устройствами операции ввода/вывода осуществляются при помощи IRP (I/O Request Packet - Пакет запроса ввода/вывода). Менеджер ввода/вывода создает IRP и отправляет его на вершину стека. После этого драйверы устройств получают местоположение в стеке пакета IRP, содержащего параметры для данного запроса ввода/вывода. В соответствии с требованиями, указанными в IRP (такими как create, read, write, devioctl, cleanup, или close), каждый драйвер выполняет свое задание при помощи аппаратных интерфейсов.
Архитектура управления устройствами в Linux (слайд №25)
В Linux архитектура управления устройствами немного другая, и основное отличие заключается в том, что обычные файлы, директории, устройства и сокеты являются файлами - в Linux все является файлом. Чтобы обратиться к устройству, ядро Linux отображает вызов операции с устройством на драйвер устройства при помощи файловой системы. В Linux не существует менеджера ввода/вывода: все запросы ввода/вывода вначале поступают в файловую систему (см. рисунок 2).
Рисунок 2. Архитектура управления устройствами в Linux
Драйвер (слайд №26)
Драйвер (driver) (множественное число драйвера) - это компьютерная программа, с помощью которой другая программа (обычно операционная система) получает доступ к аппаратному обеспечению некоторого устройства. В общем случае, для использования любого устройства (как внешнего, так и внутреннего) необходим драйвер. Обычно с операционными системами поставляются драйверы для ключевых компонентов аппаратного обеспечения, без которых система не сможет работать. Однако для некоторых устройств (таких, как графическая плата или принтер) могут потребоваться специальные драйверы, обычно предоставляемые производителем устройства.
Идеология построения драйверов
Операционная система управляет некоторым «виртуальным устройством», которое понимает стандартный набор команд. Драйвер переводит эти команды в команды, которые понимает непосредственно устройство. Эта идеология называется «абстрагирование от аппаратного обеспечения».
Драйвер состоит из нескольких функций, которые обрабатывают определенные события операционной системы. Обычно это 7 основных событий:
загрузка драйвера. Тут драйвер регистрируется в системе, производит первичную инициализацию и т. п.;
выгрузка. Драйвер освобождает захваченные ресурсы - память, файлы, устройства и т. п.;
открытие драйвера. Начало основной работы. Обычно драйвер открывается программой как файл, функциями CreateFile() в Win32 или fopen() в UNIX-подобных системах;
чтение;
запись: программа читает или записывает данные из/в устройство, обслуживаемое драйвером;
закрытие: операция, обратная открытию, освобождает занятые при открытии ресурсы и уничтожает дескриптор файла;
управление вводом-выводом (англ. IOControl, IOCTL). Зачастую драйвер поддерживает интерфейс ввода-вывода, специфичный для данного устройства. С помощью этого интерфейса программа может послать специальную команду, которую поддерживает данное устройство. Например, для SCSI-устройств можно послать команду GET_INQUIRY, чтобы получить описание устройства. В Win32-системах управление осуществляется через API-функцию DeviceIoControl(). В UNIX-подобных -ioctl().