ОС / 2. ОС - Управление устройствами
.pdf41
Пример символьного устройства: клавиатура
Буфер
клавиатуры
Сигнал прерывания 09h
|
Обработчик |
|
прерывания 09h |
|
BIOS |
Порт клавиатуры |
Состояние |
|
клавиатуры |
Обработчик прерывания 16h BIOS
Операционные системы. Управление устройствами
42
Пример символьного устройства: клавиатура
При нажатии клавиши в порт клавиатуры помещается сканкод нажатия клавиши и генерируется аппаратное прерывание 09h.
При отпускании клавиши в порт помещается скан-код отпускания клавиши и опять генерируется аппаратное прерывание 09h.
Обработчик прерывания 09h:
для "символьных" клавиш – определяет введенный символ и помещает его код в буфер клавиатуры BIOS;
для "сдвиговых" клавиш (Ctrl, Shift, Alt, Caps Lock и т.п.) – запоминает текущее состояние клавиатуры;
делает еще много хитрых вещей.
Обработчик программного прерывания 16h выполняет функции ввода с клавиатуры с ожиданием или без ожидания, читает состояние клавиатуры и др.
Операционные системы. Управление устройствами
43
Пример блочного устройства: жесткий диск
Структура жесткого диска
Дорожки
(цилиндры)
Начало
дорожек
Секторы
Поверхности
Операционные системы. Управление устройствами
44
Пример блочного устройства: жесткий диск
|
|
Структура сектора диска |
|
|
|
Межсекторный |
Заголовок |
|
Контро |
Межсекторный |
Заголовок |
сектора |
Данные |
льная |
сектора |
||
промежуток |
N |
|
сумма |
промежуток |
N+1 |
|
|
|
Низкоуровневое форматирование: разметка дорожки на секторы. Выполняется, исходя из известной скорости вращения диска.
Для всех прочих операций с диском сектор – минимальная единица чтения или записи.
Физический адрес сектора (в заголовке):
(номер_цилиндра, номер_поверхности, номер_сектора).
Начальный сектор: (0, 0, 1).
Операционные системы. Управление устройствами
45
Разделы и логические тома
Структура дискеты
BOOT |
Данные |
|
|
Структура жесткого диска
Расширенный раздел 1 Расширенный раздел 2
MBR |
BOOT |
Данные |
MBR |
BOOT |
Данные |
MBR |
BOOT |
Данные |
Обычный или |
Обычный или |
Обычный или |
большой раздел 1 |
большой раздел 2 |
большой раздел 3 |
BOOT-сектор содержит информацию о диске (число секторов, метка тома, тип файловой системы и т.п.), а также, возможно, программу начальной загрузки.
Секторы данных нумеруются от 0 до максимального значения (≤ 65535).
MBR (Master Boot Record) – кроме того, содержит таблицу разделов диска, их размеры и физические адреса
Операционные системы. Управление устройствами
46
Разделы и логические тома
Обычный раздел начинается с BOOT-сектора, за которым идут секторы данных (≤ 65535, т.е. двухбайтовая нумерация секторов).
Большой раздел – аналогично, но нумерация секторов четырехбайтовая (от 0 до 232 – 1).
Расширенный раздел – начинается с MBR, т.е. по структуре аналогичен целому диску, но в этой MBR может быть описано не более 2 разделов.
Как правило, в MBR расширенного раздела описан один большой или обычный раздел и один расширенный. Таким образом, на одном физическом диске можно создать матрёшку из неограниченного количества разделов.
Обычные и большие разделы называются также логическими томами или логическими дисками. В Windows они нумеруются буквами A, B, C, D, …
Операционные системы. Управление устройствами
47
Средства доступа к дискам
Контроллер диска представлен в архитектуре компьютера несколькими регистрами, доступными через порты компьютера.
В эти порты перед выполнением операции заносятся код операции, номер физического диска, адреса на диске и в памяти, размер данных.
BIOS предоставляет программное прерывание int 13h для выполнения операций с дисками. При этом используется физическая адресация дисков и секторов.
Операции с логическими томами выполняются операционной системой. При этом система может использовать прерывания BIOS.
Прикладные программы редко обращаются к диску как к устройству. Вместо этого они работают с файлами, которые ОС должна отображать на секторы дисков.
Операционные системы. Управление устройствами
48
Управление устройствами в Windows
В Windows используется многоуровневая структура драйверов.
Высокоуровневые драйверы не работают с аппаратными прерываниями, вместо этого они обращаются к драйверам более низкого уровня.
Структура драйверов всех уровней подчинена стандартам WDM (Windows Driver Model).
Операционные системы. Управление устройствами
49
Управление устройствами в Windows
Некоторые интересные типы драйверов Windows:
Драйверы GDI (Graphic Device Interface) – высокоуровневые драйверы графических устройств (мониторов, принтеров, плоттеров). Они транслируют графические примитивы Windows в команды конкретных устройств.
Драйверы клавиатуры и мыши генерируют сообщения о нажатии/отпускании клавиш или кнопок мыши, о перемещениях мыши.
Операционные системы. Управление устройствами
50
Доступ к устройствам в Windows
Программа может обращаться к устройствам (если ее запустил администратор и он знает, что делает). Для этого используются те же функции, что для работы с файлами (открытие, закрытие, чтение, запись), но вместо имени файла указывается, например, «\\.\C:» – логический диск C или даже «\\.\PHYSICALDRIVE0» – первый физический диск компьютера.
Для выполнения более специфических действий (форматирование диска, настройка параметров принтера или модема) используется системная
функция DeviceIoControl.
Операционные системы. Управление устройствами