Подсистема дисковой памяти (логический формат диска).

10/02/94 05:37pm diski.lek
П.Нортон, Р.Уилтон "IBM PC и PS/2 руководство по программированию" перевод В.Н.Григорьева М "Радио и связь" 1994

Подсистема дисковой памяти (логический формат диска).

Предназначена для хранения информации и как средство обмена информацией между компьютерами. Может использоваться для организации небольшого архива.
Носителем информации является магнитный слой на поверхности диска.
Для записи/считывания используется ДИСКОВОД.

Дисководы и диски различаются:

Организация пакета магнитных дисков:

Таким образом для обращения к диску необходимо указать: номер дорожки, номер поверхности (головки), номер сектора и номер блока.
Нумерация головок и цилиндров начанается с нуля, а секторов с единицы.

Операционная система MS DOS не делит сектора на блоки, кроме этого в большинстве случаев ЛОГИЧЕСКИ производится сквозная нумерация в системе: цилиндр - поверхность - сектор с адресацией через сектора.

Форматы гибких дисков.

Гибкие диски можно классифицировать по нескольким параметрам (см. выше).
Для программиста наиболее интересно деление по двум признакам:

1 Загрузочный диск или нет. На диске может быть записана операционная система; в этом случае диск считается загрузочным. Такой диск на нулевом цилиндре, нулевой поверхности в секторе один хранит программу начальной загрузки. Когда BIOS пытается загрузить ОС производится считывание загрузочного сектора и проверяются последние два байта; если там записана последовательность 55h, AAh то диск считается загрузочным и считанному фрагменту передается управление.

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

Пользователь может придумывать свои форматы дисков, но желательно сохранение совместимости. Существуют драйверы, способные работать с нестандартными (в некоторых пределах) разметками дисков.

Форматы фиксированных дисков

Форматы фиксированых дисков более разнообразны, чем форматы гибких. Это объясняется стремлением фирм производителей получить максимальную емкость и тем, что такой диск не покидает корпуса компьютера. Поскольку емкость фиксированного диска значительна, доступное пространство может быть поделено на РАЗДЕЛЫ. Работа с каждым разделом происходит независимо от других и каждый из них может иметь свой загрузочный сектор и свою ОС. Возможно иметь четыре раздела.

Первый сектор фиксированного диска содержит 64-байтовую таблицу разделов, начинающуюся со смещения 1BEh. Для описания раздела отводится 16 байт:

0 Индикатор загрузки (80h - загружаемый, 0 - нет);

1 Начальный номер головки;

2,3 Начальный номер цилиндра (10 битов) и номер сектора (6 битов);

4 Сиситемный индикатор:

1 - первичный раздел DOS, 12 - битовая FAT

2 - XENIX

4 - первичный раздел DOS, 16 - битовая FAT

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

8 - раздел, отличный от DOS;

5 Последний номер головки;

6,7 Последний номер цилиндра и сектора;

8,9,А,В Начальный сектор (относительно начала диска);

С,D,E,F Число секторов в разделе.

ВНИМАНИЕ: Искажение таблици разделов может привести к полной потере информации на диске!

Логическая организация диска (раздела).

При форматировании дискеты или раздела фиксированного диска создается его логическая структура, состоящая из четырех компанент:

1 Резервируемая область - несколько секторов, одним из которых является загрузочный сектор;

2 Таблица размещения файлов (FAT) - отображает использование дискового пространства. Размер области зависит от размера диска или раздела.
Достаточно часто таблица дублируется;

3 Корневой каталог - содержит основную информацию о файлах. Его размер также зависит от размера диска или раздела;

4 Область файлов и подкаталогов - оснавная (полезная) часть дискового пространства.

диск

емкость

зарез.область

FAT

корн.каталог

кластер

5

360К

1

4

7

2

5

1.2М

1

14

14

1

3

720К

1

6

7

2

3

1.44М

1

18

14

1

Структура загрузочного сектора (смещение - назначение):

Структура корневого каталога (Запись о файле занимает 32 байта смещение - назначение):

Формат байта атрибутов:

Подкаталоги.

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

Область файлов.

Пространство для файлов выделяется кластерами по мере необходимости.
В общем случае кластеры выделяются в произвольном порядке и файл получается фрагментированным. Фрагментация увеличивает время доступа к файлу. Для увеличения быстродействия дисковой подсистемы производят ДЕФРАГМЕНТАЦИЮ файлов и СЖАТИЕ дискового пространства. Если файл копируется целиком, то ОС пытается найти подходящий фрагмент пространства.

Таблица размещения файлов.

File Allocation Table является картой использования дискового пространства. Хотя FAT дублируется многие программы используют только первый вариант. Каждый элемент таблицы строго соответствует кластеру области файлов.
Информация о файлах представляет собой односвязный список. Первые две записи содержат служебную информацию: первый байт содержит описатель накопителя, аналогичный значению из таблици загрузчика; остальные биты равны "1".

FAT содержит 12-ти или 16-ти битовые элементы. Первые используются если количество кластеров менее 4078.

Возможные значения записей FAT:

12-бит

16-бит

назначение

0h

0h

Неиспользуемый кластер;

FF0-FF6h

FFF0-FFF6h

Зарезервированный;

FF7h

FFF7h

Дефектный;

FF8-FFF

FFF8-FFFFh

Последний кластер файла;

другие значения - Номер следующего кластера.

При работе с 16-ти битовыми записями для получения значения кластера необходимо его номер увеличить вдвое.

При работе с 12-ти битовым вариантом необходимо умножить номер записи на три, затем поделить на два и по полученному смещению прочитать значение; если речь идет о кластере с четным номером, то отбрасывается старшая цифра, иначе - младшая.

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

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


Stay-at-home