Физическая организация s5 и ufs

 

Файловые системы s5 (получившие название от System V, родового имени не­скольких версий ОС UNIX, разработанных в Bell Labs компании AT&T) и ufs (UNIX File System) используют очень близкую физическую модель. Это не удивительно, так как система ufs является развитием системы s5. Файловая система ufs расширяет возможности s5 по поддержке больших дисков и файлов, а также повышает ее надежность.

Расположение файловой системы s5 на диске иллюстрирует рис. 30. Раздел дис­ка, где размещается файловая система, делится на четыре области:

загрузочный блок;

суперблок (superblock) содержит самую общую информацию о файловой сис­теме: размер файловой системы, размер области индексных дескрипторов, чис­ло индексных дескрипторов, список свободных блоков и список свободных индексных дескрипторов, а также другую административную информацию;

область индексных дескрипторов (mode list), порядок расположения индекс­ных дескрипторов в которой соответствует их номерам;

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

 

Рис. 30. Расположение файловой системы s5 на диске

 

Основной особенностью физической организации файловой системы s5 являет­ся отделение имени файла от его характеристик, хранящихся в отдельной струк­туре, называемой индексным дескриптором (inode). Индексный дескриптор в s5 имеет размер 64 байта и содержит данные о типе файла, адресную информацию, привилегии доступа к файлу и некоторую другую информацию, а именно:

 идентификатор владельца файла;

 тип файла; файл может быть файлом обычного типа, каталогом, специальным файлом, а также конвейером или символьной связью;

 права доступа к файлу;

 временные характеристики: время последней модификации файла, время по­следнего обращения к файлу, время последней модификации индексного де­скриптора;

 число ссылок на данный индексный дескриптор, равный количеству псевдо­нимов файла;

 адресная информация;

 размер файла в байтах.

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

Запись о файле в каталоге состоит всего из двух полей: символьного имени фай­ла и номера индексного дескриптора. Например, на рис. 31 показана информа­ция, содержащаяся в каталоге /user.

 

Рис. 31. Структура каталога в файловой системе s5

 

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

Доступ к файлу осуществляется путем последовательного просмотра всей це­почки каталогов, входящих в полное имя файла, и соответствующих им индекс­ных дескрипторов. Поиск завершается после получения всех характеристик из индексного дескриптора заданного файла. Рассмотрим эту процедуру на примере файла /bin/my_shell/print, входящего в со­став файловой системы, изображенной на рис. 32.

Определение физического адреса этого файла включает следующие этапы:

1. Прежде всего просматривается корневой каталог с целью поиска первой составляющей символьного имени – bin. Определяется номер (в данном приме­ре – 6) индексного дескриптора каталога, входящего в корневой каталог. Адрес корневого каталога известен системе.

2. Из области индексных дескрипторов считывается дескриптор с номером 6. Начальный адрес дескриптора определяется на основании известных систе­ме номера начального сектора области индексных дескрипторов и размера индексного дескриптора. Из индексного дескриптора 6 определяется физиче­ский адрес каталога /bin.

3. Просматривается каталог /bin с целью поиска второй составляющей символь­ного имени my_shell. Определяется номер индексного дескриптора каталога /bin/my_shell (в данном случае – 25).

 

 

Рис. 32. Поиск адреса файла по его символьному имени

 

 

4. Считывается индексный дескриптор: 25, определяется физический адрес /bin/my_shell.

5. Просматривается каталог /bin/my_shell, определяется номер индексного дескриптора файла print (в данном случае – 131).

6. Из индексного дескриптора 131 определяются номера блоков данных, а также другие характеристики файла /bin/my_shell/print.

Эта процедура требует в общем случае нескольких обращений к диску, пропорционально числу составляющих в полном имени файла. Для уменьшения среднего вре­мени доступа к файлу его дескриптор копируется в специальную системную область оперативной памяти. Копирование индексного дескриптора входит в процедуру от­крытия файла.

Физическая организация файловой системы ufs отличается от описанной физи­ческой организации файловой системы s5 тем, что раздел состоит из повторяю­щейся несколько раз последовательности областей “загрузчик–суперблок–блок группы цилиндров–область индексных дескрипторов” (рис. 33).

 

Рис. 33. Физическая организация файловой системы ufs

 

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

Кроме того, в ufs имена файлов могут иметь длину до 255 символов (кодировка ASCII, по одному байту на символ), в то время как в s5 длина имени не может превышать 14 символов.