Jump to content

Проектирование жирной файловой системы

ТОЛСТЫЙ
Разработчик (ы) Microsoft , SCP , IBM , Compaq , Digital Research , Novell , Caldera
Полное имя Таблица распределения файлов:
FAT12 (12-битная версия),
FAT16 (16-битные версии),
FAT32 (32-битная версия с 28 используемыми битами),
exfat (64-битная версии)
Введено 1977 ( автономный диск Basic-80 )
FAT12: август 1980 (SCP QDOS )
FAT16: август 1984 (IBM PC DOS 3.0)
FAT16B: ноябрь 1987 г. ( Compaq MS-DOS 3.31)
FAT32: август 1996 г. ( Windows 95 OSR2 )
exfat: ноябрь 2006 г. ( Windows Embedded CE 6.0 )
Идентификаторы раздела MBR / HEB :
FAT12 : 0x01 и
FAT16 : 0x040x060x0E и
FAT32 : 0x0B0x0C и
Exfat : 0x07 и
BDP :
EBD0A0A2-B9E5-4433­87C0-68B6B72699C7
Структуры
Справочное содержание Стол
Распределение файлов Связанный список
Плохие блоки Кластерная тега
Ограничения
Максимальный размер громкости FAT12: 32 МБ (256 МБ 64 КБ ) для кластеров
FAT16: 2 ГБ (4 ГБ для 64 КБ кластеров)
FAT32: 2 ТБ (16 ТБ для 4 КБ секторов )
Максимальный размер файла 4 294 967 295 байт (4 ГБ - 1) с FAT16B и FAT32 [ 1 ]
Макс нет. файлов FAT12: 4068 для 8 КБ кластеров
FAT16: 65,460 для 32 КБ кластеров
FAT32: 268,173 300 для 32 КБ кластера
Максимальная длина имени файла 8.3 Имя файла или 255 UCS-2 символов при использовании LFN
Функции
Даты записаны Измененная дата/время, дата/время создания (только DOS 7.0 и выше), дата доступа (доступна только с включенным AccDate ), [ 2 ] Дата удаления/время (только с Delwatch 2)
Диапазон дат 1980-01-01 по 2099-12-31 ( 2107-12-31 )
Дата разрешения 2 секунды за последнее измененное время,
10 мс для времени создания,
1 день для даты доступа,
2 секунды для времени удаления
Форк Не изначально
Атрибуты Только для чтения , скрытая , система , объем , каталог , архив
Файловая система
разрешения
FAT12/FAT16: права на файл, каталог и доступ к объему для чтения , записи , выполнения , удаления только с помощью DR-DOS , Palmdos , Novell DOS , Opendos , Flexos , 4680 OS , 4690 OS , одновременный DOS , многопользовательский DOS , системный менеджер , Real Real / 32 (выполнить справа только с помощью Flexos, 4680 OS, 4690 ОС; отдельные пароли файла / каталогов не с помощью Flexos, 4680 ОС, 4690 ОС; Классы разрешений World / Group / владелец только с загруженной многопользовательской безопасностью).
FAT32: частично, только с DR-DOS, Real/32 и 4690 OS
Прозрачный
сжатие
FAT12/FAT16: за объем, супер - слойщик , DoublePace , DriveSpace
FAT32: нет
Прозрачный
шифрование
FAT12/FAT16: за объем только с DR-DOS
FAT32: нет

Файловая система FAT -это файловая система, используемая в MS-DOS и семействе операционных систем Windows 9x . [ 3 ] Он продолжает использоваться на мобильных устройствах и встроенных системах и, таким образом, является хорошо подходящей файловой системой для обмена данными между компьютерами и устройствами практически любого типа и возраста с 1981 по настоящее время.

Структура

[ редактировать ]

Жирная файловая система состоит из четырех регионов:

Файл -регионы жирной системы, которые включают в себя четыре основных региона
Область Размер в секторах Содержимое Примечания
Зарезервированные сектора (Количество зарезервированных секторов ) Загрузочный сектор Первым зарезервированным сектором (логический сектор 0) является загрузочный сектор (также называемый записи загрузки громкости или просто VBR ). Он включает в себя область, называемую блоком параметров BIOS ( BPB ), которая содержит некоторую основную информацию о файловой системе, в частности, тип и указатели на местоположение других разделов и обычно содержит загрузчика код операционной системы.

Важная информация из загрузочного сектора доступна через структуру операционной системы, называемую блоком параметров привода ( DPB ) в DOS и OS/2.

Общее количество зарезервированных секторов обозначено поле внутри загрузочного сектора и обычно составляет 32 в файловых системах FAT32. [ 4 ]

Для файловых систем FAT32 зарезервированные сектора включают информационный сектор файловой системы в логическом секторе 1 и резервный загрузочный сектор в логическом секторе 6. В то время как многие другие поставщики продолжают использовать одноразмерную настройку (только логический сектор 0) для начальной загрузки Загрузчик, код загрузочного сектора Microsoft вырос до логических секторов 0 и 2 с момента введения FAT32, с логическим сектором 0 в зависимости от субрационов в логическом секторе 2. Площадь загрузочного загрузочного сектора состоит из трех логических секторов 6, 7, 7, 7, 7, и 8 тоже. В некоторых случаях Microsoft также использует сектор 12 зоны зарезервированного сектора для расширенного загрузчика.

Информационный сектор FS (только FAT32)
Более зарезервированные сектора (необязательно)
Жирный регион (количество жиров) * (сектора на жир) Таблица распределения файлов № 1 Обычно это содержит две копии таблицы распределения файлов для проверки избыточности, хотя и редко используются даже в результате утилиты по ремонту дисков. Это карты области данных, указывающие, какие кластеры используются файлами и каталогами. В FAT12 и FAT16 они сразу же следуют за зарезервированными секторами. Как правило, дополнительные копии хранятся в жесткой синхронизации при записи, а при чтениях они используются только тогда, когда в первом жире возникают ошибки. Первые два кластера (кластер 0 и 1 ) на карте содержат специальные значения.
Таблица распределения файлов № 2 ... (необязательно)
Корневый справочник области (Количество корневых записей * 32) / (байты на сектор) Корневой каталог (только FAT12 и FAT16) Это таблица каталогов , в которой хранится информация о файлах и каталогах, расположенных в корневом каталоге. Он используется только с FAT12 и FAT16 и накладывает в корневой каталог фиксированный максимальный размер, который предварительно выделяется при создании этого объема. FAT32 сохраняет корневой каталог в области данных, а также файлы и другие каталоги, что позволяет ему расти без такого ограничения. Таким образом, для FAT32 область данных начинается здесь.
Область данных (количество кластеров) * (секторы на кластер) Область данных (для файлов и каталогов) ... (до конца разделения или диска) Здесь хранятся фактические данные файла и каталога и занимают большую часть раздела. FAT32 обычно начинает таблицу корневых каталогов в кластере № 2: первый кластер области данных.

FAT использует малоэдианский формат для всех записей в заголовке (за исключением явного упоминания, некоторые записи в секторах загрузки Atari St) и жира (ы). [ 5 ] Можно выделить больше жирных секторов, чем необходимо для количества кластеров. Конец последнего сектора каждой жирной копии может быть неиспользованным, если нет соответствующих кластеров. Общее количество секторов (как отмечено в записи загрузки) может быть больше, чем количество секторов, используемых данными (кластеры × сектора на кластер), жиры (количество жиров × сектора на жир), корневой каталог (N/A для FAT32) и скрытых секторов, включая сектор загрузки: это приведет к неиспользованным секторам в конце тома. Если раздел содержит больше секторов, чем общее количество секторов, занятых файловой системой, это также приведет к неиспользованным секторам, в конце раздела, после тома.

Зарезервированная сектора

[ редактировать ]

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

[ редактировать ]

На не участвующих устройствах хранения , таких как дискет , загрузочный сектор ( VBR ) является первым сектором (логический сектор 0 с физическим адресом CHS 0/0/1 или адресом LBA 0). Для разделенных устройств хранения, таких как жесткие диски, загрузочный сектор является первым сектором раздела, как указано в таблице разделов устройства.

Общая структура загрузочного сектора, используемой большинством жирных версий для IBM -совместимых машин X86 с момента DOS 2.0
Замена смещения Длина (байты) Содержимое
0x000 3 Jump instruction. If the boot sector has a valid signature residing in the last two bytes of the boot sector (tested by most boot loaders residing in the System BIOS or the MBR) and this volume is booted from, the prior boot loader will pass execution to this entry point with certain register values, and the jump instruction will then skip past the rest of the (non-executable) header. See Volume Boot Record.

Since DOS 2.0, valid x86-bootable disks must start with either a short jump followed by a NOP (opstring sequence 0xEB 0x?? 0x90[6][7] as seen since DOS 3.0[nb 1]—and on DOS 1.1[8][9]) or a near jump (0xE9 0x?? 0x??[6][7] as seen on most (Compaq, TeleVideo) DOS 2.x formatted disks as well as on some (Epson, Olivetti) DOS 3.1 disks). For backward compatibility MS-DOS, PC DOS and DR-DOS also accept a jump (0x69 0x?? 0x??)[6][7][10] on removable disks. On hard disks, DR DOS additionally accepts the swapped JMPS sequence starting with a NOP (0x90 0xEB 0x??),[10] whereas MS-DOS/PC DOS do not. (See below for Atari ST compatibility.) The presence of one of these opstring patterns (in combination with a test for a valid media descriptor value at offset 0x015) serves as indicator to DOS 3.3 and higher that some kind of BPB is present (although the exact size should not be determined from the jump target since some boot sectors contain private boot loader data following the BPB), while for DOS 1.x (and some DOS 3.0) volumes, they will have to fall back to the DOS 1.x method to detect the format via the media byte in the FAT (in logical sector 1).

0x003 8 OEM Name (padded with spaces 0x20). This value determines in which system the disk was formatted.

Although officially documented as free for OEM use, MS-DOS/PC DOS (since 3.1), Windows 95/98/SE/ME and OS/2 check this field to determine which other parts of the boot record can be relied upon and how to interpret them. Therefore, setting the OEM label to arbitrary or bogus values may cause MS-DOS, PC DOS and OS/2 to not recognize the volume properly and cause data corruption on writes.[11][12][13] Common examples are "IBM␠␠3.3", "MSDOS5.0", "MSWIN4.1", "IBM␠␠7.1", "mkdosfs␠", and "FreeDOS␠".

Some vendors store licensing info or access keys in this entry.

The Volume Tracker in Windows 95/98/SE/ME will overwrite the OEM label with "?????IHC" signatures (a left-over from "␠OGACIHC" for "Chicago") even on a seemingly read-only disk access (such as a DIR A:) if the medium is not write-protected. Given the dependency on certain values explained above, this may, depending on the actual BPB format and contents, cause MS-DOS/PC DOS and OS/2 to no longer recognize a medium and throw error messages despite the fact that the medium is not defective and can still be read without problems under other operating systems. Windows 9x reads that self-marked disks without any problems but giving some strange values for non-meaning parameters which not exist or are not used when the disk was formatted with older BPB specification, e.g. disk serial number (which exists only for disks formatted on DOS 5.0 or later, and in Windows 9x after overwriting OEM label with ?????IHC will report it as 0000-0000 or any other value stored in disk serial number field when using disk formatted on other system).[14] This applies only to removable disk drives.

Some boot loaders make adjustments or refuse to pass control to a boot sector depending on certain values detected here (e.g., NEWLDR offset 0x018).

The boot ROM of the Wang Professional Computer will only treat a disk as bootable if the first four characters of the OEM label are "Wang". Similarly, the ROM BIOS of the Philips :YES will only boot from a disk if the first four characters of the OEM label are ":YES".

If, in an FAT32 EBPB, the signature at sector offset 0x042 is 0x29 and both total sector entries are 0, the file system entry may serve as a 64-bit total sector count entry and the OEM label entry may be used as alternative file system type instead of the normal entry at offset 0x052.

In a similar fashion, if this entry is set to "EXFAT␠␠␠", it indicates the usage of an exFAT BPB located at sector offset 0x040 to 0x077, whereas NTFS volumes use "NTFS␠␠␠␠"[15] to indicate an NTFS BPB.

0x00B varies BIOS Parameter Block (13, 19, 21 or 25 bytes), Extended BIOS Parameter Block (32 or 51 bytes) or FAT32 Extended BIOS Parameter Block (60 or 79 bytes); size and contents varies between operating systems and versions, see below
varies varies File system and operating system specific boot code; often starts immediately behind [E]BPB, but sometimes additional "private" boot loader data is stored between the end of the [E]BPB and the start of the boot code; therefore the jump at offset 0x001 cannot be used to reliably derive the exact [E]BPB format from.

(In conjunction with at least a DOS 3.31 BPB some GPT boot loaders (like BootDuet) use 0x1FA0x1FD to store the high 4 bytes of the hidden sectors for volumes located outside the first 232-1 sectors. Since this location may contain code or other data in other boot sectors, it may not be written to when 0x1F90x1FD do not all contain zero.)

0x1FD 1 Physical drive number (only in DOS 3.2 to 3.31 boot sectors). With OS/2 1.0 and DOS 4.0, this entry moved to sector offset 0x024 (at offset 0x19 in the EBPB). Most Microsoft and IBM boot sectors maintain values of 0x00 at offset 0x1FC and 0x1FD ever since, although they are not part of the signature at 0x1FE.

If this belongs to a boot volume, the DR-DOS 7.07 enhanced MBR can be configured (see NEWLDR offset 0x014) to dynamically update this entry to the DL value provided at boot time or the value stored in the partition table. This enables booting off alternative drives, even when the VBR code ignores the DL value.

0x1FE 2 Boot sector signature (0x55 0xAA).[4][nb 2] This signature indicates an IBM PC compatible boot code and is tested by most boot loaders residing in the System BIOS or the MBR before passing execution to the boot sector's boot code (but, e.g., not by the original IBM PC ROM-BIOS[16]). This signature does not indicate a particular file system or operating system. Since this signature is not present on all FAT-formatted disks (e.g., not on DOS 1.x[8][9] or non-x86-bootable FAT volumes), operating systems must not rely on this signature to be present when logging in volumes (old issues of MS-DOS/PC DOS prior to 3.3 checked this signature, but newer issues as well as DR-DOS do not). Formatting tools must not write this signature if the written boot sector does not contain at least an x86-compatible dummy boot loader stub; at minimum, it must halt the CPU in an endless loop (0xF4 0xEB 0xFD) or issue an INT 19h and RETF (0xCD 0x19 0xCB). These opstrings should not be used at sector offset 0x000, however, because DOS tests for other opcodes as signatures. Many MSX-DOS 2 floppies use 0xEB 0xFE 0x90 at sector offset 0x000 to catch the CPU in a tight loop while maintaining an opcode pattern recognized by MS-DOS/PC DOS.

This signature must be located at fixed sector offset 0x1FE for sector sizes 512 or higher. If the physical sector size is larger, it may be repeated at the end of the physical sector.

Atari STs will assume a disk to be Atari 68000 bootable if the checksum over the 256 big-endian words of the boot sector equals 0x1234.[17][nb 3] If the boot loader code is IBM compatible, it is important to ensure that the checksum over the boot sector does not match this checksum by accident. If this would happen to be the case, changing an unused bit (e.g., before or after the boot code area) can be used to ensure this condition is not met.

In rare cases, a reversed signature 0xAA 0x55 has been observed on disk images. This can be the result of a faulty implementation in the formatting tool based on faulty documentation,[nb 2] but it may also indicate a swapped byte order of the disk image, which might have occurred in transfer between platforms using a different endianness. BPB values and FAT12, FAT16 and FAT32 file systems are meant to use little-endian representation only and there are no known implementations of variants using big-endian values instead.

Жироформатированные атари-стрит- флопы имеют очень похожий макет сектора загрузочного сектора
Замена смещения Длина (байты) Содержимое
0x000 2 Jump instruction. Original Atari ST boot sectors start with a 68000 BRA.S instruction (0x60 0x??).[5] For compatibility with PC operating systems, Atari ST formatted disks since TOS 1.4 start with 0xE9 0x?? instead.
0x002 6 OEM Name (padded with spaces 0x20), e.g., "Loader" (0x4C 0x6F 0x61 0x64 0x65 0x72) on volumes containing an Atari ST boot loader. See OEM Name precautions for PC formatted disks above. The offset and length of this entry are different compared to the entry on PC formatted disks.
0x008 3 Disk serial number[5] (default: 0x00 0x00 0x00), used by Atari ST to detect a disk change. (Windows 9x Volume Tracker will always store "IHC" here on non-write-protected floppy disks; see above.) This value must be changed if the disk content is externally changed, otherwise Atari STs may not recognize the change on re-insertion. This entry overlaps the OEM Name field on PC formatted disks. For maximum compatibility, it may be necessary to match certain patterns here; see above.
0x00B 19 DOS 3.0 BIOS Parameter Block (little-endian format)
0x01E varies Private boot sector data (mixed big-endian and little-endian format)
varies varies File system and operating system specific Atari ST boot code. No assumptions must be made in regard to the load position of the code, which must be relocatable. If loading an operating system (TOS.IMG[5]) fails, the code can return to the Atari ST BIOS with a 68000 RTS (opcode 0x4E75 with big-endian byte sequence 0x4E 0x75[nb 2]) instruction and all registers unaltered.
0x1FE 2 Checksum. The 16-bit checksum over the 256 big-endian words of the 512 bytes boot sector including this word must match the magic value 0x1234 in order to indicate an Atari ST 68000 executable boot sector code.[17] This checksum entry can be used to align the checksum accordingly.[nb 3]

If the logical sector size is larger than 512 bytes, the remainder is not included in the checksum and is typically zero-filled.[17] Since some PC operating systems erroneously do not accept FAT formatted floppies if the 0x55 0xAA[nb 2] signature is not present here, it is advisable to place the 0x55 0xAA in this place (and add an IBM compatible boot loader or stub) and use an unused word in the private data or the boot code area or the serial number in order to ensure that the checksum 0x1234[nb 3] is not matched (unless the shared fat code overlay would be both IBM PC and Atari ST executable at the same time).

FAT12-формами MSX-DOS объемы имеют очень похожую компоновку загрузочного сектора
Замена смещения Длина (байты) Содержимое
0x000 3 Dummy jump instruction (e.g., 0xEB 0xFE 0x90).
0x003 8 OEM Name (padded with spaces 0x20).
0x00B 19 DOS 3.0 BPB
0x01E varies (2) MSX-DOS 1 code entry point for Z80 processors into MSX boot code. This is where MSX-DOS 1 machines jump to when passing control to the boot sector. This location overlaps with BPB formats since DOS 3.2 or the x86 compatible boot sector code of IBM PC compatible boot sectors and will lead to a crash on the MSX machine unless special precautions have been taken such as catching the CPU in a tight loop here (opstring 0x18 0xFE for JR 0x01E).
0x020 6 MSX-DOS 2 volume signature "VOL_ID".
0x026 1 MSX-DOS 2 undelete flag (default: 0x00. If the "VOL_ID" signature is present at sector offset 0x020, this flag indicates, if the volume holds deleted files which can be undeleted (see offset 0x0C in directory entries).
0x027 4 MSX-DOS 2 disk serial number (default: 0x00000000). If the "VOL_ID" signature is present at sector offset 0x020, MSX-DOS 2 stores a volume serial number here for media change detection.
0x02B 5 reserved
0x030 varies (2) MSX-DOS 2 code entry point for Z80 processors into MSX boot code. This is where MSX-DOS 2 machines jump to when passing control to the boot sector. This location overlaps with EBPB formats since DOS 4.0 / OS/2 1.2 or the x86 compatible boot sector code of IBM PC compatible boot sectors and will lead to a crash on the MSX machine unless special precautions have been taken such as catching the CPU in a tight loop here (opstring 0x18 0xFE for JR 0x030).
0x1FE 2 Signature

Блок параметров BIOS

[ редактировать ]

Общая структура первых 25 байтов блока параметров BIOS (BPB), используемой FAT версиями, поскольку DOS 2.0 (байты при смещении сектора 0x00b до 0x017 хранятся после DOS 2.0, но не всегда используются до DOS 3.2, значения при 0x018 до 0x01b используются с момента DOS 3.0)
Сектор смещенное BPB смещение Длина (байты) Содержимое
0x00B 0x00 2 Bytes per logical sector; the most common value is 512. Some operating systems don't support other sector sizes. For simplicity and maximum performance, the logical sector size is often identical to a disk's physical sector size, but can be larger or smaller in some scenarios.

The minimum allowed value for non-bootable FAT12/FAT16 volumes with up to 65,535 logical sectors is 32 bytes, or 64 bytes for more than 65,535 logical sectors. The minimum practical value is 128. Some pre-DOS 3.31 OEM versions of DOS used logical sector sizes up to 8192 bytes for logical sectored FATs. Atari ST GEMDOS supports logical sector sizes between 512 and 4096.[17] DR-DOS supports booting off FAT12/FAT16 volumes with logical sector sizes up to 32 KB and INT 13h implementations supporting physical sectors up to 1024 bytes/sector.[nb 4] The minimum logical sector size for standard FAT32 volumes is 512 bytes, which can be reduced downto 128 bytes without support for the FS Information Sector.

Floppy drives and controllers use physical sector sizes of 128, 256, 512 and 1024 bytes (e.g., PC/AX). The Atari Portfolio supports a sector size of 512 for volumes larger than 64 KB, 256 bytes for volumes larger 32 KB and 128 bytes for smaller volumes. Magneto-optical drives used sector sizes of 512, 1024 and 2048 bytes. In 2005 some Seagate custom hard disks used sector sizes of 1024 bytes instead of the default 512 bytes.[18] Advanced Format hard disks use 4096 bytes per sector (4Kn) since 2010, but will also be able to emulate 512 byte sectors (512e) for a transitional period.

Linux, and by extension Android, supports a logical sector size far larger, officially documented in the Man page for the filesystem utilities as up to 32KB.

0x00D 0x02 1 Logical sectors per cluster. Allowed values are 1, 2, 4, 8, 16, 32, 64, and 128. Some MS-DOS 3.x versions supported a maximum cluster size of 4 KB only, whereas modern MS-DOS/PC DOS and Windows 95 support a maximum cluster size of 32 KB. Windows 98/SE/ME partially support a cluster size of 64 KB as well, but some FCB services are not available on such disks and various applications fail to work. The Windows NT family and some alternative DOS versions such as PTS-DOS fully support 64 KB clusters.

For most DOS-based operating systems, the maximum cluster size remains at 32 KB (or 64 KB) even for sector sizes larger than 512 bytes.

For logical sector sizes of 1 KB, 2 KB and 4 KB, Windows NT 4.0 supports cluster sizes of 128 KB, while for 2 KB and 4 KB sectors the cluster size can reach 256 KB.

Some versions of DR-DOS provide limited support for 128 KB clusters with 512 bytes/sector using a sectors/cluster value of 0.

MS-DOS/PC DOS will hang on startup if this value is erroneously specified as 0.[19]: INT 21h AX=53h 

0x00E 0x03 2 Count of reserved logical sectors. The number of logical sectors before the first FAT in the file system image. At least 1 for this sector, usually 32 for FAT32 (to hold the extended boot sector, FS info sector and backup boot sectors).

Since DR-DOS 7.0x FAT32 formatted volumes use a single-sector boot sector, FS info sector and backup sector, some volumes formatted under DR-DOS use a value of 4 here.

0x010 0x05 1 Number of File Allocation Tables. Almost always 2; RAM disks might use 1. Most versions of MS-DOS/PC DOS do not support more than 2 FATs. Some DOS operating systems support only two FATs in their built-in disk driver, but support other FAT counts for block device drivers loaded later on.

Volumes declaring 2 FATs in this entry will never be treated as TFAT volumes. If the value differs from 2, some Microsoft operating systems may attempt to mount the volume as a TFAT volume and use the second cluster (cluster 1) of the first FAT to determine the TFAT status.

0x011 0x06 2 Maximum number of FAT12 or FAT16 root directory entries. 0 for FAT32, where the root directory is stored in ordinary data clusters; see offset 0x02C in FAT32 EBPBs.

A value of 0 without a FAT32 EBPB (no signature 0x29 or 0x28 at offset 0x042) may also indicate a variable-sized root directory in some non-standard FAT12 and FAT16 implementations, which store the root directory start cluster in the cluster 1 entry in the FAT.[20] This extension, however, is not supported by mainstream operating systems,[20] as it can conflict with other uses of the cluster 1 entry for maintenance flags, the current end-of-chain-marker, or TFAT extensions.

This value must be adjusted so that directory entries always consume full logical sectors, given that each directory entry takes up 32 bytes. MS-DOS/PC DOS require this value to be a multiple of 16. The maximum value supported on floppy disks is 240,[6] the maximum value supported by MS-DOS/PC DOS on hard disks is 512.[6] DR-DOS supports booting off FAT12/FAT16 volumes, if the boot file is located in the first 2048 root directory entries.

0x013 0x08 2 Total logical sectors. 0 for FAT32. (If zero, use 4 byte value at offset 0x020)
0x015 0x0A 1 Media descriptor (compare: FAT ID):[21][22][23][nb 1]
0xE5
  • 8-inch (200 mm) single sided, 77 tracks per side, 26 sectors per track, 128 bytes per sector (250.25 KB) (DR-DOS only)
0xED
  • 5.25-inch (130 mm) double sided, 80 tracks per side, 9 sector, 720 KB (Tandy 2000 only)[13]
0xEE
  • Designated for non-standard custom partitions (utilizing non-standard BPB formats or requiring special media access such as 48-/64-bit addressing); corresponds with 0xF8, but not recognized by unaware systems by design; value not required to be identical to FAT ID, never used as cluster end-of-chain marker (Reserved for DR-DOS)
0xEF
  • Designated for non-standard custom superfloppy formats; corresponds with 0xF0, but not recognized by unaware systems by design; value not required to be identical to FAT ID, never used as cluster end-of-chain marker (Reserved for DR-DOS)
0xF0[24][25][26]
  • 3.5-inch (90 mm) double sided, 80 tracks per side, 18 or 36 sectors per track (1440 KB, known as "1.44 MB"; or 2880 KB, known as "2.88 MB").
  • Designated for use with custom floppy and superfloppy formats where the geometry is defined in the BPB.
  • Used also for other media types such as tapes.[27]
0xF4
0xF5
0xF8
  • Fixed disk (i.e., typically a partition on a hard disk). (since DOS 2.0)[29][30]
  • Designated to be used for any partitioned fixed or removable media, where the geometry is defined in the BPB.
  • 3.5-inch single sided, 80 tracks per side, 9 sectors per track (360 KB) (MS-DOS 3.1[7] and MSX-DOS)
  • 5.25-inch double sided, 80 tracks per side, 9 sectors per track (720 KB) (Sanyo 55x DS-DOS 2.11 only)[13]
  • Single sided (Altos MS-DOS 2.11 only)[28]
0xF9[24][25][26]
  • 3.5-inch double sided, 80 tracks per side, 9 sectors per track (720 KB) (since DOS 3.2)[29]
  • 3.5-inch double sided, 80 tracks per side, 18 sectors per track (1440 KB) (DOS 3.2 only)[29]
  • 5.25-inch double sided, 80 tracks per side, 15 sectors per track (1200 KB, known as "1.2 MB") (since DOS 3.0)[29]
  • Single sided (Altos MS-DOS 2.11 only)[28]
0xFA
  • 3.5-inch and 5.25-inch single sided, 80 tracks per side, 8 sectors per track (320 KB)
  • Used also for RAM disks and ROM disks (e.g., on Columbia Data Products[31] and on HP 200LX)
  • Hard disk (Tandy MS-DOS only)
0xFB
  • 3.5-inch and 5.25-inch double sided, 80 tracks per side, 8 sectors per track (640 KB)
0xFC
  • 5.25-inch single sided, 40 tracks per side, 9 sectors per track (180 KB) (since DOS 2.0)[29]
0xFD
  • 5.25-inch double sided, 40 tracks per side, 9 sectors per track (360 KB) (since DOS 2.0)[29]
  • 8-inch double sided, 77 tracks per side, 26 sectors per track, 128 bytes per sector (500.5 KB)
  • (8-inch double sided, (single and) double density (DOS 1)[29])
0xFE
  • 5.25-inch single sided, 40 tracks per side, 8 sectors per track (160 KB) (since DOS 1.0)[29][32]
  • 8-inch single sided, 77 tracks per side, 26 sectors per track, 128 bytes per sector (250.25 KB)[28][32]
  • 8-inch double sided, 77 tracks per side, 8 sectors per track, 1024 bytes per sector (1232 KB)[32]
  • (8-inch single sided, (single and) double density (DOS 1)[29])
0xFF
  • 5.25-inch double sided, 40 tracks per side, 8 sectors per track (320 KB) (since DOS 1.1)[29][32]
  • Hard disk (Sanyo 55x DS-DOS 2.11 only)[13]

This value must reflect the media descriptor stored (in the entry for cluster 0) in the first byte of each copy of the FAT. Certain operating systems before DOS 3.2 (86-DOS, MS-DOS/PC DOS 1.x and MSX-DOS version 1.0) ignore the boot sector parameters altogether and use the media descriptor value from the first byte of the FAT to choose among internally pre-defined parameter templates. Must be greater or equal to 0xF0 since DOS 4.0.[6]

On removable drives, DR-DOS will assume the presence of a BPB if this value is greater or equal to 0xF0,[6] whereas for fixed disks, it must be 0xF8 to assume the presence of a BPB.

Initially, these values were meant to be used as bit flags; for any removable media without a recognized BPB format and a media descriptor of either 0xF8 or 0xFA to 0xFF MS-DOS/PC DOS treats bit 1 as a flag to choose a 9-sectors per track format rather than an 8-sectors format, and bit 0 as a flag to indicate double-sided media.[7] Values 0x00 to 0xEF and 0xF1 to 0xF7 are reserved and must not be used.

0x016 0x0B 2 Logical sectors per File Allocation Table for FAT12/FAT16. FAT32 sets this to 0 and uses the 32-bit value at offset 0x024 instead.

DOS 3,0 BPB:

Следующие расширения были задокументированы с момента DOS 3.0, однако они уже были поддержаны некоторыми проблемами DOS 2.11. [ 28 ] MS-DOS 3.10 по-прежнему поддерживал формат DOS 2.0, но также мог использовать формат DOS 3.0.

Сектор смещенное BPB смещение Длина (байты) Содержимое
0x00B 0x00 13 DOS 2.0 BPB
0x018 0x0D 2 Physical sectors per track for disks with INT 13h CHS geometry,[4] e.g., 15 for a "1.20 MB" (1200 KB) floppy.

A zero entry indicates that this entry is reserved, but not used.

0x01A 0x0F 2 Number of heads for disks with INT 13h CHS geometry,[4] e.g., 2 for a double sided floppy.

A bug in all versions of MS-DOS/PC DOS up to including 7.10 causes these operating systems to crash for CHS geometries with 256 heads, therefore almost all BIOSes choose a maximum of 255 heads only.

A zero entry indicates that this entry is reserved, but not used.

0x01C 0x11 2 Count of hidden sectors preceding the partition that contains this FAT volume. This field should always be zero on media that are not partitioned. This DOS 3.0 entry is incompatible with a similar entry at offset 0x01C in BPBs since DOS 3.31.

It must not be used if the logical sectors entry at offset 0x013 is zero.

DOS 3,2 BPB:

Официально, MS-DOS 3.20 по-прежнему использовал формат DOS 3.0, но SYS и FORMAT были адаптированы для поддержки 6 байт более длинного формата (из которых не были использованы не все записи).

Сектор смещенное BPB смещение Длина (байты) Содержимое
0x00b 0x00 19 DOS 3,0 BPB
0x01e 0x13 2 Общие логические сектора, включая скрытые сектора. Эта запись DOS 3.2 несовместима с аналогичной записью при смещении 0x020 в BPBS с момента DOS 3,31.

Он не должен использоваться, если вход логического сектора в смещении 0x013 - ноль.

DOS 3,31 BPB:

Официально представленные с DOS 3.31 и не использованным DOS 3.2, некоторые коммунальные услуги DOS 3.2 были разработаны, чтобы узнать об этом новом формате. Официальная документация рекомендует доверять этим ценностям, только если запись в логическом секторах в Offset 0x013 - ноль.

Сектор смещенное BPB смещение Длина (байты) Содержимое
0x00B 0x00 13 DOS 2.0 BPB
0x018 0x0D 2 Physical sectors per track for disks with INT 13h CHS geometry,[4] e.g., 18 for a "1.44 MB" (1440 KB) floppy. Unused for drives, which don't support CHS access any more. Identical to an entry available since DOS 3.0.

A zero entry indicates that this entry is reserved, but not used. A value of 0 may indicate LBA-only access, but may cause a divide-by-zero exception in some boot loaders, which can be avoided by storing a neutral value of 1 here, if no CHS geometry can be reasonably emulated.

0x01A 0x0F 2 Number of heads for disks with INT 13h CHS geometry,[4] e.g., 2 for a double sided floppy. Unused for drives, which don't support CHS access any more. Identical to an entry available since DOS 3.0.

A bug in all versions of MS-DOS/PC DOS up to including 7.10 causes these operating systems to crash for CHS geometries with 256 heads, therefore almost all BIOSes choose a maximum of 255 heads only.

A zero entry indicates that this entry is reserved, but not used. A value of 0 may indicate LBA-only access, but may cause a divide-by-zero exception in some boot loaders, which can be avoided by storing a neutral value of 1 here, if no CHS geometry can be reasonably emulated.

0x01C 0x11 4 Count of hidden sectors preceding the partition that contains this FAT volume. This field should always be zero on media that are not partitioned.[24][25][26] This DOS 3.31 entry is incompatible with a similar entry at offset 0x01C in DOS 3.0-3.3 BPBs. At least, it can be trusted if it holds zero, or if the logical sectors entry at offset 0x013 is zero.

If this belongs to an Advanced Active Partition (AAP) selected at boot time, the BPB entry will be dynamically updated by the enhanced MBR to reflect the "relative sectors" value in the partition table, stored at offset 0x1B6 in the AAP or NEWLDR MBR, so that it becomes possible to boot the operating system from EBRs.

(Some GPT boot loaders (like BootDuet) use boot sector offsets 0x1FA0x1FD to store the high 4 bytes of a 64-bit hidden sectors value for volumes located outside the first 232−1 sectors.)

0x020 0x15 4 Total logical sectors (if greater than 65535; otherwise, see offset 0x013). This DOS 3.31 entry is incompatible with a similar entry at offset 0x01E in DOS 3.2-3.3 BPBs. Officially, it must be used only if the logical sectors entry at offset 0x013 is zero, but some operating systems (some old versions of DR DOS) use this entry also for smaller disks.

For partitioned media, if this and the entry at 0x013 are both 0 (as seen on some DOS 3.x FAT16 volumes), many operating systems (including MS-DOS/PC DOS) will retrieve the value from the corresponding partition's entry (at offset 0xC) in the MBR instead.

If both of these entries are 0 on volumes using a FAT32 EBPB with signature 0x29, values exceeding the 4,294,967,295 (232−1) limit (f.e. some DR-DOS volumes with 32-bit cluster entries) can use a 64-bit entry at offset 0x052 instead.

Простая формула переводит заданный номер кластера, который CN к номеру логического сектора LSN: [ 24 ] [ 25 ] [ 26 ]

  1. Определить (один раз) SSA=RSC+FN×SF+ceil((32×RDE)/SS), где считать зарезервированное сектор RSC хранится в смещении 0x00e , количество жиров FN в смещении 0x010 , сектора на жир SF в смещении 0x016 (FAT12/FAT16) или 0x024 (FAT32), записи корневого каталога RDE в смещении 0x011 , размер сектора SS в смещении 0x00b и ceil(x) округливы до целого числа.
  2. Определять LSN=SSA+(CN−2)×SC, где сектора на кластер SC хранятся в смещении 0x00d .

На невозможных носителях количество скрытых секторов тома равно нулю и, следовательно, LSN и LBA Адреса становятся такими же, как и долго, как размер логического сектора тома идентичен размеру физического сектора лежащего в основе среды. В этих условиях также легко перевести между CHS адреса и LSNs также:

LSN=SPT×(HN+(NOS×TN))+SN−1, где секторы на трассу SPT хранятся в смещении 0x018 и количество сторон NOS в смещении 0x01a . Номер трека TN, номер головы HNи номер сектора SN соответствует цилиндрическому сектору : формула дает известную CHS для LBA перевода .

Расширенный блок параметров BIOS

[ редактировать ]

Дальнейшая структура, используемая FAT12 и FAT16 со времен OS/2 1,0 и DOS 4.0, также известная как расширенный блок параметров BIOS (EBPB) (байты ниже смещения сектора 0x024 такие же, как и для DOS 3.31 BPB):

Сектор смещенное EBPB смещение Длина (байты) Содержимое
0x00B 0x00 25 DOS 3.31 BPB
0x024 0x19 1 Physical drive number (0x00 for (first) removable media, 0x80 for (first) fixed disk as per INT 13h). Allowed values for possible physical drives depending on BIOS are 0x00-0x7E and 0x80-0xFE. Values 0x7F and 0xFF are reserved for internal purposes such as remote or ROM boot and should never occur on disk. Some boot loaders such as the MS-DOS/PC DOS boot loader use this value when loading the operating system, others ignore it altogether or use the drive number provided in the DL register by the underlying boot loader (e.g., with many BIOSes and MBRs). The entry is sometimes changed by the SYS command or it can be dynamically fixed up by the prior bootstrap loader in order to force the boot sector code to load the operating system from alternative physical disks than the default.

A similar entry existed (only) in DOS 3.2 to 3.31 boot sectors at sector offset 0x1FD.

If this belongs to a boot volume, the DR-DOS 7.07 enhanced MBR can be configured (see NEWLDR offset 0x014) to dynamically update this EBPB entry to the DL value provided at boot time or the value stored in the partition table. This enables booting off alternative drives, even when the VBR code ignores the DL value.

0x025 0x1A 1 Reserved;
  • In some MS-DOS/PC DOS boot code used as a scratchpad for the INT 13h current head high byte for the assumed 16-bit word at offset 0x024. Some DR-DOS FAT12/FAT16 boot sectors use this entry as a scratchpad as well, but for different purposes.
  • VGA-Copy stores a CRC over the system's ROM-BIOS in this location.
  • Some boot managers use this entry to communicate the desired drive letter under which the volume should occur to operating systems such as OS/2 by setting bit 7 and specifying the drive number in bits 6-0 (C: = value 0, D: = value 1, ...). Since this normally affects the in-memory image of the boot sector only, this does not cause compatibility problems with other uses;
  • In Windows NT used for CHKDSK flags (bits 7-2 always cleared, bit 1: disk I/O errors encountered, possible bad sectors, run surface scan on next boot, bit 0: volume is "dirty" and was not properly unmounted before shutdown, run CHKDSK on next boot).[30] Should be set to 0 by formatting tools.[24][25][26] See also: Bitflags in the second cluster entry in the FAT.
0x026 0x1B 1 Extended boot signature. (Should be 0x29[24][25][26][21] to indicate that an EBPB with the following 3 entries exists (since OS/2 1.2 and DOS 4.0). Can be 0x28 on some OS/2 1.0-1.1 and PC DOS 3.4 disks indicating an earlier form of the EBPB format with only the serial number following. MS-DOS/PC DOS 4.0 and higher, OS/2 1.2 and higher as well as the Windows NT family recognize both signatures accordingly.)
0x027 0x1C 4 Volume ID (serial number)

Typically the serial number "xxxx-xxxx" is created by a 16-bit addition of both DX values returned by INT 21h/AH=2Ah (get system date)[nb 5] and INT 21h/AH=2Ch (get system time)[nb 5] for the high word and another 16-bit addition of both CX values for the low word of the serial number. Alternatively, some DR-DOS disk utilities provide a /# option to generate a human-readable time stamp "mmdd-hhmm" build from BCD-encoded 8-bit values for the month, day, hour and minute instead of a serial number.

0x02B 0x20 11 Partition Volume Label, padded with blanks (0x20), e.g., "NO␠NAME␠␠␠␠" Software changing the directory volume label in the file system should also update this entry, but not all software does. The partition volume label is typically displayed in partitioning tools since it is accessible without mounting the volume. Supported since OS/2 1.2 and MS-DOS 4.0 and higher.

Not available if the signature at 0x026 is set to 0x28.

This area was used by boot sectors of DOS 3.2 to 3.3 to store a private copy of the Disk Parameter Table (DPT) instead of using the INT 1Eh pointer to retrieve the ROM table as in later issues of the boot sector. The re-usage of this location for the mostly cosmetical partition volume label minimized problems if some older system utilities would still attempt to patch the former DPT.

0x036 0x2B 8 File system type, padded with blanks (0x20), e.g., "FAT12␠␠␠", "FAT16␠␠␠", "FAT␠␠␠␠␠"

This entry is meant for display purposes only and must not be used by the operating system to identify the type of the file system. Nevertheless, it is sometimes used for identification purposes by third-party software and therefore the values should not differ from those officially used. Supported since OS/2 1.2 and MS-DOS 4.0 and higher.

Not available if the signature at 0x026 is set to 0x28.

FAT32 расширенный блок параметров BIOS

[ редактировать ]

В сущности FAT32 вставляет 28 байтов в EBPB, а затем оставшиеся 26 (или иногда 7) байтов EBPB , как показано выше для FAT12 и FAT16. Операционные системы Microsoft и IBM определяют тип жировой файловой системы, используемой в томе исключительно по количеству кластеров, а не в использованном формате BPB или указанном типе файловой системы, то есть технически возможно использовать «FAT32 EBPB» Также для объемов FAT12 и FAT16, а также EBPB DOS 4.0 для небольших объемов FAT32. Поскольку было обнаружено, что такие объемы созданы операционными системами Windows в некоторых нечетных условиях, [ NB 6 ] Операционные системы должны быть подготовлены, чтобы справиться с этими гибридными формами.

Сектор смещенное FAT32 EBPB смещение Длина (байты) Содержимое
0x00B 0x00 25 DOS 3.31 BPB
0x024 0x19 4 Logical sectors per file allocation table (corresponds with the old entry at offset 0x0B in the DOS 2.0 BPB).

The byte at offset 0x026 in this entry should never become 0x28 or 0x29 in order to avoid any misinterpretation with the EBPB format under non-FAT32 aware operating systems.

Fortunately, under normal circumstances (sector size of 512 bytes), this cannot happen, as a FAT32 file system has at most 0xffffff6 = 268435446 clusters. One Fat sector fits 512 / 4 = 128 cluster descriptors. So at most only ceil(268435446 / 128) = 2097152 = 0x200000 sectors would be needed, making third byte of the number of FAT sectors 0x20 at most, which is less than the forbidden 0x28 and 0x29 values.

0x028 0x1D 2 Drive description / mirroring flags (bits 3-0: zero-based number of active FAT, if bit 7 set.[4] If bit 7 is clear, all FATs are mirrored as usual. Other bits reserved and should be 0.)

DR-DOS 7.07 FAT32 boot sectors with dual LBA and CHS support utilize bits 15-8 to store an access flag and part of a message. These bits contain either bit pattern 0110:1111b (low-case letter 'o', bit 13 set for CHS access) or 0100:1111b (upper-case letter 'O', bit 13 cleared for LBA access). The byte is also used for the second character in a potential "No␠IBMBIO␠␠COM" error message (see offset 0x034), displayed either in mixed or upper case, thereby indicating which access type failed). Formatting tools or non-DR SYS-type tools may clear these bits, but other disk tools should leave bits 15-8 unchanged.

0x02A 0x1F 2 Version (defined as 0.0). The high byte of the version number is stored at offset 0x02B, and the low byte at offset 0x02A.[4] FAT32 implementations should refuse to mount volumes with version numbers unknown by them.
0x02C 0x21 4 Cluster number of root directory start, typically 2 (first cluster[33]) if it contains no bad sector. (Microsoft's FAT32 implementation imposes an artificial limit of 65,535 entries per directory, whilst many third-party implementations do not.)

A cluster value of 0 is not officially allowed and can never indicate a valid root directory start cluster. Some non-standard FAT32 implementations may treat it as an indicator to search for a fixed-sized root directory where it would be expected on FAT16 volumes; see offset 0x011.

0x030 0x25 2 Logical sector number of FS Information Sector, typically 1, i.e., the second of the three FAT32 boot sectors.

Some FAT32 implementations support a slight variation of Microsoft's specification in making the FS Information Sector optional by specifying a value of 0xFFFF[19] (or 0x0000) in this entry. Since logical sector 0 can never be a valid FS Information Sector, but FS Information Sectors use the same signature as found on many boot sectors [citation needed], file system implementations should never attempt to use logical sector 0 as FS Information sector and instead assume that the feature is unsupported on that particular volume. Without a FS Information Sector, the minimum allowed logical sector size of FAT32 volumes can be reduced downto 128 bytes for special purposes.

0x032 0x27 2 First logical sector number of a copy of the three FAT32 boot sectors, typically 6.[4]

Since DR-DOS 7.0x FAT32 formatted volumes use a single-sector boot sector, some volumes formatted under DR-DOS use a value of 2 here.

Values of 0x0000[4] (and/or 0xFFFF[19]) are reserved and indicate that no backup sector is available.

0x034 0x29 12 Reserved (may be changed to format filler byte 0xF6[nb 7] as an artifact by MS-DOS FDISK, must be initialized to 0 by formatting tools, but must not be changed by file system implementations or disk tools later on.)

DR-DOS 7.07 FAT32 boot sectors use these 12 bytes to store the filename of the "IBMBIO␠␠COM"[nb 8] file to be loaded (up to the first 29,696 bytes or the actual file size, whatever is smaller) and executed by the boot sector, followed by a terminating NUL (0x00) character. This is also part of an error message, indicating the actual boot file name and access method (see offset 0x028).

0x040 0x35 1 Cf. 0x024 for FAT12/FAT16 (Physical Drive Number)

exFAT BPBs are located at sector offset 0x040 to 0x077, overlapping all the remaining entries of a standard FAT32 EBPB including this one. They can be detected via their OEM label signature "EXFAT␠␠␠" at sector offset 0x003. In this case, the bytes at 0x00B to 0x03F are normally set to 0x00.

0x041 0x36 1 Cf. 0x025 for FAT12/FAT16 (Used for various purposes; see FAT12/FAT16)

May hold format filler byte 0xF6[nb 7] artifacts after partitioning with MS-DOS FDISK, but not yet formatted.

0x042 0x37 1 Cf. 0x026 for FAT12/FAT16 (Extended boot signature, 0x29)

Most FAT32 file system implementations do not support an alternative signature of 0x28[15] to indicate a shortened form of the FAT32 EBPB with only the serial number following (and no Volume Label and File system type entries), but since these 19 mostly unused bytes might serve different purposes in some scenarios, implementations should accept 0x28 as an alternative signature and then fall back to use the directory volume label in the file system instead of in the EBPB for compatibility with potential extensions.

0x043 0x38 4 Cf. 0x027 for FAT12/FAT16 (Volume ID)
0x047 0x3C 11 Cf. 0x02B for FAT12/FAT16 (Volume Label)

Not available if the signature at offset 0x042 is set to 0x28.

0x052 0x47 8 Cf. 0x036 for FAT12/FAT16 (File system type, padded with blanks (0x20), e.g., "FAT32␠␠␠").

Not available if the signature at 0x042 is set to 0x28.

If both total logical sectors entries at offset 0x020 and 0x013 are 0 on volumes using a FAT32 EBPB with signature 0x29, volumes with more than 4,294,967,295 (232-1) sectors (f.e. some DR-DOS volumes with 32-bit cluster entries) can use this entry as 64-bit total logical sectors entry instead. In this case, the OEM label at sector offset 0x003 may be retrieved as new-style file system type instead.

Исключения

[ редактировать ]

Версии DOS до 3.2 полностью или частично полагались на байт дескриптора среды в BPB или байт FAT ID в кластере 0 первого жира, чтобы определить форматы дискетт FAT12, даже если присутствует BPB. В зависимости от обнаруженного идентификатора FAT и обнаруженного типа диска, они по умолчанию используют один из следующих прототипов BPB вместо использования значений, фактически хранящихся в BPB. [ NB 1 ]

Первоначально, идентификатор FAT должен был быть немного флагом со всеми наборами битов, за исключением бита 2, очищенного, чтобы указать формат трека (по сравнению с 40), бит 1 очищен, чтобы указать формат 9 сектора (против 8 сектора), и бит 0 очищен, чтобы указать односторонний (по сравнению с двусторонним) форматом, [ 7 ] Но за этой схемой не последовали все OEM-производители и устарели от введения жестких дисков и форматов высокой плотности. Кроме того, различные 8-дюймовые форматы, поддерживаемые 86-DOS и MS-DOS, не соответствуют этой схеме.

ID FAT (сравните с идентификатором медиа при смещении BPB 0x0a ) [ 22 ] [ 23 ] 0xff 0xfe 0xfd 0xfc 0xfb 0xfa 0xf9 0xf8 0xf0 0xed 0xe5
Size 8" 5.25" 8" 8" 5.25" 8" 8" 5.25" 5.25" 5.25" / 3.5" 5.25" / 3.5" 5.25" 3.5" 3.5" 5.25" 5.25" / 3.5" 3.5" 3.5" 3.5" 5.25" 8"
Density ? DD 48tpi SD DD DD 48tpi SD SD DD 48tpi DD 48tpi ? ? HD 96tpi DD 135tpi HD 135tpi QD 96tpi ? DD HD 135tpi ED QD 96tpi SD
Modulation ? MFM FM MFM MFM FM FM MFM MFM MFM MFM MFM MFM MFM MFM MFM MFM MFM MFM MFM FM
Formatted capacity (KB) ? 320 250 ("old")[28][32] 1200 160 250 ("new")[28][32] 500 360 180 640 320 1200 720 1440 720 360 360 1440 2880 720 243 / 250
Cylinders (CHS) 77 40 77 77 40 77 77 40 40 80 80 80 80 80 80 80 80 80 80 80 77
Physical sectors / track
(BPB offset 0x0D)
? 8 26 8 8 26 26 9 9 8 8 15 9 18 9 (8[31]) 9 9 18 36 9 (8[31]) 26
Number of heads
(BPB offset 0x0F)
? 2 1[28][32] 2[7][22][32] (1) 1 1[7][28][32] 2[22] 2 1 2 1 2 2 2 2 1 1 2 2 2 1
Byte payload / physical sector ? 512 128 1024 512 128 128 512 512 512 512 512 512 512 512 512 512 512 512 512 128
Bytes / logical sector
(BPB offset 0x00)
? 512 128 1024 512 128 128 512 512 512 512 512 512 512 512 512 512 512 512 512 128
Logical sectors / cluster
(BPB offset 0x02)
? 2 4 1 1 4 4 2 1 2 1[22] (2?[7]) 1 2 1 ? 2 ? 1 2 ? 4
Reserved logical sectors
(BPB offset 0x03)
? 1 1[28][32] 1 1 4[28][32] 4 1 1 1 1 1 1 (2) 1 1 1 1 1 1 ? 1
Number of FATs
(BPB offset 0x05)
? 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Root directory entries
(BPB offset 0x06)
? 112 (7 sectors) 68 (17 sectors) 192 (6 sectors) 64 (4 sectors) 68 (17 sectors) 68 (17 sectors) 112 (7 sectors) 64 (4 sectors) 112 (7 sectors) 112 (7 sectors) 224 (14 sectors) 112 (7 sectors) 224 (14 sectors) ? 112 (7 sectors) ? 224 (14 sectors) 240 (15 sectors) ? 64 (16 sectors)
Total logical sectors
(BPB offset 0x08)
? 640 2002[28][32] 1232[22][32] (616[7]) 320 2002[7][28][32] 4004[22] 720 360 1280 640 2400 1440 2880 ? 720 ? 2880 5760 ? 2002
Logical sectors / FAT
(BPB offset 0x0B)
? 1 6[28][32] 2 1 6[28][32] 6?[22] 2 2 2 2[22] (1?[7]) 7 3 9 (7) ? 2 ? 9 9 ? 1
Hidden sectors
(BPB offset 0x11)
? 0 3[22] (0[7]) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ? 0
Total number of clusters ? 315 497 1227 313 ? 997?[22] 354 351 ? ? 2371 713 2847? ? ? ? 2847 2863 ? ?
Logical sector order ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Sector mapping ?
sector+ head+ track+
sector+ head+ track+
sector+ head+ track+
sector+ head+ track+
sector+ track+
sector+ head+ track+
sector+ head+ track+
sector+ head+ track+
sector+ head+ track+
sector+ track+
sector+ head+ track+
sector+ head+ track+
sector+ head+ track+
?
sector+ track+
sector+ track+
sector+ head+ track+
sector+ head+ track+
?
sector+ track+
First physical sector (CHS) ? 1 1 1 1 1 1 1 1 ? ? 1 1 1 ? 1 ? 1 1 ? 1
DRIVER.SYS /F:n ? 0 3 4 0 ? 3 0 0 ? ? 1 2 7 ? ? ? 7 9 ? 3
BPB Presence ? ? ? ? ? ? ? ? ? ? ? Yes Yes Yes ? ? ? Yes Yes ? ?
Support ?
DOS 1.1[32]
DOS 1.0[28][32]
DOS 2.0
DOS 1.0[32]
?[28][32]
DOS 2.0
DOS 2.0
DOS 2.0
? ?
DOS 3.0
DOS 3.2
DOS 3.2 only;
(DR-DOS)
Sanyo 55x
DS-DOS 2.11 only
MS-DOS 3.1[7]
MSX-DOS
DOS 3.3
DOS 5.0
Tandy 2000 only
DR-DOS only

Microsoft рекомендует различать два 8-дюймовых формата для ID FAT 0xfe , пытаясь прочитать о адресной знаке с одной плотностью. Если это приводит к ошибке, средняя среда должна быть двумя плотностью. [ 23 ]

В таблице не указано ряд несовместимых 8-дюймовых и 5,25-дюймовых FAT12 Floppy Formats, поддерживаемых 86-DOS , которые различаются либо по размеру записей каталога (16 байтов против 32 байтов) или в размере зарезервированных Область секторов (несколько целых треков против одного логического сектора).

Реализация одностороннего формата FAT12 315 КБ, используемого в MS-DOS для абрикосового ПК и F1E [ 34 ] Имел другой макет загрузочного сектора, чтобы приспособиться к не совместимому с IBM BIOS этого компьютера. Инструкция по прыжкам и имени OEM были опущены, а параметры MS-DOS BPB (смещения 0x00b - 0x017 в стандартном загрузочном секторе) были расположены в смещении 0x050 . Портативный и , F1 , PC Duo XI FD поддерживали нестандартный двухсторонний формат 720 КБ FAT12. [ 34 ] Различия в макете загрузочного сектора и идентификаторами средств массовой информации сделали эти форматы несовместимыми со многими другими операционными системами. Параметры геометрии для этих форматов:

  • 315 КБ: байты на логический сектор: 512 байтов, логические сектора на кластер: 1, зарезервированные логические секторы: 1, количество жиров: 2, корневые записи каталога: 128, Общий логический сектора: 630, жир идентификатор: идентификатор: идентификатор жира: 0xfc , логические сектора на жир: 2, физический сектора на трек: 9, количество голов: 1. [ 34 ] [ 35 ]
  • 720 КБ: байты на логический сектор: 512 байтов, логические сектора на кластер: 2, зарезервированные логические сектора: 1, количество жиров: 2, корневые записи каталога: 176, Общий логический сектора: 1440, жирный идентификатор: 0xfe , логические сектора на жир: 3, физические сектора на трек: 9, количество голов: 2. [ 34 ]

Более поздние версии абрикоса MS-DOS получили возможность читать и писать диски со стандартным загрузочным сектором в дополнение к абрикосовым. Эти форматы также были поддержаны DOS Plus 2.1e/G для серии Abricot Act.

Адаптация DOS Plus для BBC Master 512 поддерживала два формата FAT12 на 80-трековых двухсторонних дисках с двумя плотностью 5,25 дюйма, которые вообще не использовали обычные секторы загрузки. Единая копия жира. [ 35 ] Первый байт перемещенного жира в логическом секторе 0 был использован для определения способности диска. Способные диски 640 КБ начались с миниатюрной файловой системы ADFS , содержащей загрузочный погрузчик, затем один жир. [ 35 ] [ 36 ] Кроме того, формат 640 КБ различался, используя физические числа секторов CHS, начиная с 0 (не 1, как общее) и увеличивая сектора в секторе-треке-направлении (а не трек сектора, как общее). [ 36 ] Жир начался в начале следующего трека. Эти различия делают эти форматы неузнаваемыми другими операционными системами. Параметры геометрии для этих форматов:

  • 800 КБ: байты на логический сектор: 1024 байт, логические сектора на кластер: 1, зарезервированные логические сектора: 0, количество жиров: 1, корневые записи каталога: 192, Общий логический сектора: 800, жир идентификатор: идентификатор: идентификатор жира: 0xfd , логические сектора на жир: 2, физический сектора на трек: 5, количество голов: 2. [ 35 ] [ 36 ]
  • 640 КБ: байты на логический сектор: 256 байтов, логические сектора на кластер: 8, зарезервированные логические секторы: 16, количество жиров: 1, корневые записи каталога: 112, Общий логический сектора: 2560, жирный идентификатор: 0xff , логические сектора на жир: 2, физические сектора на трек: 16, количество голов: 2. [ 35 ] [ 36 ]

DOS Plus для Master 512 также может получить доступ к стандартным дискам ПК, отформатированных до 180 КБ или 360 КБ , используя первый байт жира в логическом секторе 1 для определения пропускной способности.

Dec Rainbow 100 (все вариации) поддерживал один формат FAT12 на 80-трековых односторонних дисках 5,25 дюйма с четырехсторонней плотностью. MS-DOS использовал статический BPB в памяти). 0xf3 . Начальная загрузка 8088 была загружена Z80. Трек 1, сторона 0, сектор 2 начинается с байта Media/Fat ID 0xfa . Неформатированные диски используют 0xe5 вместо. Файловая система начинается на трассе 2, сторона 0, сектор 1. В корневом каталоге есть 2 копии жира и 96 записей. Кроме того, существует картирование с физическим и логическим треком, чтобы выполнить промежуточное сектор. Диски были отформатированы с физическими секторами в порядке, пронумерованном от 1 до 10 на каждой дорожке после зарезервированных дорожек, но логические сектора от 1 до 10 хранились в физическом секторах 1, 6, 2, 7, 3, 8, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 , 5, 10. [ 37 ]

FS Информационный сектор

[ редактировать ]

«Информационный сектор FS» был введен в FAT32 [ 38 ] для ускорения времени доступа определенных операций (в частности, получение количества свободного пространства). Он расположен на номере логического сектора, указанного в записи загрузки FAT32 EBPB в позиции 0x030 (обычно логический сектор 1, сразу после самой записи загрузки).

Замена смещения Длина (байты) Содержимое
0x000 4 FS Информационный сектор Подпись ( 0x52 0x52 0x61 0x41 = " RRaA")

До тех пор, пока информационный сектор FS находится в логическом секторе 1, местоположение, где жир обычно начинается в файловых системах FAT12 и FAT16 (с одним зарезервированным сектором), присутствие этой подписи гарантирует, что ранние версии DOS никогда не будут Попытайтесь установить объем FAT32, так как они ожидают значения в кластере 0 и кластере 1, чтобы следовать определенным схемам битов, которые не соответствуют этой подписи.

0x004 480 Зарезервированы (значения байтов должны быть установлены на 0x00 во время формата, но не полагается и никогда не меняется позже)
0x1e4 4 FS Информационный сектор Подпись ( 0x72 0x72 0x41 0x61 = " rrAa")
0x1e8 4 Последнее известное количество бесплатных кластеров данных в томе, или 0xffffffff, если неизвестно. Должен быть настроен на 0xffffffff во время формата и обновляется операционной системой позже. Нельзя абсолютно полагаться, чтобы быть правильным во всех сценариях. Перед использованием этого значения операционная система должна проверить это значение меньше или равным количеству кластеров.
0x1ec 4 Количество самых недавно известных как распределенный кластер данных. Должен быть настроен на 0xffffffff во время формата и обновляется операционной системой позже. С 0xffffffff Система должна начинаться в кластере 0x00000002 . Нельзя абсолютно полагаться, чтобы быть правильным во всех сценариях. Перед использованием этого значения операционная система должна проверить это значение как действительный номер кластера в томе.
0x1f0 12 Зарезервированы (значения байтов должны быть установлены на 0x00 во время формата, но не полагается и никогда не меняется позже)
0x1fc 4 FS Информационный сектор Подпись ( 0x00 0x00 0x55 0xaa ) [ 4 ] [ NB 2 ] (Все четыре байта должны соответствовать до того, как содержимое этого сектора будет предположить, что он будет в достоверном формате.)

Данные сектора могут быть устаревшими и не отражать текущее содержимое носителя, потому что не все операционные системы обновляются или используют этот сектор, и даже если они это делают, содержимое недопустимо, когда среда была выброшена без надлежащего неисправности объема или после силовая обстановка. Следовательно, операционные системы должны сначала осмотреть дополнительные битфлаги состояния отключения, находящиеся при входе жира кластера 1 или EBPB FAT32 при смещении 0x041 и игнорируйте данные, хранящиеся в информационном секторе FS, если эти битфлаги указывают на то, что объем не был должным образом не установлен ранее. Это не вызывает никаких проблем, кроме возможного штрафа о скорости для первого запроса на свободное пространство или распределения кластеров данных; Смотрите фрагментацию .

Если этот сектор присутствует на объеме FAT32, минимальный разрешенный размер логического сектора составляет 512 байт, тогда как в противном случае это будет 128 байт. Некоторые реализации FAT32 подтверждают небольшое изменение спецификации Microsoft, делая сектор информации FS необязательным, указав значение 0xffff [ 19 ] (или 0x0000 ) в записи при смещении 0x030 .

Жирный регион

[ редактировать ]

Таблица распределения файлов

[ редактировать ]

Кластерная карта

[ редактировать ]

Область данных тома делится на кластеры одинакового размера - широкие блоки смежного пространства. Размеры кластеров варьируются в зависимости от типа используемой жировой файловой системы и размера диска; Типичные размеры кластеров варьируются от 2 до 32 киб . [ 39 ]

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

Каждая версия Fat File System использует различный размер для жирных записей. Меньшие числа приводят к меньшему жиру, но отработанное пространство в больших перегородках, необходимая для распределения в больших кластерах.

Файловая система FAT12 использует 12 бит на вход на жир, таким образом, две записи охватывают 3 байта. Это неизменно мало-эндиан : если эти три байта считаются одним из 24-битных числа маленького эндэдиана, 12 наименее значимых битов представляют собой первую запись (например, кластер 0) и 12 наиболее значимых битов во втором (например, кластер 1) Полем Другими словами, в то время как низкие восемь битов первого кластера в ряду хранятся в первом байте, четыре лучших бита хранятся в низкой шкуре второго байта, тогда как низкие четыре бита последующего кластера в ряду хранятся в высоком шкуре второго байта и его более высоких восемь битов в третьем байте.

Пример таблицы FAT12 начинается с нескольких кластерных цепей
Компенсировать +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +C +D. +F
+0000 Пл Ф Фф 03 40 00 05 60 00 07 80 00 Фф Ф 00 14
+0010 C 0 00 0D E0 00 0f 00 01 11 F 0 Фф 00 F 0 Фф 15 60
+0020 01 19 7 0 Фф F7 Ф 01 Фф 0 f 00 00 7 0 Фф 00 00 00
  • Идентификатор жира / маркер эндианности (в зарезервированном кластере № 0 ), с 0xf0, указывающим на объем на необоснованном суперффирном диске (должен быть 0xf8 для разделенных дисков)
  • Конец цепочки индикатора / флага обслуживания (в зарезервированном кластере № 1 )
  • Вторая цепь (7 кластеров) для нефгментированного файла (здесь: #2, #3, #4, #5, #6, #7, #8)
  • Третья цепь (7 кластеров) для фрагментированного, возможно, выращенного файла (здесь: #9, #A, #14, #15, #16, #19, #1A)
  • Четвертая цепь (7 кластеров) для нефгментированного, возможно, усеченного файла (здесь: #B, #C, #D, #E, #F, #10, #11)
  • Пустые кластеры (здесь: #12, #1B, #1C, #1E, #1F)
  • Пятая цепочка (1 кластер) для подчинка (здесь: #13)
  • Плохие кластеры (3 кластера) (здесь: #17, #18, #1d)

Файловая система FAT16 использует 16 бит на вход на жир, таким образом , одна запись охватывает два байта в матч-эндэндинском байтовом порядке:

Пример таблицы FAT16 начинается с нескольких кластерных цепей
Компенсировать +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +C +D. +F
+0000 Пл Фф Фф Фф 03 00 04 00 05 00 06 00 07 00 08 00
+0010 Фф Фф 0A 00 14 00 0C 00 0D 00 0e 00 0f 00 10 00
+0020 11 00 Фф Фф 00 00 Фф Фф 15 00 16 00 19 00 F7 Фф
+0030 F7 Фф 1A 00 Фф Фф 00 00 00 00 F7 Фф 00 00 00 00

Файловая система FAT32 использует 32 бита на вход на жир, таким образом , одна запись охватывает четыре байта в байтовом порядке. Четыре верхних бита каждой записи зарезервированы для других целей; Они очищаются во время форматирования и не должны быть изменены иначе. Они должны быть замаскированы, прежде чем интерпретировать запись как 28-битный адрес кластера.

Пример таблицы FAT32 начинается с нескольких кластерных цепей
Компенсировать +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +C +D. +F
+0000 Пл Фф Фф 0f Фф Фф Фф 0f Фф Фф Фф 0f 04 00 00 00
+0010 05 00 00 00 06 00 00 00 07 00 00 00 08 00 00 00
+0020 Фф Фф Фф 0f 0A 00 00 00 14 00 00 00 0C 00 00 00
+0030 0D 00 00 00 0e 00 00 00 0f 00 00 00 10 00 00 00
+0040 11 00 00 00 Фф Фф Фф 0f 00 00 00 00 Фф Фф Фф 0f
+0050 15 00 00 00 16 00 00 00 19 00 00 00 F7 Фф Фф 0f
+0060 F7 Фф Фф 0f 1A 00 00 00 Фф Фф Фф 0f 00 00 00 00
+0070 00 00 00 00 F7 Фф Фф 0f 00 00 00 00 00 00 00 00
  • Первая цепь (1 кластер) для корневого каталога, на которую указана запись в FAT32 BPB (здесь: #2)
  • Вторая цепь (6 кластеров) для нефгментированного файла (здесь: #3, #4, #5, #6, #7, #8)

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

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

Для очень ранних версий DOS для распознавания файловой системы система должна была быть загружена из тома, или жир тома должен начинаться со второго сектора тома (логический сектор 1 с физическим адресом CHS 0/0/2 или адресом LBA 1) , то есть сразу после загрузочного сектора. Операционные системы предполагают, что это жесткое местоположение жира, чтобы найти идентификатор жира в записи жирового кластера 0 на DOS 1,0-1.1 Fat Diskettes, где не найдено достоверного BPB.

Специальные записи

[ редактировать ]

Первые две записи в жирном магазине Специальные значения:

Первая запись (кластер 0 в жире) содержит идентификатор жира, поскольку MS-DOS 1.20 и PC DOS 1.1 (допустимые значения 0xf0 - 0xff с 0xf1 - 0xf7 зарезервировано) в битах 7-0, которые также скопируются в BPB сектора загрузки, Offset 0x015 , так как DOS 2.0. Оставшиеся 4 бита (если FAT12), 8 битов (если FAT16) или 20 бит (если FAT32, 4 бита MSB равны нулю) от этой записи всегда 1. Эти значения были установлены так, чтобы вход также функционировал как " ловушка All "Маркер конец цепи для всех кластеров данных, содержащих ноль. Кроме того, для идентификаторов жира, кроме как 0xff 0x00 ) Можно определить правильный порядок кулачков и байтов (который используется), используемым драйвером файловой системы, однако, Fat-файловая система официально использует только небольшое представление, и нет известных реализаций вариантов с использованием Big-Endian Значения вместо. 86-DOS 0,42 до MS-DOS 1,14 Используемые жесткие профили привода вместо жирового идентификатора, но использовали этот байт для различения среды, отформатированных с 32-байтовыми или 16-байтовыми записями, поскольку они использовались до 86- DOS 0,42.

Вторая запись (кластер 1 в жирном), номинально сохраняющая маркер с конечной классовой цепью, используемый форматором, но обычно всегда удерживает 0xfff / 0xffff / 0x0ffffffff , то есть за исключением битов 31-28 на томах FAT32 Эти биты обычно всегда устанавливаются. Некоторые операционные системы Microsoft, однако, устанавливают эти биты, если объем не является томом, удерживающей работающую операционную систему (то есть использование 0xffffffff вместо 0x0ffffffff здесь). [ 40 ] (В сочетании с альтернативными маркерами конца цепочки самые низкие биты 2-0 могут стать нулевым для самого низкого допускаемого маркера в конце цепочки 0xff8 / 0xfff8 / 0x? Ffffff8 ; Бит 3 должен быть зарезервирован так же, учитывая, что кластеры 0xff0 / 0xfff0 / 0x? Ffffff0 и выше официально зарезервированы. Некоторые операционные системы могут не иметь возможности установить некоторые объемы, если какие-либо из этих битов не установлены, поэтому маркер в конце цепочки по умолчанию не следует изменять.) Для DOS 1 и 2 запись была задокументирована как зарезервировано для будущего использования. Полем

Поскольку DOS 7.1 в двух наиболее значимых битах этой записи кластера могут содержать два дополнительных битфлага, представляющих текущий статус объема на FAT16 и FAT32, но не на объемах FAT12. Эти битфлаги не поддерживаются всеми операционными системами, но операционные системы, поддерживающие эту функцию
Если бит 15 (на FAT16) или бит 27 (на FAT32) [ 41 ] не устанавливается при установке объема, объем не был должным образом отстранен перед отключением или выбросом и, следовательно, находится в неизвестном и, возможно, «грязном» состоянии. [ 27 ] В объемах FAT32 информационный сектор FS может хранить устаревшие данные и, следовательно, не следует использовать. Операционная система обычно запускает Scandisk или CHKDSK при следующем стартапе [ NB 9 ] [ 41 ] (но не при введении съемных носителей), чтобы обеспечить и, возможно, восстановить целостность тома.
Если бит 14 (на FAT16) или бит 26 (на FAT32) [ 41 ] очищено, операционная система столкнулась с ошибками ввода -вывода диска при запуске, [ 41 ] Возможное указание для плохих секторов. Операционные системы, осведомленные об этом расширении, будут интерпретировать это как рекомендацию по проведению поверхностного сканирования ( скандиск ) на следующей загрузке. [ 27 ] [ 41 ] (Аналогичный набор битфлагов существует в EBPB FAT12/FAT16 при смещении 0x1a или FAT32 EBPB при смещении 0x36 . В то время как запись кластера 1 может быть доступна драйверами файловых систем после того, как они установили громкость, запись EBPB доступна, даже когда объем не установлен и, следовательно, легче использовать драйверами устройства дискового блока или инструментами разделения.)

Если количество жиров в BPB не установлено на 2, вторая запись кластера в первом жире (кластер 1) также может отражать состояние объема TFAT для операционных систем AWAR. Если запись кластера 1 в этом жире содержит значение 0, это может указывать на то, что второй жир представляет собой последнее известное действительное состояние транзакции и должен быть скопирован по первым жирам, тогда как первый жир должен быть скопирован над вторым жиром, если все биты установлены.

Некоторые нестандартные реализации FAT12/FAT16 используют запись кластера 1 для хранения стартового кластера корневого каталога размером с переменного размера (обычно 2 [ 33 ] ) Это может произойти, когда количество записей корневых каталогов в BPB содержит значение 0, а EBPB не найдена FAT32 (нет подписи 0x29 или 0x28 при смещении 0x042 ). [ 20 ] Это расширение, однако, не поддерживается основными операционными системами, [ 20 ] как это противоречит другим возможным использованию записи кластера 1. Большинство конфликтов можно исключить, если это расширение разрешено только для FAT12 с меньшим количеством, чем 0xFEF и FAT16 Объемы с меньшим количеством, чем 0x3FEF кластеры и 2 жира.

Поскольку эти первые две жирные записи хранят специальные значения, нет кластеров данных 0 или 1. Первым кластером данных (после корневого каталога, если FAT12/FAT16) является кластер 2, [ 33 ] Маркировка начала области данных.

Значения кластера

[ редактировать ]

Значения входа жира:

FAT12 FAT16 FAT32 Описание
0x000 0x0000 0x? Бесплатный кластер; Также используется DOS для обозначения начального кластера родительского каталога в «..». Записи подкаталогов корневого каталога на томах FAT12/FAT16. [ 42 ] [ 6 ]

В противном случае, если это значение происходит в кластерных цепях (например, в записях каталогов нулевой длины или удаленных файлов), реализации файловой системы должны рассматривать это как маркер в конце цепочки. [ 7 ]

0x001 0x0001 0x? Зарезервировано для внутренних целей; MS-DOS/PC DOS Используйте это значение кластера в качестве временного не свободного индикатора кластера при конструировании кластерных цепей во время распределения файлов (только на диске, только если в середине этого процесса наблюдается сбой или сбой питания). [ 42 ] [ 6 ]

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

0x002 - 0xfef 0x0002 - 0xffef (0x0002 - 0x7fff) 0x? 0000002 - 0x? Fffffef Используется в качестве кластеров данных; Значение указывает на следующий кластер. MS-DOS/PC DOS принимает значения до 0xfef / 0xffef / 0x0ffffffef (иногда больше; см. Ниже), тогда как для Atari Gemdos значения только до 0x7fff допускаются на томах FAT16.
0xff0 [ NB 10 ] - 0xff5 (0xff1 - 0xff5) 0xfff0 - 0xfff5 0x? Ffffff0 - 0x? Ffffff5 Зарезервировано в некоторых контекстах, [ 43 ] или также используется [ 24 ] [ 25 ] [ 26 ] [ 4 ] [ 44 ] в качестве кластеров данных в некоторых нестандартных системах. Размеры объема, которые будут использовать эти значения в качестве кластеров данных, следует избегать, но если эти значения происходят в существующих объемах, файловая система должна рассматривать их как нормальные кластеры данных в кластерных цепи (в идеале применять дополнительные проверки здравомыслия), аналогично тому, что MS- DOS, ПК DOS и DR-DOS DO, [ 6 ] и следует избегать выделения их на файлы иначе.

MS-DOS/PC DOS 3.3 и более высокие обработки значения 0xff0 [ NB 10 ] [ 6 ] на объемах FAT12 (но не на FAT16 или FAT32) в качестве дополнительного маркера в конце цепочки, аналогично 0xff8 - 0xfff . [ 6 ] Для совместимости с MS-DOS/PC DOS файловые системы должны избегать использования кластера данных 0xff0 в кластерных цепях на объемах FAT12 (то есть рассматривать его как зарезервированный кластер, похожий на 0xff7 ). (Nb. Переписка низкого байта номера кластера с идентификатором FAT и значениями дескриптора среды является причиной, почему эти значения кластера зарезервированы.)

0xff6 0xfff6 0x? Ffffff6 Сдержанный; Не используйте. [ 24 ] [ 25 ] [ 26 ] [ 4 ] [ 21 ] [ 44 ] (Nb. Соответствует значению заполнителя формата по умолчанию 0xf6 на IBM-совместимых машинах.) Не следует создавать объемы, которые использовали бы это значение в качестве кластера данных, но если это значение происходит в существующих томах, файловая система должна рассматривать его как нормальный кластер данных в кластерах (в идеале применять дополнительные проверки санита ) и следует избегать распределения его для файлов иначе. [ 7 ]
0xff7 0xfff7 0x? Ffffff7 Плохой сектор в кластере или зарезервированном кластере (с момента DOS 2.0).

Значения сокращения для максимального количества кластеров для файловых систем FAT12 и FAT16 определяются как таковые, что максимально возможные значения кластера данных ( 0xff5 и 0xfff5 , [ 6 ] соответственно) всегда будет меньше этого значения. [ 6 ] Следовательно, это значение обычно не может происходить в кластерных цепи, но если оно это происходит, оно может рассматриваться как нормальный кластер данных, поскольку 0xff7 мог быть нестандартным кластером данных на томах FAT12 до введения маркера Bad Cluster с DOS 2.0 или введением FAT16 с DOS 3.0, [ 7 ] и 0xfff7 мог бы быть нестандартным кластером данных на объемах FAT16 до введения FAT32 с DOS 7.10. Теоретически, 0x0ffffff7 может быть частью действительной кластерной цепи на объемах FAT32, но дисковые утилиты должны избегать создания объемов FAT32, где это условие может возникнуть. Файловая система должна избежать выделения этого кластера для файлов. [ 7 ]

Дисковые утилиты не должны пытаться восстановить «потерянные кластеры», удерживая это значение в жире, но считают их плохими кластерами.

0xff8 - 0xfff (и необязательно 0xff0; [ NB 10 ] см. примечание) 0xfff8 - 0xffff 0x? Ffffff8 - 0x? Fffffff Последний кластер в файле (EOC). Реализации файловой системы должны рассматривать все эти значения как маркер в конце цепь одновременно. [ 7 ] Большинство реализаций файловой системы (включая 86-DOS, MS-DOS, PC DOS и DR-DOS) 0xfff [ 7 ] / 0xffff [ 7 ] / 0x0fffffffff как маркер окончания файла при распределении файлов, но версии Linux до 2.5.40 0xff8 / 0xfff8 / 0x0ffffff8 . [ 45 ] Версии mkdosfs ( dosfstools до 3,0.26) продолжают использовать 0x0fffffff8 для корневого каталога на объемах FAT32, тогда как некоторые инструменты для восстановления и дефрагментации дисков используют другие значения в наборе (например, скандиск может использовать 0xff8 / 0xfff8 / 0x0ffffff8 вместо этого). В то время как в оригинальной 8-битной реализации FAT Microsoft в отдельных дисках базовые маркеры различных конечных маркеров ( 0xc0 .. 0xcd ) использовались для указания количества секторов (от 0 до 13), используемых в последнем кластере, занятом файлом, различные конечные маркеры были перепрофилированы в DOS, чтобы указать различные типы среды, [ 7 ] Однако с использованным в настоящее время конечным маркером, указанным в записи кластера 1 , однако, эта концепция, по -видимому, не была широко использована на практике, и в той степени, в которой в некоторых сценариях объемы не могут быть распознаны некоторыми операционными системами, если некоторые из Биты низкого порядка значения, хранящегося в кластере 1, не установлены. Кроме того, некоторые неправильные реализации файловой системы только принимают 0xfff / 0xffff / 0x? Fffffff как действительный маркер в конце цепочки.

Реализации файловой системы должны проверять значения кластеров в кластерных цепях по сравнению с максимально разрешенным значением кластера, рассчитанным по фактическому размеру объема и обрабатывают более высокие значения, как если бы они были также маркерами в конце цепи. (Низкий байт числа кластера концептуально соответствует значениям идентификатора Fat и дескрипторов среды ; [ 7 ] См. Примечание выше для MS-DOS/PC DOS Специальное использование 0xff0 [ NB 10 ] на томах FAT12. [ 6 ] )

FAT32 использует 28 бит для номеров кластеров. Оставшиеся 4 бита в 32-битном входе жира обычно имеют равные, но зарезервированы и должны оставаться нетронутыми. Стандартный драйвер файловой системы FAT32 или инструмент технического обслуживания не должен полагаться на то, что верхние 4 бита будут равны нулю, и он должен снять их перед оценкой номера кластера, чтобы справиться с возможными будущими расширениями, где эти биты могут использоваться для других целей. Они не должны быть очищены драйвером файловой системы при распределении новых кластеров, но должны быть очищены во время переформата.

Корневый справочник области

[ редактировать ]

Таблица корневых каталогов в файловых системах FAT12 и FAT16 занимает местоположение в области корневой области каталогов .

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

[ редактировать ]

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

Таблица каталогов

[ редактировать ]

Таблица каталогов - это специальный тип файла, который представляет каталог (также известный как папка). С 86 до 0,42 , [ 46 ] Каждый файл или (так как MS-DOS 1.40 и PC DOS 2.0), хранящийся внутри него, представлен 32-байтовой записью в таблице. Каждая запись записывает имя, расширение, атрибуты ( архив , каталог, скрытый, только для чтения, система и том), адрес первого кластера данных файла/каталога, размер файла/каталога и даты [ 46 ] и (поскольку ПК DOS 1.1) также время последней модификации. Более ранние версии 86-дос использовали только 16-байтовые записи каталога, поддерживая отсутствие файлов, более 16 МБ и отсутствие времени последней модификации. [ 46 ]

Сама файловая система FAT не вкладывает никаких ограничений на глубину подкатарийного дерева до тех пор, пока существуют бесплатные кластеры, доступные для распределения подкаталогов, однако внутренняя структура каталога тока (CDS) под MS-DOS/PC DOS ограничивает Абсолютный путь каталога до 66 символов (включая букву диска, но за исключением разделителя байта NUL), [ 24 ] [ 25 ] [ 26 ] тем самым ограничивая максимальную поддерживаемую глубину подкаталогов до 32, что бы ни произошло раньше. Параллельные DOS, многопользовательские DOS и DR DOS с 3,31 до 6.0 (до включения обновлений 1992-11) не хранят абсолютные пути к рабочим каталогам внутри и, следовательно, не показывают это ограничение. [ 47 ] То же самое относится и к Atari Gemdos, но настольный компьютер Atari не поддерживает более 8 уровней подчинка. Большинство приложений осведомлены об этих путях поддержки расширения, по крайней мере, до 127 байтов. Flexos, 4680 OS и 4690 OS также поддерживают длину до 127 байтов, что позволяет глубины до 60 уровней. [ 48 ] Palmdos, DR DOS 6.0 (с BDOS 7.1) и выше, Novell DOS и Opendos имеют CD-CD-совместимые с MS-DOS и, следовательно, имеют такие же ограничения длины, как MS-DOS/PC DOS.

Каждой записи могут предшествовать «поддельные записи», чтобы поддержать длинное имя файла VFAT (LFN); Смотрите далее ниже.

Юридические персонажи для коротких имен файлов DOS включают следующее:

  • Верхние буквы AZ
  • Числа 09
  • Пространство (хотя пространства для зацепленных пространств либо в базовом имени, либо в расширении считаются прокладками, а не частью имени файла; также имена файлов с пространством в них не могут быть легко использованы в командной строке DOS до Windows 95 из -за Отсутствие подходящей системы бега ). Еще одним исключением являются внутренние команды MKDIR/ MD и RMDIR/ RD в соответствии с DR-DOS, которые принимают отдельные аргументы и, следовательно, позволяют ввести пространства.
  • ! # $ % & ' ( ) - @ ^ _ ` { } ~
  • Персонажи 128–228
  • Персонажи 230–255

Это исключает следующие символы ASCII :

  • " * / : < > ? \ |
    Windows/MS-DOS не имеет символа выхода из оболочки
  • + , . ; = [ ]
    Разрешен только в длинных именах файлов
  • Нижние буквы az
    Хранится как AZ; разрешен в длинных именах файлов
  • Управляющие символы 0–31
  • Символ 127 (DEL)

Персонаж 229 ( 0xe5 ) не был разрешен в качестве первого символа в имени файла в DOS 1 и 2 из -за его использования в качестве маркера бесплатного входа. Был добавлен специальный случай, чтобы обойти это ограничение с помощью DOS 3.0 и выше.

Следующие дополнительные символы допускаются на Gemdos от Atari, но следует избегать совместимости с MS-DOS/PC DOS:

  • " + , ; < = > [ ] |

Полуколон ( ;) следует избегать в именах файлов в рамках DR DOS 3.31 и выше, Palmdos, Novell DOS, Opendos, одновременной DOS, Multiuser DOS, System Manager и Real/32, потому что он может противоречить синтаксису, чтобы указать пароли файлов и каталогов: " ...\DIRSPEC.EXT;DIRPWD\FILESPEC.EXT;FILEPWD". Операционная система будет снять один [ 47 ] (а также два-с точки зрения DR-DOS 7.02) полуколоны и ожидающие пароли от имен файлов, прежде чем хранить их на диске. (Командный процессор 4DOS использует полуколоны для включения списков и требует, чтобы полуколон был удвоен для файлов, защищенных паролем, с любыми командами, поддерживающими подстановочные знаки. [ 47 ] )

Персонаж At-Sign ( @) используется для FileLists многими DR-DOS, Palmdos, Novell DOS, Opendos и Multiuser DOS, системным менеджером и реальными/32 командами, а также 4DO и, следовательно, иногда могут быть трудно использовать в именах файлов. [ 47 ]

При многопользовательской DOS и Real/32 восклицательный знак (!) Не является допустимым символом файла, поскольку он используется для разделения нескольких команд в одной командной строке. [ 47 ]

Под ОС IBM 4680 и 4690 ОС, следующие символы не допускаются в именах файлов:

  • ? * : . ; , [ ] ! + = < > " - / \ |

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

  • @ # ( ) { } $ &

Имена файлов DOS находятся в текущем наборе символов OEM : это может иметь удивительные эффекты, если символы, обрабатываемые одним способом для данной кодовой страницы, интерпретируются по -разному для другой кодовой страницы (команда DOS CHCP) в отношении нижнего и верхнего регистра, сортировка или достоверность в качестве символа имени файла.

Запись в каталоге

[ редактировать ]

Перед тем, как Microsoft добавила поддержку для длинных имен файлов и марков времени создания/доступа, байтов 0x0c - 0x15 записи каталога использовалась другими операционными системами для хранения дополнительных метаданных, в частности, операционными системами хранимых паролей для семейства цифровых исследований, прав доступа, идентификаторов владельца и данных удаления файлов. Хотя новые расширения Microsoft не полностью совместимы с этими расширениями по умолчанию, большинство из них могут сосуществовать в реализации сторонних жиров (по крайней мере, на объемах FAT12 и FAT16).

32-байтовые записи каталога, как в области корневого каталога, так и в подкаталогах, имеют следующее формат (см. Также 8.3 имени файла ):

Замена смещения Длина (байты) Содержимое
0x00 8 Short file name (padded with spaces)

The first byte can have the following special values:

Value Description
0x00 Entry is available and no subsequent entry is in use. Also serves as an end marker when DOS scans a directory table. (Since MS-DOS 1.25 and PC DOS 2.0, not in earlier versions of MS-DOS, PC DOS, or 86-DOS. Instead, they will treat such entries as allocated. Therefore, this value must not be used as end marker, if a volume should remain accessible under PC DOS 1.0/1.1 as well.[nb 11][49][50][51])
0x05 Initial character is actually 0xE5. (since DOS 3.0)

Under DR DOS 6.0 and higher, including PalmDOS, Novell DOS and OpenDOS, 0x05 is also used for pending delete files under DELWATCH. Once they are removed from the deletion tracking queue, the first character of an erased file is replaced by 0xE5.

0x2E 'Dot' entry; either "." or ".." (since MS-DOS 1.40 and PC DOS 2.0)
0xE5 Entry has been previously erased and/or is available.[nb 11][49][50][51] File undelete utilities must replace this character with a regular character as part of the undeletion process. See also: 0x05.

The value 0xE5 was chosen for this purpose in 86-DOS because 8-inch CP/M floppies came pre-formatted with this value filled and so could be used to store files out of the box.[42][nb 12]

Versions of DOS prior to 5.0 start scanning directory tables from the top of the directory table to the bottom. In order to increase chances for successful file undeletion, DOS 5.0 and higher will remember the position of the last written directory entry and use this as a starting point for directory table scans.

0x08 3 Short file extension (padded with spaces)
0x0B 1 File Attributes
Bit Mask Description
0 0x01 Read Only. (Since DOS 2.0) If this bit is set, the operating system will not allow a file to be opened for modification.

Deliberately setting this bit for files which will not be written to (executables, shared libraries and data files) may help avoid problems with concurrent file access in multi-tasking, multi-user or network environments with applications not specifically designed to work in such environments (i.e. non-SHARE-enabled programs).

The DCF digital camera file system standard utilizes the Read Only attribute to allow directories or individual files (DCF objects) to be marked as "protected" from deletion by the user.[52]

1 0x02 Hidden. Hides files or directories from normal directory views.

Under DR DOS 3.31 and higher, under PalmDOS, Novell DOS, OpenDOS, Concurrent DOS, Multiuser DOS, REAL/32, password protected files and directories also have the hidden attribute set.[47] Password-aware operating systems should not hide password-protected files from directory views, even if this bit may be set. The password protection mechanism does not depend on the hidden attribute being set up to including DR-DOS 7.03, but if the hidden attribute is set, it should not be cleared for any password-protected files.

2 0x04 System. Indicates that the file belongs to the system and must not be physically moved (e.g., during defragmentation), because there may be references into the file using absolute addressing bypassing the file system (boot loaders, kernel images, swap files, extended attributes, etc.).
3 0x08 Volume Label. (Since MS-DOS 1.28 and PC DOS 2.0) Indicates an optional directory volume label, normally only residing in a volume's root directory. Ideally, the volume label should be the first entry in the directory (after reserved entries) in order to avoid problems with VFAT LFNs. If this volume label is not present, some systems may fall back to display the partition volume label instead, if an EBPB is present in the boot sector (not present with some non-bootable block device drivers, and possibly not writeable with boot sector write protection). Even if this volume label is present, partitioning tools like FDISK may display the partition volume label instead. The entry occupies a directory entry but has no file associated with it. Volume labels have a filesize entry of zero.

Pending delete files and directories under DELWATCH have the volume attribute set until they are purged or undeleted.[47]

4 0x10 Subdirectory. (Since MS-DOS 1.40 and PC DOS 2.0) Indicates that the cluster-chain associated with this entry gets interpreted as subdirectory instead of as a file. Subdirectories have a filesize entry of zero.
5 0x20 Archive. (Since DOS 2.0) Typically set by the operating system as soon as the file is created or modified to mark the file as "dirty", and reset by backup software once the file has been backed up to indicate "pure" state.
6 0x40 Device (internally set for character device names found in filespecs, never found on disk), must not be changed by disk tools.
7 0x80 Reserved, must not be changed by disk tools.

Under DR DOS 6.0 and higher, including PalmDOS, Novell DOS and OpenDOS, the volume attribute is set for pending delete files and directories under DELWATCH.

An attribute combination of 0x0F is used to designate a VFAT long file name entry since MS-DOS 7.0. Older versions of DOS can mistake this for a directory volume label, as they take the first entry with volume attribute set as volume label. This problem can be avoided if a directory volume label is enforced as part of the format process; for this reason some disk tools explicitly write dummy "NO␠NAME␠␠␠␠" directory volume labels when the user does not specify a volume label.[nb 13] Since volume labels normally don't have the system attribute set at the same time, it is possible to distinguish between volume labels and VFAT LFN entries. The attribute combination 0x0F could occasionally also occur as part of a valid pending delete file under DELWATCH, however on FAT12 and FAT16 volumes, VFAT LFN entries always have the cluster value at 0x1A set to 0x0000 and the length entry at 0x1C is never 0x00000000, whereas the entry at 0x1A is always non-zero for pending delete files under DELWATCH. This check does not work on FAT32 volumes.

0x0C 1
  • CP/M-86 and DOS Plus store user attributes F1'—F4' here.[53] (DOS Plus 1.2 with BDOS 4.1 supports passwords only on CP/M media, not on FAT12 or FAT16 media.[54] While DOS Plus 2.1 supported logical sectored FATs with a partition type 0xF2, FAT16B and FAT32 volumes were not supported by these operation systems. Even if a partition would have been converted to FAT16B it would still not be larger than 32 MB. Therefore, this usage does not conflict with FAT32.IFS, FAT16+ or FAT32+ as they can never occur on the same type of volume.):
Bit Mask Description
7 0x80 F1': Modify default open rules[47]
6 0x40 F2': Partial close default[47]
5 0x20 F3': Ignore Close Checksum Error[47]
4 0x10 F4': Disable checksums[47]
3 0x08 Reserved
2 0x04 Delete requires password
1 0x02 Write requires password
0 0x01 Read requires password
  • MSX-DOS 2: For a deleted file, the original first character of the filename. For the same feature in various other operating systems, see offset 0x0D if enabled in MSX boot sectors at sector offset 0x026. MSX-DOS supported FAT12 volumes only, but third-party extensions for FAT16 volumes exist. Therefore, this usage does not conflict with FAT32.IFS and FAT32+ below. It does not conflict with the usage for user attributes under CP/M-86 and DOS Plus as well, since they are no longer important for deleted files.
  • Windows NT and later versions uses bits 3 and 4 to encode case information (see VFAT); otherwise 0.[55]
  • DR-DOS 7.0x reserved bits other than 3 and 4 for internal purposes since 1997. The value should be set to 0 by formatting tools and must not be changed by disk tools.[47]
  • On FAT32 volumes under OS/2 and eComStation the third-party FAT32.IFS driver utilizes this entry as a mark byte to indicate the presence of extra "␠EA.␠SF" files holding extended attributes with parameter /EAS. Version 0.70 to 0.96 used the magic values 0x00 (no EAs), 0xEA (normal EAs) and 0xEC (critical EAs),[56] whereas version 0.97 and higher since 2003-09 use 0x00, 0x40 (normal EAs) and 0x80 (critical EAs) as bitflags for compatibility with Windows NT.[57][58]
0x0D 1
  • First character of a deleted file under Novell DOS, OpenDOS and DR-DOS 7.02 and higher. A value of 0xE5 (229), as set by DELPURGE, will prohibit undeletion by UNDELETE, a value of 0x00 will allow conventional undeletion asking the user for the missing first filename character.[47] S/DOS 1 and PTS-DOS 6.51 and higher also support this feature if enabled with SAVENAME=ON in CONFIG.SYS. For the same feature in MSX-DOS, see offset 0x0C.
  • Create time, fine resolution: 10 ms units, values from 0 to 199 (since DOS 7.0 with VFAT).

Double usage for create time ms and file char does not create a conflict, since the creation time is no longer important for deleted files.

0x0E 2
  • Under DR DOS 3.31 and higher including PalmDOS, Novell DOS and OpenDOS[53] as well as under Concurrent DOS, Multiuser DOS, System Manager, and REAL/32 and possibly also under FlexOS, 4680 OS, 4690 OS any non-zero value indicates the password hash of a protected file, directory or volume label.[47] The hash is calculated from the first eight characters of a password. If the file operation to be carried out requires a password as per the access rights bitmap stored at offset 0x14, the system tries to match the hash against the hash code of the currently set global password (by PASSWORD /G) or, if this fails, tries to extract a semicolon-appended password from the filespec passed to the operating system and checks it against the hash code stored here. A set password will be preserved even if a file is deleted and later undeleted.[47]
  • Create time (since DOS 7.0 with VFAT). The hour, minute and second are encoded according to the following bitmap:

Bits Description
15-11 Hours (0–23)
10-5 Minutes (0–59)
4-0 Seconds/2 (0–29)
The seconds is recorded only to a 2 second resolution. Finer resolution for file creation is found at offset 0x0D.

If bits 15-11 > 23 or bits 10-5 > 59 or bits 4-0 > 29 here, or when bits 12-0 at offset 0x14 hold an access bitmap and this is not a FAT32 volume or a volume using OS/2 Extended Attributes, then this entry actually holds a password hash, otherwise it can be assumed to be a file creation time.

0x10 2
  • FlexOS, 4680 OS and 4690 OS store a record size in the word at entry 0x10.[53] This is mainly used for their special database-like file types random file, direct file, keyed file, and sequential file. If the record size is set to 0 (default) or 1, the operating systems assume a record granularity of 1 byte for the file, for which it will not perform record boundary checks in read/write operations.[59]
  • With DELWATCH 2.00 and higher under Novell DOS 7, OpenDOS 7.01 and DR-DOS 7.02 and higher, this entry is used to store the last modified time stamp for pending delete files and directories.[47][53] Cleared when file is undeleted or purged. See offset 0x0E for a format description.
  • Create date (since DOS 7.0 with VFAT). The year, month and day are encoded according to the following bitmap:

Bits Description
15-9 Year (0 = 1980, 119 = 2099 supported under DOS/Windows, theoretically up to 127 = 2107)
8-5 Month (1–12)
4-0 Day (1–31)

The usage for creation date for existing files does not conflict with last modified time for deleted files because they are never used at the same time. For the same reason, the usage for the record size of existing files and last modified time of deleted files does not conflict. Creation dates and record sizes cannot be used at the same time, however, both are stored only on file creation and never changed later on, thereby limiting the conflict to FlexOS, 4680 OS and 4690 OS systems accessing files created under foreign operating systems as well as potential display or file sorting problems on systems trying to interpret a record size as creation time. To avoid the conflict, the storage of creation dates should be an optional feature of operating systems supporting it.

0x12 2
  • FlexOS, 4680 OS, 4690 OS, Multiuser DOS, System Manager, REAL/32 and DR DOS 6.0 and higher with multi-user security enabled use this field to store owner IDs.[47] Offset 0x12 holds the user ID, 0x13 the group ID of a file's creator.[53]
In multi-user versions, system access requires a logon with account name and password, and the system assigns group and user IDs to running applications according to the previously set up and stored authorization info and inheritance rules. For 4680 OS and 4690 OS, group ID 1 is reserved for the system, group ID 2 for vendor, group ID 3 for the default user group. Background applications started by users have a group ID 2 and user ID 1, whereas operating system background tasks have group IDs 1 or 0 and user IDs 1 or 0. IBM 4680 BASIC and applications started as primary or secondary always get group ID 2 and user ID 1. When applications create files, the system will store their user ID and group ID and the required permissions with the file.[59]
  • With DELWATCH 2.00 and higher under Novell DOS 7, OpenDOS 7.01 and DR-DOS 7.02 and higher, this entry is used to store the last modified date stamp for pending delete files and directories.[47][53] Cleared when file is undeleted or purged. See offset 0x10 for a format description.
  • Last access date (since DOS 7.0 if ACCDATE enabled in CONFIG.SYS for the corresponding drive);[2][47] see offset 0x10 for a format description.

The usage for the owner IDs of existing files does not conflict with last modified date stamp for deleted files because they are never used at the same time.[47] The usage of the last modified date stamp for deleted files does not conflict with access date since access dates are no longer important for deleted files. However, owner IDs and access dates cannot be used at the same time.

0x14 2
  • High two bytes of first cluster number in FAT32; with the low two bytes stored at offset 0x1A.
  • Access rights bitmap for world/group/owner read/write/execute/delete protection for password protected files, directories (or volume labels) under DR DOS 3.31 and higher, including PalmDOS, Novell DOS and OpenDOS,[53] and under FlexOS,[53] 4680 OS, 4690 OS, Concurrent DOS, Multiuser DOS, System Manager, and REAL/32.
Typical values stored on a single-user system are 0x0000 (PASSWORD /N for all access rights "RWED"), 0x0111 (PASSWORD /D for access rights "RW?-"), 0x0555 (PASSWORD /W for access rights "R-?-") and 0x0DDD (PASSWORD /R for files or PASSWORD /P for directories for access rights "--?-").[47] Bits 1, 5, 9, 12-15 will be preserved when changing access rights. If execute bits are set on systems other than FlexOS, 4680 OS or 4690 OS, they will be treated similar to read bits. (Some versions of PASSWORD allow to set passwords on volume labels (PASSWORD /V) as well.)
Single-user systems calculate the most restrictive rights of the three sets (DR DOS up to 5.0 used bits 0-3 only) and check if any of the requested file access types requires a permission and if a file password is stored.[47] If not, file access is granted. Otherwise the stored password is checked against an optional global password provided by the operating system and an optional file password provided as part of the filename separated by a semicolon (not under FlexOS, 4680 OS, 4690 OS). If neither of them is provided, the request will fail. If one of them matches, the system will grant access (within the limits of the normal file attributes, that is, a read-only file can still not be opened for write this way), otherwise fail the request.[47]
Under FlexOS, 4680 OS and 4690 OS the system assigns group and user IDs to applications when launched. When they request file access, their group and user IDs are compared with the group and user IDs of the file to be opened. If both IDs match, the application will be treated as file owner. If only the group ID matches, the operating system will grant group access to the application, and if the group ID does not match as well, it will grant world access. If an application's group ID and user ID are both 0, the operating system will bypass security checking. Once the permission class has been determined, the operating system will check if any of the access types of the requested file operation requires a permission according to the stored bitflags of the selected class owner, group or world in the file's directory entry. Owner, group and world access rights are independent and do not need to have diminishing access levels. Only, if none of the requested access types require a permission, the operating system will grant access, otherwise it fails.
If multiuser file / directory password security is enabled the system will not fail at this stage but perform the password checking mechanism for the selected permission class similar to the procedure described above. With multi-user security loaded many utilities since DR DOS 6.0 will provide an additional /U:name parameter.[47]
File access rights bitmap:[60]
Bit Mask Description
0 0x0001 Owner delete/rename/attribute change requires permission[47][53][60]
1 0x0002 Owner execute requires permission (FlexOS, 4680 OS, 4690 OS only)[60]
2 0x0004 Owner write/modify requires permission[47][53][60]
3 0x0008 Owner read/copy requires permission[47][53][60]
4 0x0010 Group delete/rename/attribute change requires permission[47][53][60]
5 0x0020 Group execute requires permission (FlexOS, 4680 OS, 4690 OS only)[60]
6 0x0040 Group write/modify requires permission[47][53][60]
7 0x0080 Group read/copy requires permission[47][53][60]
8 0x0100 World delete/rename/attribute change requires permission[47][53][60]
9 0x0200 World execute requires permission (FlexOS, 4680 OS, 4690 OS only)[60]
10 0x0400 World write/modify requires permission[47][53][60]
11 0x0800 World read/copy requires permission[47][53][60]
12-15 bits must be set to 0 during format and must not be modified by disk tools later on;[47] bit 15 is used internally,[60] but not on disk
File renames require either write or delete rights, IBM 4680 BASIC CHAIN requires execute rights.
  • Extended Attributes handle (used by OS/2 1.2 and higher as well as by Windows NT) in FAT12 and FAT16; first cluster of EA file or 0, if not used.[47][61] A different method to store extended attributes has been devised for FAT32 volumes, see FAT32.IFS under offset 0x0C.

The storage of the high two bytes of the first cluster in a file on FAT32 partially conflicts with access rights bitmaps.

0x16 2
  • Last modified time (since PC DOS 1.1/MS-DOS 1.20); see offset 0x0E for a format description.
  • Under Novell DOS, OpenDOS and DR-DOS 7.02 and higher, this entry holds the deletion time of pending delete files or directories under DELWATCH 2.00 or higher. The last modified time stamp is copied to 0x10 for possible later restoration.[47] See offset 0x0E for a format description.
0x18 2
  • Last modified date; see offset 0x10 for a format description.
  • Under Novell DOS, OpenDOS and DR-DOS 7.02 and higher, this entry holds the deletion date of pending delete files or directories under DELWATCH 2.00 or higher. The last modified date stamp is copied to 0x12 for possible later restoration.[47] See offset 0x10 for a format description.
0x1A 2 Start of file in clusters in FAT12 and FAT16. Low two bytes of first cluster in FAT32; with the high two bytes stored at offset 0x14.

Entries with the Volume Label flag, subdirectory ".." pointing to the FAT12 and FAT16 root, and empty files with size 0 should have first cluster 0.

VFAT LFN entries also have this entry set to 0; on FAT12 and FAT16 volumes this can be used as part of a detection mechanism to distinguish between pending delete files under DELWATCH and VFAT LFNs; see above.

0x1C 4 File size in bytes. Entries with the Volume Label or Subdirectory flag set should have a size of 0.

VFAT LFN entries never store the value 0x00000000 here. This can be used as part of a detection mechanism to distinguish between pending delete files under DELWATCH and VFAT LFNs; see above.

ОС FLEXOS ОС на основе IBM 4680 OS и IBM 4690 ОС поддерживают уникальные атрибуты распределения, хранящиеся в некоторых битах ранее зарезервированных областей в записях каталога: [ 62 ]

  1. Локальный: не распространяйте файл, но продолжайте только локальный контроллер. [ NB 14 ]
  2. Зеркальный файл в обновлении: распространите файл на сервер только при обновлении файла.
  3. Зеркальный файл на закрытии: распределить файл на сервер только при закрытии файла.
  4. Составной файл в обновлении: распределить файл для всех контроллеров при обновлении файла.
  5. Составной файл на закрытии: распределить файл для всех контроллеров, когда файл закрыт. [ 63 ]

Некоторые несовместимые расширения, обнаруженные в некоторых операционных системах, включают в себя:

Замена смещения Длина (байты) Система Описание
0x0C 2 RISC OS File type, 0x00000x0FFF
0x0C 4 Petrov DOSFS File load address
0x0E 2 ANDOS File address in the memory
0x10 4 Petrov DOSFS File execution address

Пределы размера

[ редактировать ]

Варианты FAT12, FAT16, FAT16B и FAT32 в FAT -файловых системах имеют четкие ограничения на основе количества кластеров и количества секторов на кластер (1, 2, 4, ..., 128). Для типичного значения 512 байтов на сектор:

FAT12 Требования: 3 сектора на каждой копии жира на каждые 1024 кластера
FAT16 Требования: 1 сектор на каждой копии жира на каждые 256 кластеров
FAT32 Требования: 1 сектор на каждой копии жира на каждые 128 кластеров

Диапазон FAT12: от 1 до 4084 кластеров: от 1 до 12 секторов на копию жира
Диапазон FAT16: от 4085 до 65 524 кластеров: от 16 до 256 секторов на копию жира
Диапазон FAT32: от 65 525 до 268 435 444 кластеров: от 512 до 2 097 152 секторов на копию жира

FAT12 Минимум: 1 сектор на кластер × 1 кластеры = 512 байт (0,5 года)
FAT16 Минимум: 1 сектор на кластер × 4,085 кластеров = 2 091 520 байт (2 042,5 КБ)
FAT32 Минимум: 1 сектор на кластер × 65 525 кластеров = 33 548 800 байт (32 762,5 КБ)

FAT12 Максимум: 64 сектора на кластер × 4,084 кластеры = 133 824 512 байтов (≈ 127 МБ)
[FAT12 Максимум: 128 секторов на кластер × 4,084 кластера = 267 694 024 байт (≈ 255 МБ)]]

FAT16 Максимум: 64 сектора на кластер × 65 524 кластеры = 2147 090 432 байта (≈2,047 МБ)
[FAT16 Максимум: 128 секторов на кластер × 65 524 кластеры = 4 294,180 864 байт (≈4,095 МБ)]]

FAT32 Максимум: 8 секторов на кластер × 268 435 444 кластера = 1 099 511 578 624 байтов (≈1,024 ГБ)
FAT32 Максимум: 16 секторов на кластер × 268 173 557 кластеров = 2196 877,778 944 байт (≈2 046 ГБ)
[FAT32 Максимум: 32 сектора на кластер × 134,152,181 кластеры = 2197 949,333,504 байт (≈2 047 ГБ)]]
[FAT32 Максимум: 64 сектора на кластер × 67 092 469 кластеров = 2198 486 024,192 байт (≈2 047 ГБ)]]
[FAT32 Максимум: 128 секторов на кластер × 33 550 325 кластеров = 2198 754,099 200 байт (≈2 047 ГБ)]]

Легенда: 268435444+3 IS 0x0FFFFFF7 , потому что FAT32 Версия 0 использует только 28 бит в 32-битных номерах кластеров, номера кластеров 0x0ffffff7 до 0x0fffffffff Flag Bad Clasters или конец файла, номер кластера 0 флаги Free Cluster, а кластер номер 1 не используется. [ 33 ] Аналогично 65524+3 IS 0xfff7 для FAT16 и 4084+3 0xff7 для FAT12. Количество секторов на кластер является мощностью 2 подгонки за один байт, наименьшее значение - 1 ( 0x01 ), самое большое значение - 128 ( 0x80 ). Линии в квадратных кронштейнах указывают необычный размер кластера 128, а для FAT32 больше, чем необходимые размеры кластеров 32 или 64. [ 64 ]

Поскольку каждая запись FAT32 занимает 32 бита (4 байта), максимальное количество кластеров (268435444) требует 2097152 жирных секторов для размера сектора 512 байт. 2097152 IS 0x200000 , и хранение этого значения требует более двух байтов. Следовательно, FAT32 ввел новое 32-разрядное значение в секторе загрузки FAT32 сразу после 32-битного значения для общего количества секторов, представленных в варианте FAT16B.

Расширения записей загрузки, представленные с DOS 4.0, начинаются с Magic 40 ( 0x28 ) или 41 ( 0x29 ). Как правило, толстые драйверы смотрят только на количество кластеров, чтобы различать FAT12, FAT16 и FAT32: Человеческие читаемые струны, идентифицирующие жирный вариант в загрузке, игнорируются, поскольку они существуют только для среды, отформатированных с DOS 4.0 или более поздней версии.

Определение количества записей каталогов на кластер является простым. Каждая запись занимает 32 байта; Это приводит к 16 записям на сектор для размера сектора 512 байтов. DOS 5 RMDIR/ RD Команда удаляет начальную " ."(Этот каталог) и" .."(родительский каталог) Записи в подкатализациях непосредственно, поэтому размер 32 сектора на оперативном диске возможен для FAT12, но требуется 2 или более секторов на кластер. Сектор Bat12 без расширения DOS 4 нуждается в 29 байт до первого ненужного жира16B 32 -bit Количество скрытых секторов, это оставляет три байта для (на невыполнном код загрузки (на оперативном диске) и магии 0x55 0xaa в конце всех секторов загрузки. В Windows NT наименьший размер поддерживаемого сектора составляет 128.

В Windows NT операционных системах FORMAT Параметры команды /A:128K и /A:256K соответствуют максимальному размеру кластера 0x80 (128) с размером сектора 1024 и 2048, соответственно. Для общего сектора размером 512 /A:64K Выход 128 секторов на кластер.

Оба издания каждого ECMA-107 [ 24 ] и ISO/IEC 9293 [ 25 ] [ 26 ] Укажите максимальный номер кластера MAX определяется формулой MAX=1+trunc((TS-SSA)/SC)и резервные номера кластеров MAX+1 до 4086 ( 0xff6 , fat12), а затем 65526 ​​( 0xfff6 , fat16) для будущей стандартизации.

Спецификация Microsoft EFI FAT32 [ 4 ] утверждает, что любая жира -файловая система с менее чем 4085 кластерами является FAT12, в противном случае любая жира -файловая система с менее чем 65 525 кластерами является FAT16, а в противном случае это FAT32. Запись для кластера 0 в начале жира должна быть идентична байту дескриптора среды, обнаруженного в BPB, тогда как запись для кластера 1 отражает значение конец цепочки, используемое форматером для кластерных цепей ( 0xfff , 0xffff или 0x0ffffffff ). Записи для кластерных номеров 0 и 1 заканчиваются на границе байта даже для FAT12, например, 0xf9ffff для дескриптора медиа 0xf9 .

Первый кластер данных - 2, [ 33 ] и, следовательно, последний кластер MAX получает номер MAX+1Полем Это приводит к номерам кластеров данных 2 ... 4085 ( 0xff5 ) для FAT12, 2 ... 65525 ( 0xfff5 ) для FAT16 и 2 ... 268435445 ( 0x0ffffff5 ) для FAT32.

Следовательно, единственные доступные значения, зарезервированные для будущей стандартизации 0xff6 (FAT12) и 0xfff6 (FAT16). Как отмечено ниже «Менее 4085» также используется для реализаций Linux, [ 44 ] Или, как Microsoft : выражается спецификация жира [ 4 ]

... когда это говорит <, это не означает <=. Обратите внимание также, что цифры верны. Первый номер для FAT12 составляет 4085; Второе число для FAT16 составляет 65525. Эти цифры и «<» знаки не ошибаются ».

Фрагментация

[ редактировать ]

Файловая система FAT не содержит встроенных механизмов, которые предотвращают разбросаны вновь написанные файлы по всему разделу. [ 65 ] В объемах, где файлы часто создаются и удаляются или их длины часто меняются, среда со временем становится все более фрагментированной.

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

Другие файловые системы, например, HPFS или EXFAT , используют растровые карты свободного пространства , которые указывают используемые и доступные кластеры, которые затем можно быстро посмотреть, чтобы найти свободные смежные области. Другое решение - это связь всех бесплатных кластеров в один или несколько списков (как это делается в файловых системах Unix ). Вместо этого жир должен быть отсканирован как массив, чтобы найти бесплатные кластеры, что может привести к штрафам на производительность с большими дисками.

Фактически, поиск файлов в больших подкаталогах или вычисление свободного дискового пространства на объемах жира является одной из наиболее ресурсоемких операций, поскольку он требует чтения таблиц каталогов или даже всего линейного жира. Поскольку общее количество кластеров и размер их записей в жире все еще были небольшими на объемах FAT12 и FAT16, это все еще можно переносить на томах FAT12 и FAT16 большую часть времени, учитывая, что введение более сложных дисковых структур будет иметь Также увеличило сложность и следы памяти операционных систем реального режима с их минимальными общими требованиями к памяти 128 КБ или менее (например, с DOS), для которых жир был разработан и оптимизирован первоначально.

С введением FAT32 Long Seek и Scan Times стали более очевидными, особенно на очень больших объемах. от Microsoft Возможное оправдание, предложенное Raymond Chen для ограничения максимального размера размер FAT32, созданных в Windows, было время, необходимое для выполнения ». DIR«Операция, которая всегда отображает свободное дисковое пространство в качестве последней строки. [ 66 ] Отображение этой линии заняло больше времени и дольше, так как количество кластеров увеличилось. Поэтому FAT32 представил информационный сектор специальной файловой системы, в котором ранее вычисленное количество свободного пространства сохраняется в течение циклов питания, поэтому счетчик свободного пространства необходимо пересматривать только тогда, когда съемный форматированный FAT32 среду выброшены без сначала его. выключается без должного выключения операционной системы, проблема, в основном видимая с помощью ПК-стилей Pre- ATX , на простых системах DOS и некоторых потребительских продуктах с батарейным батарейным батарейным батарейным батарейным батарейным батарейным батарейным батарейным батарейным батарейным батарейным батарейным управлением.

С огромными размерами кластеров (16 КБ, 32 КБ, 64 КБ), принудившимися к большим разделам жира, внутренняя фрагментация в форме отходов в пространстве дискового пространства путем ослабления файлов из -за кластера (так как файлы редко точные размеры кластера) начинаются Также проблема, особенно когда есть много небольших файлов.

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

DOS 3.0 и выше не будут немедленно повторно использовать дисковое пространство удаленных файлов для новых распределений, а вместо этого будут стремиться к ранее неиспользуемому пространству, прежде чем начать использовать дисковое пространство из ранее удаленных файлов. Это не только помогает поддерживать целостность удаленных файлов как можно дольше, но также ускоряет распределение файлов и избегает фрагментации, поскольку никогда до того, как выделенное дисковое пространство всегда не подвергается нефрагментации. DOS выполняет это, сохраняя указатель на последнее выделенное кластер на каждом установленном томе в памяти и начинает искать свободное место в этом месте вверх, а не в начале жира, так как это все еще делалось DOS 2.x. [ 13 ] Если достигнут конец жира, он обертится, чтобы продолжить поиск в начале жира до тех пор, пока не будет найдено свободное пространство, либо исходное положение не будет достигнуто снова, не обнаружив свободного пространства. [ 13 ] Эти указатели инициализируются, чтобы указывать на начало жиров после загрузки, [ 13 ] Но на томах FAT32 DOS 7.1 и выше попытаются получить последнюю позицию из информационного сектора FS . Этот механизм побежден, однако, если приложение часто удаляет и воссоздает временные файлы, поскольку операционная система будет затем пытаться поддерживать целостность пустого данных, эффективно вызывая большую фрагментацию в конце. [ 13 ] В некоторых версиях DOS использование специальной функции API для создания временных файлов может использоваться, чтобы избежать этой проблемы.

Кроме того, записи каталогов удаленных файлов будут помечены 0xe5 с двух 3,0. [ 42 ] DOS 5.0 и выше начнут повторно использовать эти записи только тогда, когда в таблице были использованы ранее неиспользованные записи каталога, и в противном случае система должна была бы расширить саму таблицу. [ 6 ]

Поскольку DOS 3.3 Операционная система предоставляет средства для повышения производительности файловых операций с FASTOPEN Следив за позицией недавно открытых файлов или каталогов в различных формах списков (MS-DOS/PC DOS) или хэш-таблиц (DR-DOS), которые могут значительно сократить время поиска и открытия файлов. Перед тем, как DOS 5.0 должна быть осторожна при использовании таких механизмов в сочетании с программным обеспечением для дефрагментации диска, обходящим файловую систему или драйверы диска.

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

Другие механизмы высокого уровня могут читать и обрабатывать более крупные детали или полный жир при запуске или по требованию, когда это необходимо, и динамически создавать представления дерева в память о файловых структурах тома, отличных от структур на диск. [ 67 ] [ 68 ] Это может, в объемах со многими свободными кластерами занять еще меньше памяти, чем изображение самого жира. В частности, на сильно фрагментированных или заполненных объемах, ищут, ищущие становятся намного быстрее, чем с линейными сканированием по фактическому жиру, даже если изображение жира будет храниться в памяти. Кроме того, работая на логически высоком уровне файлов и кластерных цепи, а не на секторе или уровне трека становится возможным избежать некоторой степени фрагментации файлов в первую очередь или выполнить локальную дефрагментацию и переупорядочение каталога на основе на основе на основе на основе на основе на основе на основе на основе на основе на основе на основе на основе на основе на основе на основе записей каталога в зависимости их имена или шаблоны доступа в фоновом режиме.

Некоторые из воспринимаемых проблем с фрагментацией жирных файловых систем также являются результатом ограничений производительности базовых драйверов блока устройств , что становится более заметным. Меньшая память доступна для сектора буферизации и блокировки/деблокирования трассы:

В то время как одноподавляющие DOS имели положения для многосекционных считываний и блокировки/деблокирования трека, операционная система и традиционная архитектура жестких дисков ПК ( только один непогашенный запрос на ввод/вывод за раз и никаких передачи DMA ) изначально не содержали механизмов что может облегчить фрагментацию путем асинхронного предварительного получения следующих данных, когда приложение обрабатывала предыдущие куски. Такие функции стали доступны позже. Более поздние версии DOS также оказали встроенную поддержку буферизации сектора в съемках и поставлялись с динамически нагруженными программами кэширования дисков, работающих на уровне физического или логического сектора, часто используя память EMS или XMS , а иногда и обеспечивая адаптивные стратегии кэширования или даже проходить в режиме защищенном DPMS или маскировки для повышения производительности путем получения прямого доступа к кэшированным данным в линейной памяти, а не через обычные API DOS.

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

Длинные имена файлов VFAT

[ редактировать ]

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

Длинные имена файлов VFAT (LFNS) хранятся в жирной файловой системе с использованием трюка: добавление дополнительных записей в каталог перед обычной записью файла. Дополнительные записи отмечены меткой объемом, системой, скрытыми и чтением только атрибутов (давая 0x0f ), которая является комбинацией, которая не ожидается в среде MS-DOS и, следовательно, игнорируется программами MS-DOS и сторонними утилитами. Примечательно, что каталог, содержащий только метки объема, считается пустым и разрешено удалять; Такая ситуация появляется, если файлы, созданные с длинными именами, удалены из простых DOS. Этот метод очень похож на метод Delwatch для использования атрибута тома, чтобы скрыть ожидающие удаленные файлы для возможного будущего недолетости со времен DR DOS 6.0 (1991) и выше. Он также похож на метод, публично обсуждаемый для хранения длинных имен файлов на Ataris и Under Linux в 1992 году. [ 69 ] [ 70 ]

Поскольку более старые версии DOS могут принять имена LFN в корневом каталоге для метки тома, VFAT был разработан для создания пустой метки тома в корневом каталоге перед добавлением каких -либо записей имен LFN (если метка тома уже не существует). [ NB 13 ]

Каждая фальшивая запись может содержать до 13 символов UCS-2 (26 байтов), используя поля в записи, которые содержат размер файла или марки времени (но не в поле начального кластера, для совместимости с утилитами дисков, полю стартового кластера установлен на Значение 0. См. 8.3 имя файла для дополнительных объяснений). До 20 из этих 13-характерных записей могут быть прикованы, поддерживая максимальную длину 255 символов UCS-2. [ 55 ]

Если положение последнего персонажа LFN не находится на границе записи каталога (13, 26, 39, ...), то Терминатор 0x0000 добавляется в следующую позицию символа. Затем, если этот терминатор также не на границе, оставшиеся позиции символов заполнены 0xffff . Никакой записи каталога, содержащего одинокий терминатор.

Записи LFN Используйте следующий формат:

Замена смещения Длина (байты) Описание
0x00 1 Номер последовательности (бит 6: Последняя логическая, первая физическая запись LFN, бит 5: 0; биты 4-0: число 0x01 .. 0x14 ( 0x1f ), удаленная запись: 0xe5 )
0x01 10 Имя символы (пять UCS-2 символов )
0x0b 1 Атрибуты (всегда 0x0f )
0x0c 1 Тип (всегда 0x00 для VFAT LFN, другие значения, зарезервированные для будущего использования; Для особого использования битов 4 и 3 в SFN видите дальше)
0x0d 1 Контрольная сумма имени файла DOS
0x0e 12 Имя символы (шесть UCS-2 символов )
0x1a 2 Первый кластер (всегда 0x0000 )
0x1c 4 Имя символы (два UCS-2 символа )

Если есть несколько записей LFN, необходимого для представления имени файла, в первую очередь появляется запись, представляющая конец имени файла. Номер последовательности этой записи имеет бит 6 ( 0x40 ) установлено, чтобы представить, что это последняя логическая запись LFN, и имеет самый высокий номер последовательности. Номер последовательности уменьшается в следующих записях. Запись, представляющая начало имени файла, имеет последовательность № 1. Значение 0xe5 используется для указания, что запись удалена.

На объемах FAT12 и FAT16, тестирование на значения при 0x1a быть нулевым и в 0x1c , чтобы быть ненулевым, может использоваться для различения LFN VFAT и ожидающих удаления файлов в Delwatch.

Например, имя файла, подобное «файлу с очень длинным файлом», будет отформатировано как это:

Номер последовательности Данные ввода
0x03 "Me.ext"
0x02 "y long filena"
0x01 "Файл с VER"
??? Нормальный 8.3 запись

Контрольная сумма также позволяет проверить, соответствует ли длинное имя файла с именем 8.3; Такое несоответствие может произойти, если файл был удален и воссоздан с использованием DOS в той же позиции каталога. Контрольная сумма рассчитывается с использованием алгоритма ниже. (PFCBNAME - это указатель на имя, так как оно отображается в обычной записи каталога, то есть первые восемь символов являются именем файла, а последние три - расширение. Точка неявна. Любое неиспользованное пространство в имени файла пробивается с пространственными символами. (ASCII 0x20 ). Например, «readme.txt» будет » README␠␠TXT".)

unsigned char lfn_checksum(const unsigned char *pFCBName)
{
   int i;
   unsigned char sum = 0;

   for (i = 11; i; i--)
      sum = ((sum & 1) << 7) + (sum >> 1) + *pFCBName++;

   return sum;
}

Если имя файла содержит только строчные буквы или представляет собой комбинацию нижнего региона базового имени с проникновением или наоборот; и не имеет особых символов и подходит в пределах 8.3, запись VFAT не создается в Windows NT и более поздних версиях Windows, таких как XP. Вместо этого два бита в байте 0x0c ввода каталога используется, чтобы указать, что имя файла следует рассматривать как полностью или частично строчное. В частности, бит 4 означает расширение строк и бит 3 строчных базовых базовых , что позволяет составлять такие комбинации, как » example.TXT" или " HELLO.txt"Но не" Mixed.txt". Немногие другие операционные системы поддерживают его. Это создает проблему с обратной совместимостью с более старыми версиями Windows (Windows 95 /98 /98 SE / ME), которые видят имена файлов All-UpperCase, если это расширение было использовано, и поэтому может изменить имя файла, когда он транспортируется между операционными системами, например, на USB -флэш -накопителе. /fs/fat/dir.c и fs/vfat/namei.c); опция крепления shortname Определяет, используется ли эта функция при написании. [ 71 ]

Смотрите также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Jump up to: а беременный в Для максимальной совместимости с MS-DOS/PC DOS и DR-DOS, операционные системы, пытающиеся определить формат дискет-диска, должны проверить все упомянутые последовательности OpCode при смещении сектора 0x000 в дополнение к поиску действительного байта дескриптора среды при смещении сектора 0x015, прежде чем предположить наличие BPB . Несмотря на то, что на ПК DOS 1.0 диски не содержат BPB, они начинаются с 0xeb также, но не показывайте 0x90 при смещении 0x002 . ПК DOS 1.10 Диск 0xeb 0x ?? 0x90 , хотя они все еще не имеют BPB. В обоих случаях тест на действительный дескриптор носителя при смещении 0x015 потерпит неудачу (значение 0x00 вместо действительных дескрипторов мультимедиа 0xf0 и выше). Если эти тесты терпят неудачу, DOS проверяет наличие байта дескриптора среды в первом байте первого жира в секторе после загрузочного сектора (логический сектор 1 на флопах FAT12/FAT16).
  2. ^ Jump up to: а беременный в дюймовый и Подпись в смещении 0x1fe в секторах загрузки 0x55 0xaa , то есть 0x55 при смещении 0x1fe и 0xaa в смещении 0x1ff . Поскольку репрезентация маленького эндэдиана должно быть принято в контексте совместимых с IBM PC машин, это может быть написано как 16-битное слово 0xaa55 в программах для процессоров x86 (обратите внимание на порядок замены), тогда как он должен быть написан как 0x55AA in programs for other CPU architectures using a big-endian representation. Поскольку это было много раз в книгах и даже в оригинальных справочных документах Microsoft, в этой статье используется основанное на смещении представление о диске, чтобы избежать какого-либо возможного неверного толкования.
  3. ^ Jump up to: а беременный в Запись контрольной суммы в секторах загрузки Atari содержит значение выравнивания, а не само магическое значение . Магическая ценность 0x1234 нигде не хранится на диске. В отличие от процессоров Intel X86 , процессоры Motorola 680x0 , используемые на машинах Atari, используют представление памяти с большим эндэдианом , и поэтому при расчете контрольной суммы необходимо предположить представление о большем эндэндине. Как следствие этого, для кода проверки контрольной суммы, работающего на машинах x86, пары байтов должны быть заменены до 16-битного добавления.
  4. ^ DR-DOS способен загружать FAT12/FAT16 Логический секторов с логическими размерами сектора до 1024 байт.
  5. ^ Jump up to: а беременный Следующие функции DOS возвращают эти значения регистра: Int 21h/ah = 2ah "Получить систему даты" Возвращенные значения: cx = год ( 1980 .. 2099 ), dh = месяц (1..12), dl = день (1..31). Int 21h/ah = 2ch "Получить системное время" Возвращенные значения: ch = час (0..23), cl = минута (0..59), dh = второе (0..59), dl = 1/100 секунд (0..99).
  6. ^ Windows XP, как было отмечено, создает такие гибридные диски при переформатировании форматированных дисков Zip-100 FAT16B в формат FAT32. Полученные объемы были FAT32 по формату, но все еще использовали EBPB FAT16B. (Неясно, как Windows определяет местоположение корневого каталога на томах FAT32, если использовался только EBPB FAT16.)
  7. ^ Jump up to: а беременный Одна утилита, предоставляющая опцию для указания желаемого значения заполнителя формата для жестких дисков,-это DR-DOS FDISK R2.31 с его необязательным параметром Wipe /W:246Полем В отличие от других утилит FDISK , DR-DOS FDISK является не только инструментом разделения, но также может отформатировать свежеприготовленные разделы в виде FAT12 , FAT16 или FAT32 . Это снижает риск случайного форматирования неправильных объемов.
  8. ^ Чтобы поддержать сосуществование DR-DOS с DOS ПК и несколько параллельных установок DR-DOS, расширение по умолчанию » IBMBIO␠␠COM"Имя файла загрузки можно изменить, используя SYS /DR:ext Опция, где EXT представляет новое расширение. Другие потенциальные имена файлов загрузки DR-DOS, которые следует ожидать в специальных сценариях,-это « DRBIOS␠␠SYS"," DRDOS␠␠␠SYS"," IO␠␠␠␠␠␠SYS"," JO␠␠␠␠␠␠SYS".
  9. ^ Если флаг грязного отключения тома все еще очищается при запуске, объем не был должным образом не установлен. Это, например, приведет к тому, что Windows 98 Win.com запустит Scandisk , чтобы проверить и восстановить потенциальные ошибки логической файловой системы. Если флаг плохого сектора будет очищен, он также заставит выполнять поверхностное сканирование. Это может быть отключено, установив AutoScan = 0 в разделе [Options] в файле msdos.sys .
  10. ^ Jump up to: а беременный в дюймовый См. Другие ссылки для особых мер предосторожности в отношении вхождения кластера значения 0xff0 на объемах FAT12 под MS-DOS/PC DOS 3.3 и выше.
  11. ^ Jump up to: а беременный Некоторые версии формата , так как MS-DOS 1.25 и PC DOS 2.0 поддерживали опцию /O (для старого первый байт всех записей каталога ), чтобы заполнить 0xe5 вместо использования конечного маркера 0x00 . Тем самым. Объем оставался доступным в соответствии с PC DOS 1.0 - 1.1 , в то время как форматирование заняло несколько дольше, и новые версии DOS не могли воспользоваться значительным ускорением, вызванным использованием конечного маркера 0x00 .
  12. ^ Это причина, почему 0xe5 имел особое значение в записях каталогов.
  13. ^ Jump up to: а беременный Чтобы избежать потенциального неверного толкования метки объема каталогов с помощью записей VFAT LFN с помощью операционных систем без VFAT, инструменты FDISK и формат DR-DOS 7.07 явно пишут фиктивные NO␠NAME␠␠␠␠"Метки объема каталогов, если пользователь пропустят, вводясь на метку тома. Операционная система внутренне по умолчанию будет возвращать ту же строку, если не может быть найдена метка объема каталогов, но без реальной метки тома, хранящейся как первая запись (После записей каталога) старые операционные системы могли бы ошибочно забрать записи VFAT LFN вместо этого.
  14. ^ Этот тип атрибута распределения ОС IBM 4680 и 4690 ОС должен иметь значение бита в диск 0, поскольку файлы возвращаются к этому типу, когда атрибуты теряются случайно.
  1. ^ «Файловые системы» . Microsoft Technet . 2001. Архивировано из оригинала 2011-08-12 . Получено 2011-07-31 .
  2. ^ Jump up to: а беременный Microsoft (2006-11-15). Windows 95 CD-ROM config.txt Файл Архивированный 2013-01-28 на Archive.today Статья 135481, пересмотр: 1.1, получено 2011-12-22: «Для каждого жесткого диска указывает, следует ли записывать дату, в которой файлы доступны И даты последнего доступа отключены для всех дисков, когда ваш компьютер запускается в безопасном режиме и не поддерживается для дискету. ACCDATE=drive1+|- [drive2+|-]..."
  3. ^ Бхат, Вашингтон (2010). «Обзор структуры данных FAT32 файловой системы FAT32». S2CID   58178285 . {{cite web}}: Отсутствует или пусто |url= ( помощь )
  4. ^ Jump up to: а беременный в дюймовый и фон глин час я Дж k л м не а «Microsoft Расширяемая инициатива прошивки FAT32 Спецификация файловой системы, FAT: Общий обзор формата диска» . Microsoft . 2000-12-06. Архивировано из оригинала 2021-07-23 . Получено 2011-07-03 .
  5. ^ Jump up to: а беременный в дюймовый Хааф, Уилфрид; Миддель, Фрэнк (ноябрь 1987). «Данные на дисках- структурах файлов и дискет в рамках CP/M, MSDOS и TOS: управление файлами под TOS». C't - Журнал для компьютерных технологий . c't file (на немецком языке). Vol . ​С. ISSN   0724-8679 .
  6. ^ Jump up to: а беременный в дюймовый и фон глин час я Дж k л м не а п Чаппелл, Джефф (январь 1994 г.). Шульман, Эндрю; Педерсен, Аморетт (ред.). DOS Internals . Серия программирования Эндрю Шульмана (1 -я печать, 1 -е изд.). Аддисон Уэсли издательская компания . ISBN  978-0-201-60835-9 Полем (xxvi+738+IV страницы, 3,5 "-floppy [1] [2] ) ошибки: [3] [4] [5]
  7. ^ Jump up to: а беременный в дюймовый и фон глин час я Дж k л м не а п Q. ведущий с Т в v В Microsoft MS-DOS 3.1 Руководство по программированию на английском языке [ Microsoft MS-DOS 3.1 Справочное руководство по английскому языку ]. Мюнхен: Markt & Technik Verlag (опубликовано 1986). 1984. ISBN  3-89090-368-1 Полем 8411-310-02, 036-014-012. Что касается инструкции по прыжкам в начале загрузочного сектора: «Определите, является ли первый байт сектора загрузки E9H или EBIT (первый байт 3-байтового ближнего или 2-байтового короткого прыжка) или EBH ( Первый байт 2-байтового прыжка, сопровождаемый NOP). (Nb. Эта книга содержит много ошибок.)
  8. ^ Jump up to: а беременный Даниэль Б. Седория. Сектор загрузки персонального компьютера IBM версии 1.00 (1981) . 2005-08-02 ( [6] Архив 2014-05-21 на машине Wayback ).
  9. ^ Jump up to: а беременный Даниэль Б. Седория. Сектор загрузки персонального компьютера IBM версии 1.10 (1982) . 2005-07-29 ( [7] Архивировал 2014-05-21 на машине Wayback ).
  10. ^ Jump up to: а беременный Кальдера (1997). Caldera Opendos Machine читаемый исходный комплект 7.01 . Файл диск. 0x69 тоже.
  11. ^ Пол, Матиас Р. (2002-02-20). «Нужна DOS 6.22 (не OEM)» . Группа новостей : alt.msdos.programmer . Архивировано с оригинала 2017-09-09 . Получено 2006-10-14 .
  12. ^ Басс, Уолли (1994-02-14). «Размер кластера» . Группа новостей : comp.os.msdos.programmer . Архивировано с оригинала 2017-09-09 . Получено 2006-10-14 .
  13. ^ Jump up to: а беременный в дюймовый и фон глин час Дэйв Уильямс (1992). Техническая ссылка программиста для MSDOS и IBM PC . Dosref, Spareware версия 01/12/1992. ISBN   1-878830-02-3 . ( [8] Архивировано 2014-05-20 на машине Wayback , доступ к 2012-01-08). Комментарий: автор упоминает, что DOS 4.0 проверяет этикетку OEM, но отрицает, что DOS 3.2 также проверяет его (хотя это и делает).
  14. ^ Пол, Матиас Р. (2004-08-25). "Novoltrk.reg" . www.drdos.org . Архивировано с оригинала 2016-03-04 . Получено 2011-12-17 . [9]
  15. ^ Jump up to: а беременный «Устранение неполадок дисков и файловых систем» . Microsoft Technet . 2005-11-05. Архивировано с оригинала 2014-06-07 . Получено 2014-06-15 .
  16. ^ IBM (1983). Справочник по техническому справочнику IBM PC . Комментарий: включает в себя полный список исходного кода ROM BIOS оригинального IBM PC.
  17. ^ Jump up to: а беременный в дюймовый Ганс-Диретер Янковски, Дитмар Рабич, Джулиан Ф. Ресшке (1992). Atari Professional Book ST-INT-TT . Sybex, 4 -е издание, 12 -я партия. ISBN   3-88745-888-5 , ISBN   978-3-88745-888-1 .
  18. ^ Seagate Technologies, «Переход к продвинутому формату 4K Сектор жесткие диски (архивировано по wayback machine @archive.org)», 2010 ( [10] ).
  19. ^ Jump up to: а беременный в дюймовый Brown, Ralf D. (2002-12-29). "The x86 Interrupt List". Archived from the original on 2016-06-16. Retrieved 2011-10-14.
  20. ^ Jump up to: а беременный в дюймовый Де Бойн Поллард, Джонатан (2010) [2006]. «Все о блоках параметров BIOS» . Часто даны ответы . Архивировано с оригинала 2016-08-26 . Получено 2014-06-02 .
  21. ^ Jump up to: а беременный в Microsoft MS-DOS Ссылка программиста: Версия 5.0 . Microsoft Press. 1991. ISBN  1-55615-329-5 .
  22. ^ Jump up to: а беременный в дюймовый и фон глин час я Дж k «Стандартные форматы дисководов, поддерживаемые MS-DOS» . Microsoft Help and Support. 2003-05-12. Архивировано с оригинала 2015-01-09 . Получено 2012-09-11 .
  23. ^ Jump up to: а беременный в Microsoft (1987-07). MS-DOS 3.3 Ссылка программиста.
  24. ^ Jump up to: а беременный в дюймовый и фон глин час я Дж "Volume and File Structure of Disk Cartridges for Information Interchange". Standard ECMA-107 (2nd ed., June 1995). ECMA. 1995. Archived from the original on 2018-10-07. Retrieved 2011-07-30.
  25. ^ Jump up to: а беременный в дюймовый и фон глин час я Дж «Информационные технологии - объем и структура файлов картриджей диска для обмена информацией» . ISO/IEC 9293: 1994 . Каталог ISO . 1994. Архивировано из оригинала 2012-01-17 . Получено 2012-01-06 .
  26. ^ Jump up to: а беременный в дюймовый и фон глин час я Дж «Обработка информации - объем и структура файлов гибких дисковых картриджей для обмена информацией» . ISO 9293: 1987 . Каталог ISO . 1987. Архивировано из оригинала 2012-01-17 . Получено 2012-01-06 .
  27. ^ Jump up to: а беременный в Андрис Брауэр (2002-09-20). «Жирная файловая система» . Архивировано из оригинала 2011-10-06 . Получено 2011-10-16 .
  28. ^ Jump up to: а беременный в дюймовый и фон глин час я Дж k л м не а п Q. ведущий Патерсон, Тим ; Microsoft (2013-12-19) [1983]. "Microsoft DOS V1.1 и v2.0: /msdos/v20source/skelio.txt, /msdos/v20source/hrddrv.asm" . CHM . Музей компьютерной истории , Microsoft . Архивировано из оригинала 2019-08-14 . Получено 2014-03-25 . (NB. Хотя издатели утверждают, что это будет MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и Televideo PC DOS 2.11 .)
  29. ^ Jump up to: а беременный в дюймовый и фон глин час я Дж Збиковски, Марк ; Аллен, Пол ; Ballmer, Стив ; Борман, Рувим; Борман, Роб; Батлер, Джон; Кэрролл, Чак; Чемберлен, Марк; Челл, Дэвид; Коли, Майк; Кортни, Майк; Dryfoos, Майк; Дункан, Рэйчел; Экхардт, Курт; Эванс, Эрик; Фермер, Рик; Гейтс, Билл ; Гири, Майкл; Гриффин, Боб; Хогарт, Даг; Джонсон, Джеймс У.; Кермаани, Каамель; Король, Адриан; Кох, Рид; Ландовски, Джеймс; Ларсон, Крис; Леннон, Томас; Липки, Дэн; Макдональд, Марк ; МакКинни, Брюс; Мартин, Паскаль; Мазерс, Эстель; Мэтьюз, Боб; Мелин, Дэвид; Mergentime, Чарльз; Невин, Рэнди; Ньюэлл, Дэн; Ньюэлл, Тани; Норрис, Дэвид; О'Лири, Майк; О'Рир, Боб ; Олссон, Майк; Остерман, Ларри; Остлинг, Ридж; Пай, Сунил; Патерсон, Тим ; Перес, Гэри; Петерс, Крис; Петзольд, Чарльз ; Поллок, Джон; Рейнольдс, Аарон ; Рубин, Дэррил; Райан, Ральф; Schulmeisters, Карл; Шах, Раджен; Шоу, Барри; Короткий, Энтони; Slivka, Ben; Смирл, Джон; Стиллмейкер, Бетти; Стоддард, Джон; Тиллман, Деннис; Уиттен, Грег; Юнг, Натали; Zeck, Steve (1988). «Технические консультанты». Энциклопедия MS-DOS: версии с 1,0 до 3.2 . Дункан, Рэй; Бостек, Стив; Бургойн, Кит; Байерс, Роберт А.; Хоган, Том; Кайл, Джим; Лютвин, Гордон ; Петзольд, Чарльз ; Рабиновиц, Чип; Томлин, Джим; Уилтон, Ричард; Вулвертон, Ван; Вонг, Уильям; Вудкок, Джоанн (полностью переработал изд.). Редмонд, Вашингтон, США: Microsoft Press . ISBN  1-55615-049-0 Полем LCCN   87-21452 . OCLC   16581341 . (xix+1570 страниц; 26 см) (nb. Это издание было опубликовано в 1988 году после обширного переработки первого издания снятого 1986 года другой команды авторов. [11] Архивировано 2018-10-14 на машине Wayback )
  30. ^ Jump up to: а беременный «Подробное объяснение сектора Bat Boot» . База знаний Microsoft . 2003-12-06. Архивировано из оригинала 2011-11-28 . Получено 2011-10-16 .
  31. ^ Jump up to: а беременный в Лай, Роберт С.; Waite Group (1987). Написание драйверов устройств MS-DOS (2-е изд.). Аддисон Уэсли. ISBN  0-201-60837-5 .
  32. ^ Jump up to: а беременный в дюймовый и фон глин час я Дж k л м не а п Q. ведущий с Т Патерсон, Тим ; Microsoft (2013-12-19) [1983]. "Microsoft DOS v1.1 и v2.0: /msdos/v20source/devdriv.txt" . Музей компьютерной истории , Microsoft . Архивировано из оригинала 2019-08-14 . Получено 2014-03-25 . (NB. Хотя издатели утверждают, что это будет MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и Televideo PC DOS 2.11 .)
  33. ^ Jump up to: а беременный в дюймовый и Тим Патерсон (1983). «Внутренний взгляд на MS-DOS» . Байт ​Архивировано с оригинала 2011-07-20 . Получено 2011-07-18 . Нумерация начинается с 2; Первые два числа, 0 и 1, зарезервированы.
  34. ^ Jump up to: а беременный в дюймовый Port -DOS - Руководство пользователя для абрикосового портативного . Пользовательские руководства, Великобритания ( [12] Архив 2013-05-22 на машине Wayback ).
  35. ^ Jump up to: а беременный в дюймовый и Джон С. Эллиотт (1998). Форматы диска Dosplus . ( [13] Архивировано 2013-06-07 на машине Wayback ).
  36. ^ Jump up to: а беременный в дюймовый BBC Master 512 . Компьютерные страницы BBC Yellow Pig ( [14] Archived 2014-05-21 на машине Wayback ).
  37. ^ Цифровое оборудование корпорация. Rainbow 100 MS-DOS 2.01 Техническая документация Том 1 (QV025-GZ), список операционной системы Microsoft MS-DOS (AA-X432A-TV), универсальный драйвер диска, стр. 1-17. 1983.
  38. ^ «Подробное объяснение сектора Bat Boot» . Dew Associates Corporation. 2002. Архивировано из оригинала 2011-09-26 . Получено 2011-10-16 .
  39. ^ Tyagi, Tarun (2004-10-31). «Размер кластеров в файловых системах FAT и NTFS». Восстановление данных с программированием и без него . Нью -Дели, Индия: Gardners Books. п. 4. ISBN  978-81-7656-922-4 Полем Архивировано из оригинала 2021-12-03 . Получено 2021-12-03 .
  40. ^ Даниэль Б. Седория. Подробные заметки о «грязном флаге выключения» под MS-Windows . 2001-12-04. ( [15] Архивировано 2014-05-21 на машине Wayback ).
  41. ^ Jump up to: а беременный в дюймовый и «Набор ресурсов Windows 98 - Глава 10 - диски и файловые системы» . Microsoft Technet . 1998. Архивировано из оригинала 2012-05-01 . Получено 2012-07-16 .
  42. ^ Jump up to: а беременный в дюймовый Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Michels, Raymond J.; Кайл, Джим (1994) [ноябрь 1993]. Недокументированные DOS: Руководство программиста по зарезервированным функциям MS-DOS и структурам данных-расширено, чтобы включить MS-DOS 6, Novell DOS и Windows 3.1 (2 Ed.). Чтение, Массачусетс: Аддисон Уэсли . п. 11 ISBN  0-201-63287-х Полем (xviii+856+vi страницы, 3,5 "-floppy) Ошибки: [16] [17]
  43. ^ Питер Нортон (1986). Внутри ПК IBM, пересмотренный и расширенный , Брэди. ISBN   0-89303-583-1 , P. 157
  44. ^ Jump up to: а беременный в Андрис Брауэр . «Жир под Linux» . Архивировано из оригинала 2014-07-01 . Получено 2014-05-20 .
  45. ^ Андрис Брауэр (2002-09-20). "ТОЛСТЫЙ" . Архивировано из оригинала 2017-12-17 . Получено 2012-01-11 .
  46. ^ Jump up to: а беременный в Сиэтл компьютерные продукты (1981). "SCP 86-DOS 1.0 Приложение" (PDF) . Архивировано (PDF) из оригинала 2012-10-03 . Получено 2013-03-10 .
  47. ^ Jump up to: а беременный в дюймовый и фон глин час я Дж k л м не а п Q. ведущий с Т в v В х и С аа Аб и объявление Но из в нравиться это к и Пол, Матиас Р. (1997-07-30) [1994-05-01]. NWDOS-TIPS-Советы и хитрости Rund Um Novell Dos 7, Mit Blick auf undokumentierte Детали, ошибки и обходные пути . MpDostip (на немецком языке) (3 изд.). Архивировано с оригинала 2016-11-05 . Получено 2012-01-11 . (Nb. Nwdostip.txt - это всеобъемлющая работа по Novell Dos 7 и Opendos 7.01 , включая описание многих незарегистрированных функций и внутренних групп. Она является частью коллекции MpDostip.zip автора. время .
  48. ^ IBM. 4690 Руководство пользователя ОС Версия 5.2 , IBM Document SC30-4134-01, 2008-01-10 ( [19] ).
  49. ^ Jump up to: а беременный Патерсон, Тим ; Microsoft (2013-12-19) [1983]. "Microsoft DOS v1.1 и v2.0: /msdos/v20source/format.txt" . Музей компьютерной истории , Microsoft . Архивировано из оригинала 2019-08-14 . Получено 2014-03-25 . (NB. Хотя издатели утверждают, что это будет MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1.25 и смесь Altos MS-DOS 2.11 и Televideo PC DOS 2.11 .)
  50. ^ Jump up to: а беременный Шустек, Лен (2014-03-24). «Microsoft MS-DOS Ранний исходный код» . Программные драгоценные камни: музей компьютерных исторических исторических серий исходного кода. Архивировано с оригинала 2019-08-10 . Получено 2014-03-29 . (NB. Хотя автор утверждает, что это будет MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1,25 и смесь Altos MS-DOS 2.11 и Televideo PC DOS 2.11 .)
  51. ^ Jump up to: а беременный Левин, Рой (2014-03-25). «Microsoft производит исходный код для MS-DOS и Word для Windows, доступных для общественности» . Официальный блог Microsoft . Архивировано из оригинала 2014-03-28 . Получено 2014-03-29 . (NB. Хотя автор утверждает, что это будет MS-DOS 1.1 и 2.0, на самом деле это SCP MS-DOS 1,25 и смесь Altos MS-DOS 2.11 и Televideo PC DOS 2.11 .)
  52. ^ Jeida/Jeita/Cipa (2010). «Стандарт Ассоциации продуктов камеры и визуализации, CIPA DC-009-Translation-2010, Правило проектирования для файловой системы камеры: DCF версия 2.0 (издание 2010)» (PDF) . Архивировано из оригинала (PDF) 2013-09-30 . Получено 2011-04-13 .
  53. ^ Jump up to: а беременный в дюймовый и фон глин час я Дж k л м не а п Q. Кальдера (1997). Caldera Opendos Machine читаемый исходный комплект 7.01 . Файл fdos.equ в считываемом исходном комплекте машины приравнивается к соответствующим записям каталога.
  54. ^ Джон С. Эллиотт (1998). CP/M 4.1 Форматы диска . ( [20] Архивировано 2014-08-26 на машине Wayback ): «CP/M 4.1 (DOS Plus [1.2]) позволяет использовать две файловые системы-CP/M и DOS. Версия [...] Поставляется С помощью AMSTRAD PC1512 не может обрабатывать большее количество флопов, чем 360K (CP / M) / 1,2 МБ (DOS), или большие перегородки жесткого диска, чем 32 МБ. Как и в PCDOS 2.11, за исключением: Byte 0CH записи каталога [...] хранят четыре «пользовательские атрибуты» F1'-F4 '[...] пароли в стиле DRDOS не поддерживаются ».
  55. ^ Jump up to: а беременный Vindaci (1998-01-06). "Длинная спецификация файла" . Архивировано из оригинала в 2001-04-20 . Получено 2007-03-13 .
  56. ^ Хенк Келдер. FAT32.txt для FAT32.ifs версия 0.74 . ( "@Macarlo, Inc" . Архивировано с оригинала 2012-03-30 . Получено 2012-01-14 . ) Комментарий: эта старая версия файла Readme по -прежнему обсуждает старый 0xea и 0xec Magic значения.
  57. ^ Henk Kelder (2003). FAT32.txt для FAT32.ifs версии 0.9.13. »( [21] Архивировано 2022-01-25 на машине Wayback ):« Этот байт [...] не изменяется во время работы Windows 95 и « Скандиск или дефраг Полем [...] Если другая программа устанавливает значение на 0x00 для файла, в котором есть EAS, эти EAS больше не будет найдено с использованием только Dosfindfirst/Next Calls. Другая ОС/2 требует получения EAS (Dosquerypathinfo, Dosqueryfileinfo и Dosenumattribute) не полагаются на этот байт. Также обратное могло [...] произойти. [...] В этой ситуации только эффективность сканирования каталогов будет снижена. Обе ситуации [...] корректируются с помощью chkdsk ».
  58. ^ Netlabs. FAT32.fs Wiki и источники . ( [22] Архивировано 2013-05-11 на машине Wayback ).
  59. ^ Jump up to: а беременный IBM. 4690 Руководство по программированию ОС Версия 5.2 , документ IBM SC30-4137-01, 2007-12-06 ( [23] ).
  60. ^ Jump up to: а беременный в дюймовый и фон глин час я Дж k л м не Справочная серия разработчиков Opendos - Руководство по системе и программиста - Руководство программиста . Caldera, Inc. август 1997 г. Кальдера Часть № 200-DODG-003. Архивировано из оригинала 2017-10-07 . Получено 2014-05-20 . (Отпечатано в Великобритании.)
  61. ^ Боб Эйгер, Tavi Systems (2000-10-28). Внедрение расширенных атрибутов в FAT -файловой системе . ( [24] Архивировано 2006-06-13 на машине Wayback ).
  62. ^ IBM (2003). Информация о 4690 Уникальных атрибутах распределения файлов , IBM Document R1001487, 2003-07-30. ( «IBM Информация о 4690 ОС уникальных атрибутов распределения файлов - Соединенные Штаты» . Архивировано из оригинала 2014-05-21 . Получено 2014-05-20 . ): «[...] Типы файлов хранятся в части« зарезервированных битов »структуры каталога файлов PC-DOS [...] Только 4690 уважает и сохраняет эти атрибуты. Различные операционные системы не 4690 предпринимают разные действия, если Эти биты включаются [...] при копировании из дискеты, созданной в системе 4690. .] 1.2 [...] откажется от копирования файла. Если. .] Когда [...] Скопируйте [...] вернуться в систему 4690, [...] файл скопирует как локальный файл ».
  63. ^ IBM. 4690 Сохранить и восстановить атрибуты распределения файлов . IBM Document R1000622, 2010-08-31 ( «IBM 4690 Сохранить и восстановить атрибуты распределения файлов - Соединенные Штаты» . Архивировано из оригинала 2014-05-21 . Получено 2014-05-20 . )
  64. ^ «Ограничения файловой системы FAT32» . База знаний Microsoft . 2007-03-26. Архивировано из оригинала 2011-08-15 . Получено 2011-08-21 . Кластеры не могут быть 64 килобит или больше
  65. ^ Дункан, Рэй (1989). «Цели проектирования и реализация новой высокопроизводительной файловой системы» . Microsoft Systems Journal. Архивировано из оригинала 2011-07-16 . Получено 2014-05-20 . [Nb. Этот конкретный текстовый файл имеет несколько ошибок OCR; Например, «Рэй» - это правильное имя автора; Не «Рой», как показывает текст.]
  66. ^ Чен, Раймонд (июль 2006 г.). «Microsoft Technet: краткая и неполная история FAT32» . Microsoft Technet Magazine. Архивировано из оригинала 2008-11-18 . Получено 2014-05-20 .
  67. ^ Jump up to: а беременный Les Bell; Associates Pty Ltd (1996-09-02) [1990]. «ОС/2 высокопроизводительная файловая система» . Консультант по поддержке ПК . Архивировано из оригинала 2014-03-01 . Получено 2014-06-24 .
  68. ^ Jump up to: а беременный Бриджес, Дэн (февраль 1996 г.). «Внутри высокопроизводительной файловой системы - часть 2/6: введение» . Значительные биты, Brisbug PC User Group Inc. Архивировано из оригинала 2015-09-23 . Получено 2014-06-24 .
  69. ^ Natuerlich! (1992-03-24). «Получение более длинных имен файлов от Gemdos» . comp.sys.atari.st.tech. Архивировано из оригинала 2014-04-24 . Получено 2014-05-05 .
  70. ^ Torvalds, Linus (1992-12-23). "Длинные имена файлов" . Comp.os.minix. Архивировано из оригинала 2014-04-23 . Получено 2014-05-05 .
  71. ^ «Монтирование (8): установка файловой системы» . Linux Man Page . Архивировано с оригинала 2014-05-05 . Получено 2014-05-20 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1730e1a0f636c19bb599fc84ce18acdc__1725860220
URL1:https://arc.ask3.ru/arc/aa/17/dc/1730e1a0f636c19bb599fc84ce18acdc.html
Заголовок, (Title) документа по адресу, URL1:
Design of the FAT file system - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)