Файловая система FAT
Файловая система FAT (File Allocation Table — таблица размещения файлов) получила свое название благодаря простой таблице, в которой указываются:
- непосредственно адресуемые участки логического диска, отведенные для размещения в них файлов или их фрагментов;
- свободные области дискового пространства;
- дефектные области диска (эти области содержат дефектные участки и не гарантируют чтение и запись данных без ошибок).
В файловой системе FAT дисковое пространство любого логического диска делится на две области (рис. 6.1): системную область и область данных.
Рис. 6.1. Структура логического диска в FAT
Системная область логического диска создается и инициализируется при форматировании, а в последующем обновляется при работе с файловой структурой. Область данных логического диска содержит обычные файлы и файлы-каталоги; эти объекты образуют иерархию, подчиненную корневому каталогу. Элемент катало-
Файловая система FAT________________________________________________ 167
га описывает файловый объект, который может быть либо обычным файлом, либо файлом-каталогом. Область данных, в отличие от системной области, доступна через пользовательский интерфейс операционной системы. Системная область состоит из следующих компонентов (расположенных в логическом адресном пространстве друг за другом):
- загрузочной записи (Boot Record, BR);
- зарезервированных секторов (Reserved Sectors, ResSec);
- таблицы размещения файлов (File Allocation Table, FAT);
- корневого каталога (Root Directory, RDir).
Таблица размещения файлов
Таблица размещения файлов является очень важной информационной структурой. Можно сказать, что она представляет собой адресную карту области данных, в которой описывается и состояние каждого участка области данных, и принадлежность его к тому или иному файловому объекту.
Всю область данных разбивают на так называемые кластеры. Кластер представляет собой один или несколько смежных секторов в логическом дисковом адресном пространстве (точнее — только в области данных). Кластер — это минимальная адресуемая единица дисковой памяти, выделяемая файлу (или некорневому каталогу). Кластеры введены для того, чтобы уменьшить количество адресуемых единиц в области данных логического диска.
Каждый файл занимает целое число кластеров. Последний кластер при этом может быть задействован не полностью, что при большом размере кластера может приводить к заметной потере дискового пространства. На дискетах кластер занимает один или два сектора, а на жестких дисках его размер зависит от объема раздела (табл. 6.1). В таблице FAT кластеры, принадлежащие одному файлу (или файлу-каталогу), связываются в цепочки. Для указания номера кластера в файловой системе FAT 16 используется 16-разрядное слово, следовательно, можно иметь до 210 = 65 536 кластеров (с номерами от 0 до 65 535).
Таблица 6.1. Соотношения между размером раздела и размером кластеров в FAT16
Емкость раздела, Мбайт Количество секторов в кластере Размер кластеров, Кбайт
16-127 4 2
128-255 8 4
256-511 16 8
512-1023 32 16
1024-2047 64 32
Заметим, что в Windows NT/2000/XP разделы файловой системы FAT могут иметь размер до 4097 Мбайт. В этом случае кластер будет объединять уже 128 секторов.
Номер кластера всегда относится к области данных диска (пространству, зарезервированному для файлов и подкаталогов). Номера кластеров соответствуют эле-
168____________________________________________ Глава 6, Файловые системы
ментам таблицы размещения файлов. Первый допустимый номер кластера всегда начинается с 2.
Логическое разбиение области данных на кластеры как совокупности секторов взамен использования одиночных секторов имеет следующий смысл:
- прежде всего, уменьшается размер самой таблицы FAT; - уменьшается возможная фрагментация файлов;
- ускоряется доступ к файлу, так как в несколько раз сокращается длина цепочек фрагментов дискового пространства, выделенных для него.
Однако слишком большой размер кластера ведет к неэффективному использованию области данных, особенно в случае большого количества маленьких файлов. Как мы только что заметили, в среднем на каждый файл теряется около половины кластера. Из табл. 6.1 следует, что при размере кластера в 32 сектора (объем раздела при этом — от 512 до 1023 Мбайт), то есть 16 Кбайт, средняя величина потерь на файл равняется 8 Кбайт, и при нескольких тысячах файлов1 потери могут составлять более 100 Мбайт. Поэтому в современных файловых системах размеры кластеров ограничиваются (обычно от 512 байт до 4 Кбайт), либо предоставляется возможность выбирать размер кластера.
Достаточно наглядно идею файловой системы, использующей таблицу размещения файлов, иллюстрирует рис. 6.2.
Рис. 6.2. Иллюстрация основной концепции FAT
Из рисунка видно, что файл MYFILE.TXT размещается, начиная с восьмого кластера. Всего файл MYFILE.TXT занимает 12 кластеров. Цепочка (chain) кластеров для нашего примера может быть записана следующим образом: 8, 9,0А, 0В, 15,16,17,19,
1 Например, число 10 000-15 000 файлов (или даже более, особенно когда файлы небольшого размера) на логическом диске с объемом в 1000 Мбайт встречается достаточно часто.
Файловая система FAT 169
1А, 1B, 1С, 1D. Кластер с номером 18 помечен специальным кодом F7 как плохой (bad), он не может быть использован для размещения данных. При форматировании обычно проверяется поверхность магнитного диска, и те сектора, при контрольном чтении с которых происходили ошибки, помечаются в FAT как плохие. Кластер 1D помечен кодом FF как конечный (последний в цепочке) кластер, принадлежащий данному файлу. Свободные (незанятые) кластеры помечаются кодом 00; при выделении нового кластера для записи файла берется первый свободный кластер. Возможные значения, которые могут приписываться элементам таблицы FAT, приведены в табл. 6.2.
Таблица 6.2.Значения элементов FAT
Значение Описание
OOOOh Свободный кластер
fffOh—fff6hЗарезервированный кластер
fff7h Плохой кластер
fffSh—ffffhПоследний кластер в цепочке
0002h-ffefh Номер следующего кластера в цепочке
Поскольку файлы на диске изменяются (удаляются, перемещаются, увеличиваются или уменьшаются), то упомянутое правило выделения первого свободного кластера для новой порции данных приводит к фрагментации файлов, то есть данные одного файла могут располагаться не в смежных кластерах, а порой в очень удаленных друг от друга, образуя сложные цепочки. Естественно, что это приводит к существенному замедлению работы с файлами.
В связи с тем, что таблица FAT используется при доступе к диску очень интенсивно, она обычно загружается в оперативную намять (в буферы ввода-вывода или в кэш) и остается там настолько долго, насколько это возможно. Если таблица большая, а файловый кэш, напротив, относительно небольшой, в памяти размещаются только фрагменты этой таблицы, к которым обращались в последнее время.
В связи с чрезвычайной важностью таблицы FAT она обычно хранится в двух идентичных экземплярах, второй из которых непосредственно следует за первым. Обновляются копии FAT одновременно, используется же только первый экземпляр. Если он по каким-либо причинам окажется разрушенным, то произойдет обращение ко второму экземпляру. Так, например, утилита проверки и восстановления файловой структуры ScanDisk из ОС Windows 9x при обнаружении несоответствия первичной и резервной копии FAT предлагает восстановить главную таблицу, используя данные из копии.
Корневой каталог отличается от обычного файла-каталога тем, что он помимо размещения в фиксированном месте логического диска имеет еще и фиксированное число элементов. Для каждого файла и каталога в файловой системе хранится информация в соответствии со структурой, представленной в табл. 6.3.
Для работы с данными на магнитных дисках в системах DOS, которые имеют файловую систему FAT, удобно использовать широко известную утилиту Disk Editor из
170___________________________________________ Глава 6. Файловые системы
комплекта утилит Питера Нортона. У нее много достоинств. Прежде всего, она компактна, легко размещается на системной дискете с MS DOS, снабжена встроенной системой подсказок и необходимой справочной информацией. Используя ее, можно сохранять, модифицировать и восстанавливать загрузочную запись, восстанавливать таблицу FAT в случае ее повреждения, а также выполнять много других операций. Основными недостатками этой программы на сегодняшний день являются ограничения на размеры диска и разделов и отсутствие поддержки работы с такими распространенными файловыми системами, как FAT32 и NTFS. Вместо нее теперь часто используют утилиту Partition Magic, однако наилучшей альтернативой этой программе на сегодняшний день можно считать утилиту Администратор дисков от Acronis.
Таблица 6.3.Структура элемента каталога
Размер поля данных, байт Содержание поля
11 Имя файла или каталога
1 Атрибуты файла
1 Резервное поле
3 Время создания
2 Дата создания
2 Дата последнего доступа
2 Зарезервировано
2 Время последней модификации
2 Дата последней модификации
2 Номер начального кластера в FAT
4 Размер файла
Структура загрузочной записи DOS
Сектор, содержащий системный загрузчик DOS, является самым первым на логическом диске С:. Напомним, что на дискете системный загрузчик размещается в самом первом секторе; его физический адрес равен 0-0-1. Загрузочная запись состоит, как мы уже знаем, из двух частей: блока параметров диска (Disk Parameter Block, DPB) и системного загрузчика (System Bootstrap, SB). Блок параметров диска служит для идентификации физического и логического форматов логического диска, а системный загрузчик играет существенную роль в процессе загрузки DOS. Эта информационная структура приведена в табл. 6.4.
Первые два байта загрузочной записи занимает команда безусловного перехода (JMP) на программу SB. Третий байт содержит код 90Н (NOP — нет операции). Далее располагается восьмибайтовый системный идентификатор, включающий информацию о фирме-разработчике и версии операционной системы. Затем следует блок параметров диска, а после него — системный загрузчик.
Для работы с загрузочной записью DOS, как и с другими служебными информационными структурами, удобно использовать уже упомянутую программу Disk
Файловая система FAT________________________________________________ 171
Editor из комплекта утилит Питера Нортона. Используя ее, можно сохранять, модифицировать и восстанавливать загрузочную запись, а также выполнять много других операций. Достаточно подробно работа с этой утилитой описана в [2].
Таблица 6.4. Структура загрузочной записи для FAT16
Смещение поля, Длина поля, Обозначение Содержимое поля
байт байт поля
ООН (0) 3 JUMP 3EH Безусловный переход на начало
системного загрузчика
ОЗН (3) 8 Системный идентификатор
ОВН (11) 2 SectSize Размер сектора, байт
ООН (13) 1 ClastSize Число секторов в кластере
0ЕН(14) 2 ResSecs Число зарезервированных секторов
10Н (16) 1 FATcnt Число копий FAT
11Н (17) 2 RootSize Максимальное число элементов Rdir
13Н (19) 2 TotSecs Число секторов на логическом диске,
если его размер не превышает 32 Мбайт; иначе 0000Н
15Н (21) 1 Media Дескриптор носителя
16Н(22) 2 FATsize Размер FAT, секторов
18Н(24) 2 TrkSecs Число секторов на дорожке
1АН(26) 2 HeadCnt Число рабочих поверхностей
1СН(28) 4 HidnSecs Число скрытых секторов
20Н (32) 4 Число секторов на логическом диске,
если его размер превышает 32 Мбайт
24Н (36) 1 Тип логического диска (ООН — гибкий,
80Н — жесткий)
25Н (37) 1 Зарезервировано
26Н (38) 1 Маркер с кодом 29Н
27Н (39) 4 Серийный номер тома1
2ВН (43) 11 Метка тома
36Н (54) 8 Имя файловой системы
ЗЕН (62) Системный загрузчик
1FEH (510) 2 Сигнатура (слово АА55Н)
1 Том (volume) представляет собой единое логическое адресное пространство. Томом может быть обычный логический диск либо несколько дисковых пространств.
Дата добавления: 2016-09-20; просмотров: 6662;