Файловая система FATи управление данными вMS-DOS
Общая характеристика системы FAT
Система FATбыла разработана для ОСMS-DOS. Это простая файловая система с сегментированным размещением, без многопользовательской защиты. Структура каталогов – древовидная, причем на каждом дисковом томе создается отдельное дерево. Для указания местоположения файла может использоваться егополное имя, содержащее букву диска, путь по дереву каталогов и собственно имя файла, например: «C:\UTILS\ARCH\RAR.EXE».
В ОС Windowsтакже возможно использованиеFAT, особенно оправданное для дискет. Для жестких дисков большого объема системаFATстановится малоэффективной и постепенно вытесняется более мощной системойNTFS.
Структуры данных на диске
При форматировании дискеты или раздела жесткого диска в системе FATвсе дисковое пространство разбивается на следующие области, показанные на рис. 3 2.
Рис. 311
· BOOT-секторсодержит основные количественные параметры дискового тома и файловой системы, а также может содержать программу начальной загрузки ОС.
· таблица FAT(FileAllocationTable) – содержит информацию о размещении файлов и свободного места на диске. Ввиду критической важности этой таблицы она всегда хранится в двух экземплярах, которые должны быть идентичны1. Каждая операция, изменяющая содержимоеFAT, должна одинаковым образом изменять оба экземпляра.
· ROOT– корневой каталог системы, содержащий данные о файлах и о подкаталогах верхнего уровня, каждый из которых в свою очередь может содержать файлы и подкаталоги.
|
|
· Область данных– массив кластеров, содержащий все файлы и все каталоги (кроме корневого).
Рассмотрим подробно, как хранится вся информация о файле, имеющаяся в системе FAT.
При создании файла в одном из каталогов файловой системы создается запись, хранящая основной объем информации об этом файле. Каждый каталог, кроме корневого, также является файлом особого вида, и запись о нем содержится в родительском каталоге. Каталожная запись всегда занимает 32 байта, ее структура показана в табл. 3.1.
Таблица 2.1
Структура записи каталога файловой системы FAT
Поле записи | Размер поля (в байтах) |
Имя файла | 8 |
Расширение имени (тип файла) | 3 |
Атрибуты (флаги) | 1 |
Размер файла (в байтах) | 4 |
Дата последнего изменения | 2 |
Время последнего изменения | 2 |
Резерв (не используется) | 10 |
Номер первого кластера файла | 2 |
Как видно из таблицы, имя файла может занимать не более 8 символов плюс еще 3 символа расширения. В начале 80-х годов казалось, что этого вполне достаточно. Позднее это ограничение окрестили «проклятием 8 + 3», и избавить от него файловую систему FATудалось только вWindows95.
|
|
Байт атрибутов содержит набор битов, характеризующих свойства файла. Наряду с практически бесполезными атрибутами «скрытый», «системный» и «архивный», там содержатся и важные: «только для чтения», «каталог» и «метка тома». Атрибут «только для чтения» запрещает системе удалять файл или открывать его для записи. Атрибут «каталог» означает, что данная запись описывает не обычный файл, а каталог. Атрибут «метка тома» может содержаться только в корневом каталоге, такая запись не описывает никакой файл, а вместо этого содержит в полях имени и расширения 11-символьную метку (имя), присвоенную данному дисковому тому.
В целом, запись каталога содержит почти все, что системе известно о файле, а если размер файла не превышает одного кластера, то полностью все. Если же файл содержит более одного кластера, то номера остальных можно найти в таблице FAT.
Таблица FATсостоит из записей, количество которых равно количеству кластеров в области данных, а размер одной записи может быть равен 12, 16 или 32 битам. Соответственно говорят о разновидностях файловой системыFAT-12,FAT-16 илиFAT-32. Размер записи должен быть таким, чтобы в ней можно было записать максимальный номер кластера. Например, для стандартной трехдюймовой дискеты емкостью 1.44 Мб достаточно использоватьFAT-12, поскольку это позволяет иметь 212= 4096 кластеров (на самом деле, чуть меньше), и даже при кластерах размером в 1 сектор (512 байт) этого более чем 512 = 2 Мб.´достаточно: 4096
|
|
Записи FAT«по историческим причинам» нумеруются, начиная с 2 и кончая максимальным номером кластера, каждая записьFATописывает соответствующий кластер с тем же номером. Запись может принимать следующие значения:
· если кластер принадлежит некоторому файлу (или каталогу) и является последним (или единственным) в этом файле, то запись FATсодержит специальное значение – все единицы (FFF16дляFAT-12 илиFFFF16дляFAT-16);
· если кластер принадлежит некоторому файлу (или каталогу), но не является последним в файле, то запись FATсодержит номер следующего кластера того же файла;
· если кластер свободен, то запись содержит все нули;
· если кластер дефектный (т.е. при проверке диска выяснилось, что данный кластер содержит хотя бы один дефектный сектор), то запись содержит специальное значение FF716дляFAT-12 илиFFF716дляFAT-16.
Теперь мы знаем, каким образом в системе FATхранится информация о размещении сегментированного файла. Номер первого кластера файла хранится в записи каталога, а остальные кластеры можно последовательно определить по записям таблицыFAT.
|
|
В каждом каталоге, кроме корневого, первые две записи содержат специальные имена: имя «.» означает сам данный каталог, имя «..» – родительский каталог.
Создание и удаление файла
Чтобы завершить изучение структур данных системы FAT, рассмотрим, как изменяются эти структуры при операциях создания и удаления файла.
Когда ОС выполняет функцию создания файла с заданным именем в заданном каталоге, то она, прежде всего, находит данный каталог в дереве каталогов файловой системы. (Как она его находит – опустим для краткости. Попробуйте разобраться сами.) Прочитав каталог, система проверяет, нет ли в нем уже записи с заданным именем (т.е. нет ли уже такого файла). Если есть, то не установлен ли у этого файла атрибут «только для чтения»? Если установлен, то новый файл создан быть не может, предварительно надо снять атрибут. Если не установлен, то старый файл удаляется. Затем система находит в каталоге свободную запись. Если в каталоге нет свободного места, то он может быть увеличен еще на один кластер, этот факт отражается в таблице FAT. Наконец, найдя свободное место, система заполняет поля записи о новом файле: его имя и расширение, дату и время последнего изменения, атрибуты. Размер и номер первого кластера устанавливаются нулевыми, т.к. файл пока что не содержит данных.
В дальнейшем, при выполнении первой операции записи в файл, система найдет любой свободный кластер по таблице FAT, отметит его вFATкак последний кластер файла, заполнит номер первого кластера в каталожной записи, выполнит запись и занесет количество записанных байт в поле размера файла в каталоге.
При удалении файла прежде всего по каталожной записи проверяется, можно ли его удалить (не установлен ли атрибут «только для чтения»), а затем делаются две вещи:
· первый байт имени удаляемого файла заменяется на специальный символ с кодом E516(он отображается как русская буква «х»; вероятно, разработчики системыFATсчитали, что этот код не может встретиться в имени файла);
· все записи таблицы FAT, соответствующие кластерам удаляемого файла, заполняются нулями, т.е. кластеры объявляются свободными.
Как видно из описанной процедуры, в момент удаления файла его данные не стираются с диска, однако информация о размещении файла портится. Если размер файла превышал один кластер, то нет гарантии, что его удастся восстановить в случае нечаянного удаления, даже если пользователь спохватится сразу же.
Работа с файлами в MS-DOS
Системные функции
Для работы с файлами и каталогами системы FATвMS-DOSпредусмотрен достаточно богатый набор функций. Все они вызываются с помощью команды программного прерыванияint 21h, а конкретная функция определяется числом, занесенным в регистрAH. Эти функции позволяют, в частности:
· создавать файл, указывая его полное имя;
· удалять файл;
· изменять атрибуты файла;
· переименовывать файл или перемещать его в другой каталог того же диска1;
· искать в заданном каталоге все файлы, имена которых соответствуют заданному шаблону (например, шаблону «XYZ??.C*» соответствуют все файлы, имена которых начинаются с «XYZ» и содержат ровно 5 символов, а расширение начинается с буквы «C»);
· создавать и удалять каталоги;
· задавать текущий диск и текущий каталог;
· открывать файл, получая доступ к его данным, и закрывать файл.
Доступ к данным
При форматировании дискеты или раздела жесткого диска в системе FAT все дисковое пространство разбивается на следующие области, показанные на рис. 3‑2.
Рис. 3‑2
· BOOT-сектор содержит основные количественные параметры дискового тома и файловой системы, а также может содержать программу начальной загрузки ОС.
· таблица FAT (File Allocation Table) – содержит информацию о размещении файлов и свободного места на диске. Ввиду критической важности этой таблицы она всегда хранится в двух экземплярах, которые должны быть идентичны[4]. Каждая операция, изменяющая содержимое FAT, должна одинаковым образом изменять оба экземпляра.
· ROOT – корневой каталог системы, содержащий данные о файлах и о подкаталогах верхнего уровня, каждый из которых в свою очередь может содержать файлы и подкаталоги.
· Область данных – массив кластеров, содержащий все файлы и все каталоги (кроме корневого).
Рассмотрим подробно, как хранится вся информация о файле, имеющаяся в системе FAT.
При создании файла в одном из каталогов файловой системы создается запись, хранящая основной объем информации об этом файле. Каждый каталог, кроме корневого, также является файлом особого вида, и запись о нем содержится в родительском каталоге. Каталожная запись всегда занимает 32 байта, ее структура показана в табл. 3.1.
Таблица 3.1
Структура записи каталога файловой системы FAT
Поле записи | Размер поля (в байтах) | |
Имя файла | ||
Расширение имени (тип файла) | ||
Атрибуты (флаги) | ||
Размер файла (в байтах) | ||
Дата последнего изменения | ||
Время последнего изменения | ||
Резерв (не используется) | ||
Номер первого кластера файла |
Как видно из таблицы, имя файла может занимать не более 8 символов плюс еще 3 символа расширения. В начале 80-х годов казалось, что этого вполне достаточно. Позднее это ограничение окрестили «проклятием 8 + 3», и избавить от него файловую систему FAT удалось только в Windows 95.
Байт атрибутов содержит набор битов, характеризующих свойства файла. Наряду с практически бесполезными атрибутами «скрытый», «системный» и «архивный», там содержатся и важные: «только для чтения», «каталог» и «метка тома». Атрибут «только для чтения» запрещает системе удалять файл или открывать его для записи. Атрибут «каталог» означает, что данная запись описывает не обычный файл, а каталог. Атрибут «метка тома» может содержаться только в корневом каталоге, такая запись не описывает никакой файл, а вместо этого содержит в полях имени и расширения 11-символьную метку (имя), присвоенную данному дисковому тому.
В целом, запись каталога содержит почти все, что системе известно о файле, а если размер файла не превышает одного кластера, то полностью все. Если же файл содержит более одного кластера, то номера остальных можно найти в таблице FAT.
Таблица FAT состоит из записей, количество которых равно количеству кластеров в области данных, а размер одной записи может быть равен 12, 16 или 32 битам. Соответственно говорят о разновидностях файловой системы FAT-12, FAT-16 или FAT-32. Размер записи должен быть таким, чтобы в ней можно было записать максимальный номер кластера. Например, для стандартной трехдюймовой дискеты емкостью 1.44 Мб достаточно использовать FAT-12, поскольку это позволяет иметь 212 = 4096 кластеров (на самом деле, чуть меньше), и даже при кластерах размером в 1 сектор (512 байт) этого более чем достаточно: 4096 ´ 512 = 2 Мб.
Записи FAT «по историческим причинам» нумеруются, начиная с 2 и кончая максимальным номером кластера, каждая запись FAT описывает соответствующий кластер с тем же номером. Запись может принимать следующие значения:
· если кластер принадлежит некоторому файлу (или каталогу) и является последним (или единственным) в этом файле, то запись FAT содержит специальное значение – все единицы (FFF16 для FAT-12 или FFFF16 для FAT-16);
· если кластер принадлежит некоторому файлу (или каталогу), но не является последним в файле, то запись FAT содержит номер следующего кластера того же файла;
· если кластер свободен, то запись содержит все нули;
· если кластер дефектный (т.е. при проверке диска выяснилось, что данный кластер содержит хотя бы один дефектный сектор), то запись содержит специальное значение FF716 для FAT-12 или FFF716 для FAT-16.
Теперь мы знаем, каким образом в системе FAT хранится информация о размещении сегментированного файла. Номер первого кластера файла хранится в записи каталога, а остальные кластеры можно последовательно определить по записям таблицы FAT.
В каждом каталоге, кроме корневого, первые две записи содержат специальные имена: имя «.» означает сам данный каталог, имя «..» – родительский каталог.
Дата добавления: 2020-04-25; просмотров: 169; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!