2011. Машбук (1114722), страница 58
Текст из файла (страница 58)
в этом каталоге система ипользователи могут размещать свои файлы на некоторый ограниченный промежутоквремени; при этом при перезагрузке системы нет гарантии, что файлы не будут удаленыиз этого каталога.Каталог /mnt традиционно используют для монтирования различных файловыхсистем к данной системе. Операция монтирования в общих чертах заключается в том, чтокорень монтируемой файловой системы ассоциируют с данным каталогом (или с одним изего подкаталогов), после чего доступ к файлам подмонтированной системыосуществляется уже через этот каталог (т.н.
точку монтирования).В каталоге /dev размещаются специальные файлы устройств, посредством которыхосуществляется регистрация обслуживаемых в системе устройств и связь этих устройств стем или иным драйвером. Соответственно, все устройства, с которыми работаетоперационная система, именуются посредством имен этих специальных файловустройств.217Каталог /usr можно охарактеризовать как каталог пользовательской информации.Предполагается, что это каталог имеет свою специфичную структуру подкаталогов.
Вчастности, каталог /usr/lib обычно содержит инструменты работы пользователей, неотносящихся напрямую к взаимодействию с операционной системой (например, тут могутхраниться системы программирования, C-компилятор, C-отладчик и т.п.). Еще однимдостаточно важным каталогом является каталог /usr/include, который содержит файлызаголовков (или include-файлы) с расширением *.h, и именно в этом каталоге будет искатьпрепроцессор C-компилятора соответствующие файлы заголовков, указанные впрограмме в угловых скобках. Каталог /usr/bin — это каталог команд, которые введенына данной вычислительной установке (например, тут могут храниться команды, связанныес непосредственной деятельностью организации). И, наконец, в каталоге /usr/userразмещаются домашние каталоги зарегистрированных в системе пользователей.Итак, мы рассмотрели основные аспекты логической структуры каталогов ОСUnix. Еще раз отметим, что, придерживаясь рекомендаций системы в плане размещениятех или иных файлов, легче и удобнее поддерживать систему «в порядке».4.2.3 Внутренняя организация файловой системы: модель версииSystem VРассмотрение внутренней организации файловой системы мы начнем с моделифайловой системы, реализованной в ОС Unix версии System V.
Данная файловая системабыла реализована одной из первых в ОС Unix и имеет название s5fs.СуперблокОбласть индексныхдескрипторовБлоки файловРис. 120. Структура файловой системы версии System V.Данная файловая система имеет следующую структуру (Рис. 120).
Файловаясистема занимает часть того раздела, в котором она находится (назовем его системнымразделом, чтобы отличать его от разделов с другими файловыми системами, имеющимисхожую организацию и которые можно примонтировать к данной системе), начиная снулевого блока и заканчивая некоторым фиксированным блоком. Эта часть состоит изтрех подпространств: суперблока, области индексных дескрипторов и блоков файлов.Итак, первое подпространство — это суперблок. Он содержит данные,определяющие статические параметры и характеристики данной файловой системы(например, информация о размере блока файла, информация о размере всей файловойсистемы в блоках или байтах или же информация о количестве индексных дескрипторов всистеме).
Также суперблок хранит информацию об оперативном состоянии файловойсистемы. Суперблок является частью файловой системы, которая резидентно находится воперативной памяти. Среди прочего суперблок хранит информацию о наличии свободныхресурсов файловой системы — наличии свободных блоков в рабочем пространствефайловой системы и наличие свободных индексных дескрипторов. Забегая вперед,отметим, что для этих целей используются соответственно массив номеров свободныхблоков и массив индексных дескрипторов.Следующее подпространство — это область индексных дескрипторов.Индексные дескрипторы были описаны нами выше, мы их рассматривали как некоторыесистемные структуры данных фиксированного размера, содержащих комплекснуюинформацию о размещении, актуальном состоянии и содержимом конкретного файла.Последнее подпространство — это блоки файлов (если быть более точным, тоданное пространство корректнее было бы назвать рабочим пространством файловойсистемы).
Здесь размещаются блоки файлов (с содержимым этих файлов), а также218системная информация, которая не поместилась в суперблоке и области индексныхдескрипторов.4.2.3.1 Работа с массивами номеров свободных блоковИзначально номера всех свободных блоков файловой системы выстраиваются вединый связный список (Рис.
121), который размещается в нескольких блоках. Первыйблок располагается в суперблоке (а значит, в оперативной памяти). Каждый блок хранитномера свободных блоков, а также номер следующего блока данного массива.N блоков свободно≠0Выделениесвободныхблоков≠00Рис. 121. Работа с массивами номеров свободных блоков.Работа с массивом номеров свободных блоков достаточно проста. При запросе наполучение свободного блока происходит поиск в первом блоке массива ячейки ссодержательной (ненулевой) информацией, обнуление найденной ячейки, а блок снайденным номером выдается в ответ на запрос. Если же происходит обнулениепоследней ячейки блока, ссылающейся на следующий блок массива, то предварительносодержимое этого блока загружается в суперблок и используется уже как первый блокэтого массива.
Если же какой-то блок освобождается, то выполняются противоположныедействия в обратном порядке.На первый взгляд может показаться, что хранение в блоках массива свободныхблоков уменьшает рабочее пространство файловой системы (т.е. пользователь не сможетвоспользоваться блоками, хранящими массив), но это не так: если представить граничнуюситуацию, когда нет свободных блоков, - тогда нет и номеров свободных блоков, а значит,нет и блоков, хранящих эти номера, т.е.
файловая система занята на 100%.4.2.3.2 Работа с массивом свободных индексных дескрипторовМассив номеров свободных индексных дескрипторов состоит из фиксированногоколичества элементов. Изначально данный массив заполнен номерами свободныхиндексных дескрипторов.Если происходит освобождение индексного дескриптора (т.е. происходит удалениефайла), то происходит обращение к данному массиву. Если в массиве есть свободныеместа, то происходит запись номера освободившегося индексного дескриптора в первоевстретившееся свободное место массива, иначе номер дескриптора «забывается».При создании файла происходят обратные действия. Идет обращение к массиву;если он не пуст, то из него изымается первый содержательный элемент, которыйпредставляет собой номер свободного индексного дескриптора. Если же при обращении кмассиву оказалось, что он пуст, а в суперблоке присутствует информация о наличиисвободных индексных дескрипторов, то система запускает процесс обновлениярассматриваемого массива.
Этот процесс обращается к области индексных дескрипторов,последовательно перебирает их и в зависимости от их содержимого делает однозначный219вывод о занятости или свободности дескриптора. Номера свободных индексныхдескрипторов процесс помещает в массив.Рассмотренные массивы свободных блоков и свободных индексных дескрипторовисполняют роль специализированных КЭШей: происходит буферизация обращений ксистеме за свободным ресурсом.4.2.3.3 Индексные дескрипторы. Адресация блоков файлаВыше уже отмечалось, что индексный дескриптор (Рис. 122) является системнойструктурой данных, содержащей атрибуты файла, а также всю оперативную информациюоб организации и размещении данных. Система устроена таким образом, что междусодержимым файла и его индексным дескриптором существует взаимнооднозначноесоответствие. Заметим, что содержимое файла не обязательно размещается в рабочемпространстве файловой системы: существуют некоторые типы файлов, для которыхсодержимое хранится в самом индексном дескрипторе.
Примером тут может послужитьтип специального файла устройств.Name1Name2…Namenиндексный дескрипторсодержимое файлаРис. 122. Индексные дескрипторы.Для каждого индексного дескриптора существует, по меньшей мере, одно имя,зарегистрированное в каталогах файловой системы. И еще раз повторимся: говоря одревовидности файловой системы, понимают древовидность не с точки зренияразмещения файла, а с точки зрения размещения имен файлов.Индексный дескриптор хранит информацию о типе файла, правах доступа,информацию о владельце файла, размере файла в байтах, количестве имен,зарегистрированных в каталогах файловой системы и ссылающихся на данный индексныйдескриптор. В частности, признаком свободного индексного дескриптора являетсянулевое значение последнего из указанных атрибутов.В индексном дескрипторе также собирается различная статистическая информацияо времени создания, времени последней модификации, времени последнего доступа.