8.1. Организация памяти на диске

Для организации дисков DOS разделяет их на две части: небольшая системная область, в которой DOS хранит ключевую информацию о диске, и область данных, в которой хранятся данные.

Системная область состоит из трех частей: загрузочная запись (или блок начальной загрузки), таблица размещения файлов (FAT) и корневой каталог.

Загрузочная запись состоит из 512 байт и занимает логический сектор 0. В ней можно найти следующую полезную информацию:

Смещение

Длина

Описание

0Bh

1 слово

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

0Dh

1 байт

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

10h

1 байт

Число копий таблицы FAT

11h

1 слово

Число записей в корневом каталоге

15h

1 байт

Описатель накопителя

16h

1 слово

Число секторов в таблице FAT

18h

1 слово

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

1Ah

1 слово

Число головок (сторон)

Сектора объединяются в блоки по 512, 1024, 2048 байт (и более). Эти блоки называются кластерами. Начиная с логического сектора 1 (дорожка 0, сектор 2) идет таблица распределения файлов (FAT). (На некоторых дисках начальный сектор FAT имеет больший номер, но для дискеты этот номер равен 1.) Для дискеты 1,44 Мб таблица FAT состоит из 18 секторов, а корневой каталог – из 14 секторов.

Область данных может содержать помимо файлов подкаталоги.

Корневой каталог включает в себя ряд записей длиной 32 байт. Каждая запись каталога содержит имя либо файла, либо подкаталога, либо метки тома. Запись относящаяся к файлу содержит следующую информацию:

Смещение

Значение

Размер

в байтах

Формат

0

Имя файла

8

Символы ASCII

8

Расширение

3

Символы ASCII

11

Атрибут

1

Двоичный код

12

Резерв

10

Нули

22

Время создания

2

Двоичный код

24

Дата создания

2

Двоичный код

26

Начальный кластер файла

2

Слово

28

Размер файла

4

Целое число

Атрибут файла является комбинацией кодов:

00 — обычный файл,

01 — файл доступен только для чтения,

02 — скрытый файл,

04   — системный файл DOS,

08 — метка тома,

10h — подкаталог,

20h — архивный файл.

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

где буквы ч составляют час, м – минуты и с – секунды.

Таблица FAT. Так как FAT отображает всю используемую для хранения данных область данных на диске, то содержится две ее идентичные копии на случай, если одна из этих копий будет повреждена. Размер FAT зависит от диска. Для гибких магнитных дисков и дисков размером меньше 17 Мбайт элемент FAT состоит из 12 битов, в остальных случаях – из 16 битов.

Первый байт FAT определяет описатель накопителя, присутствующий в блоке параметров BIOS загрузочного сектора диска. Для твердого диска он равен F8h, а для дискеты на 1,44 Мбайт он равен F0h. Первый байт дополняется до элемента с помощью кодов FFh. Например, для твердого диска она равна

F8 FF FF FF,

а для гибкого диска на 1,44 Мбайт –

F0 FF FF.

Начиная со следующего элемента, определяются кластеры. Поскольку номера кластеров 0 и 1 зарезервированы, то первый кластер доступного дискового пространства имеет номер 2. Таким образом, первый файл данных будет начинаться с кластера 2. Каждый элемент FAT состоит из цифр, указывающих на характер использования конкретного кластера:

000    — свободный кластер,

nnn    — относительный номер следующего кластера для файла,

FF7h — неиспользуемый кластер (сбойная дорожка),

FFFh — последний кластер файла.

Например, пусть дискета на 1,44 Мбайт содержит один файл, содержащийся в кластерах 2, 3 и 4. В каталоге будет указано имя, расширение, начальный кластер (равный 2) и другая информация. Таблица FAT будет выглядеть следующим образом:

F0F FFF 003 004 FFF 000…000

Элемент для кластера 2 содержит номер следующего кластера 3. Для кластера 3 – номер 4. Для кластера 4 указано, что он последний.