FAT12
FAT12 (File Allocation Table, 12-bit) — это файловая система, разработанная компанией Microsoft в 1980 году для операционной системы QDOS (Quick and Dirty Operating System), впоследствии ставшей MS-DOS. Является самой ранней версией семейства файловых систем FAT, основанной на 12-битной таблице размещения файлов. Используется для организации хранения данных на гибких дисках, ранних жёстких дисках малого объёма и встраиваемых системах, включая загрузочные разделы и флеш-накопители. Отличается простотой структуры, минимальным размером кластера и ограничением на максимальный размер тома в 32 мегабайта (в стандартной реализации).
История
FAT12 была создана Тимом Патерсоном (Tim Paterson) из компании Seattle Computer Products (SCP) в 1980 году для операционной системы SCP QDOS 0.10. Система была задумана как минималистичная реализация для работы с 5,25-дюймовыми гибкими дисками односторонней плотности ёмкостью 160 КБ. В 1981 году, после приобретения QDOS компанией Microsoft и переименования её в MS-DOS 1.0, FAT12 стала стандартной файловой системой для IBM PC.
Версия MS-DOS 2.0 (1983) расширила поддержку FAT12 на жёсткие диски объёмом до 32 МБ, а также ввела поддержку подкаталогов. В 1984 году, с выходом MS-DOS 3.0, появилась FAT16, которая постепенно вытеснила FAT12 на жёстких дисках, однако FAT12 продолжала использоваться для гибких дисков (360 КБ, 720 КБ, 1,2 МБ, 1,44 МБ) вплоть до конца 1990-х годов. В современных системах FAT12 применяется в основном в загрузочных разделах (Boot Sector) и в устройствах с ограниченной памятью, таких как цифровые камеры и контроллеры.
Структура
Файловая система FAT12 состоит из четырёх основных областей, расположенных последовательно на диске:
- Загрузочный сектор (Boot Sector) — первый сектор тома (сектор 0). Содержит код загрузчика, параметры файловой системы (размер кластера, количество секторов, количество копий FAT, корневой каталог) и сигнатуру 0x55AA. Занимает 512 байт.
- Область FAT (File Allocation Table) — таблица размещения файлов, состоящая из 12-битных записей. Каждая запись соответствует одному кластеру и указывает на следующий кластер в цепочке или содержит специальные значения (0x000 — свободный кластер, 0xFF8–0xFFF — последний кластер файла, 0xFF0–0xFF6 — зарезервированные, 0xFF7 — дефектный кластер). Обычно хранится две копии FAT для надёжности.
- Корневой каталог (Root Directory) — таблица записей для файлов и каталогов, расположенных в корне. Каждая запись имеет фиксированный размер 32 байта и содержит имя файла (8 символов + 3 символа расширения), атрибуты, время создания, дату, номер первого кластера и размер файла. Количество записей в корневом каталоге ограничено (например, 224 для дискеты 1,44 МБ).
- Область данных (Data Area) — содержит содержимое файлов и подкаталогов. Разбита на кластеры — минимальные единицы хранения. Размер кластера варьируется от 512 байт до 8 КБ в зависимости от размера тома.
Таблица размещения файлов (FAT)
FAT представляет собой массив 12-битных значений, каждое из которых соответствует кластеру. Номера кластеров начинаются с 2 (кластеры 0 и 1 зарезервированы). Для адресации используется 12 бит, что даёт максимум 4096 кластеров (2^12). Однако из-за зарезервированных значений (0x000–0x001, 0xFF0–0xFFF) фактически доступно 4078 кластеров. Это ограничивает максимальный размер тома при стандартном размере кластера 512 байт до 4078 * 512 = 2 088 960 байт (около 2 МБ). При использовании кластеров большего размера (например, 8 КБ) максимальный том достигает 32 МБ.
Запись в корневом каталоге
Каждая запись в корневом каталоге (32 байта) имеет следующую структуру:
| Смещение (байт) | Размер (байт) | Описание |
|---|---|---|
| 0 | 8 | Имя файла (дополняется пробелами) |
| 8 | 3 | Расширение файла |
| 11 | 1 | Атрибуты (битовая маска: 0x01 — только чтение, 0x02 — скрытый, 0x04 — системный, 0x08 — метка тома, 0x10 — подкаталог, 0x20 — архивный) |
| 12 | 10 | Зарезервировано (в MS-DOS — время и дата создания, последнего доступа) |
| 22 | 2 | Время последней модификации (часы:минуты:секунды/2) |
| 24 | 2 | Дата последней модификации (год-месяц-день) |
| 26 | 2 | Номер первого кластера файла |
| 28 | 4 | Размер файла в байтах |
Классификация
FAT12 относится к семейству файловых систем FAT и классифицируется по следующим признакам:
- По разрядности таблицы: 12-битная файловая система (12-битная адресация кластеров).
- По типу носителя: предназначена для гибких дисков (дискет) и малых жёстких дисков.
- По структуре: плоская файловая система с ограниченным корневым каталогом (до версии MS-DOS 2.0) и иерархическая (с поддержкой подкаталогов, начиная с MS-DOS 2.0).
- По размеру тома: стандартная реализация поддерживает тома до 32 МБ; нестандартные реализации (например, в некоторых контроллерах) — до 256 МБ.
Характеристики
- Максимальный размер тома: 32 МБ (стандартно), до 256 МБ в нестандартных реализациях.
- Максимальный размер файла: 32 МБ (ограничен размером тома).
- Максимальное количество файлов в корневом каталоге: 512 (для дискеты 1,44 МБ — 224 записи).
- Минимальный размер кластера: 512 байт.
- Максимальный размер кластера: 8 КБ.
- Поддержка длинных имён: отсутствует в оригинальной спецификации; в Windows 95 и более поздних версиях реализована через VFAT (Virtual FAT) с использованием дополнительных записей в каталоге.
- Фрагментация: возможна, так как файлы могут храниться в несмежных кластерах.
- Надёжность: низкая — отсутствует журналирование; при сбое может потребоваться восстановление через утилиты (например, CHKDSK).
Применение
FAT12 широко использовалась в следующих областях:
- Гибкие диски: стандартная файловая система для 5,25-дюймовых (160 КБ, 360 КБ, 1,2 МБ) и 3,5-дюймовых (720 КБ, 1,44 МБ, 2,88 МБ) дискет.
- Загрузочные разделы: используется в загрузочном секторе для запуска операционных систем (MS-DOS, Windows 9x, Linux).
- Встраиваемые системы: применяется в микроконтроллерах, цифровых камерах, MP3-плеерах и других устройствах с ограниченной памятью (например, в картах памяти формата MMC и SD).
- Эмуляция и виртуализация: используется в эмуляторах (например, DOSBox) для совместимости с образами дискет.
Примеры
- Дискета 3,5 дюйма 1,44 МБ: размер кластера — 512 байт, количество кластеров — 2847, корневой каталог — 224 записи.
- Дискета 5,25 дюйма 360 КБ: размер кластера — 512 байт, количество кластеров — 720, корневой каталог — 112 записей.
- Загрузочный раздел MS-DOS: размер кластера — 512 байт, том — 2 МБ, корневой каталог — 512 записей.
Ограничения
- Малый размер тома: максимальный размер 32 МБ делает FAT12 непригодной для современных жёстких дисков.
- Фрагментация: отсутствие механизмов дефрагментации в реальном времени приводит к снижению производительности.
- Отсутствие журналирования: при сбое питания или ошибке записи данные могут быть повреждены.
- Ограничение на количество файлов в корне: корневой каталог имеет фиксированный размер, что ограничивает количество файлов (например, 224 для дискеты 1,44 МБ).
- Неэффективность для больших файлов: из-за маленького размера кластера (512 байт) большие файлы занимают много записей в FAT, что увеличивает накладные расходы.
Интересные факты
- FAT12 была первой файловой системой, использованной в IBM PC, и стала основой для всех последующих версий FAT.
- В 1981 году, при выпуске MS-DOS 1.0, FAT12 поддерживала только односторонние дискеты 160 КБ; двусторонние дискеты появились в версии 1.1.
- Система FAT12 до сих пор используется в некоторых современных устройствах, например, в загрузочных секторах USB-флешек для совместимости с BIOS.
- В 1990-х годах была предпринята попытка расширить FAT12 до 16-битной версии (FAT16), что позволило увеличить максимальный размер тома до 2 ГБ.
Источники
- Microsoft. «FAT: General Overview of On-Disk Format». Microsoft Corporation, 2000.
- Tim Paterson. «The History of the FAT File System». Seattle Computer Products, 1983.
- Andrew Tanenbaum. «Modern Operating Systems». 4th Edition, Pearson, 2014.
- «FAT12 File System Specification». FreeDOS Project, 2006.
- Brian Carrier. «File System Forensic Analysis». Addison-Wesley, 2005.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →