Адресация информации на жестких дисках и их разделы ([5], с.553)
Информация на жестких дисках, как известно, хранится в виде последовательностей бит, записанных по окружностям с центром на оси диска. Эти окружности называются дорожками. Если информация записывается на диск с двух сторон, то дорожки, расположенные на разных сторонах диска друг под другом называют цилиндром. Если физически дисков в накопителе несколько, то цилиндр образуют все дорожки, расположенные друг под другом на разных дисках.
(Известны диски, имеющие несколько головок на одну поверхность диска для уменьшения времени обращения к диску. В этом случае цилиндром называют также и совокупность дорожек одного диска, имеющих одинаковую позицию в зонах, обслуживаемых различными головками чтения-записи.)
Однако физические цилиндры могут не совпадать с логическими, как и количество головок, указанное в логическом описании диска, может отличаться от физического. (Например, диски IBM DPTA-37xxxxимеют по описанию цилиндр/головка/сектор 16 головок, тогда как физически у них может быть от 4-х до 10 головок.)
При вызове функций обращения к диску из дискового сервиса BIOSпринимается следующая схема адресации:
Номер дисковода (Drive Number) – задается в регистреDL(бит 7 = 0 – признак обращения к НГМД). В каждой группе (гибкие/жесткие) дисководы нумеруются начиная с нуля: (00h– дисководA:, 01h– дисководB:, 80h – дисководC:- первый жесткий диск; 81h– дисководD:- второй жесткий диск).
Номер цилиндра (Cylinder Number)– всего 10 бит: два старших в регистреCL[7:6], и 8 младших – в регистреCH.
Номер головки (Head Number) – 8 бит в регистреDH.
Номер начального сектора (Sector Number) – 6 бит в регистреCL[5:0], причем сектора нумеруются, начиная с нуля, в отличие от цилиндров и головок.
Количество секторов, участвующих в операции – 8 бит в регистре AL
Указатель на начало буфера в оперативной памяти для считываемых и записываемых данных – в регистрах ES:BX
Результат выполнения операции определяется по флагу переноса: CF=0– нет ошибок, CF=1 –есть ошибки. Код ошибки возвращается в регистрAH.
Этот же формат использован и в описании разделов диска в его главной загрузочной записи, о чем речь пойдет ниже.
Сервисные функции BIOSпозволяют выполнять все основные операции по управлению и обмену данными с диском.
Принятый формат обращения к дисковому сервису BIOSвводит ограничения на возможности обращения к дискам большого объема. Действительно, максимальный объем диска при такой схеме адресации составляет 210цилиндров по 28головок (читай - дорожек) по 26– 1 секторов, т.е. 102425663 =16515072сектора.
С учетом того, что размер сектора на жестких дисках составляет 512 байт (или 0,5 Кбайт), максимальный объем диска для функций дискового сервиса BIOSсоставит 8455716864байта или7,875 Гбайт(т.к. 1 Гбайт = 230байт = 1073741824 байта).
Однако, контроллер жестких дисков имеет только 4 бита для задания номера головки. Тогда максимальный объем диска при такой схеме адресации составит 210цилиндров лишь по 24головок по 26– 1 секторов каждая, т.е. 10241663 = 1032192 секторов. А это уже дает всего528482304 байта или504 Мбайта(т.к. 1 Мбайт = 220байт = 1048576 байт).
Для “расшивки” этого ограничения в 504 Мбайта в BIOS применяют трансляцию параметров вызова функций дискового сервисаINT 13h,преобразуя исходное задание адреса сектора в адрес, воспринимаемый контроллером диска. В тех функциях, которые сообщают параметры диска, производится обратное преобразование адреса в формате контроллера в адрес в формате вызова.
Есть два основных способа трансляции: в рамках трехмерной геометрии цилиндр – головка – сектор (CHS – Cylinder-Head-Sector)или с переходом в одномерную (сквозную) адресацию – логические адреса блоков (LBA – Logical Block Addresses). Выбор способа трансляции определяется возможностями накопителя и версиейBIOS.
Режимы трансляции в трехмерной геометрии носят названия LARGE Disk илиECHS (Extended CHS). В таком преобразовании главной задачей является установление соответствия между количеством физических цилиндров на диске (существенно превышающем 10000) и максимально возможным количеством цилиндров в формате вызова функцийBIOS, составляющем 1024 цилиндра. Задание этого соответствия возможно за счет того, что максимально возможное для контроллера количество головок у диска (16) меньше допустимого форматом вызова максимального количества – до 256 головок.
Способов такой трансляции несколько. В них определяется коэффициент пересчета номеров цилиндров что может быть сделано различными способами (например, посредством деления полного количества цилиндров на максимально допустимое в обращении к функции BIOSчисло –1024).
Этот факт служит причиной возможной несовместимости дисков, размеченных в различных версиях BIOS в режиме LARGE (ECHS).
В режиме LBA параметры стандартных вызовов транслируются в линейный адрес сектора, вычисляемый в последовательном порядке от нулевого адреса, которому соответствует первый сектор нулевой головки нулевого цилиндра. Формула вычисления адреса при этом следующая:
LBA = (CYL HDS + HD) SPT + SEC – 1,
где CYL, HD и SEC – номера цилиндра, головки и сектора в пространстве CHS, HDS – количество головок, SPT – количество секторов на дорожку.
Контроллер интерфейса ATA (IDE), с которым работают жесткие (неSCSI) в режимеLBAимеет 28-разрядный адрес сектора (логического блока), что позволяет при размере сектора в 512 байт (0,5 Кбайт) получить максимальный объем диска в 128 Гбайт.
SCSIдиски всегда используютLBA адресацию с 32-разрядным адресом, что позволяет с емкостью до 2 терабайт.
Следует помнить, что отличие преобразований в LBA от ECHS, а также для различных вариантовECHSприводят к несовместимости таких дисков.
Логическая структура диска. Разделы диска
С аппаратной точки зрения жесткий диск можно представить как совокупность секторов, адресуемых по схеме ECHSилиLBA, каждый из которых может быть считан или записан независимо от других, но только целиком. Однако прикладные программы (за исключением специальных случаев) обращаются не непосредственно к секторам дисков, а к файлам.
Организация хранения и доступа к файлам возложена на файловую систему, являющуюся частью операционной системы. Файловая система определяет также и логическую структуру диска.
Для всех используемых в ПЭВМ операционных систем информация о логической структуре диска и (возможно) о расположении на нем операционной системы записывается на первом секторе нулевой дорожки нулевого цилиндра. Этот сектор называют загрузочным – Boot Sector.
Если на диске расположена операционная система, то в загрузочном секторе должна содержаться программа загрузки операционной системы (и/или менеджер загрузки), а диск в этом случае называется системным.
На одном диске может быть и несколько операционных систем. Для предоставления такой возможности и просто для удобства организации хранения информации на диске его можно разбить не несколько независимых разделов.
Жесткий диск может иметь до четырех разделов (Partition Entries). Информация о разделах, называемая таблицей разделов илиPartition Tableхранится в конце загрузочного сектора, содержимое которого также называют главной загрузочной записью –Master Boot Record(MBR). Этот сектор во время исполненияBIOSом загрузки системы (Bootstrap)загружается по адресу7C00hи вызывается на исполнение.
В начале загрузочного сектора расположен код загрузчика, который определяет раздел с операционной системой (иначе, активный раздел) и загружает первый сектор этого раздела, содержащий уже собственно загрузчик операционной системы.
Для MBRпринята следующая структура:
байты 000h-1BDh – код определения активного раздела и загрузки егоBoot-сектора
байты 1BEh-1FDh – таблица разделов, содержащая 4 описателя разделов (Partition Entry) по 16 байт каждый (1BEh-1CDh, 1CEh-1DDh, 1DEh-1EDh, 1EEh-1FDh)
байты 1FEh-1FFh = 55AAh– специальные символы, называемые сигнатуройMBR.
Структура описателя раздела представлена в табл. 12
Таблица 12. Структура описателя раздела жесткого диска
Смещение | Длина | Назначение |
00h (1BEh)* | 1 байт | Флаг активности раздела – Boot Flag: 80h = активный (загружаемый раздел), 0 = нет |
01h (1BFh) | 1 байт | Номер начальной головки – Begin Head |
02h (1C0h) | 2 байта | Номер начального сектора и цилиндра – Begin SecCyl (в формате загрузки регистраCXдля прерыванияINT 13h) |
04h (1C2h) | 1 байт | Системный код раздела –System Code (см. след. табл.) |
05h (1C3h) | 1 байт | Номер конечной головки – Ending Head |
06h (1C4h) | 2 байта | Номер конечного сектора и цилиндра – Ending SecCyl |
08h (1C6h) | 4 байта | Порядковый номер начального сектора раздела – Starting Sector |
0Ch (1CAh) | 4 байта | Количество секторов в разделе – Num Sectors |
* В скобках указан адрес для компоненты первого раздела
Первичный раздел DOS–PRI DOS (Primary DOS Partition) содержит только один логический диск(Logical Drive). Логический диск начинается с загрузчика (Boot Sector), после которого располагаются одна или несколько копий таблицы размещения файловFAT (File Allocation Table), корневой каталог(Root)и собственно область данных. Из разделовDOSактивным может быть только первичный раздел (исполняется только его загрузчик).
Обращения к дискам через функции операционной системы происходит на уровне логических дисков: первым адресуемым сектором будет загрузчик логического диска, но не MBR илиFAT (сравните обращения через утилитуDisk Editor).
Расширенный раздел DOS–EXT DOS (Extended DOS Partition)может быть разделен на произвольное количество логических дисков аналогичной структуры, но их загрузчики никогда не исполняются.
Коды и типы разделов жесткого диска
Код | Тип раздела | Размер | Тип FAT | Впервые появился |
00h | Неизвестный (не форматирован) |
|
|
|
01h | PRI DOS | 0 – 15 МБ | FAT12 | MS-DOS 2.0 |
02h | XENIX root |
|
| XENIX |
03h | XENIX user |
|
| XENIX |
04h | RPI DOS | 16 – 32 МБ | FAT16 | MS-DOS 3.0 |
05h | EXT DOS | 0 – 2 ГБ |
| MS-DOS 3.3 |
06h | PRI DOS | 32 МБ – 2 ГБ | FAT16 | MS-DOS 4.0 |
07h | NTFS, HPFS | 0 – 4 ГБ |
| Windows NT, OS/2 |
0Ah | OS/2 Boot |
|
| OS/2 |
0Eh | PRI DOS | 32 МБ – 2 ГБ | FAT16 | Windows 95 |
0Fh | EXT DOS | 0 – 2 ГБ |
| Windows 95 |
0xh | FAT32 | 0 – 2 ТВ | FAT32 | Windows 95 OSR2 |
52h | CP/M |
|
| CP/M |
64h | Novell |
|
| Novell NetWare |
83h | Linux |
|
| Linux |
85h | Linux Extended |
|
| Linux |
Разметка диска: разбивка на разделы, выбор активного раздела (только для диска 0 – первого физического диска) и создание логических дисков в расширенном DOS-разделе выполняется утилитойFDISK.
Восстановление стандартного загрузчика можно выполнить утилитой FDISKс ключом/MBR, что в некоторых случаях можно использовать для удаления загрузочных вирусов.
Форматирование верхнего уровня (в отличие от низкоуровневого форматирования, выполняемого изготовителем диска) – создание Boot-секторов, FAT,Rootи отметка вFATдефектных кластеров – выполняется дляDOS командойFORMAT.
Для работы с таблицей разделов диска можно использовать также специальные утилиты, например, Partition Magic фирмыPower Quest.
- Средства тестирования и отладки пэвм
- Программные средства отладки
- Команда прерывания
- Пошаговый режим
- Регистры отладки
- Аппаратные средства отладки
- Режим системного управления smm
- Режим виртуального процессора 8086 (v86)
- Распределение областей системной памяти ([5], с.39)
- Пространство ввода-вывода (адреса компонентов системной платы) ([5], с.49)
- Автоматическое распределение системных ресурсов (Первоначальный заголовок – Спецификация Plug&Play для шины isa) ([5], с.69)
- Системный порт, таймер и динамик (компоненты системной платы) ([5], с.81)
- Интерфейс и контроллер клавиатуры ([5], с.85)
- Кмоп память и часы реального времени (cmos Memory и rtc – Real Time Clock)([5], с.89)
- Цифровой аудиоканал ([5], с.107)
- Rom bios.Тест начального включения([5], с.С.111,148)
- Rom bios.Конфигурирование пэвм –bios Setup([5], с.156)
- Адресация информации на жестких дисках и их разделы ([5], с.553)
- Блок питания пэвм ([5], с.783)
- Заземление пэвм ([5], с.769)