Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Управление файлами. Файловая система FAT. Особенности ее организации.






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

Система FAT очень проста и имеет одно серьезное достоинство: врожденную устойчивость к сбоям. В то же время у нее есть и ряд серьезных недостатков. Первый недостаток состоит в том, что при каждой операции над файлами система должна обращаться к FAT. Это приводит к частым перемещениям головок дисковода и в результате к резкому снижению производительности. Действительно, исполнение программы на одной и той же машине под MS DOS и под DOS-эмулятором систем UNIX или OS/2 различается по скорости почти в 1, 5 раза. Особенно это заметно при архивировании больших каталогов.

Сначала в файловой системе FAT в DOS 1 использовались 12-разрядные элементы FAT. (В настоящее время 12-разрядная FAT все еще находит применение дл гибких дисков.) В DOS 2, оснащенной дополнительными средствами для работы с жесткими дисками, в FAT предусмотрены 16-разрядные элементы. Причина проблемы, возникшей в 1987 г., кроется в запросах нижнего уровн к операционной системе на считывание секторов диска с передачей 16-разрядного значения в качестве параметра. Существует 65 536 различных 16-разрядных значений; умножив 65 536 на 512 байт в секторе, получим 32 Мбайт. Что касается числа секторов на диске, оно ограничено возможностями операционной системы. В DOS 4.0 дл обработки запросов на считывание секторов нижнего уровня используются 32-разрядные параметры.

Предел в 2 Гбайт на самом деле обусловлен не проблемами операционной системы, а существующими программами. На диске емкостью 2 Гбайт и более кластеры имеют размер 64 Кбайт, или 65 536 байт (см. рис. 2). Но самое большое значение, которое может быть представлено в 16 разрядах, составляет 65 535; 64 Кбайт - слишком большая величина для 16 разрядов. В Microsoft обнаружили, что при разработке многих существующих в настоящее время программ их авторы исходили из предположения, что значение числа байт в кластере умещается в 16 разрядах.

С увеличением размеров диска единица в двоичном 8-разрядном представлении числа секторов в кластере смещается влево. При смещении единицы за крайнюю левую цифровую позицию возникает ошибка превышения размера 4 Гбайт. Размер кластера указан в виде 16-разрядных двоичных чисел. И вновь единица смещается влево, а при смещении ее за крайнюю левую позицию возникает " 2-Гбайт кризис".

Даже если такой проблемы не возникло при объеме в 2 Гбайт, то операционная система все равно не сможет работать с дисками емкостью свыше 4 Гбайт. При использовании FAT16 число секторов в кластере сохраняется самой ОС в одном байте блока параметров диска, устанавливаемого ОС. Это число должно быть кратным степени 2 и при этом меньше 256. Таким образом, в кластер может входить не более 128 секторов, или 64 Кбайт. В итоге даже если ограничение в 2 Гбайт снимается, система FAT16 приемлема лишь для дисков емкостью менее 4 Гбайт.

В файловой системе FAT32 как элементы FAT, так и номера секторов - 32-разрядные. Вот что это значит: умножим 4 294 967 296 различных 32-разрядных значений на 512 байт в секторе и получим огромное число 2 Тбайт (2 199 023 255 552 байт), которое представляет собой максимально возможную емкость диска при использовании FAT32.

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

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

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

9 Все сведения, содержащиеся здесь, можно получить путем чтения корневого сектора и вызова ряда других функций ОС с некоторыми вычислениями, но блок информации удобен тем, что он содержит все данные вместе. Это единственный вызов, который возвращает адрес заголовка драйвера устройства.

Каталог файлов представляет собой массив 32-байтных элементов - описателей файлов. С точки зрения операционной системы все каталоги (кроме корневого каталога в системах FAT12 и FAT16) выглядят как файлы и могут содержать произвольное количество записей.

Корневой каталог (Root Directory) - это главный каталог диска, с которого начинается дерево подкаталогов. Для корневого каталога в FAT12 и FAT16 в системной области логического диска выделено специальное место фиксированного размера (16 Кбайт), рассчитанное на хранение 512 элементов. В системе FAT32 корневой каталог является файлом произвольного размера.

Смещение Длина Содержимое

00h 11 Короткое имя файла

0Bh 1 Атрибуты файла

0Сh 1 *Зарезервировано под Windows NT (должно содержать 0)

0Dh 1 *Поле, уточняющее время создания файла (в десятках миллисекунд).

Значение поля может находиться в пределах от 0 до 199

0Eh 2 *Время создания файла

10h 2 *Дата создания файла

12h 2 *Дата последного обращения к файлу для записи или считывания данных

14h 2 *Старшее слово номера первого кластера файла

16h 2 Время выполнения последней операции записи в файл

18h 2 Дата выполнения последней операции записи в файл

1Ah 2 Младшее слово номера первого кластера файла

1Ch 4 Размер файла в байтах (32-разрядное число)

Знак " *" означает, что поле обрабатывается только в файловой системе FAT32. В системах FAT12 и FAT16 поле считается зарезервированным и содержит значение 0.

 

Короткое имя файла состоит из двух полей: 8-байтного поля, содержащего собственно имя файла, и 3-байтного поля, содержащего расширение. Если введенное пользователем имя файла короче восьми символов, то оно дополняется пробелами (код пробела - 20h), если введенное расширение короче трех символов, то оно также дополняется пробелами.

Некоторые функции DOS требуют в качестве параметра байт атрибутов файла. Разряды байта атрибутов устанавливаются в 1 в том случае, если у файла имеется соответствующее свойство:

бит 0 - только для чтения;

бит 1 - скрытый;

бит 2 - системный;

бит 3 - идентификатор тома;

бит 4 - каталог;

бит 5 - архивирован;

биты 6 и 7 - резерв (установлены в 0).

Поле времени создания файла и поле времени выполнения последней операции записи в файл имеют следующий формат:

Час Минута Секунда/2

15 11 10 5 4 0

" Секунда/2" означает двухсекундный отсчет (допустимо значение от 0 до 29).

Поле даты создания файла, поле даты последного обращения к файлу и поле даты последней записи в файл имеют следующий формат:

Год Месяц День

15 9 8 5 4 0

При создании файлов отсчет дат ведется от начала эпохи MS-DOS, т.е. от 01.01.1980. Биты 9-15 содержат номер года минус 1980 (допустимо значение от 0 до 127).

Фрагментация диска — это появление на диске множества свободных участков, разделенных занятыми участками.

Операционная система MS DOS записывает файлы на диск физическими блоками, называе­мыми кластерами. Кластер занимает один или несколько смежных секторов и может иметь размер в зависимости от емкости диска и версии операционной системы от 2 до 32 Кбайт для жестких дисков и 512 байт для гибких дисков. После форматирования диска или в том случае, когда на нем имеется достаточно сво­бодного пространства, операционная система записывает файл в смежные, примыкающие друг к другу кластеры. Считывание информации из такого файла происходит при мини­мальном перемещении магнитных головок. По мере записи на диск новых файлов свобод­ное пространство на нем уменьшается. При недостаточном размере непрерывного свободного пространства на диске опера­ционная система использует для размещения нового файла имеющиеся свободные участки,

помещая в них отдельные цепочки кластеров файла — фрагменты файла. При этом фраг­менты могут располагаться на значительном расстоянии друг от друга, что приводит к су­щественному увеличению времени на перемещение магнитных головок и соответственно времени считывания или записи файла.

10 Файлы в UNIX-хранятся в древовидной иерархической файловой системе. Корень файловой системы – это корневой каталог, обозначенный символом «/». Каждый промежуточный узел в дереве файловой системы – это каталог. Конечные вершины дерева файловой системы являются либо пустыми каталогами, либо файлами. Абсолютное путевое имя файла состоит из имен всех каталогов, ведущих к указанному файлу, начиная с корневого каталога. Так, путевое имя /home/test.file означает, что файл test.file расположен в каталоге home, который, в свою очередь, находится в корневом каталоге «/».

Каталог, так же как и файл, описывается при помощи inode. Содержимое каталога представляет собой массив записей, каждая из которых содержит информацию о файле, который находится «внутри» текущего каталога.

Запись каталога имеет следующий формат:

порядковый номер inode файла;

длина записи в байтах;

имя файла;

длина имени файла.

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

Несколько первых номеров inode зарезервированы файловой системой, их перечень содержится в заголовочном файле:

/*

* Special inode numbers

*/

#define EXT2_BAD_INO 1 /* Bad blocks inode */

#define EXT2_ROOT_IN 2 /* Root inode */

#define EXT2_ACL_IDX_IN 3 /* ACL inode */

#define EXT2_ACL_DATA_INO 4 /* ACL inode */

#define EXT2_BOOT_LOADER_INO 5 /* Boot loader inode */

#define EXT2_UNDEL_DIR_INO 6 /* Undelete directory inode */

Для записи корневого каталога зарезервирован inode под номером 2 (root inode). Этот inode находится в группе блоков 0 и занимает вторую позицию в таблице inode этой группы. Номер первого незарезервированного inode хранится в суперблоке.

Определив порядковый номер inode файла, ядро вычисляет номер группы, в которой этот inode расположен, и его позицию в таблице inode группы. Считав из этой позиции inode, операционная система получает полную информацию о файле, включая адреса блоков, в которых хранится содержимое файла.

Номер группы блоков, в которой расположен inode, вычисляется по формуле:

group = (inode_num - 1) / inodes_per_group

где:

group – искомый номер группы блоков;

inode_num – порядковый номер inode, определяющего файл;

inodes_per_group – число inode в группе (эта информация находится в суперблоке).

Позиция inode в таблице inode группы определяется по формуле:

index = (inode_num - 1) % inodes_per_groupe

где index – позиция inode в таблице.

Рассмотрим пример получения содержимого файла test.file, находящегося в корневом каталоге. Для чтения файла /test.file необходимо:

в массиве записей корневого каталога найти запись об этом файле;

извлечь порядковый номер inode файла, вычислить номер группы, в которой этот inode расположен;

из дескриптора данной группы извлечь адрес таблицы inode группы;

вычислить позицию inode в этой таблице;

считать inode файла;

из inode извлечь адреса информационных блоков и осуществить чтение информации, находящейся в этих блоках.

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

Каталог содержит именованные ссылки, на другие файлы или каталоги. Он создается командой mkdir и удаляется (если пустой) командой rmdir. Каталоги, в которых есть файлы, можно удалить командой rm -r.

Жесткие Имя файла хранится в родительском каталоге, а не в самом файле. Это так называемая жесткая ссылка. Файл должен иметь хотя бы одну жесткую ссылку в каком-нибудь каталоге, но может иметь и больше в любом месте файловой системы. Жесткие ссылки, ссылающиеся на один файл, равноправны. Символическая, или " мягкая", ссылка обеспечивает возможность вместо путевого имени файла указывать псевдоним. Когда ядро сталкивается с символической ссылкой при поиске файла, оно извлекает из нее хранящееся в ней путевое имя. Различие между жесткими и символическими ссылками состоит в том, что жесткая ссылка — прямая, т.е. указывает непосредственно на индексный дескриптор файла, тогда как символическая ссылка указывает на файл по имени. Файл, адресуемый символической ссылкой, и сама ссылка физически являются разными объектами файловой системы. Символические ссылки создаются командой


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.012 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал