Сравнительная характеристика файловых структур операционных систем CP/M, MSX и MS DOS. WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW М.Г.Эпиктетов Структура диска CP/M: XWWWWWWWWWWWWY V Системные V <- при загрузке в память читается первый сектор V дорожки V файловая система эти дорожки не трогает! TWWWWWWWWWWWWS <- начало файловой системы на диске V Область V V оглавления V Имеется описатель диска (Disk Parameter TWWWWWWWWWWWWS Block), который полностью определяет V Область V физический формат дискеты (кол-во сек- V данных V торов, системных дорожек, входов в ог- V ...V лавление и пр.), однако его положение в ZWWWWWWWWWWWW[ системной области не определено - BIOS при работе с файловой системой должен получить его от вызываемой программы. Весь диск, кроме системных дорожек, разбит на группы - последовательность физических секторов размером 128x2" байт (от 1Кб до 16Кб, на Корвете - 2Кб). Группа является неделимым кван- том файловой системы (= кластер в MS DOS). Оглавление диска имеет фиксированный размер (на Корвете - 2 группы, на 128 входов). На файл может выделяться несколько входов в директорию (экстентов), каждый размером по 32 байта: TWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWUWWWWUWWWWUWWWWWWWWS V Usr V Имя файла + расширение V Ext V .. V .. V Размер V TWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWQWWWWQWWWWQWWWWWWWWS V Номера групп, занимаемых файлом (на 16Кб) V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWS где - Usr - код пользователя (USER) от 0 до 15. Значене поля, равное 0E5H означает, что файл удален. - Имя... - 11 байт, задающих имя и расширение файла в разо- бранном виде (без точки, дополненное пробелами). В старшем бите трех символов расширения указыва- ются аттрибуты файла ($SYS, $R/O и ?...). - Ext - номер экстента. Поскольку в директории есть место описание положения только 16Кб, для более длинных файлов заводится несколько входов в директорию, от- личающихся номером экстента. - .. - два байта зарезервировано для системных нужд. - Размер - размер файла в 128-байтовых записях. В зависимости от размера диска на номер группы может отво- диться разное число байт. На Корвете номер группы занимает 2 байта (таким образом, один экстентсодержит 8 групп, как и было обещано). (?) имеется предположение, что директорию можно свободно двигать в пределах первых 16 групп, но это не задокументировано и не проверено экспериментально (в DPB имеется 16 бит, в кото- рых положение оглавления указано единицами, но обычно в 1 уста- новлено несколько старших битов). WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Структура диска MSX и MS DOS: XWWWWWWWWWWWWY V Boot V <- при загрузке читается в память,содержит про- V sector V грамму начальной загрузки и параметры,описы- TWWWWWWWWWWWWS вающие физический фор- V Reserved V <- могут отсут- мат дискеты: размеры V sectors V ствовать сектора и кластера, ко- TWWWWWWWWWWWWS личество зарезервирова- V FAT N 1 V нных секторов и FAT'ов, TWWWWWWWWWWWWS корневой директории. V FAT N 2 V <- может отсут- V ...V ствовать TWWWWWWWWWWWWS V Root V MSX = MS DOS, прошедший хорошую "пред- V directory V продажную подготовку": из MS убрали за- TWWWWWWWWWWWWS резервированные сектора, поддиректории, V Data area V количество FAT'ов и размер директории V ...V фиксированны, и т.д. TWWWWWWWWWWWWS Формат загрузочного сектора: 00: jmp начальная загрузка ; команда процессора 8086 ! 03: db "YD-640 " ; ASCII string of OEM name 0B: dw Sector_size ; размер сектора (в байтах) 0D: db Cluster_size ; размер кластера (в секторах) 0E: dw Res_sect ; 10: db Num_FATs ; количество FAT'ов 11: dw Root_lenght ; размер корневой директории 13: dw Total_sectors ; (количество файлов) 15: db Media_descr ; описание носителя 16: dw Sect_FATs ; размер FAT'ов (в секторах) 18: dw Sect track ; кол-во секторов на дорожке 1A: dw Num_heads ; 1C: dw Num_hidden ; кол-во зарезервированных сек- ; торов на диске. 1E: программа начальной загрузки FAT (File Allocation Table) содержит описание того, как расположены файлы на диске. В области данных физические сектора объединены в кластеры, их нумерация начинается (почему╨то) с 002, поэтому первые 3 или 4 байта FAT╨а свободны (в первом байте лежит media descriptor). На каждый кластер (неделимый квант при записи файла, на Ямахе - 2 сектора, 1Кб) диска отводится 12 или 16 бит (число бит определяется автоматически в зависимости от количества кластеров на диске), в которых содержится: 0 - пустой кластер, -9 - bad cluster, -1 - конец цепочки (последний кластер файла), иначе - номер следующего кластера в цепочке. Корневая директория (в MSX других нет) содержит по 32 байта на каждый файл (независимо от длины) в следующем формате: XWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWRWWWWWWWWWWWY V Имя файла+расширение V Атрибуты V . . . . . V TWWWWWWWWWWWWWRWWWWRWWWQWRWWWWWRWWQWWWWWWWWWWWS V . . . . . . VДатаVВремяVFirstV Размер файла V ZWWWWWWWWWWWWWQWWWWQWWWWWQWWWWWQWWWWWWWWWWWWWW[ где - Имя... - 11 байт, задающих имя и расширение файла в разо╨ бранном виде ( без точки, дополненное пробелами). Первый байт, равный 0E5h означает, что файл уда╨ лен из директории. - Атрибуты - 1 байт: 1 = Read only (нет в MSX)Y 2 = Hidden V 4 = System V 8 = Volume label entry V 16 = Subdirectory entry V 32 = Archive [ - Дата/Время создания файла ( по 2 байта ) - Зарезервировано ( на Ямахе всегда лежат нули) - First - номер первого кластера файла (начало цепочки для данного файла) - 2 байта. - Размер - размер файла в символах (4 байта => максималь╨ но большой файл может занимать 4Мб-1). В системе MS-DOS можно заводить поддиректории - обычные (с точки зрения файловой системы) файлы, имеющие формат корневой директории, но неограноченный размер. WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Недостатки CP/M и достоинства MS-DOS: 1. В стандарте CP/M не описано, в каком месте системной об╨ ласти содержится информация о формате диска. Из╨за этого диск, записанный на Корвете в Микродосе нельзя прочесть стандартными средствами в CP/M 2.2 ( у них разное число системных дорожек). С другой стороны, диски, записанные на Ямахе в MSX DOSе легко читаются и на APRICOTe и на ATARI. 2. Из╨за того, что CP/M не поддерживает на диске таблицу сво╨ бодного места (она каждый раз строится в памяти), становится невозможной поддержка поддиректорий (иначе расходы на формиро╨ вание таблицы станут слишком велики - надо будет просканировать несколько файлов, расположенных в разных местах диска). Таким образом, CP/M рассчитана на работу только с гибкими дисками. 3. Надежность CP/M , судя по всему, ниже - ошибка в директории ведет к потере файла. В MS DOS фатальной является только ошибка в FATе (после ошибки в директории потеряются имена фай╨ лов и время создания, все остальное можно восстановить), но они могут храниться в нескольких экземплярах и постоянно сра╨ вниваться. 4. Мелкие достоинства MS DOSа: размер файла в байтах, а не в записях; имеется поле даты создания файла (это очень полезно, например, для программы Make).