Где используется таблица размещения файлов fat12

Обновлено: 04.07.2024

Файловая система FAT12 относится к предоставлению определенного формата хранения на диске. Этот формат хранения является эффективным, удобным и мощным, таким образом формируя единое регулирование.

Базовые знания

В частности, файловая система FAT12 представляет собой дискету размером 1,44 МБ. Дискета 1,44 МБ имеет 2880 секторов, а один сектор имеет 512 байт; тогда размер пространства, управляемый файловой системой FAT12, составляет 2880 * 512 = 1474560 байт.

Фактические секторы находятся на диске, но мы можем рассматривать все пространство для хранения как большой массив, а секторы - как непрерывную структуру. Когда сектор рассматривается как массив, он называется логическим сектором и нумеруется от 0.

Инфраструктура FAT12

Во-первых, файловая система FAT12 делит 2880 секторов на 5 частей:Загрузочная запись MBR, таблица FAT1, таблица FAT2, корневой каталог, область данных

Пространство, занимаемое каждым сектором и каталогом, выглядит следующим образом

Начальный адрес (байтовый адрес) Количество занятых секторов название
0 1 MBR
512 9 Таблица FAT1
5120 9 Таблица FAT2
9728 14 Корневая директория
16896 2847 Область данных

Ниже приводится схематическая диаграмма структуры FAT12.

image-20200331120720670.jpg

Загрузочная запись MBR

Загрузочная запись MBR имеет 512 байтов, последние два байта - 0x55 и 0xAA; вся информация записи MBR выглядит следующим образом (сохраненные данные присоединены с общими значениями; некоторые данные не указаны)

название Начальный байт длина Хранение данных
BS_jmpBOOT 0 3 Инструкция прыжка
BS_OEMName 3 8 Имя поставщика, "msdos1.0"
BPB_BytesPerSec 11 2 Количество байтов на сектор, 512
BPB_SecPerClus 13 1 Количество секторов в кластере, 1
BPB_ResvdSecCnt 14 2 Количество секторов, занятых MBR, 1
BPB_NumFATs 16 1 Сколько там таблиц FAT, 2
BPB_RootEntCnt 17 2 Максимальное количество файлов в области корневого каталога, 224
BPB_TotSec16 19 2 Общее количество секторов, 2880
BPB_Media 21 1 Дескриптор медиа, 0xF0
BPB_FATSz16 22 2 Количество секторов, занятых таблицей FAT, 9
BPB_SecPerTrk 24 2 Количество секторов на дорожку
BPB_NumHeads 26 2 Количество голов
BPB_HiddSec 28 4 Количество скрытых секторов, 0
BPB_TotSec32 32 4 Если BPB_TotSec16 = 0, здесь указывается количество секторов.
BS_DrvNum 36 1 Буква диска INT 13H
BS_Reserved1 37 1 Зарезервированный бит
BS_BootSig 38 1 Расширенная метка загрузки
BS_VolID 39 4 Серийный номер тома
BS_VolLab 43 11 Метка тома
BS_FileSysType 54 8 Тип файловой системы «FAT12»
Код сборки 64 448 Код сборки в загрузочной записи
Знак конца 510 2 Два байта: 0x55, 0xAA

Загрузочная запись MBR - это сектор, который BOIS считывает в память. Вы можете видеть, что первая инструкция - это инструкция перехода на ассемблере x86. Эта инструкция перейдет в следующую область кода ассемблера для выполнения. Поскольку нам не нужно учитывать следующий раздел кода, когда мы выполняем симуляцию программы файловой системы FAT12, следующий код сборки обычно равен 0.

На что следует обратить внимание - это параметры некоторых файлов FAT12 впереди. Для удобства объяснения рассмотрим файловую систему FAT12 со значениями по умолчанию, которые в основном фиксированы в системе DOS.

Таблица FAT1, FAT2

Эти две таблицы абсолютно одинаковы.Цель таблицы FAT2 - восстановить таблицу FAT1. Поэтому в реальном рабочем процессе таблица FAT1 может быть назначена FAT2, когда аппарат выключен. Когда мы будем говорить о таблице FAT позже, по умолчанию используется таблица FAT1.

Каждые двенадцать бит (1,5 байта) таблицы FAT представляют собой кластер., Отсюда и название FAT12.

Что хранится в каждом кластере?Во-первых, 12 двоичных цифр указывают следующий кластер, на который указывает этот кластер. Таблица FAT нумеруется с нуля. Если в кластере 2 хранится 3, то кластер 2 указывает на кластер 3. Если 12-значное число кластера 3 равно 5, то кластер 3 указывает на кластер 5. Это формирует связанный список, списокНулевой указатель NULL (конечный флаг), используйте 0xFFF для указания。

Таблица FAT состоит из 9 секторов и всего кластера 3072. Максимальный номер кластера, который может быть представлен 12-битным двоичным числом, составляет 4096. Доступен каждый кластер, и нужно беспокоиться о том, чтобы номер кластера не пересек границу.

Кластер 0 и кластер 1 таблицы FAT использовать нельзя, они хранят метку плохого кластера 0xFF0 и метку конца 0xFFF.

Ниже приведен снимок экрана части таблицы FAT системы DOS. Обратите внимание, что Intel использует память с прямым порядком байтов, то есть старший байт хранится по старшему адресу. Первый кластер представляет собой объединение 0xF0 0xFF, а F за 0xFF и 0xF0 объединяются с образованием 0xFF0, который является меткой плохого кластера. Второй кластер также можно анализировать так же, как 0xFFF, который является концом списка кластеров.

image-20200331133954080.jpg

** Какая польза от кластеров? ** Как упоминалось ранее, в области данных 2847 секторов (<3072 кластера), поэтому мы можем сопоставить каждый кластер с сектором. Мы нумеруем сектора как 0, 1 . Поскольку кластеры 0 и 1 бесполезны, кластер 2 представляет сектор 32 (предыдущие сектора - это MBR, FAT1, FAT2 и корневой каталог), кластер 3 представляет 33 сектора. Район и тд.

Мы можем видеть, что эта структура все больше и больше похожа на структуру связанного списка в программировании, которая может быть выражена как следующая структура на языке C

** Почему разделены кластеры и сектора? ** Конечно, мы можем поместить следующий указатель в сектор, который больше похож на структуру связанного списка в программировании. Однако в реальной операционной системе часто требуется только доступ к номеру кластера, без доступа к данным в секторе (вычисление размера каталога), в это время только чтение содержимого в одном секторе может в основном завершить операцию. , Что значительно сокращает время ввода-вывода.

Область корневого каталога

Корневой каталог, как следует из его названия, является начальной папкой системы. Он обозначен символом «\» в Windows и «/» в Linux. Файлы и подкаталоги хранятся в корневом каталоге. Реальные данные обоих хранятся в области данных. Основная информация хранится в корневом каталоге, чтобы найти их реальные данные. Эта основная информация называетсяЗапись в каталоге файлов。

Запись в каталоге файлов имеет 32 байта, а метод организации следующий (адресуется по байтам)

Смещение длина описание
0 8 имя файла
8 3 Расширение файла
11 1 Атрибуты файла
12 10 Зарезервированный бит
22 2 Время создания
24 2 Дата создания
26 2 Номер кластера
28 4 Размер файла

Имя файла и расширение - это основное имя и имя после символа '.'. Например, имя файла a.txt - a, а расширение - txt. Следует отметить, что если имя файла меньше 8 символов, то следующие символы должны быть установлены как «пробел» вместо 0.

Существует три основных атрибута файла: скрытые файлы 0x27; каталоги 0x10; обычные файлы 0x20;

10-байтовый зарезервированный бит позже использовался для хранения такой информации, как «время модификации». Он был потрачен впустую в исходной системе DOS.

Дата и время создания посложнее, я специально написалстатьяТщательно анализируйте. Среди них - код извлечения языка C.

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

Если файл имеет только один сектор и номер первого кластера равен 2, то первые несколько байтов таблицы FAT выглядят следующим образом: F0 FF FF FF? F. Младшие четыре бита последнего байта и предшествующего FF образуют конечный тег FFF. Все данные файла хранятся в 32 секторах.

Если файл состоит из нескольких секторов и номер первого кластера равен 2, то первые несколько байтов таблицы FAT могут выглядеть так: F0 FF FF 02 0F FF. Данные файла хранятся в 32 и 33 секторах.

Размер файла - это размер файла, выраженный в байтах.

Область данных

Если определенный сектор области данных является каталогом, то этот каталог называется подкаталогом. Подкаталоги делятся на подкаталоги первого уровня, второго уровня . и их метод организации в основном такой же, как и у корневого каталога.

Подкаталог должен содержать два элемента каталога:.…

Например, использование команды dir в определенном подкаталоге DOS приведет к следующим результатам

image-20200331210408861.jpg

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

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

Запись каталога dotdot хранит номер первого кластера родительского каталога текущего каталога.Если родительский каталог является корневым каталогом, первый номер кластера равен нулю, что является особым случаем. При использовании следующей команды он вернется в родительский каталог

Если в определенном секторе хранятся обычные файлы, особых правил нет, и в зависимости от каждого файла будут разные структуры организации данных.

Интеллектуальная рекомендация

совместный запрос mysql с тремя таблицами (таблица сотрудников, таблица отделов, таблица зарплат)

1. Краткое изложение проблемы: (внизу есть инструкция по созданию таблицы, копирование можно непосредственно практиковать с помощью (mysql)) Найдите отделы, в которых есть хотя бы один сотрудник. Отоб.


[Загрузчик классов обучения JVM] Третий день пользовательского контента, связанного с загрузчиком классов


IP, сеанс и cookie

Содержание

Версии системы FAT [ ]

Структура системы FAT [ ]

Пространство тома FAT32 логически разделено на три смежные области:

Первая структура тома FAT называется BPB ( Шаблон:Lang-en ) и расположена в зарезервированной области, в нулевом секторе. Эта структура содержит информацию, идентифицирующую тип файловой системы и физические характеристики носителя (дискеты или раздела на жёстком диске).

BIOS Parameter Block [ ]

Шаблон:Main BPB, в принципе, отсутствовал в FAT, обслуживавшей MS-DOS 1.x, так как в то время предполагалось лишь два различных типа тома — одно- и двусторонние пятидюймовые дискеты на 360 кб, причём формат тома определялся по первому байту области FAT. BPB был введен в MS-DOS 2.x в начале 1983 года как обязательная структура загрузочного сектора, по которой впредь следовало определять формат тома; старая схема определения по первому байту FAT лишилась поддержки. Также в MS-DOS 2.0 была введена иерархия файлов и папок (до этого все файлы хранились в корневом каталоге).

Следующая модификация BPB появилась вместе с Windows 95 OSR2, в которой была введена FAT32 (в августе 1996 года). Было снято ограничение в 2 Тб на размер тома, том FAT32 теоретически может иметь размер до 8 Тб. Впрочем, размер каждого отдельного файла при этом не может превышать 4 Гб. BIOS Parameter Block FAT32 в целях совместимости с ранними версиями FAT повторяет BPB FAT16 вплоть до поля BPB_TotSec32 включительно, далее следуют различия.

«Загрузочный сектор» FAT32 в действительности представляет собой три 512-байтных сектора — сектора 0, 1 и 2. Каждый из них содержит FSInfo [ ]

Загрузочная запись раздела FAT32 содержит структуру под названием FSInfo, используемую для хранения значения числа свободных кластеров тома. FSInfo, как правило, занимает сектор 1 (см. поле BPB_FSInfo) и имеет следующую структуру (адреса относительно начала сектора):

Смысл введения FSInfo в оптимизации работы системы, так как в FAT32 таблица индексных указателей может иметь значительные размеры и её побайтовый просмотр может занять значительное время. Однако значения полей FSI_Free_Count и FSI_Nxt_Free могут не соответствовать действительности и должны проверяться на адекватность. Кроме того, они даже не обновляются в резервной копии FSInfo, расположенной, как правило, в секторе 7.

Определение типа FAT тома [ ]

Определение типа FAT тома (то есть выбор между FAT12, FAT16 и FAT32) производится ОС по количеству кластеров в томе, которое, в свою очередь, определяется из полей BPB. Прежде всего вычисляется количество секторов корневого каталога:

RootDirSectors = (BPB_RootEntCnt * 32) / BPB_BytsPerSec

Далее определяется, какие из полей BPB_FATSz16/32 и BPB_TotSec16/32 не равны нулю, и они используются при определении количества секторов области данных тома:

Наконец, определяется количество кластеров области данных:

CountofClusters = DataSec / BPB_SecPerClus

По количеству кластеров проводится однозначное соответствие с файловой системой:

Согласно официальной спецификации, это единственный допустимый способ определения типа FAT. Искусственное создание тома, нарушающего указанные правила соответствия, приведёт к его некорректной обработке Windows. Тем не менее, рекомендуется избегать значений CountofClusters, близких к критическим (4085 и 65525), для верного определения типа файловой системы любыми, часто некорректно написанными драйверами.

На дискете при Серийный номер тома [ ]

Серийный номер тома (поле BS_VolID) в Windows 98 создается из даты и времени форматирования таким образом, что восстановить их невозможно без дополнительной информации.

Таблица FAT [ ]

Кластеры 0 и 1 отражаются FAT особо. Индексный указатель, соответствующий нулевому кластеру (самый первый указатель таблицы FAT), содержит значение BPB_Media в нижних 8 битах; остальные биты устанавливаются в 1. Например, если BPB_Media = 0xF8 (жесткий диск), FAT[0] = 0x0FFFFFF8 для FAT32. Таким образом, формально FAT[0] = EOC, что используется при обработке файлов нулевого размера (см. далее).

Непосредственно после окончания последней таблицы FAT следует область данных, содержащая файлы и папки. Каталог FAT (папка, директория) является обычным файлом, помеченным специальным атрибутом. Данными (содержимым) такого файла в любой версии FAT является цепочка 32-байтных файловых записей (записей каталога). Каталог не может штатно содержать два файла с одинаковым именем. Если программа проверки диска обнаруживает искусственно созданную пару файлов с идентичным именем в одном каталоге, один из них переименовывается.

Корневой каталог [ ]

Единственным обязательно присутствующим каталогом является корневой каталог. В FAT12/FAT16 корневой каталог имеет фиксированный размер в секторах, который вычисляется из значения BPB_RootEntCnt, и следует на диске непосредственно после таблицы FAT.

В FAT32 корневой каталог, как и любой другой, имеет переменный размер и является цепочкой кластеров. Номер первого кластера корневого каталога отражается BPB_RootClus. Корневой каталог имеет следующие отличия от других каталогов тома FAT:

  • у него нет меток даты и времени;
  • нет собственного имени (кроме «\»);
  • он не содержит файлов с именами «.» и «..» (см. далее);
  • является единственным каталогом, в котором может штатно располагаться файл метки тома (см. далее).

Структура файловой записи [ ]

Расположение полей файловой записи

Файловая запись FAT32 состоит из следующих структур:

Если первый байт записи FAT (то есть DIR_Name[0]) содержит 0xE5 или 0x05, это значит, что запись свободна (соответствующий файл был удалён). Ноль в DIR_Name[0] означает, что свободна не только эта запись, но и все следующие записи каталога; Windows не анализирует остаток каталога после обнулённой записи.

Имя файла в FAT [ ]

Поле DIR_Name логически разбивается на первые 8 символов, образующие имя файла, и последние 3, образующие расширение. Точка-разделитель добавляется на уровне операционной системы и не хранится в поле имени. Если имя и расширение файла не заполняют отведённое для них место, остальные байты поля DIR_Name заполняются пробелами (0x20). Имя и расширение файла могут содержать любую комбинацию букв, цифр или символов с ASCII -кодами свыше 127; специальные символы распределяются на три группы:

Файловые атрибуты [ ]

Искусственное присвоение ненулевого значения верхним двум битам DIR_Attr используется для формирования файлов, которые невозможно удалить или переименовать штатными средствами файловой системы без форматирования. Это полезно, например, при борьбе с вирусами Autorun.inf (программа Panda USB and AutoRun Vaccine). С другой стороны, это же средство могут использовать сами вирусы. Значение DIR_Attr = 0x40 резервировано для внутреннего использования (устройство).

Что происходит при создании каталога [ ]

Время и дата [ ]

Двухбайтовая отметка даты имеет следующий формат:

Два байта, отвечающие отметке времени, распределяются так:

Из отметок даты и времени критическим является лишь время последней модификации (то есть DIR_WrtTime и DIR_WrtDate), остальные могут не поддерживаться многими системами; при операциях с файлом в такой системе (например, DOS или Windows 3.1) эти поля игнорируются. FAT сохраняет отметки даты и времени по местному часовому поясу, при его смене отметки не меняются.

Временные отметки каталогов задаются при создании и не изменяются при записи новых файлов в каталог, переименовании или выделении ему нового кластера.

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

Дата и время создания задается при выделении файловой записи для нового, не существовавшего до этого файла. Иначе говоря, при переименовании или перемещении файла дата и время создания не изменяется, а при копировании новый файл получает новую отметку. Таким образом, при копировании файла в Windows файл может получить более позднюю дату создания, чем дату модификации.

LFN-записи [ ]

Файлы и каталоги с длинным именем (свыше 8.3) обрабатываются файловой системой FAT особым образом. Структура 32-байтной записи для файла с LFN (Long File Name) отличается от обычной (SFN-записи):

  • LDIR_Ord. Первый байт записи, служит для нумерации записей в наборе.
  • LDIR_Name1. Десятибайтовое поле по адресу 0х01, содержит первые пять символов имени файла (вернее, той части его имени, которая отражена в данной LFN-записи).
  • LDIR_Attr. Байт атрибута по адресу 0х0B, равен 0х0F (ATTR_LONG_NAME).
  • LDIR_Type. Байт по адресу 0х0C, обнулен и дополнительно свидетельствует, что данная запись таблицы FAT относится к файлу с длинным именем.
  • LDIR_Chksum. Байт по адресу 0х0D, содержит контрольную сумму SFN псевдонима файла, соответствующего набору LFN-записей.
  • LDIR_Name2. 12-байтовое поле по адресу 0х0E, содержащее шестой-одиннадцатый символы имени файла.
  • LDIR_FstClusLO. 2-байтовое поле по адресу 0х1A, в контексте LFN-записи лишено смысла и обнуляется.
  • LDIR_Name3. 4-байтовое поле по адресу 0х1C, содержащее 12-й и 13-й символы имени файла.

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

Отказоустойчивость системы [ ]

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

Лицензирование [ ]

Майкрософт запатентовала некоторые алгоритмы работы с FAT и VFAT.

Каждый элемент таблицы FAT занимает на диске определенное место, т.е. под него выделяется определенное количество бит. Используются 12-ти, 16 32-битовые элементы FAT. Соответственно файловая система носит название FAT12, FAT16 или FAT32.

Длина элемента FAT определяет разрядность хранимого в нем двоичного числа, а значит и максимальный номер кластера, информация о котором находиться в этом элементе. Поэтому длина элемента FAT ограничивает максимальное количество кластеров, которые могут быть сформированы в рабочей области тома (для FAT12: 2 12 = 4096; для FAT-16: 2 16 = 65535; для FAT-32: 2 32 = 4294967296).

12-битовый формат годиться только для гибких дисков (дискет) с небольшим количеством секторов при этом вся таблица FAT помещается в одном секторе диска.

16-ти и 32-битовые версии FAT были разработаны для жестких дисков. В настоящее время используется в основном FAT32, FAT16 может использоваться только с дисками небольшого объема, которые в настоящий момент уже не применяются. Разберем почему. Пусть нам необходимо организовать файловую систему на диске объемом 4Гбайта (очевидно, что речь идет о Flash-диске). Если мы используем FAT16, количество используемых кластеров на диске может достигать 2 16. Вычислим размер одного кластера, размер всего диска 4*2 30 делим на количество кластеров:

Размер кластера = 4*230 / 216 = 216 = 64КБайта

Это значит, что даже для хранения файла размером один байт будет использовано 64 КБайта дисковой памяти, т.е. дисковое пространство используется крайне нерационально. Неиспользованная часть кластера называется потерянным местом(slack). В небольших файлах почти весь кластер может быть потерянным местом, а в среднем потери составляют половину размера кластера.

При применении FAT32 это ограничение на количество кластеров (а значит и на его размер) снимается, эта система намного эффективнее расходует дисковое пространство, так как использует кластеры меньшего размера. Размеры кластера задаются системой при форматировании диска (См. таблицу 9).

Таблица 9 Зависимость размера кластера от емкости диска

Емкость диска, Гбайт Размер кластера, Кбайт
Менее 8
Менее 16
Менее 32
32 и более

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

Фрагментация диска

Как это видно на рисунке 6 цепочка кластеров, принадлежащих одному файлу, может записаться не подряд, а в виде нескольких фрагментов. Если на диске записано много данных, на нем может не быть цельной области, достаточной для размещения файла. Тем не менее, файл все-таки запишется, если на диске много мелких областей, суммарный размер которых достаточен для записи. В этом случае файл записывается в виде нескольких фрагментов

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

Для ускорения работы производится дефрагментация т.е.перераспределение файлов на диске, при котором они располагаются в непрерывных последовательностях кластеров. После дефрагментации ускоряется чтение и запись файлов, а следовательно и работа программ. Операционные системы Windows имеют встроенные утилиты для дефрагментации.

Потерянные кластеры

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

Такая ситуация может возникнуть при «зависании» программы или при пропадании питания во время операции записи файла (Именно поэтому система предлагает проверить диск с FAT после «неправильного» выключения компьютера). Система производит запись информации в область данных (в кластеры файла) и в элементы FAT, но не успевает поместить в каталог соответствующий дескриптор файла. Это происходит из-за того, что запись каталога для файла является последней частью операции записи файла, потому, что каталог содержит размер файла, a Windows не может знать его до тех пор, пока не закончит запись файла.

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

Иерархическая (древовидная) структура каталогов

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

Про организацию дочерних каталогов мы уже упоминали, такой каталог имеет в родительском каталоге дескриптор (как обычных файл). От дескриптора файла дескриптор каталога отличается только установленным атрибутом D (4-й бит в байте атрибутов - DIRECTORY).

Теперь разберемся, каким образом дочерний каталог «знает» о родительском. В любом каталоге, кроме корневого, два первых дескриптора имеют специальное назначение. Первый дескриптор содержит в поле имени строку «.». Этот дескриптор указывает на содержащий его каталог, то есть каталог имеет ссылку сам на себя. Второй специальный дескриптор имеет имя «..». Этот дескриптор указывает на каталог более высокого уровня (родительский).

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

Длинные имена

Первые версии файловой системы FAT позволяли хранить только короткие имена файлов в стандарте «восемь-точка-три» (8.3). Это объясняется тем, что в дескрипторе файла для имени файла выделяется 8 байт, а для расширения 3 байта. Начиная с Windows 95 была введена поддержка длинных имен файлов. В улучшенной файловой системе файлу или каталогу можно присваивать имя длиной до 255 символов. В длинных именах файлов можно использовать пробелы, а также символы + ,; = [], которые нельзя было использовать в стандартных именах файлов. Разберемся, как устроены длинные имена в файловой системе FAT.

Проблема использования длинных имен файлов была решена следующим образом: для каждого файла и подкаталога имеются два имени: короткое, «понятное» всем прикладным программам, и длинное - для приложений Windows и тех программ, в которых предусмотрена возможность работы с длинными именами. Для хранения коротких имен в формате 8.3 используются обычные 32-байт записи. Короткие имена Windows создает из длинных имен, отсекая шесть старших символов и добавляя в конце этого базового имени "

1". Если же существует еще одно имя, состоящее из тех же шести символов, то этот номер увеличивается на единицу. Расширение файла сохраняется прежним. Если в имени встречается символ, не допустимый в предыдущих версиях операционной системы, он заменяется на знак «подчеркивание» (_). Кириллица переводится в верхний регистр (только заглавные буквы).

Покажем как длинные имена преобразуются в короткие.

Длинные имена Короткие имена

Именно эти короткие имена и будут храниться в дескрипторах файлов, размещаемых в каталогах. Таким образом, все версии операционных систем могут получить доступ к файлу под длинным именем с помощью его короткого имени.

Остается еще одна проблема: как хранить 255 символов имени файла в 32 байтах дескриптора файла, ведь каждый символ имени файла — это один байт? Модифицировать структуру записи каталога нельзя, поскольку тогда предыдущие версии операционных систем не смогут использовать ее. Разработчики файловой системы решили эту проблему следующим образом: были добавлены дополнительные записи каталога для хранения длинных имен файлов. Чтобы предыдущие версии операционных систем не «замечали» этих дополнительных записей каталога, система устанавливает для них атрибуты, которые нельзя использовать для обычного файла (значение байта атрибутов 0Fh: только для чтения, скрытый, системный и метка тома). Поскольку значения атрибутов противоречивы (не бывает защищенных от записи, скрытых и системных меток тома), дескрипторы с такими атрибутами система игнорирует, и, следовательно, длинные имена файлов остаются «нетронутыми».

Для конкретного файла или каталога непосредственно перед его единственным дескриптором с его именем в формате 8.3 находится группа из одной или нескольких записей (дескрипторов с «неправильными» атрибутами), представляющих длинное имя (до 255 символов). Каждая такая запись содержит часть длинного имени файла не более 13 символов, и операционная система составляет полное длинное имя из всех записей.

NTFS

Структура NTFS

Файловая система NTFS (New Technology File System – файловая система новой технологии) является сложной файловой системой, разработанной независимо от системы FAT.

При установке NTFS, диск разделяется на две неравные части: первая в начале диска отводиться под специальную таблицу MFT (Master File Table - главная файловая таблица), называется MFT - зоной и занимает порядка 12% от общего размера диска, вторую часть занимают собственно ваши данные. Это основа NTFS. Каждая запись в MFT соответствует какому-либо файлу и занимает около 1 Kb. По своей сути это каталог всех файлов находящихся на диске.

Первые 16 файлов носят служебный характер и недоступны операционной системе - они называются метафайлами. Эти первые 16 элементов MFT - единственная часть диска, имеющая фиксированное положение. Вторая копия этих первых записей хранится ровно посередине диска для надежности.

Обратимся теперь к записи файла MFT. В этом месте хранится вся информация о файле, за исключением собственно данных. Имя файла, размер, положение на диске отдельных фрагментов, и т.д. Если для информации не хватает одной записи MFT, то используются несколько, причем не обязательно подряд. Если данных в файле не много, то они наоборот целиком хранятся в записи файла MFT. Это значит что небольшие файлы и каталоги (обычно до 1500 байт) могут полностью содержаться внутри записи MFT. Подобный подход обеспечивает очень быстрый доступ к маленьким файлам.

Имя файла может иметь длину до 255 символов, при этом допустимы любые символы, включая полный набор национальных алфавитов, так как данные представлены в Unicode (65535 разных символов).

Как и файловой системе FAT файлы в NTFS записываются в виде последовательности кластеров. Кластеры в файловой системе NTFS могут принимать размеры от 512 байт до 64 Кб. Стандартным значением длины кластера является размер 4 Кб.

А теперь уберите детей и беременных женщин от экранов, потому что мы будет иметь дело с байтами в чистом виде.

Для начала определимся с дискетой. А именно с самой обыкновенной дискетой 3.5” с 1.44Мб на борту, которая всем нам так хорошо знакома. Так вот, всё место на дискете разбито на секторы, размер каждого сектора составляет 512 байт. Сектора объединяются в кластеры, но на дискете не так уж и много секторов (2848), поэтому каждый кластер содержит только один сектор.

Итак, файловая система. Самый первый сектор на дискете (нулевой) отводится под Boot Sector – загрузочный сектор. В нем хранится всякая полезная и важная информация. Сразу за ним следует FAT таблица. FAT расшифровывается как File AllocationTable – Таблица Размещения Файлов. Как правило, эта таблица дублируется с целью увеличения надежности. Первая и вторая таблицы занимают 1-9 и 10-18 сектора соответственно. После таблиц несколько секторов (на дискете это 14шт) отводятся под корневой каталог. И после всего этого уже идут секторы с содержимым файлов.

А теперь обо всем по порядку.

Boot Sector – Загрузочный сектор

Этот сектор занимает нулевой сектор на дискете. Он содержит очень важную информацию об устройстве файловой системы. Далее следуют номера байтов в секторе и то, что в них хранится:

Если байт загрузочной области установлен в 0x29, то следующие за ним 3 поля присутствуют.

Id тома используется как его серийный номер. Обычно его получают из времени создания тома.

Метка тома — это его название. По умолчанию выставляется в «NO NAME&nbsp&nbsp&nbsp&nbsp».

Тип файловой системы — для FAT12, это строка «FAT12&nbsp&nbsp&nbsp». На самом деле большинство драйверов определяют тип системы не из этой строки, а на основе количества секторов в носителе (FAT12 выбирается, если на носителе не более 2^12 = 4096 секторов)

FAT таблица

FAT таблица очень похожа на массив, элементы которого состоят из 2х байтов. Каждый элемент соответствует сектору с данными, но тут мы используем не реальные, а логические сектора. Их отличие в том, что их нумерация начинается не с начала дискеты, а с начала области данных. То есть в нашем примере первые 33 сектора дискеты (0-32) заняты Boot сектором, FAT таблицами и корневым каталогом, то есть сами данные начинаются на 33 секторе. В FAT таблицах нулевой и первый элемент зарезервированы, поэтому мы начинаем со второго. Таким образом второй элемент FAT таблицы соответствует 33 сектору на дискете или 0 логическому сектору, а, например, пятый элемент — 36му и 3му логическому. Значения элемента могут быть 3х типов:

  1. Значение, указывающее на то, что сектор является последним в файле
  2. Значение, указывающее на то, что сектор в настоящее время не используется
  3. Порядковый номер следующего сектора файла

Вот более подробный список значений и того, что они означают:

Небольшой пример. Представьте, что у нас на диске записано 2 файла. Это text.txt, который занимает 4 сектора и picture.jpg, который занимает 2 сектора. Пусть text.txt занимает 0, 2, 4 и 5 логические сектора в области данных (отсчет ведется с нуля), а picture.jpg — 1 и 3. Тогда FAT таблица будет выглядеть примерно так:

R 0x0000
R 0x0000 — первые 2 элемента зарезервированы, помните?
0 0x0002 — начало файла text.txt, тут хранится указатель на следующий сектор файла text.txt
1 0x0003 — начало picture.jpg и указатель на продолжение
2 0x0004 — продолжение text.txt
3 0x0FFF — последний сектор picture.jpg
4 0x0005 — предпоследний сектор text.txt
5 0x0FFF — последний сектор text.txt

Цифра перед значением показывает, с каким логическим сектором связан этот элемент. Буква «R» стоит перед зарезервированными, то есть неиспользуемыми элементами.

Директории

Директории (в том числе и корневая) хранятся на диске как файлы и занимают один или несколько секторов. Каждый сектор директории (512 байт) содержит указатели на 16 файлов, то есть по 32 байта на каждый указатель. Такой указатель описывает вложенную директорию или файл на диске и ссылается на него. Таким образом набор этих указателей полностью описывает внутреннее содержимое папки. Разберем эти указатели поподробнее. Номера байтов и их содержимое:

Если первый байт имени имеет значение 0x29, то этот указатель пуст (то есть файл был удален), но после него еще имеются указатели. Если же первый байт имени — 0x00, то указатель пуст и дальше все указатели тоже пусты.

Байт атрибутов описывает свойства файлов. Вот его допустимые значения:

  • 0x01 — только чтение
  • 0x02 — скрытый
  • 0x04 — системный
  • 0x08 — Volume Label (я так и не разобрался, что это такое)
  • 0x10 — указывает на то, что файл является папкой
  • 0x20 — архивный (Archive, тоже не разобрался)
  • 0x40 — не используется
  • 0x80 — не используется

Значения можно комбинировать. Например, если мы хотим чтобы наш файл был скрытой системной папкой, то мы устанавливаем этот байт в значение 0x16, потому-что 0x16 = 0x02 + 0x04 + 0x10.

Имя файла и расширение

В FAT12 выделяется 8 символов под имя файла и 3 символа под расширение. Если у файла имя занимает меньше 8ми символов, то оставшиеся заполняются пробелами (ASCII 32 или 0x20). То же самое и с расширением. Также все имена и расширения хранятся в ВЕРХНЕМ РЕГИСТРЕ. У директорий, кстати, тоже могут быть расширения. В одной папке не может находится сразу несколько файлов или директорий с одинаковыми именами и расширениями. Вот несколько примеров, слева то, что хранится на диске, а справа имена, которые мы дали файлам. Символом подчеркивания ("_") я заменил пробел для наглядности:

  • «FOO_____BAR» — «foo.bar»
  • «FOO_____BAR» — «Foo.Bar»
  • «FOO_____BAR» — «FOO.BAR»
  • «FOO________» — «foo»
  • «FOO________» — «foo.»
  • «PICKLE__A__» — «PICKLE.A»
  • «PRETTYBGBIG» — «prettybg.big»

Имя файла ".big" является некорректным, потому-что имена не могут начинаться с точки.

Ну вот, теперь вы должны представлять себе устройство системы FAT12, надеюсь я все понятно разжевал. Тем не менее, если у вас возникнут какие-либо вопросы, то задавайте их в комментариях.

Читайте о том, что собой представляют файловые системы и какие у них между собой отличия. Сделаем акцент на разнице между файловыми системами «NTFS», «FAT», «FAT32» и «exFAT».

difference-between-ntfs-fat-fat32-and-exfat-file-systems.jpg

Введение

За ответственное и сохранное расположение информационных материалов отвечают запоминающие устройства. Для их успешного и безошибочного функционирования необходимо обязательное наличие программного интерфейса, структурирующего расположение любой информации, и предоставляющего упорядоченные способы управления доступными ресурсами. Такой урегулированный контролируемый способ внутренней организации, расположения и упорядочивания данных, в соответствии с собственными методами каталогизации и озаглавливания, на различных носителях информации в компьютерах и ноутбуках, а также в разнообразных сторонних электронных устройствах, получил обобщающее название файловая система.

Файловые системы имеют собственную классификацию и представлены различными видами, включающие как наиболее распространенные «NTFS», «FAT», «HFS+», «Extfs», «Ext2», «ReiserFS», «XFS», «HPFS», «ext2», «OpenBSD», «UDF», «YAFFS», так и довольно редкие «ZFS», и данный ряд может быть существенно дополнен многими другими вариантами.

Наиболее часто встречающимися и массово представленными файловыми системами безусловно являются «NTFS», «FAT», «FAT32» и «exFAT». Но обычный пользователь не всегда точно может понять разницу между системами. В этой статье мы попытаемся рассмотреть общее понятие файловой системы и ответить на отдельные вопросы, такие как: – «Что представляют собой файловые системы «FAT», «FAT32», «exFAT» и «NTFS» и в чем разница между ними?».

Определение термина файловая система

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

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

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

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

Что представляют собой файловые системы «FAT», «FAT32», «exFAT» и «NTFS»

Операционная система «Windows», как самый массовый представитель систем управления компьютерными устройствами в мире, настроена на взаимодействие с различными файловыми системами («NTFS» и «FAT»), но «NTFS» поддерживает большие размеры файлов и томов и обеспечивает более эффективную организацию данных, по сравнению с другими вариантами файловых систем.

И несмотря на общие цели, файловые системы «NTFS» и «FAT» различаются методами организации и хранения данных на диске, а также указанием типов атрибутов, прикрепленных к файлам. И далее мы представим непосредственное описание конкретных файловых систем.

Файловая система «FAT»

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

Файловая система «FAT32»

«FAT32» является фактическим стандартом, пришедшим на смену более ранним версиям файловой системы «FAT», «FAT12» и «FAT16», и изначально устанавливается на большинстве видов сменных носителей по умолчанию. Пространство «FAT32» логически разделено на три сопредельные области: зарезервированную область для служебных структур, табличную форму указателей и непосредственную зону записи содержимого файлов. Файловая система позволяет использовать накопители на ее основе не только на современных моделях компьютеров, но и в устаревших устройствах и консолях, снабженных разъемом «USB».

Тем не менее, стандарт «FAT32» имеет определенные системные ограничения. Размер отдельных файлов на диске с файловой системой «FAT32» не может превышать четыре гигабайта. Кроме того, весь раздел «FAT32» должен быть менее восьми терабайт. По совокупности ограничений, формат «FAT32» считается подходящим для «USB-накопителей» или внешних носителей информации. Для внутреннего накопителя, особенно при желании установить новейшую версию операционной системы «Windows 10», отсутствие отдельных привилегий прикладного уровня в «FAT32» будет серьезным препятствием, и потребует наличия более продвинутой версии файловой системы.

Файловая система «exFAT»

«exFAT» – это сокращенное обозначение от полного английского названия «Extended File Allocation Table» («расширенная таблица размещения файлов»). Стандарт является обновленной версией файловой системы «FAT32», созданный корпорацией «Microsoft». Основными параметрами система «exFAT» чрезвычайно похожа на «FAT32». Но главным отличием является устранение ограничений, присутствующих в файловой системе «FAT32», что позволяет пользователям хранить файлы намного большего размера, чем четыре гигабайта.

Также в файловой системе «exFAT» значительно снижено число перезаписей секторов, ответственных за непосредственное хранение информации, что особенно важно для флэш-накопителей, ввиду необратимого изнашивания ячеек после определённого количества операций записи, и улучшен механизм распределения свободного места.

Файловая система «NTFS»

«NTFS» («файловая система новой технологии») была в основном создана с целью устранения ограничений и недостатков файловых систем «FAT», улучшения производительности, надёжности и эффективности использования дискового пространства, а также создания надежного механизма защиты и хранения информации. Файловая система «NTFS» хранит информацию о файлах в главной файловой таблице «Master File Table» («MFT»), осуществляет разграничение доступа к данным для различных пользователей, предотвращает несанкционированный доступ к содержимому файла, применяя систему шифрования под названием «Encryption File System», которая использует защитный метод «прозрачного шифрования» данных.

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

Разница между файловыми системами «NTFS», «FAT», «FAT32» и «exFAT»

Файловая система «FAT» создавалась первоначально для накопителей незначительного объема и способна поддерживать граничные размеры файлов до четырех гигабайт, в то время как в системе «NTFS» допустимый предел размера увеличен до шестнадцати терабайт. Далее подробнее представлены другие отличия:

«NTFS»

  • Поддержка файлов и дисков значительных размеров, на порядок превышающие остальные файловые системы.
  • Позволяет использовать расширенные имена файлов, включая поддержку множества сложных языков.
  • Падение работоспособности системы при запуске приложения проверки жёсткого диска или внешнего накопителя на ошибки файловой системы «chkdsk».
  • Стандартное приложение обслуживания системы «chkdsk» печально известно своей медлительностью.
  • Повышен уровень безопасности благодаря внедрению метода шифрования файлов.
  • Значительно быстрее на дисках объемом менее сорока гигабайт.
  • Меньшие файловые кластеры.
  • Поддержка сжатия на уровне файловой системы для файлов, каталогов и дисков для уменьшения дискового пространства.
  • Пользовательские разрешения для файлов и папок.
  • Копии файлов «отменяются», если прерванный кластер очищен.
  • Небольшие файлы хранятся в главной таблице файлов в начале диска.

«FAT»

  • Не совместим с последней версией операционной системы «Windows».
  • Поддержка дисков от тридцати двух мегабайт до двух терабайт.
  • Более сильные преимущества и результативные особенности инструментов для восстановления.
  • Поддерживает быструю проверку работоспособности диска.
  • Простой способ размещения операционной системы и быстрый алгоритм чтения файлов.
  • Быстрее функционирует на дисках объемом менее десяти гигабайт.
  • Цепочки кластеров, содержащие данные из прерванных копий, помечаются как поврежденные.
  • Таблица основных файлов отделена от других файлов.

«FAT 32»

  • Отсутствуют функции безопасности, которые реализованы в более современной файловой системе «NTFS».
  • Не удается установить новейшие версии операционной системы «Windows» (поскольку файл имеет большой размер и может быть установлен только на диски, отформатированные в системе «NTFS»).

«exFAT»

  • Доступ к дискам с файловой системой «exFAT» в операционной системе «Linux» можно получить только после установки соответствующего программного обеспечения.
  • Работает со всеми версиями операционной системы «Windows» и современными версиями системы «Mac OS X».

Полную версию статьи со всеми дополнительными видео уроками смотрите в источнике. Если у вас остались вопросы, задавайте их в комментариях.

Читайте также: