Сделай Сам Свою Работу на 5

Версии 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 Все материалы защищены законодательством РФ.