Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОС / 2. ОС - Управление устройствами

.pdf
Скачиваний:
57
Добавлен:
01.06.2015
Размер:
393.99 Кб
Скачать

41

Пример символьного устройства: клавиатура

Буфер

клавиатуры

Сигнал прерывания 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.

Операционные системы. Управление устройствами