Версии FAT. FAT-12, FAT-16, FAT-32 и их особенности
В первом приближении файловая система MS-DOS представляет собой увеличенную и улучшенную версию СР/М. Она работает только на платформах с центральным процессором Intel, не поддерживает многозадачности и работает лишь в реальном режиме IBM PC Изначально этот режим был единственным режимом.
Файловая система MS-DOS во многом напоминает файловую систему СР/М, включая использование имен файлов, состоящих из 8 + 3 символов верхнего регистра. В первой версии системы (MS-DOS 1.0) был даже всего один каталог, как и в СР/М.
Начиная с MS-DOS 2.0, функциональность файловой системы значительно расширилась. Самым серьезным улучшением явился переход на иерархическую файловую систему, в которой каталоги могли вкладываться друг в друга на произвольную глубину. Это означало, что корневой каталог (размер которого по-прежнему был ограничен) мог содержать подкаталоги, которые, в свою очередь, также могли содержать подкаталоги и т. д. до бесконечности. Связи, принятые в UNIX, не допускались, поэтому файловая система представляла собой дерево, начинавшееся в корневом каталоге.
Сами каталоги хранятся в MS-DOS как файлы, нет никакого ограничения на число каталогов или файлов на диске. Однако в отличие от СР/М, в MS-DOS нет концепции различных пользователей. Соответственно, любой вошедший в систему пользователь получает доступ сразу ко всем файлам.
Чтобы прочитать файл, программа в MS-DOS, должна сначала сделать системный вызов open, чтобы получить дескриптор файла. Системному вызову open в качестве одного из входных аргументов следует указать путь к файлу, который может быть как абсолютным, так и относительным (относительно текущего каталога). Файловая система открывает каталоги, перечисленные в пути, один за другим, пока не обнаруживает последний каталог, который считывается в оперативную память. Затем в считанном каталоге ищется описатель файла, который требуется открыть.
Хотя каталоги в файловой системе MS-DOS переменного размера, используемые каталоговые записи, как и в СР/М, имеют фиксированный размер 32 байт. Формат описателя файла системы MS-DOS содержит поля:
имя файла 8 байт
расширение 3 байта
Имена файлов короче 8+3 символов выравниваются по левому краю полей и дополняются пробелами, каждое поле отдельно.
атрибуты 1 байт
представляет собой новое поле, содержащее биты, указывающие, что для файла разрешено только чтение, что файл должен быть заархивирован, что файл является системным или скрытым. Запись в файл, для которого разрешено только чтение, не разрешается. Таким образом осуществляется защита файлов от случайной записи или удаления. Бит archived (архивный) не устанавливается и не проверяется операционной системой MS-DOS. Он зарезервирован в описателе для архивирующих программ уровня пользователя, сбрасывающих этот бит при создании резервной копии файла, в то время как программы, модифицирующие файл, должны устанавливать этот бит. Таким образом, архивирующая программа может определить, какие файлы подлежат архивации. Бит hidden (скрытый файл) позволяет избежать отображения файла в перечне файлов каталога. Основное его назначение заключается в том, чтобы скрыть от неопытных пользователей файлы, назначение которых им неизвестно. Наконец, бит system (системный) также скрывает файлы и защищает их от случайного удаления командой del. Этот бит установлен у основных компонентов системы MS-DOS.
Резервировано – 10 байт Удивительно, но большая часть описателя файла (10 байт) не используется.
дата создания 2 байт
16-разрядное поле даты также разбивается на три подполя: день (5 бит), месяц (4 бит) и год — 1980 (7 бит).
время создания 2 байт
Время хранится с точностью ±2 с', так как для него отведено 2-байтовое поле способное содержать всего 65 536 уникальных значений, а в сутках 86 400 с. Поле времени разбивается на подполя секунд (5 бит), минут (6 бит) и часов (5 бит). При 7 двоичных разрядах для хранения года и 1980 в качестве точки отсчета максимальное значение года, которое можно выразить таким способом, — это 2107-й. Таким образом, файловая система MS-DOS имеет встроенную проблему 2108 года. Чтобы избежать катастрофы, пользователи системы MS-DOS должны начать готовиться к 2108 году как можно раньше. Если бы в MS-DOS использовался единый 32-разрядный счетчик секунд, точность
представления времени была бы в два раза выше, а катастрофу можно было бы отложить до 2116 года.
номер первого блока 2 байт
точный размер файла 4 байт
В отличие от файловой системы СР/М, не хранящей точного размера файла, система MS-DOS хранит точный размер. Поскольку для размера файла используется 32-разрядное число, в теории файлы могут быть размером до 4 Гбайт. Однако фактически максимальный размер файла размером 2 Гбайт или меньше.
Другое отличие системы MS-DOS от СР/М состоит в том, что дисковые адреса файлов не хранятся прямо в их описателях. Вместо этого файловая система MS-DOS хранит номера блоков файла в специальной таблице размещения файлов, в оперативной памяти. В каталоговой записи хранится номер первого блока файла. Этот номер используется в качестве индекса для 64 K элементов FAT-таблицы, хранящейся в оперативной памяти. Все блоки файла могут быть найдены, если проследовать по цепочке элементов таблицы.
В зависимости от количества блоков на диске в системе MS-DOS применяется три версии файловой системы FAT: FAT-12, FAT-16 и FAT-32. В действительности FAT-32 является неверным названием, так как используются только 28 младших битов дискового адреса. Ее следовало бы назвать FAT-28.
Во всех файловых системах FAT размер блока диска в байтах может быть установлен равным некоторому числу, кратному 512 (возможно, различному для каждого раздела диска), с наборами разрешенных размеров блоков (называемых корпорацией Microsoftразмерами кластеров), различными для каждого варианта FAT.
В первой версии системы MS-DOS использовалась FAT-12 с 512-байтовыми блоками, что позволяло создавать дисковые разделы размером до 212 х 512 байт (на самом деле только 4086 х 512 байт, так как 10 дисковых адресов использовались как специальные маркеры — конец файла, дефектный блок и т. д.). При этом максимальный размер дискового раздела мог составлять 2 Мбайт, а в оперативной памяти FAT-таблица занимала 4096 элементов по два байта каждый. Кроме того, обработка 12-разрядных адресов была довольно медленной.
Такая система неплохо работала на гибких дисках, но с появлением жестких дисков появились проблемы. Корпорация Microsoft попыталась решить проблему, разрешив использовать дисковые блоки (кластеры) размером 1, 2 и 4 Кбайт. Это позволило сохранить структуру и размер таблицы FAT-12 и увеличить размер дискового раздела до 16 Мбайт.
Так как система MS-DOS поддерживала до четырех дисковых разделов на диске, новая файловая система FAT-12 могла работать с дисками емкостью до 64 Мбайт. Для поддержки винчестеров большего размера нужно было предпринимать что-то еще. В результате была разработана файловая система FAT-16, с 16-разрядными дисковыми указателями. Дополнительно было разрешено использовать кластеры размером 8, 16 и 32 Кбайт. Теперь таблица постоянно занимала 128 Кбайт. Максимальный размер раздела, поддерживаемый FAT-16, составлял 2 Гбайт, а максимальный размер диска – 4 раздела по 2 Гбайт – 8 Гбайт.
С выходом Windows 95, с ее FAT-32, количество байт, отводимых на адресацию к блокам, возросло до 4-х. Таким образом, появилась возможность увеличить размер раздела до 2-х Тбайт. Теперь появляется возможность уменьшить размер кластера и увеличить эффективность использования диска.
Еще одно изменение состоит в том, что корневой каталог, раньше имевший фиксированный размер и строго определенное место на диске, теперь можно свободно наращивать по мере необходимости подобно подкаталогу. Теперь не существует ограничений на число записей в корневом каталоге. Это особенно важно, поскольку под каждое длинное имя файла используется несколько записей каталога.
Для поддержки длинных имен были использованы, зарезервированные ранее, 10 байт.
Поле NT – 1 байт обеспечивает отображение имени в правильном регистре и предназначено для совместимости с Windows NT.
Поле Sec – 4 байт дает возможность хранить время создания файла с точностью до 10 миллисекунд.
Поле Дата последнего доступа - 2 байт хранит дату (но не время) последнего доступа к файлу.
Поле Старшие 16 бит адреса – 2 байт позволяют увеличить адресуемое количество блоков
Сам способ хранения длинных имен с возможностью обратной совместимости привел к решению хранить два имени файла: длинное в формате Unicode (для совместимости с Windows NT), и короткого в виде <имя.расширение>.
Короткое имя получается из длинного путем удаления недопустимых символов, взятия 6 первых символов и добавления к ним знака тильды и числа-индекса, в соответствии с текущими индексами каталога.
Короткое имя хранится прямо в описателе файла. Длинное же имя хранится в одном, или нескольких описателях, предшествующих описателю в формате MS-DOS. Порядок хранения имени в описателях задом наперед. Отличить эти описатели можно по полю атрибутов, которое содержит недопустимую комбинацию атрибутов MS-DOS «0х0F». Каждая запись дает возможность использовать 13 символов Unicode для написания имени. Поскольку на счетчик описателей длинного имени отводится 6 бит то описателей длинного имени может быть 63 то общая длина имени могла бы составлять 819 символов, но ограничена 260.
Файловая система Unix
Файловые Sistem V и BSD
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|