Логический формат гибкого и жосткого диска

5.12.2. Логический формат гибкого и жесткого диска

 

Каждая дискета обычно рассматривается DOS как единственный логический диск. Однако на ПЭВМ серии ЕС это не так. Дело в том, что НГМД этих компьютеров поддерживают 720-Кбайт дискеты. Вместе с тем драйвер дисководов обслуживает только дискеты емкостью 360 Кбайт. Указанное несоответствие не выдерживает никакой критики и вынуждает системных програм­мистов разрабатывать, а пользователей — с муками подключать внешние несистемные драйверы, чтобы обеспечить вместо поддержки 360-Кбайт дискет (или наряду с этим) обслуживание 2х360-Кбайт и/или 720-Кбайт ГД. В первом случае на одном физическом приводе создается два логических дисковода, а на каждой дискете — два логических диска.

Жесткий диск организуется иначе. Он может быть подразделен на несколько разделов, ис­пользуемых различными ОС. Максимальное число разделов равно четырем. Собственно DOS может использовать один или два раздела. Первый из них должен быть первичным разделом DOS, второй — может быть только расширенным разделом DOS (см. описание команды FDISK в п. 5.6.1). В первичном разделе DOS может быть сформирован только один логический диск, а в расширенном — любое их количество. Каждый логический диск «управляется» своим логи­ческим приводом.

На логическом уровне считается, что секторы логического диска имеют непрерывную нумерацию от 0 до N—1, где N = ТхНх8- количество секторов на диске. Соответствие между физическим адресом сектора и его логическим номером п (для дискет) определяется следующей формулой:

п = (t х Н х S) + (h х S) + s - 1                                              (5.1)

Таким образом, сначала (начиная с нуля) нумеруются секторы на нулевой дорожке нулевой поверхности, затем — на нулевой дорожке первой поверхности и т.д. После перенумерации секторов на нулевых дорожках всех поверхностей описанный процесс повторяется для первой и всех последующих дорожек.

Например, для 360-Кбайт дискеты секторам присваиваются логические номера в порядке, показанном на рис. 5.20.

 

 

Рис. 5.20. Логическая нумерация секторов на дискете

 

Каждому логическому диску на винчестере соответствует своя (относительная) логическая нумерация. Физическая же адресация жесткого диска сквозная. В формуле (5.1) это нужно учитывать, вычитая из вычисленного п абсолютный логический номер первого сектора данного логического диска, чтобы получить смещение в секторах относительно его начала (т.е. относи­тельный логический номер).

Формулу (5.1) можно использовать и в обратном направлении для определения физического адреса сектора по его логическому номеру:

t = n / (Н х S)                                                     (5.2)

h = (n-(t x H x S)) / S                                          (5.3)

s = n - ((t x H x S) + (h x S)) + 1                        (5.4)

Здесь символ / обозначает целочисленное деление.

Приведенные выше формулы для дискет с единственным логическим диском можно исполь­зовать без каких-либо поправок. Для жестких дисков [как и с формулой (5.1)] дело обстоит несколько иначе: полученные t, h и s нужно увеличить на значения, соответствующие задейст­вованной в других целях предшествующей области дискового пространства.

Версии DOS до 4.0 поддерживают логические диски, емкость которых не превышает 32 Мбайт. Это связано с тем, что для указания логического номера сектора используется 16-разрядное слово (512 байт х 2 ^ 16 = 32 Мбайт). Однако имеются драйверы, снимающие данное ограничение за счет укрупнения секторов на логическом уровне. В DOS 4.0 для указания логического номера сектора используется 32 разряда (двойное слово), так что в принципе можно адресовать 512 байт х 2 ^ 32. При снятии этого ограничения начинает играть роль другой фактор: размер кластера в сочетании с числом двоичных разрядов, используемых для указания кластера (см. подпункт «Таблица размещения файлов»).

Логическое дисковое пространство любого логического диска делится на две области (рис. 5.21):

системную область и область данных.

 

 

Рис. 5. 21. Логическая структура логического диска

 

Системная область логического диска создается и инициализируется при форматировании, а в последующем обновляется при манипулировании файловой структурой. Область данных логического диска содержит файлы и каталоги, подчиненные корневому. Она в отличие от системной области доступна через пользовательский интерфейс DOS.

Системная область состоит из следующих, расположенных в логическом адресном пространстве подряд, компонентов:

1) загрузочной записи (BR — Boot Record);

2) зарезервированных секторов (RSec —- Reserved Sector);

3) таблицы размещения файлов (FAT — File Allocation Table);

4) корневого каталога (RDir — Root Directory).

BR находится в секторе с физическим адресом [0-0-1] (для дискеты) и содержит блок параметров диска (DPB — Disk Parameter Block), а также системный загрузчик (SB — System Bootstrap). Сектор, содержащий BR, называется стартовым.

За BR могут располагаться несколько RSec, используемых DOS. Стартовый сектор логического диска с BR относится к числу RSec. Обычно это единственный RSec на логическом диске.

FAT является очень важной информационной структурой. Она представляет собой карту (образ) области данных, в которой описывается состояние каждого кластера и связываются в цепочку принадлежащие одному файлу (некорневому каталогу) кластеры. Кластер — это мини­мальная единица дисковой памяти, выделяемая файлу (или некорневому каталогу). Каждый из них занимает целое число кластеров. Последний кластер при этом может быть задействован не полностью. Кластер представляет собой один или несколько смежных секторов в логическом дисковом адресном пространстве (точнее — только в области данных). На дискетах кластер занимает один или два сектора, а на жестких дисках — обычно четыре или восемь секторов. Логическое разбиение области данных на кластеры как совокупности секторов взамен исполь­зования одиночных секторов  имеет следующий смысл:

— уменьшается возможная фрагментация файлов;

— уменьшается размер FAT, а следовательно, и объем системной области логического диска;

— ускоряется доступ к файлу, так как в несколько раз сокращается длина цепочек фрагментов дискового пространства, выделенных для него.

Однако слишком большой размер кластера ведет к неэффективному использованию области данных, особенно в случае большого количества маленьких файлов.

В связи с тем, что FAT используется при доступе к диску очень интенсивно, она обычно загружается в ОЗУ (в буфера ввода-вывода или кэш) и остается там настолько долго, насколько это возможно.

В связи с чрезвычайной важностью FAT она обычно хранится в двух идентичных экземплярах (за исключением FAT виртуального диска), второй из которых непосредственно следует за первым. Обновляются копии FAT одновременно. Используется же только первый экземпляр. Если он по каким-либо причинам окажется разрушенным, то произойдет обращение ко второму экземпляру.

RDir является корнем древовидной файловой структуры логического диска и не может быть удален никакими средствами. В связи с тем, что память под RDir выделяется статически, имеется ограничение количества содержащихся в нем файлов и подкаталогов.

Некорневые каталоги в области данных размещаются аналогично файлам (динамически), вследствие чего на их длину ограничение не накладывается.

Характеристики используемых физических и логических форматов дискет Приведены в табл. 5.26. Форматы SS/QD и DS/QD DOS непосредственно не поддерживаются. Первый из них используется в ПЭВМ ИСКРА-1030, а второй — в ПЭВМ ЕС. Дополнительно к приведенным система обслуживает несколько форматов 8-дюймовых дискет, но сейчас в ПЭВМ они не применяются. Наибольшее распространение в настоящее время получили форматы с емкостью 360 Кбайт, 1,2 Мбайт, 720 Кбайт (3,5 дюйма) и 1,44 Мбайт.

В BR и FAT хранится дескриптор носителя, чтобы можно было быстро определить формат логического диска. Однако он обладает определенной неоднозначностью.

Никакой информации о скрытых (hidden) секторах автор, к сожалению, не имеет.

Особенности формата логического диска на винчестере состоят в следующем:,

— увеличен размер кластера;

— увеличены размеры FAT и RDir;

— элементы FAT могут быть 16-битными;

— максимальное число элементов корневого каталога обычно составляет 512;

— дескриптором носителя является F8H.

На жестком диске имеется односекторная главная загрузочная запись (MBR — Master Boot Record), содержащая внесистемный загрузчик (NSB — Non-System Bootstrap), а также таблицу разделов (РТ — Partition Table) и имеющая физический адрес [0-0-1]. Таким образом, в стартовом секторе физического жесткого диска находится не BR, a MBR.

РТ описывает размещение и характеристики имеющихся на винчестере разделов.

NSB служит для копирования в ОЗУ SB из BR логического диска в активном разделе и передачи на него управления, что осуществляется при загрузке ОС.

Вслед за MBR размещаются разделы (см. рис. 5.14 в п. 5.6.1).

Первичный раздел DOS включает только системный логический диск без каких-либо дополни­тельных информационных структур.

Таблица  5.26

Стандартные  форматы дискет

 

Диаметр, дюймов

5,25

5,25

5,25

5,25

5,25

5,25

5,25

3,5

3,5

Условное обозначение формата

SS/DD

SS/DD

DS/DD

DS/DD

SS/QD

DS/QD

DS/HD

DS/QD

DS/HD

Типы дискет

SS/DD, DS/DD

SS/DD, DS/DD

DS/DD

DS/DD

SS/DD, DS/DD

DS/DD

DS/HD

DS/QD

DS/HD

Число рабочих поверхностей

1

1

2

2

1

2

2

2

2

Число цилиндров

40

40

40

40

80

80

80

80

80

Число секторов на дорожке

8

9

8

9

9

9

15

9

18

Размер сектора, байт

512

512

512

512

512

512

512

512

512

Число секторов в кластере

1

1

2

2

2

2

1

2

1

Число зарезервированных секторов

1

1

1

1

1

1

1

1

1

Размер FAT, секторов

1

2

1

2

2

3

7

3

9

Число копий FАТ

2

2

2

2

2

2

2

2

2

Размер RDir, секторов

4

4

7

7

7

7

14

7

14

Максимальное число элементов в RDir

64

64

112

112

112

112

224

112

224

Числа секторов на дискете

320

360

640

720

720

1440

2400

1440

2880

Дескриптор носителя, Н

FE

FC

FF

FD

FC

F9

F9

F9

F0

Число скрытых секторов

0

0

0

0

0

0

0

0

0

Емкость, Кбайт

160

180

320

360

360

720

1200

720

1440

 

Расширенный раздел DOS можно рассматривать как жесткий диск в миниатюре: он содержит вторичную MBR (SMBR — Secondary MBR), в состав которой вместо РТ входит таблица логического диска (LDT — Logical Disk Table), ей аналогичная. LDT описывает размещение и характеристики раздела, содержащего единственный логический диск, а также может специ­фицировать следующую SMBR. Следовательно, если в расширенном разделе DOS создано m логических дисков, то он содержит m SMBR, связанных в список. Каждый элемент этого списка описывает соответствующий логический диск и ссылается (кроме последнего) на следующий элемент списка.

Теперь мы переходим к детальному рассмотрению форматов компонентов системной области дисков. Подчеркнем, что если поле является числовым, а также занимает слово или двойное слово, то обычно младший байт слова (младшее слово двойного слова) размещается на диске первым. Это связано с удобством его обработки в ОЗУ после считывания.

Структура загрузочной записи

 

BR является самой первой на логическом диске (на дискете — имеет физический адрес [0-0-1]). Она состоит, как мы уже знаем, из двух частей — DPB и SB. DPB служит для иденти­фикации физического и логического форматов логического диска, a SB играет существенную роль в процессе загрузки DOS (см. пп. 5.2.1 и 5.2.4). Первые два байта BR занимает команда безусловного перехода JMP на SB. Третий байт содержит код 90Н (NOP — нет операции). Далее располагается восьмибайтовый системный идентификатор, включающий информацию о фирме-разработчике и версии DOS (например, IBM 3.3). Затем следует DPB, а после него — SB. DPB, создаваемые DOS 3.3 и DOS 4.0, различны (табл. 5.27 и 5.28). Другие же системные области диска в этих версиях DOS различий не имеют (но допустимы дополнительные значения в некоторых полях).

Одна из двух возможных структур BR определяется по содержимому байта со смещением 26Н (для DOS 4.0 он хранит код 29Н).

В новой BR увеличен размер ряда полей и присутствуют дополнительные поля. Поле метки тома дублирует соответствующий элемент корневого каталога. В качестве имени файловой системы (смещение 36Н) может быть задано FAT12, FAT16 или HPFS с дополнением пробелами справа. Первые две системы являются неотъемлемой частью DOS и различаются только разрядностью номера кластера (12 или 16), от чего зависит структура FAT. HPFS — это дополнительная высокопроизводительная файловая система, доступная в OS/2.

Таблица  5.27

Структура  BR  в  DOS  3.3

 

Смещение поля, байт

 

 

Длина поля, байт

Содержимое поля

00Н(0)

3

безусловный переход на начало SB

0ЗН(З)

8

системный идентификатор

0ВН(11)

2

размер сектора, байт

0DH(13)

1

число секторов в кластере

0EH(14)

2

число зарезервированных секторов

10Н(16)

1

число копий FAT

11Н(17)

2

максимальное число элементов RDir

13H(19)

2

число секторов на логическом диске

15Н21)

1

дескриптор носителя

16Н(22)

2

размер FAT, секторов

18H(24)

2

число секторов на дорожке

1AH(26)

2

число рабочих поверхностей

1CH(28)

2

число скрытых секторов                               

1ЕН(З0)

 

SB                                                                    

1FEH(510)

2

сигнатура (слово АА55Н)                              

 

Таблица  5.28

Структура  BR  в  DOS 4.0

 

Смещение

поля, байт

 

 

Длина поля, байт

 

 

Содержимое поля

00Н(0)

3

безусловный переход на начало SB

0ЗН(З)

8

системный идентификатор

0ВН11)

2

размер сектора, байт

0DH(13)

1

число секторов в кластере

0EH(14)

2

число зарезервированных секторов

10H(16)

1

число копий FAT

11Н(17)

2

максимальное число элементов RDir

13Н(19)

2

число секторов на логическом диске, если его размер не превышает 32 Мбайт; иначе― 0000Н

15H(21)

1

дескриптор носителя

16Н(22)

2

размер FAT, секторов

18H(24)

2

число секторов на дорожке

1AН(26)

2

число рабочих поверхностей

ICH(28)

4

число скрытых секторов

20Н(32)

4

число секторов на логическом диске, если его размер превышает 32 Mбайт

24Н(36)

1

тип логического диска (00Н - гибкий, 88Н - жесткий)

25Н(37)

1

пусто (резерв)

26Н(38)

1

маркер с ходом 2SH

27Н(З9)

4

серийный номер тома

2ВН(43)

11

метка тома

36Н(54)

8

имя файловой системы

3EН(62)

 

SB

1FEH(510)

2

сигнатура (слово АА55Н)

Структура каталога

 

Корневой и некорневые каталоги имеют одинаковую структуру. Но RDir в отличие от других каталогов расположен в системной области логического диска, имеет ограниченный размер и не может быть фрагментированным.

Каталог состоит из последовательности 32-байт элементов. Каждый элемент каталога описывает входящий в него файл или каталог, содержит метку тома или является свободным. Отметим, что вся служебная информация о файле (каталоге), за исключением исчерпывающих сведений о его размещении в области данных логического диска, находится в одном из элементов того каталога, в котором он логически содержится. Сам же файл хранит только данные.

Элемент каталога состоит из восьми полей (табл. 5.29). Детализируем содержимое боль­шинства из них.

Поле имени содержит имя файла (каталога), дополненное при необходимости пробелами справа. Код в первом байте этого поля определяет описываемый данным элементом объект или состояние данного элемента каталога. Заметим, что тип объекта здесь задается лишь частично.

Таблица. 5.29

Структура элемента каталога

 

Смещение поля, байт

 

 

Длина поля, байт

 

 

Содержимое поля

00Н(0)

8

имя файла (каталога)

08Н(8)

3

расширение имени файла (каталога)

0BH(11)

1

атрибуты файла

0CH(I2)

10

резерв (для будущих расширений)

16Н(22)

2

время создания файла (каталога)

18Н(24)

2

дата создания файла (каталога)

1AН(26)

2

номер первого кластера Файла (каталога)

1CH(28)

4

размер Файла (каталога), байт

 

Для полной его идентификации привлекается и поле атрибутов. Содержимое первого байта поля имени интерпретируется следующим образом:

00Н                 — элемент каталога еще ни разу не использовался. Это означает, что все последующие элементы являются пустыми, а следовательно, можно прекратить поиск по каталогу с уверенностью в том, что весь каталог просмотрен. Такая техника сокращает время поиска в каталогах, но элементы, по каким-либо причинам оказавшиеся размещенными после первого пустого элемента, становятся недоступными;

05Н                 — первый символ имени файла (каталога) имеет код Е5Н, т.е. является символом о. Такая перекодировка используется потому, что код Е5Н применяется по другому назначению;

2ЕН                            — элемент каталога описывает данный каталог (ссылка на себя). Число 2ЕН является кодом символа «точка». Если и второй байт поля имени содержит код 2ЕН, то элемент каталога описывает родительский каталог (..) данного каталога. Остальные байты полей имени и расширения содержат пробелы;

Е5Н                — элемент использовался файлом (каталогом), но уже освобожден. Этот код записывается при удалении существующего файла (каталога), но больше никакие изменения в элемент каталога не вносятся.

Любое другое содержимое первого байта поля имени интерпретируется как код первого символа в имени файла (каталога).

Поле расширения хранит расширение имени файла (реже — каталога), дополненное при не­обходимости пробелами справа (аналогично имени).

Имя и расширение можно сформировать практически из любых символов, но пользовательский интерфейс DOS налагает свои ограничения (см. подпункт «Файлы» в п. 5.2.2). Напомним, что строчные буквы при вводе автоматически перекодируются в прописные. Это относится и к специфическим буквам национальных алфавитов, погруженных в стандартные кодовые страницы. Если же используемая Вами версия DOS непосредственно не поддерживает кириллицу, то о новом коде русской буквы Вам узнать заранее (до создания файла и каталога) не удастся. Чтобы избежать неприятностей, используйте для именования файлов (каталогов) только «надежные» в этом плане символы в соответствии с п. 5.2.2. Используя низкоуровневые редакторы диска, можно записать в поля имени и расширения любые символы, по крайней мере, удивив тем самым других пользователей.

В поле атрибутов каждый бит задает определенный атрибут файла (см. п. 5.2.2) или описывает представляемый данным элементом каталога объект. Структура этого поля показана в табл. 5.30. Если байт атрибутов содержит код 08Н, то поля имени и расширения представляют метку тома. В случае, когда в байте атрибутов записан код ЮН, считается, что данный элемент каталога описывает каталог.

Поле времени содержит время создания (последней модификации) файла или время создания каталога Код в этом поле рассматривается как целое без знака, полученное по следующей формуле:

часы х 2048 + минуты х 32 + секунды / 2

Аналогично поле даты содержит дату создания (последней модификации) файла или дату создания каталога, которая представляется целым беззнаковым числом, полученным по формуле

(год — 1980) х 512 + месяц х 32 + день

Следовательно, календарь поддерживается только на 1980 — 2108 гг.

Таблица.  5.30

Структура поля атрибутов файла

 

Биты

Маска

Значение

7 6 5 4 3 2 1 0

..........................1

.....................1..... …………1…….

.....…..1……......

. . .  1 . . ……….

...1 …………... .

………………… . ……………......

01H

0

0

08H

10Н

20Н

файл имеет атрибут R

Файл имеет атрибут Н

Файл имеет атрибут S

элемент описывает метку тома

элемент описывает каталог Файл имеет атрибут А

резерв

резерв

 

Поле со смещением 1АН содержит номер первого кластера, принадлежащего файлу (каталогу). Список остальных кластеров хранится в FAT. Для файлов, которым не выделено места (например, для открытых и сразу закрытых файлов), это поле хранит код 0000Н.

Поле размера содержит длину файла (каталога), измеряемую в байтах. Для текстовых файлов заданная таким образом длина иногда не совпадает с реальной длиной, определяемой по первому символу EOF в файле. Напомним: это происходит потому, что для повышения быстродействия некоторые текстовые редакторы осуществляют обмен с диском на логическом уровне не байтами (символами), а логическими записями, содержащими несколько байтов. Если последняя логическая запись является неполной, то реальная длина файла будет меньшей, чем задано в поле размера. К неприятностям такая несогласованность обычно не приводит, так как DOS позволяет интер­претировать оба признака конца файла (переключателями /А и /В команды COPY). Ситуация, когда длина текстового файла является большей, чем указано в элементе каталога, считается ошибочной. Максимально возможный размер файла определяется DOS по содержимому FAT, т.е. исходя из наличия свободного пространства на диске.

Структура таблицы размещения файлов

 

FAT является образом области данных логического диска и содержит исчерпывающую ин­формацию об использовании, а также о состоянии каждого кластера. В частности, она хранит сведения о размещении каждого файла и некорневого каталога.

FAT состоит из последовательности элементов, каждый из которых, за исключением первых двух, описывает соответствующий кластер.

Первые два элемента (с номерами 0 и 1) хранят копию дескриптора носителя (самый первый, т.е. младший, байт), дополненную до требуемого количества байтов двоичными единицами (FFH). Между остальными элементами FAT и кластерами области данных устанавливается позиционное соответствие: m-й (т = 2,...,М +1, где М — число кластеров в области данных) элемент FAT описывает m-й кластер области данных. Последние нумеруются, начиная с двух, а не с нуля, для удобства. Кластеры располагаются в логическом дисковом пространстве последовательно, в порядке возрастания их номеров и покрывают всю область данных.

В зависимости от М для хранения элемента FAT отводится 12 или 16 битов (разрядов). 16-разрядный формат используется, только если число секторов превышает 20740 (5104Н), что соответствует емкости логического диска в 10 Мбайт. Поэтому о таком формате можно говорить только применительно к достаточно большому логическому диску на винчестере. 12-разрядный формат FAT используется для всех дискет и небольших логических дисков на винчестере. С целью экономии дискового пространства два соседних 12-разрядных элемента FAT размещаются в трех байтах, однако такое решение усложняет доступ к ним.

Каждый m-й элемент FAT содержит либо номер следующего кластера, принадлежащего файлу (некорневому каталогу), либо специальный код. В качестве специальных используются следующие значения:

(0)000Н                         — кластер свободен;

(F)FF0H..(F)FF6H       — кластер зарезервирован для использования DOS;

(F)FF7H                        — кластер является дефектным;

(F)FF8H..(F)FFFH      — кластер является последним в файле (некорневом каталоге).

Наличие любого другого кода означает, что данный кластер принадлежит какому-либо файлу (некорневому каталогу), а сам код является номером следующего кластера в этом файле (не­корневом каталоге).

Пример фрагмента FAT и ее связи с каталогом приведен на рис. 5.22. Легко видеть, что файл MYFTLE.TXT занимает кластеры 6, 7, 14, 15, 17 и 18.

Вновь создаваемым или пополняемым файлам (каталогам) выделяются ближайшие к началу FAT, но еще свободные элементы и соответствующие им кластеры.

 

 

Рис. 5.22. Фрагмент FAT

 

В случае удаления файла все занятые им элементы FAT обнуляются. Тем не менее если файл не был фрагментирован, то имеются все шансы восстановить его, так как номер первого кластера файла в элементе каталога сохраняется. Конечно, занимаемые удаленным файлом кластеры не должны еще использоваться другими файлами.

Обычно ни программист, ни тем более пользователь ПЭВМ не испытывает потребности в непосредственном доступе к элементам FAT. Однако, если на диске возникли логические или физические дефекты и никакие системные средства не смогли восстановить потерянную в результате этого информацию, квалифицированный программист должен попытаться сделать все возможное путем написания специальной программы. Эта программа, естественно, должна на­прямую обращаться к компонентам системной области диска, в частности к FAT.

Если FAT имеет 12-разрядный формат, то получить содержимое m-го элемента FAT поможет следующий алгоритм:

1) умножить m на 1,5 (каждый элемент FAT занимает полтора байта);

2) результат умножения (без дробной части) использовать как смещение в FAT для чтения слова (двух байтов);

3) если m было четным, то выделить из прочитанного слова первые 12 бит, если нечет­ным — последние.

Для FAT в 16-разрядном формате эта же задача решается гораздо проще:

1) умножить m на 2 (каждый элемент FAT занимает 2 байта);

2) использовать результат умножения как смещение в FAT для чтения слова.

Чтобы получить логический номер сектора, являющегося первым в кластере с заданным номером т, следует:

1) вычесть 2 из т;

2) умножить результат на количество секторов в кластере;

3) определить количество секторов, занимаемых системной областью логического диска;

4) сложить полученные по пп. 2 и 3 величины.

Технически доступ к файлу на диске осуществляется DOS следующим образом:

1) отыскивается соответствующий элемент каталога;

2) по содержимому FAT определяется номер требуемого кластера (если файл читается не с начала или его считывание продолжается);

3) номер кластера преобразуется в логический номер сектора;

4) выдается прерывание 25Н для прямого чтения сектора с диска, по которому в работу включается драйвер НМД;

5) драйвер преобразует логический номер сектора в его физический адрес [см. формулы (5.2) — (5.4)J и обеспечивает управление приводом по считыванию требуемого сектора, содер­жимое которого записывается в предназначенный для этого буфер в ОЗУ.

Структура главной загрузочной записи и таблицы разделов

 

MBR делится на две логические части — NSB и РТ. NSB обеспечивает загрузку DOS или какой-либо другой ОС с логического диска в активном разделе путем анализа содер­жимого РТ.

РТ находится в конце MBR и содержит четыре строки в соответствии с максимальным количеством разделов на винчестере. Каждую строку РТ назовем описателем раздела* Структура MBR представлена в табл. 5.31.

Таблица 5.31

Структура MBR

 

Смещение

поля,

байт

Дли­на по­ля байт

Содержимое поля

000Н(0)

1ВЕН(446)

1СЕН(462)

1DEH(478)

1ЕЕН(494)

1FEH(516)

446

І6

16

16

16

2

NSВ

описатель первого раздела     описатель второго раздела         описатель третьего раздела        описатель четвертого раздела  сигнатура (слово AA55Н)

 

Описатель раздела специфицирует размещение и характеристики соответствующего раздела жесткого диска (табл. 5.32).

Таблица 532

Структура  описателя раздела

 

Смещение поля, байт

Длина поля, байт

 

 

Содержимое поля

00Н(0)

1

статус раздела

01Н(1)

1

номер поверхности винчестера, на которой начи­нается раздел

02Н(2)

2

номера цилиндра (6 бит) и сектора (18 бит) на дорожке, с которых начинается раздел

04Н(4)

1

системный код

05Н(5)

1

номер поверхности винчестера, на которой за­канчивается раздел

06Н(6)

2

номера цилиндра (6 бит) и сектора (10 бит) на дорожке, которыми заканчивается раздел

08Н(8)

4

логический номер начального сектора раздела

0СН(12)

4

размер раздела, секторов

 

Статус раздела может иметь два значения: 00Н — для пассивного раздела или 80Н — для активного раздела (из него будет загружаться ОС).

Значения полей описателя раздела со смещениями 02Н и 06Н вычисляются по следующей формуле:

(t х 64) + s

Возможны следующие системные коды:

0 — раздел не создан (неизвестный раздел);

1 — первичный раздел DOS или раздел OS/2 с 12-битной FAT;

2 — раздел с СР/М;

3 — раздел с Xenix;

4 — первичный раздел DOS или раздел OS/2 с 16-битной FAT;

5 — расширенный раздел DOS;

6 — первичный раздел DOS 4.0 или раздел OS/2 1.10 размером более 32 Мбайт (это единственный идентификатор «большого» раздела);

7 — раздел для HPFS (OS/2).

Логический номер начального (стартового) сектора является абсолютным (отсчитывается от сектора [0-0-1] жесткого диска) и используется в качестве базового адреса для обеспечения относительной адресации внутри раздела.

Первый раздел всегда начинается по адресу [0-1-1], сразу вслед за MBR.

Структура расширенного раздела DOS

 

Расширенный раздел DOS содержит один или несколько логических дисков, для каждого из которых создается SMBR. Все SM BR связываются в цепочку (список). Ссылка на первый SMBR этого списка находится в РТ MBR. Логическая структура расширенного раздела DOS представлена на рис. 5.23.

 

 

Рис. 5.23. Логическая структура расширенного раздела DOS

 

Структура SMBR аналогична MBR, но NSB отсутствует, а вместо РТ используется LDT. Последняя имеет тот же формат, что и РТ, но содержит два описателя вместо четырех. Первый описатель специфицирует раздел, аналогичный первичному (системный код 01Н или 04Н). Адреса начала и конца раздела указываются в этом описателе относительно соответствующей SMBR. Второй описатель LDT специфицирует следующую SMBR (системный код 05Н) или является пустым (системный код 00Н). Адреса здесь задаются абсолютно.