Дисковое прерывание 13h. Структуры дисков. Физическая структура диска. Логические диски
Функции дискового сервиса вызываются программным прерыванием Int 13h.
Традиционно дисковый сервис подразделяет физические диски на дискеты (diskette) и фиксированные диски (fixed disk). Набор функций для этих классов устройств несколько различается как по составу, так и по реализации. Классы различаются по диапазонам номеров физических устройств: для дискет отводятся номера 0-7Fh (реально только 0-3), а для фиксированных дисков — 80h-FFh.
Контроллеры дисковых интерфейсов, имеющие в своем составе дополнительные модули BIOS, перехватывают вектор Int 13h, беря на себя обслуживание своих устройств. Когда в IBM PC/XT появились жесткие диски со своим контроллером, модуль BIOS этого контроллера, инициализирующийся во время теста POST, вставал на место Int 13 h, а указатель на исходный обработчик дискового сервиса (драйвер НГМД из системной BIOS) сохранялся на месте Int 40h. Хотя поддержка жестких дисков давно уже включена в системную BIOS, ради совместимости возможность использования прерывания Int 40h для вызова драйвера гибких дисков сохраняется. Интерфейс этого вызова совпадает clnt 13h,но номер устройства (в регистре DL) не должен превышать 7Fh.
Кроме функций дискового сервиса (Int 13h)c дисковыми устройствами связаны еще и векторы, обслуживающие аппаратные прерывания от контроллера НГМД — Int 0Eh (линия IRQ 6) и от контроллера жестких дисков — Int 76h (линия IRQ 14). При наличии двухканального порта АТА второй канал обычно задействует линию IRQ 15 (вектор 77h). В XT контроллер жестких дисков занимал линию IRQ 5 (вектор ODh). Дополнительные контроллеры дисков могут использовать и другие прерывания. Аппаратные прерывания вырабатываются контроллерами по завершении (нормальному и аварийному) внутренних операций. На эти прерывания BIOS не реагирует, а при инициализации их векторы направляются на программную заглушку (инструкцию IRET).
Стандартные драйверы дисковых функций BIOS (включая и расширенный сервис) имеют однозадачное происхождение. Во время выполнения функции значительное процессорное время может затрачиваться на ожидание завершения операции устройством. Драйверы многозадачного режима построены иначе: у них есть вызывающая часть, инициализирующая начало операции, и обработчик аппаратного прерывания от контроллера, сообщающий операционной системе о выполнении операции и результате.
Традиционный сервис BIOS
Традиционный дисковый сервис работает в 16-разрядном режиме процессора, все параметры вызова передаются через регистры процессора. Адрес сектора задается в системе CHS и размещен весьма специфично. Сервис вызывается программным прерыванием Int 13h, при вызове принимаются следующие соглашения:
♦ номер функции задается в регистре АН и не должен превышать 3Fh;
♦ логический номер диска задается в регистре DL (бит 7 = 0 — признак обращения к НГМД);
♦ номер цилиндра (О-1023) задается в регистре СН (младшие8бит)и СЦ7:6] (старшие 2 бита);
♦ номер головки (0-255) задается в регистре DH;
♦ номер начального сектора (1-63) задается в регистре CL [5 :0];
♦ количество секторов, участвующих в операции, 8 бит — в регистре AL (0-255);
♦ указатель на начало буфера оперативной памяти для считываемых и записы
ваемых данных (address of buffer) — в регистрах Е S: ВХ;
♦ результат выполнения операции определяется по флагу переноса: С F = 0 —успешное выполнение операции, CF = 1 — обнаружены ошибки (код состояния возвращается в регистре АН, код завершения последней операции с дискетами хранится по адресу 40:4lh, с жесткими дисками — 40:74h);
♦ таблица параметров диска для дискет (DPT) задана указателем в памяти по
адресу 0:78h, для жестких дисков (HDPT) — 0:104h или 0:118h.
Расширенный сервис BIOS
Чтобы получить возможность работы через BIOS с дисками объема более 8,4 Гбайт, потребовалось ввести новые функции дискового сервиса.
Расширенный дисковый сервис BIOS, Enhanced Disk Drive Services (EDD), продвигаемый фирмой Phoenix Technologies LTD, реализуется многими разработчиками BIOS и устройств массовой памяти. Он позволяет работать с устройствами, имеющими объем до 264 секторов, эффективно используя архитектуру процессоров IA-32 и IA-64. Сервис оперирует линейным логическим адресом сектора (LBA). Вместо традиционных таблиц параметров дисков в нем используются новые, дающие исчерпывающую информацию об устройствах, их физической организации и интерфейсе. Устройства могут иметь сменные носители и сами быть съемными в процессе работы компьютера (например, подключенные к шине USB или IEEE1394), так что понятие «сменяемость носителя» несколько размывается. Такие устройства должны поддерживать механизм уведомления о смене носителя и программное блокирование смены носителя. По прогнозам емкости данного интерфейса должно хватить на 15-20 лет.
Расширения BIOS Int 13h используют ОС Windows 95, Windows 98, Windows 2000. Правда, это использование ограничено лишь начальной загрузкой и процессом установки (FDISK, FORMAT), поскольку в регулярной работе применяются собственные 32-разрядные драйверы. Расширения BIOS Int 13h не используют DOS (все версии), Windows 3. lx, Windows NT, Novell NetWare, OS/2 Warp, Linux, Unix. В настоящее время определены три набора функций:
♦ доступ к фиксированным дискам (fixed disk access subset) — функции 41-44h,47h и 48h;
♦ блокировка и смена носителя (device locking and ej ecting subset) — функции 41 h,45h, 46h, 48h и 49h;
♦ поддержка расширенных дисков (enhanced disk drive (EDD) support subset) —функции 41h и 48h.
Расширенный сервис, как и традиционный, вызывается программным прерыванием I n t 13 h с номерами функций свыше 3Fh (регистр АН); номер устройства (регистр DL) допустим в диапазоне 80h-FFh. Основные параметры вызова — начальный адрес блока, число секторов для передачи и адрес буфера — передаются через адресный пакет (device address packet). Формат пакета в сравнении с передачей параметров традиционного сервиса через регистры процессора довольно просторный.
Поскольку расширение BIOS может и отсутствовать, имеется функция проверки его наличия (номер 41h). Расширение может действовать избирательно (не для всех устройств), так что проверку надо производить для конкретного устройства, интересующего программу. Проверка дает номер версии расширения и карту поддерживаемых наборов функций. Функции расширенного чтения, записи, верификации и поиска (42h, 43h, 44h и 47h) по смыслу не отличаются от их аналогов из традиционного сервиса. Для работы со сменными носителями введены функции отпирания/запирания, извлечения и проверки факта смены носителя (45h, 46h и 49h). От идеологии традиционного сервиса сильно отличается функция получения параметров устройства (48h). Она возвращает в ОЗУ буфер с набором параметров и детальным описанием устройства, позволяющим ОС и приложениям работать с ним, минуя BIOS. Функция установка аппаратной конфигурации (4Eh) позволяет управлять режимом передачи (РЮ, DMA), а также предварительной выборкой (поиском).
Для эмуляции дисков на загружаемых CD-ROM к сервисам BIOS Int 13h добавляется несколько новых функций:
♦ начать/завершить эмуляцию диска (4Ah/4Bh), начать эмуляцию диска и вы
полнить загрузку (4Ch);
♦ прочитать секторы загрузочного каталога (4Dh); функции 41-48h позволяют обращаться к любым логическим секторам CD-ROM (в режиме LBA с размером сектора 2048 байт), когда для данного привода включена эмуляция.
Физическая структура жёстких дисков предполагает разбиение диска на рабочие поверхности, дорожки и секторы, номера которых образуют адрес, по которому на диске хранится информация.
Логическая структура жёсткого диска предполагает деление общего дискового пространства на области, каждая из которых хранит специфическую информацию: MBR(Master Boot Record), BR (Boot Record), FAT1 и FAT2, Root Directory и область для данных.
MBR-это главный загрузочный сектор, это первый сектор на диске, с чтения его содержимого начинается работа компьютера при включении или перезагрузке. MBR состоит из двух частей: в первой части записана программа IPL1- Initial Program Loading 1, при выполнении которой компьютер исследует содержимое второй части MBR- таблицу разделов диска Partition Table, в которой указаны номера первого и последнего секторов каждого из разделов диска. Количество разделов может быть от 1 до 4-х, когда диск условно разделён на 4 логических диска. В Partition Table также хранится информация о типе файловой системы раздела и признак того - является раздел загрузочным или нет. Каждый из разделов жёсткого диска содержит сектор BR (Boot Record), две копии File Allocation Table (FAT )- FAT1 и FAT2, корневой каталог Root Directory и область данных.
Сектор BR (Boot Record)- это первый сектор раздела, в котором записана одноимённая программа Boot Record, являющаяся частью операционной системы и предназначенная для запуска на выполнение остальных программ операционной системы, хранящихся на диске. BR имеется во всех разделах жёсткого диска, хотя не все разделы содержат файлы операционной системы, т.е. не все разделы являются "системными".
Таблица FAT (File Allocation Table) – таблица размещения файлов, хранит записи длиной 16 или 32 бита, хранящие информацию о месторасположении кластеров, на которых записан каждый файл. Если FAT повреждается, то компьютер теряет доступ к файлу и на диске появляются "потерянные кластеры"- т.е. секторы с бесполезной информацией, которую невозможно прочесть.
Root Directory- корневой каталог диска, содержит записи с информацией о каждом файле – имя, тип, объём, дата и время создания, атрибут файла (системный, скрытый, только для чтения, архивный) и хранит указатель на первый кластер файла. Корневой каталог является самым «главным» каталогом в разделе диска, все остальные каталоги и файлы располагаются по иерархии ниже его.
Data Area- область для данных- основная область раздела диска, хранит сами файлы.
Физическая и логическая структуры жёсткого диска создаются в процессе форматирования. В отличие от дискет, процесс форматирования жёсткого диска разбит на 2 этапа- низкоуровневое форматирование и форматирование высокого уровня. Низкоуровневое форматирование выполняется один раз на заводе-изготовителе. Форматирование высокого уровня выполняется утилитой Format.exe, хранящейся на загрузочной дискете, либо соответствующими средствами Windows.
Дата добавления: 2021-01-11; просмотров: 579;