-=RUS=- | Дата: Вторник, 22.04.2014, 21:57 | Сообщение # 1 |
 Генералиссимус
Группа: Администраторы
Сообщений: 352
Статус: Offline
| Приложение 1
Структура диска ANDOS
1. Распределение диска
Физически диск состоит из блоков (секторов), имеющих раз- мер 512. байт. Для размещения файлов используется кластерная структура диска (кластер - минимальное количество информации, записывае- мое на диск. В ANDOS - 4000 байт). Кластеры, содержащие файл могут располагаться в разных участках диска. В этом случае (когда файл расположен в нескольких кластерах, не идущих друг за другом) файл называется фрагментированным. Необходимо отме- тить, что последующие кластеры файла обычно располагаются на диске дальше предыдущих. Таблица размещения файлов (FAT) связы- вает кластеры одного файла в цепочку. Кластерная структура поз- воляет оптимизировать процесс записи после удаления старых фай- лов, и позволяет отказаться от сжатия диска ("сборки мусора"), которое необходимо в операционных системах с последовательной записью файлов (RT-11, MicroDOS, NORTON-БК, NORD, MKDOS). Логичская структура диска соответствует стандарту операци- онной системы MS-DOS, применяющейся на IBM-совместимых компь- ютерах. Однако в отличие от MS-DOS, где размеры каталога, коли- чество и размеры FAT, а также количество секторов на кластер могут изменяться, в ANDOS эти параметры жестко зафиксированы:
┌──────────────────┬──────────────────────────────┐ │ Размер каталога: │ 7 блоков (MAX 112 файлов) │ │ Размер FAT: │ 1200 байт (MAX 424 кластера) │ │ Количество FAT: │ 2 │ │ Размер кластера: │ 4 блока │ └──────────────────┴──────────────────────────────┘
Дисковое пространство в ANDOS распределяется следующим об- разом:
┌─────────────┬──────────────────┐ │Номера блоков│ Назначение │ ├─────────────┼──────────────────┤ │ 0 │ Загрузчик │ │ 1-2 │ Первая копия FAT │ │ 3-4 │ Вторая копия FAT │ │ 5-11. │ Каталог │ │ 12.-15. │ 2 кластер │ │ 16.-19. │ 3 кластер │ │ 20.-23. │ 4 кластер │
. . . . .
│ 1596.-1599. │ 398 кластер │ └─────────────┴──────────────────┘
2. Формат загрузчика
Загрузочный сектор (BOOT-сектор) включает в себя таблицу параметров диска и собственно загрузчик.
2.1. Формат таблицы параметров:
┌───┬───┬───────────────┬─────────────────────────────────────┐ │См.│Дл.│ Значение │ Назначение │ ├───┼───┼───────────────┼─────────────────────────────────────┤ │ 0 │ 2 │ *** │Признак загружаемости дискеты │ │ 2 │ 2 │ *** │Команда перехода на загрузчик │ │ 4 │ 7 │ ASCII/ANDOS /│Название DOS (OEM ID) │ │ 13│ 2 │ 512. │Число байт в секторе │ │ 15│ 1 │ 4 │Количество блоков на кластер │ │ 16│ 2 │ 1 │Число блоков в загрузчике │ │ 20│ 1 │ 2 │Число FAT │ │ 21│ 2 │ 112. │Максимальное число файлов в каталоге │ │ 23│ 2 │ *** │Общее число блоков на диске │ │ 25│ 1 │ 371 │Media Discriptor (байт парам. диска) │ │ 26│ 2 │ 2 │Число блоков в одной FAT │ │ 30│ 2 │ 10. │Число секторов (блоков) на дорожке │ │ 32│ 2 │ *** │Число головок │ │ 34│15.│ 0 │Не используются │ │ 53│11.│ 11 пробелов │Метка тома │ │ 66│ 8.│ASCII/FAT12 /│Идентификатор файловой системы │ │ 76│ 2 │ 0 │Не используется │ └───┴───┴───────────────┴─────────────────────────────────────┘ Необходимо обратить внимание, что многие словные перемен- ные располагаются в таблице по нечетным адресам (это связано с тем, что в IBM нет принципиальной разницы при обращении к слову по четному и нечетному адресу). Первые два слова таблицы могут принимать два различных значения в зависимости от того, является ли диск загрузочным. В случае если диск загрузочный - первое слово 240 (признак загру- жаемости дискеты), второе слово 436 (команда перехода на прог- рамму загрузки BR BOOT). Если дискета незагружаемая (только та- кие дискеты могут обрабатываться на IBM в среде MS-DOS) первые два слова - 753 и 20220 (псевдокоманды перехода на загрузчик IBM, проверяемые MS-DOS при обращении к диску). Общее число блоков на диске (смещение 23) устанавливается при форматировании и зависит от числа дорожек на диске. Для 80-дорожечного диска это число 1600. Число головок (смещение 32) устанавливается при форматиро- вании и зависит от типа дисковода (односторонний или двусторон- ний).
2.2. Загрузчик
Загрузчик располагается в нулевом блоке, начиная со смеще- ния 100. Работа загрузчика подробно описана в начале настоящего руководства.
3. Формат каталога
Длина элемента каталога равна 32. байтам (в одном блоке помещается 16. элементов). Элемент каталога имеет следующий формат (смещения десятичные):
┌────┬────┬───────────────────────────────────────────────────┐ │Смещ│Длин│ Назначение │ ├────┼────┼───────────────────────────────────────────────────┤ │ 0 │ 8 │ Имя файла. Первый элемент имени имеет специальное │ │ │ │ назначение: 0 - Элемент никогда не использовался, │ │ │ │ 345 - Файл удален. Любой другой символ считается │ │ │ │ первой буквой имени файла. │ │ 8 │ 3 │ Расширение имени файла. │ │ 11 │ 1 │ Атрибуты файла (в ANDOS обычно не используются) │ │ 12 │ 8 │ Зарезервированы │ │ 20 │ 1 │ Признак подкаталога и одновременно его номер │ │ 21 │ 1 │ Номер родительского подкаталога │ │ 22 │ 2 │ Адрес файла (В MS-DOS время создания файла) │ │ 24 │ 2 │ Дата создания файла │ │ 26 │ 2 │ Номер начального кластера. Первый кластер в обла- │ │ │ │ сти данных имеет номер 2. │ │ 28 │ 2 │ Длина файла │ │ 30 │ 2 │ Расширение длины. (Для файлов > 64 Кбайт.) │ └────┴────┴───────────────────────────────────────────────────┘ Адрес файла в ANDOS хранится в поле времени MS-DOS. Хране- ние адреса в зарезервированных ячейках элемента каталога недо- пустимо, т.к. MS-DOS при копировании очищает эти ячейки. Подкаталоги ANDOS представляют собой фиктивные записи о файле с нулевыми значениями адреса, длины и стартового класте- ра. В байте атрибута у них записана константа 10, являющаяся для MS-DOS меткой диска (благодаря этому подкаталоги ANDOS не показываются на IBM).
4. Структура FAT
ANDOS использует таблицу размещения файлов (FAT) для вы- числения номеров блоков по номеру кластера. Для каждого класте- ра FAT содержит 12-битный (1.5 байта) элемент. Первые два эле- мента FAT (три байта) соответствуют каталогу. Первый байт со- держит Media Discriptor (такой-же, как и в таблице параметров диска - 371), второй и третий байты содержат код 377 . Элементы FAT начиная со второго (счет от 0) соответствуют области данных. Элемент FAT может содержать следующие значения:
┌───────────┬───────────────────────────────────┐ │ Код │ Значение │ ├───────────┼───────────────────────────────────┤ │ 0 │ Неиспользуемый кластер. │ │ 7777 │ Последний кластер файла │ │ 7760-7766 │ Зарезервированный кластер │ │ 7767 │ Плохой кластер │ │ XXX │ Любые другие цифры означают, что │ │ │ кластер занят файлом и указывают │ │ │ на следующий кластер файла. Номер │ │ │ первого кластера файла хранится в │ │ │ каталоге. │ └───────────┴───────────────────────────────────┘
4.1. Правила распаковки FAT
Для того, чтобы распаковать 12-битную ячейку FAT нужно ум- ножить номер кластера на 1.5 (т.е. на длину элемента FAT). Це- лая часть произведения равна смещению в FAT, по которому нахо- дится элемент, соответствующий данному кластеру. Если номер кластера четный - взять младшие 12. бит, иначе старшие 12. бит. Для распаковки FAT рекомендуется применять подпрограммы ANDOS - GETFAT и SETFAT.
4.2. Формирование цепочки
Для того, чтобы найти по FAT цепочку кластеров какого-либо файла, нужно взять из каталога (с помощью функции DIRFIN) номер начального кластера файла, затем распаковать эту ячейку FAT функцией GETFAT. Если результат, полученный в R0 отличается от 7777, распаковать той же функцией следующую ячейку цепочки. И так, пока не будет найдена последняя ячейка цепочки - код 7777.
4.3. Преобразование номера кластера в номер блока
Для того, чтобы преобразовать номер кластера в номер блока на диске нужно прибавить 1 к номеру кластера, и получившийся результат умножить на 4 с помощью двух команд ASL.
|
|
| |