Курынин Р.В., Машечкин И.В., Терехин А.Н. - Конспект лекций по ОС (1114685), страница 49
Текст из файла (страница 49)
Номера свободныхиндексных дескрипторов процесс помещает в массив.Рассмотренные массивы свободных блоков и свободных индексных дескрипторовисполняют роль специализированных КЭШей: происходит буферизация обращений к системе засвободным ресурсом.4.2.3.3Индексные дескрипторы. Адресация блоков файлаВыше уже отмечалось, что индексный дескриптор (4.2.3.3) является системной структуройданных, содержащей атрибуты файла, а также всю оперативную информацию об организации иразмещении данных.
Система устроена таким образом, что между содержимым файла и егоиндексным дескриптором существует взаимнооднозначное соответствие. Заметим, чтосодержимое файла не обязательно размещается в рабочем пространстве файловой системы:189существуют некоторые типы файлов, для которых содержимое хранится в самом индексномдескрипторе. Примером тут может послужить тип специального файла устройств.Name1Name2…Namenиндексный дескрипторсодержимое файлаРис.
112.Индексные дескрипторы.Для каждого индексного дескриптора существует, по меньшей мере, одно имя,зарегистрированное в каталогах файловой системы. И еще раз повторимся, сказав, что, говоря одревовидности файловой системы, то понимают древовидности не с точки зрения размещенияфайла, а с точки зрения размещения имен файлов.Индексный дескриптор хранит информацию о типе файла, правах доступа, информацию овладельце файла, размере файла в байтах, количестве имен, зарегистрированных в каталогахфайловой системы и ссылающихся на данный индексный дескриптор.
В частности, признакомсвободного индексного дескриптора является нулевое значение последнего из указанныхатрибутов.В индексном дескрипторе также собирается различная статистическая информация овремени создания, времени последней модификации, времени последнего доступа. И, наконец, виндексном дескрипторе находится массив блоков файла.Организация блоков файла — еще одна удачная особенность файловой системы ОС Unix.Структура организации блоков файла выглядит следующим образом. Массив блоков файласостоит из 13 элементов. Первые 10 элементов используются для указания номеров первых десятиблоков файла, оставшиеся три элемента используются для организации косвенной адресацииблоков.
Так, одиннадцатый элемент ссылается на массив из N номеров блоков файла,двенадцатый — на массив из N ссылок, каждая из которых ссылается на массив из N блоковфайла, тринадцатый элемент используется уже для трехуровневой косвенной адресации блоков.190Индексный дескрипторАдресное поле110 блоков прямойадресации10 11 12 13…1128 блоков косвеннойадресации первого уровняРис. 113.128…1…11282 блоков косвеннойадресации второго уровня……128……1……128128…Адресация блоков файла.Рассмотрим пример системы (4.2.3.3), в которой размер блока равен 512 байтам (т.е.
128четырехбайтовых чисел). Если количество блоков файла больше 10, то сначала используетсякосвенная адресация первого уровня. Суть ее заключается в том, что в одиннадцатом элементехранится номер блока, состоящем в нашем случае из 128 номеров блоков файла, которые следуютза первыми десятью блоками. Иным словами, посредством одиннадцатого элемента массиваадресуются 11-ый – 138-ой блоки файла. Если же блоков оказывается больше, чем 138, тоначинает использоваться косвенность второго уровня, и для этих целей задействуют двенадцатыйэлемент массива. Этот элемент массива содержит номер блока, в котором (опять-таки для нашегопримера) могут находиться до 128 номеров блоков, в каждом из которых может находиться до 128номеров блоков файла.
Когда размеры файла оказываются настолько большими, что для храненияномеров его блоков не хватает двойной косвенной адресации, используется тринадцатый элементмассива и косвенная адресация третьего уровня. Итак, в рассмотренной модели (размер блокаравен 512 байтам) максимальный размер файла может достигать (10+128+1282+1283)*512 байт. Насегодняшний день файловые системы с таким размером блока не используются, наиболее типичныразмеры блока 4, 8, вплоть до 64 кбайт.Обратим внимание, что рассмотренная модель адресации блоков файла являетсядостаточно компактной и эффективной, поскольку для обращения к блоку файла сиспользованием тройной косвенности потребуется всего три обмена, а если учесть, что в системереализована буферизация блочных обменов, то накладные расходы становятся еще меньше.4.2.3.4Файл-каталогКаталог файловой системы версии System V — это файл специального типа, егосодержимое так же, как и у регулярных файлов, находится в рабочем пространстве файловойсистемы и по организации данных ничем не отличается от организации данных регулярныхфайлов.Файлы-каталоги (4.2.3.4) имеют следующую структурную организацию.
Каждая запись вней нем имеет фиксированный размер: длина записи довольно сильно варьировалась, мы будемсчитать, что длина записи 16 байт. Первые два байта хранят номер индексного дескриптора файла,191а оставшиеся 14 байтов — это имя файла (т.е. в нашей модели имя файла в системе ограничено 14символами). При создании каталога он получает две предопределенные записи, которыеневозможно модифицировать и удалять. Первая запись — это запись, для которой используетсяунифицированное имя “.”, интерпретируемая как ссылка на сам этот каталог. Соответственно, вэтой записи указывается номер индексного дескриптора данного файла-каталога.
Второй записью,для которой используется унифицированное имя “..”, является ссылка на родительский дляданного файла каталог, и соответственно, в этой записи хранится номер индексного дескрипторародительского каталога./1textusrunixbinprog.cpeterbinlibdev1121173… 17… 21...textusrunix17125193476 bin14 devРис. 114....peterbinlib21 prog.cФайл-каталог.Отвлекаясь от файловой системы версии System V, отметим, что многие более развитыефайловые системы ОС Unix поддерживают средства установления связей (4.2.3.4) междуиндексным дескриптором и именами файла. Можно устанавливать как жесткие связи, так исимволические связи. Жесткая связь позволяет с одним индексным дескриптором связать два иболее равноправных имени. Соответственно, при удалении имени, участвующего в жесткой связи,то первым делом удаляется имя из каталога, затем уменьшается счетчик жестких связей виндексном дескрипторе.
В случае обнуления этого счетчика происходит удаление содержимогофайла и освобождение данного индексного дескриптора.Для организации символической связи создается файла специального типа — типа ссылки.Файл данного типа содержит полный путь к тому файлу, на который ссылается данный файлссылка. Используя такую косвенную адресацию, можно добраться до целевого файла.
Такойподход иллюстрирует ассиметричное именование (права файла ссылки будут отличаться от правфайла, на который он ссылается).dir2dir1name2name1жесткаясвязьИД 17577символическая связьРис. 115.Установление связей.192name3ИД 17755../dir1/name14.2.3.5Достоинства и недостатки файловой системы модели System VСреди достоинств рассматриваемой файловой системы стоит отметить, что данная системаявляется иерархичной. Также надо отметить, что за счет использования системного кэшированияоптимизирована работа с массивом свободных блоков и свободных индексных дескрипторов.
И,наконец, в данной файловой системе найдено удачное решение организации блоков файлов за счетиспользования «нарастающей» косвенности адресации.С другой стороны, данная система не лишена недостатков, большая часть которых следуетиз ее достоинств. Первым недостатком является тот факт, что в суперблоке концентрируетсяключевая информация файловой системы.
Соответственно, потеря суперблока приводит кдостаточно серьезным проблемам.Следующая проблема опять-таки связана с концентрацией информации в суперблоке.Несмотря на то, что суперблок резидентно размещается в ОП, система периодически «сбрасывает»его копию на диск — это делается для того, чтобы при сбое минимизировать потери актуальнойинформации из суперблока. Это, в свою очередь, означает, что система регулярно обращается кодной и той же точке дискового пространства, и, соответственно, вероятность выхода из строяименно данной области диска со временем сильно увеличивается.Следующий недостаток связан с фрагментацией блоков файла по диску. Здесь имеется ввиду, что при интенсивной работе файловой системы (когда в ней со временем создается,модифицируется и уничтожается достаточно большое число файлов) складывается ситуация,когда блоки одного файла оказываются разбросанными по всему доступному дисковомупространству.
В этом случае, если потребуется прочитать последовательные блоки файла (чтобывает достаточно часто), то головка жесткого диска начинает совершать довольно многомеханических передвижений, что отрицательно сказывается на эффективности работы файловойсистемы.И в заключение отметим такой недостаток, как ограничение, накладываемое на длинуимени файла (6, 8, 14 байт для представления имени — величины достаточно небольшие насегодняшний день: возникают ситуации, когда необходимо создать имена с относительнодлинными именами).4.2.4Внутренняя организация файловой системы: модель версии Fast FileSystem (FFS) BSDРазработчики файловой системы Fast File System (FFS), оставив основные положительныехарактеристики предыдущих файловых систем (в т.ч.
и файловой системы версии System V),пошли по следующему пути (4.2.4). Они представили раздел как последовательность дисковыхцилиндров, которую разбили на порции фиксированного размера. В каждом из образовавшихсякластеров размещается копия суперблока, блоки файлов, которые мы назвали рабочимпространством файловой системы, информация об индексных дескрипторах, ассоциированных сданным кластером, а также информация о свободных ресурсах этого кластера. При этом разбиениеустройства на кластеры происходит аппаратно-зависимо таким образом, чтобы суперблоки неоказывались на «опасно близком» расстоянии (например, на одной поверхности).