2011. Машбук (1114722), страница 59
Текст из файла (страница 59)
И,наконец, в индексном дескрипторе находится массив блоков файла.Организация блоков файла — еще одна удачная особенность файловой системыОС Unix. Структура организации блоков файла выглядит следующим образом. Массивблоков файла состоит из 13 элементов. Первые 10 элементов используются для указанияномеров первых десяти блоков файла, оставшиеся три элемента используются дляорганизации косвенной адресации блоков.
Так, одиннадцатый элемент ссылается намассив из N номеров блоков файла, двенадцатый — на массив из N ссылок, каждая изкоторых ссылается на массив из N блоков файла, тринадцатый элемент используется ужедля трехуровневой косвенной адресации блоков.220Индексный дескрипторАдресное поле110 блоков прямойадресации10 11 12 13…1128 блоков косвеннойадресации первого уровня…128…11282 блоков косвеннойадресации второго уровня…1……128…1……128128…Рис.
123. Адресация блоков файла.Рассмотрим пример системы (Рис. 123), в которой размер блока равен 512 байтам(т.е. 128 четырехбайтовым числам). Если количество блоков файла больше 10, то сначалаиспользуется косвенная адресация первого уровня. Суть ее заключается в том, что водиннадцатом элементе хранится номер блока, состоящий в нашем случае из 128 номеровблоков файла, которые следуют за первыми десятью блоками. Иными словами,посредством одиннадцатого элемента массива адресуются 11-ый – 138-ой блоки файла.Если же блоков оказывается больше, чем 138, то начинает использоваться косвенностьвторого уровня, и для этих целей задействуют двенадцатый элемент массива.
Этотэлемент массива содержит номер блока, в котором (опять-таки для нашего примера) могутнаходиться до 128 номеров блоков, в каждом из которых может находиться до 128номеров блоков файла. Когда размеры файла оказываются настолько большими, что дляхранения номеров его блоков не хватает двойной косвенной адресации, используетсятринадцатый элемент массива и косвенная адресация третьего уровня. Итак, врассмотренной модели (в которой размер блока равен 512 байтам) максимальный размерфайла может достигать (10+128+1282+1283)*512 байт. На сегодняшний день файловыесистемы с таким размером блока не используются, наиболее типичны размеры блока 4, 8,и т.д.
вплоть до 64 кбайт.Обратим внимание, что рассмотренная модель адресации блоков файла являетсядостаточно компактной и эффективной, поскольку для обращения к блоку файла сиспользованием тройной косвенности потребуется всего три обмена, а если учесть, что всистеме реализована буферизация блочных обменов, то накладные расходы становятсяеще меньше.4.2.3.4 Файл-каталогКаталог файловой системы версии System V — это файл специального типа; егосодержимое так же, как и у регулярных файлов, находится в рабочем пространствефайловой системы и по организации данных ничем не отличается от организации данныхрегулярных файлов.221Файлы-каталоги (Рис. 124) имеют следующую структурную организацию.
Каждаязапись в нем имеет фиксированный размер: длина записи довольно сильно варьируется(будем считать, что длина записи 16 байт). Первые два байта хранят номер индексногодескриптора файла, а оставшиеся 14 байтов —имя файла (т.е. в нашей модели имя файла всистеме ограничено 14 символами). При создании каталога он получает двепредопределенные записи, которые невозможно модифицировать и удалять. Перваязапись — это запись, для которой используется унифицированное имя “.”,интерпретируемая как ссылка на сам этот каталог. Соответственно, в этой записиуказывается номер индексного дескриптора данного файла-каталога.
Второй записью, длякоторой используется унифицированное имя “..”, является ссылка на родительский дляданного файла каталог, и соответственно, в этой записи хранится номер индексногодескриптора родительского каталога./textprog.cusrpeterunixbin1binlibdev… 17… 211 .17 .1 ..21 text1 ..25 peter17 usr3 unix76 bin19 bin34 lib21 prog.c14 devРис. 124. Файл-каталог.Отвлекаясь от файловой системы версии System V, отметим, что многие болееразвитые файловые системы ОС Unix поддерживают средства установления связей(Рис. 125) между индексным дескриптором и именами файла.
Можно устанавливать какжесткие связи, так и символические связи. Жесткая связь позволяет с одним индекснымдескриптором связать два и более равноправных имени. Соответственно, при удаленииимени, участвующего в жесткой связи, сначала удаляется имя из каталога, затемуменьшается счетчик жестких связей в индексном дескрипторе. В случае обнуления этогосчетчика происходит удаление содержимого файла и освобождение данного индексногодескриптора.Для организации символической связи создается файл специального типа — типассылка.
Файл данного типа содержит полный путь к тому файлу, на который ссылаетсяданный файл-ссылка. Используя такую косвенную адресацию, можно добраться доцелевого файла. Такой подход иллюстрирует ассиметричное именование (права файлассылки будут отличаться от прав файла, на который он ссылается).222dir1dir2name2name1ИД 17577жесткаясвязьсимволическая связьРис. 125. Установление связей.name3ИД 17755../dir1/name14.2.3.5 Достоинства и недостатки файловой системы модели System VСреди достоинств рассматриваемой файловой системы стоит отметить, что даннаясистема является иерархичной. Также надо отметить, что за счет использованиясистемного кэширования оптимизирована работа с массивом свободных блоков исвободных индексных дескрипторов.
И, наконец, в данной файловой системе найденоудачное решение организации блоков файлов за счет использования «нарастающей»косвенности адресации.С другой стороны, данная система не лишена недостатков, большая часть которыхявляется следствием ее достоинств. Первым недостатком является тот факт, что всуперблоке концентрируется ключевая информация файловой системы.
Соответственно,потеря суперблока приводит к достаточно серьезным проблемам.Следующая проблема опять-таки связана с концентрацией информации всуперблоке. Несмотря на то, что суперблок резидентно размещается в ОП, системапериодически «сбрасывает» его копию на диск — это делается для того, чтобы при сбоеминимизировать потери актуальной информации из суперблока. Это, в свою очередь,означает, что система регулярно обращается к одной и той же точке дисковогопространства, и, соответственно, вероятность выхода из строя именно данной областидиска со временем сильно увеличивается.Следующий недостаток связан с фрагментацией блоков файла по диску.
Здесьимеется в виду, что при интенсивной работе файловой системы (когда в ней со временемсоздается, модифицируется и уничтожается достаточно большое число файлов)складывается ситуация, когда блоки одного файла оказываются разбросанными по всемудоступному дисковому пространству. В этом случае, если потребуется прочитатьпоследовательные блоки файла (что бывает достаточно часто), то головка жесткого дисканачинает совершать довольно много механических передвижений, что отрицательносказывается на эффективности работы файловой системы.И в заключение отметим такой недостаток как ограничение, накладываемое надлину имени файла (6, 8, 14 байт для представления имени — величины на сегодняшнийдень достаточно небольшие).4.2.4 Внутренняя организация файловой системы: модель версииFast File System (FFS) BSDРазработчики файловой системы Fast File System (FFS), оставив основныеположительные характеристики предыдущих файловых систем (в т.ч.
и файловой системыверсии System V), пошли по следующему пути (Рис. 126). Они представили раздел какпоследовательность дисковых цилиндров, которую разбили на порции фиксированногоразмера. В каждом из образовавшихся кластеров размещается копия суперблока, блоки223файлов (которые мы назвали рабочим пространством файловой системы), информация обиндексных дескрипторах, ассоциированных с данным кластером, а также информация освободных ресурсах этого кластера.
При этом разбиение устройства на кластерыпроисходит аппаратно-зависимо таким образом, чтобы суперблоки не оказывались на«опасно близком» расстоянии (например, на одной поверхности). Такой подходобеспечивает большую надежность файловой системы.СуперблокСуперблокСуперблокРис. 126. Структура файловой системы версии FFS BSD.4.2.4.1 Стратегии размещенияРабота системы основывается на трех концепциях. Первой концепцией являетсяоптимизация размещения каталога. При создании каталога система осуществляет поисккластера, наиболее свободного в данный момент с точки зрения использования индексныхдескрипторов, т.е.
ищутся кластеры, количество свободных индексных дескрипторов вкоторых превосходит некоторую среднюю величину, и среди найденных кластероввыбирается кластер с наименьшим количеством каталогов.Следующей стратегией является равномерность использования блоков данных.Во время создания файла он делится на несколько частей. Часть файла, которая имеланепосредственную адресацию из индексного дескриптора, по возможности размещается втом же кластере, что и индексный дескриптор. Оставшиеся части файла делятся на равныепорции, которые файловая система размещает в отдельных кластерах. Перечисленныестратегии призваны для борьбы с фрагментацией файла по разделу: файл либо целикомразмещается в одном кластере, либо размещается в нескольких кластерах, но тогда в нихразмещаются достаточно большие фрагменты подряд идущих блоков.И, наконец, третья стратегия размещения — технологическое размещениепоследовательных блоков файлов (Рис.
127). Представим следующую ситуацию: пустьнеобходимо прочитать два последовательных блока с магнитного диска (будем считать,что эти блоки находятся на одной дорожке магнитного диска). Это означает, что даннаязадача требует двух последовательных обращений к системным вызовам. Соответственно,между окончанием физического считывания первого блока и началом физическогосчитывания второго блока потратится некоторое время Δt на накладные расходы (вчастности, вход и выход из системного вызова). Это время хоть и мало, но за данныйпромежуток диск успеет повернуться на угол ω*Δt (где ω — скорость вращения диска).Если следующий второй блок расположен на диске непосредственно за первым, то завремя Δt головка пропустит начало второго блока, и когда будет предпринята попыткафизически прочесть второй блок, то придется ожидать полного оборота диска, чтоявляется относительно долгим по времени. Чтобы избежать подобных накладныхрасходов, связанных с необходимостью ожидать полного оборота диска, необходиморасположить второй блок с некоторым отступом от первого.
В этом и заключаетсятехнологическое размещение блоков на диске.224Поверхность жесткого дискаtreadblock1ωblock1readblock2block2Δtω*ΔtРис. 127. Стратегия размещения последовательных блоков файлов.4.2.4.2 Внутренняя организация блоковРазмер блока в файловой системе FFS может варьироваться в достаточно широкомдиапазоне: предельный размер блока — 64 Кбайт. Как отмечалось выше, проблема выбораоптимального размера блока достаточно сложна: и большие блоки, и маленькие имеютсвои достоинства и недостатки, и от администратора системы требуются хорошие навыки,чтобы подобрать оптимальные для данной системы (решающей задачи конкретного типа)размеры блоков файловой системы.Создатели рассматриваемой файловой системы пошли по пути увеличения размераблока.