Открыть сервис

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 состоит из четырёх основных областей, расположенных последовательно на диске:

  1. Загрузочный сектор (Boot Sector) — первый сектор тома (сектор 0). Содержит код загрузчика, параметры файловой системы (размер кластера, количество секторов, количество копий FAT, корневой каталог) и сигнатуру 0x55AA. Занимает 512 байт.
  2. Область FAT (File Allocation Table) — таблица размещения файлов, состоящая из 12-битных записей. Каждая запись соответствует одному кластеру и указывает на следующий кластер в цепочке или содержит специальные значения (0x000 — свободный кластер, 0xFF8–0xFFF — последний кластер файла, 0xFF0–0xFF6 — зарезервированные, 0xFF7 — дефектный кластер). Обычно хранится две копии FAT для надёжности.
  3. Корневой каталог (Root Directory) — таблица записей для файлов и каталогов, расположенных в корне. Каждая запись имеет фиксированный размер 32 байта и содержит имя файла (8 символов + 3 символа расширения), атрибуты, время создания, дату, номер первого кластера и размер файла. Количество записей в корневом каталоге ограничено (например, 224 для дискеты 1,44 МБ).
  4. Область данных (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 байта) имеет следующую структуру:

Смещение (байт)Размер (байт)Описание
08Имя файла (дополняется пробелами)
83Расширение файла
111Атрибуты (битовая маска: 0x01 — только чтение, 0x02 — скрытый, 0x04 — системный, 0x08 — метка тома, 0x10 — подкаталог, 0x20 — архивный)
1210Зарезервировано (в MS-DOS — время и дата создания, последнего доступа)
222Время последней модификации (часы:минуты:секунды/2)
242Дата последней модификации (год-месяц-день)
262Номер первого кластера файла
284Размер файла в байтах

Классификация

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 →