Операционные системы Управление внешними устройствами Управление внешними устройствами. Архитектура ЦП ОЗУ Внешнее устройство 1. Непосредственное управление внешними устройствами центральным процессором ОЗУ ЦП контроллер внешнего устройства Внешние устройства 2. Синхронное управление внешними устройствами использованием контроллеров внешних устройств 3. Асинхронное управление внешними устройствами с использованием контроллеров внешних устройств Управление внешними устройствами. Архитектура ОЗУ ЦП DMA контроллер + контроллер или процессор ввода/вывода Внешнее устройство 4. Использование контроллера прямого доступа к памяти (DMA) при обмене. 5. Управление внешними устройствами с использованием процессора или канала ввода/вывода. Программное управление внешними устройствами Драйверы логических устройств Драйверы физических устройств Программы обработки прерываний Аппаратура Программное управление внешними устройствами • унификация программных интерфейсов доступа к внешним устройствам (унификация именования, абстрагирование от свойств конкретных устройств) • обеспечение конкретной модели синхронизации при выполнении обмена (синхронный, асинхронный обмен) • обработка возникающих ошибок (индикация ошибки, локализация ошибки, попытка исправления ситуации); • буферизация обмена • обеспечение стратегии доступа к устройству (распределенный доступ, монопольный доступ); • планирование выполнения операций обмена Планирование дисковых обменов Рассмотрим модельную ситуацию: головка HDD позиционирована на дорожке 15 Очередь запросов к дорожкам: 4, 40, 11, 35, 7, 14 FIFO Путь L головки 11 15 4 36 4 40 40 11 29 11 35 24 28 35 7 7 7 14 общ. 135 средн. 22,5 0 4 7 11 14 15 35 40 Планирование дисковых обменов Shortest Service Time First — «жадный» алгоритм — на каждом шаге поиск обмена с минимальным перемещением SSTF LIFO Путь L головки 1 15 14 3 14 11 4 11 7 3 74 31 4 35 5 35 40 общ. 47 средн. 7,83 Путь L головки 1 15 14 7 14 7 28 7 35 35 11 24 11 40 29 36 40 4 общ. 126 средн. 20,83 Планирование дисковых обменов PRI — алгоритм, основанный на приоритетах процессов. SCAN Путь L головки 15 35 20 5 35 40 40 14 26 3 14 11 4 11 7 3 74 общ. 61 средн. 10,16 «Лифт» — сначала «движение» в одну сторону до «упора», затем в другую, также до «упора» Для набора запросов перемещений 2 число_дорожек Планирование дисковых обменов С-SCAN Путь L головки 11 15 4 3 47 4 7 11 3 11 14 14 35 21 5 35 40 общ. 47 средн. 7,83 Циклическое сканирование Сканирование в одном направлении. Ищем минимальный номер дорожки, затем «движемся наверх» Планирование дисковых обменов N-step-SCAN Разделение очереди на подочереди длины N запросов каждая (из соображений FIFO). Последовательная обработка очередей. Обрабатываемая очередь не обновляется. Обновление очередей, отличных от обрабатываемой. Борьба с «залипанием» головки (интенсивный обмен с одной и той же дорожкой). RAID системы RAID (Redundant Array of Independent (Inexpensive) Disks) — избыточный массив независимых (недорогих) дисков (1987, Беркли, Калифорния, США). RAID система — набор физических дисковых устройств, рассматриваемых операционной системой, как единое дисковое устройство (данные распределяются по физическим устройствам, образуется избыточная информация, используемая для контроля и восстановления информации). Уровни RAID полоса 0 полоса 1 полоса 2 полоса 3 полоса 4 полоса 5 полоса 6 полоса 7 полоса 8 полоса 9 полоса 10 полоса 11 полоса 12 полоса 13 полоса 14 полоса 15 RAID 0 (без избыточности) полоса 0 полоса 1 полоса 2 полоса 3 полоса 0 полоса 1 полоса 2 полоса 3 полоса 4 полоса 5 полоса 6 полоса 7 полоса 4 полоса 5 полоса 6 полоса 7 полоса 8 полоса 9 полоса 10 полоса 11 полоса 8 полоса 9 полоса 10 полоса 11 полоса 12 полоса 13 полоса 14 полоса 15 полоса 12 полоса 13 полоса 14 полоса 15 RAID 1 (зеркалирование) Уровни RAID b0 b1 b2 b3 f0(b) f1(b) f2(b) RAID 2 избыточность с кодами Хэмминга Пример: 4 диска данных, один — четности: Потеря данных на первом диске b0 b1 b2 b3 RAID 3 (четность с чередующимися битами) P(b) X4(i) = X3(i) XOR X2(i) XOR X1(i) XOR X0(i) X1(i) = X4(i) XOR X3(i) XOR X2(i) XOR X0(i) Уровни RAID полоса 0 полоса 1 полоса 2 полоса 3 P(0-3) полоса 4 полоса 5 полоса 6 полоса 7 P(4-7) полоса 8 полоса 9 полоса 10 полоса 11 P(8-11) полоса 12 полоса 13 полоса 14 полоса 15 P(12-15) RAID 4 Пример: 4 диска данных, один – четности: Изначально: X4(i) = X3(i) XOR X2(i) XOR X1(i) XOR X0(i) После обновления полосы на диске X1: X4new(i) = X4(i) XOR X1(i) XOR X1new(i) Уровни RAID полоса 0 полоса 1 полоса 2 полоса 3 P(0-3) полоса 4 полоса 5 полоса 6 P(4-7) полоса 7 полоса 8 полоса 9 P(8-11) полоса 10 полоса 11 полоса 12 P(12-15) полоса 13 полоса 14 полоса 15 P(16-19) полоса 16 полоса 17 полоса 18 полоса 19 RAID 5 (распределенная четность — циклическое распределение «четности») Уровни RAID полоса 0 полоса 1 полоса 2 полоса 3 P(0-3) Q(0-3) полоса 4 полоса 5 полоса 6 P(4-7) Q(4-7) полоса 7 полоса 8 полоса 9 P(8-11) Q(8-11) полоса 10 полоса 11 полоса 12 P(12-15) Q(12-15) полоса 13 полоса 14 полоса 15 RAID 6 (двойная избыточность — циклическое распределение четности с использованием двух схем контроля: N+2 дисков) UNIX: Работа с внешними устройствами 1. Файлы устройств, драйверы 1.1. 1.2. 1.3. 1.4. Файлы устройств Системные таблицы драйверов устройств Ситуации, вызывающие обращение к функциям драйвера Включение/удаление драйверов в системе 2. Организация обмена данных с файлами 3. Буферизация при блок-ориентированном обмене 4. Борьба со сбоями Файлы устройств, драйверы • Иерархия драйверов • Специальные файлы устройств (/dev) • Байт-ориентированные устройства • Блок-ориентированные устройства Файловая система Блок-ориентированные устройства Оперативная память Байт-ориентированный интерфейс обмена Блок-ориентированный интерфейс обмена Файлы устройств • Содержимое файлов устройств размещается исключительно в соответствующем индексном дескрипторе • Структура ИД файла устройства: • «Старший номер» (major number) устройства • Тип файла устройства • «Младший номер» (minor number) устройства • Системные таблицы драйверов устройств: • bdevsw • cdevsw Системные таблицы драйверов устройств • Запись таблицы — коммутатор устройства • Типовой набор точек входа в драйвер: • • • • • open(), close() read(), write() ioctl() intr() strategy() Ситуации, вызывающие обращение к функциям драйвера • Старт системы, определение ядром состава доступных устройств • Обработка запроса ввода/вывода • Обработка прерывания, связанного с данным устройством • Выполнение специальных команд управления Включение/удаление драйверов в систему • «Жёсткое», статистическое встраивание драйверов в код ядра • Динамическое включение драйвера в систему • Загрузка и динамическое связывание драйвера с кодом ядра • Инициализация драйвера и соответствующего ему устройства Организация обмена данными с файлами • Таблица индексных дескрипторов открытых файлов (размещается в памяти ядра ОС) • Таблица файлов (размещается в памяти ОС) • Таблица открытых файлов Пример ТОФ 1 ТИДОФ 12 Дескрипт. ТФ 12 pointer1 1 pointer2 name ТОФ 3 name ТОФ 2 name fork Буферизация при блокориентированном обмене 1. Поиск заданного блока в буферном пуле. Нашли2. 3. 4. 5. переходим на шаг 4 Поиск буфера в буферном пуле для чтения и размещения заданного блока Чтение блока в найденный буфер Изменение счётчика времени во всех буферах Содержимое буфера передаётся в качестве результата Буферизация при блокориентированном обмене • Оптимизация работы ОС, за счет минимизации реальных обращений к физическому устройству • Недостатки: • Критичность к несанкционированным отключениям питания • Разорванность во времени факта обращения к системе за обменом и реальным обменом Борьба со сбоями • Наличие параметра, определяющего периоды времени, через которые осуществляется сброс системных данных, который может оперативно меняться • Пользовательская команда SYNC • Избыточность системы, позволяющая восстанавливать информацию