Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
К_Глава 9_Файловые системы.doc
Скачиваний:
81
Добавлен:
19.05.2015
Размер:
3.66 Mб
Скачать

3.Простые файловые системы

Файловая система архиватора

Наиболее простой файловой системой можно считать структуру, создаваемую архиватором системы UNIX– программойtar. Этот архиватор просто пишет файлы один за другим, помещая в начале каждого файла заголовок с его именем и длиной. Аналогичную структуру имеют файлы, создаваемые архиваторами типаarj. Для поиска какого-то определенного файла вы должны прочитать первый заголовок; если это не тот файл, прочитать новый заголовок и т.д.

Наиболее простая файловая система такого типа ОС RT-11 с одинаковым успехом применялась как на лентах, так и на устройствах с произвольным доступом. В этой ФС место на диске или ленте выделяется блоками. Размер блока, как правило, совпадает с аппаратным размером сектора (512 байт у большинства дисковых устройств), однако многие ФС могут использовать логические блоки, состоящие из нескольких секторов (так называемыекластеры).

Использование блоков и кластеров

Использование блоков и кластеров вместо адресации с точностью до байта обусловлено двумя причинами.

  • у большинства устройств произвольного доступа доступ произволен лишь с точностью до сектора, т.е. нельзя произвольно считать или записать любой байт – нужно считывать или записывать весь сектор целиком. Именно поэтому в системах семейства Unixтакие устройства называются блочными (block-oriented).

  • использование кластеров увеличивает адресуемое пространство. Так, используя 16-битный указатель, с точностью до байта можно адресовать всего 64 Кбайт, но если в качестве единицы адресации взять 512-битовый блок, то объем адресуемых данных сможет достичь 32 Мбайт; если же использовать кластер размером 32 Кбайт, то можно работать с длинными именами объемом до 2 Гбайт. и т.д.

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

Механизм субаллокации блоков

Ряд современных файловых систем использует механизм, по-английски называемый block suballocation,т.е. размещение частей блоков. В этих ФС кластеры имеют большой размер, но есть возможность разделить кластер на нескольких блоков меньшего размера и записать в эти блоки «хвосты» от нескольких разных файлов. Это, безусловно, усложняет ФС, но позволяет одновременно использовать преимущества, свойственные и большим, и маленьким блокам. Поэтому ряд распространенных ФС, например файловая системаNowellNetware4.1 иFFS(известная также какUFSиBerklyFS), используемая во многих семействахUnix, применяет этот механизм. Субаллокация требует от файловой системы поддержания запаса свободных блоков на случай, если пользователю потребуется увеличить длину одного из файлов, «хвост» которого был упакован во фрагментированный блок.

Выделение памяти

В простейшей файловой системе каждому файлу выделяется непрерывная область на диске. Благодаря этому в каталоге достаточно хранить адрес первого блока файла и его длину, также измеренную в блоках. В RT-11 поступили еще проще: порядок записей в каталоге совпадает с порядком файлов на диске, и началом файла считается окончание предыдущего файла. Свободным участкам диска тоже соответствует запись в каталоге , при создании файла система ищет первый свободный участок подходящего размера.

Эта простая организация имеет очень серьезные недостатки:

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

  2. При хаотическом создании и удалении файлов возникает проблема фрагментации свободного пространства. Для ее решения существует специальная программа, которая переписывает файлы так, чтобы объединить все свободные фрагменты . Эта программа требует много свободного времени, особенно для больших дисковых томов, и потенциально опасна: если при ее использовании произойдет сбой системы, то значительная часть данных будет необратимо разрушена.

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

Файловая системы FAT

Отчасти похожее решение было реализовано в MSDOS. Эта система создает на диске таблицуFAT (FileAllocationTable, таблица размещения файлов). В этой таблице каждому блоку, предназначенному для хранения данных, соответствует 12(16; 32)-битовое значение. Если блок свободен, то значение будет нулевым. Если же блок принадлежит файлу, то значение равно адресу следующего блока этого файла. Если это последний блок в файле, то значение – 0хFFF(рис.10). существует специальный код для обозначения плохого (bad) блока, не читаемого из-за дефекта физического носителя. В каталоге хранятся номер первого блока и длина файла, измеряемая в байтах. Эта файловая система так и называется –FAT. Она очень проста и имеет одно серьезное достоинство: врожденнуюустойчивость к сбоям (fault tolerance).. В то же время у нее есть и ряд серьезных недостатков.

Первый недостаток состоит в том, что при каждой операции над файлами система должна обращаться к FAT. Это к частым перемещениям головок дисковода и в результате к резкому снижению производительности. Особенно это заметно при архивации больших каталогов. Использование дисковых кэшей, а особенно помещениеFATв оперативную память существенно ускоряет работу, хотя возникает и специфическая проблема: чем больше диск, тем больше у негоFAT, соответственно, тем больше нужно памяти.

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