Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Юрий Владимирович самый уважаемы человек =)экза...doc
Скачиваний:
3
Добавлен:
12.09.2019
Размер:
1.41 Mб
Скачать

61. Индексный дескриптор ufs

Индексные дескрипторы содержат следующие данные:

1.        Идентификация владельца файла.

2.        Тип файла: каталог, специальный файл.

3.        Права доступа к файлам.

4.        Временные характеристики: время последней модификации, последнего обращения, модификация индексированных дескрипторов.

5.        Число ссылок на данный индексированный дескриптор.

6.        Адрес файла.

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

Каждый индексированный дескриптор имеет уникальный номер, который одновременно является уникальным идентификатором файла. Индексные дескрипторы расположены в области строго в соответствии со своими номерами, и система ведет список свободных индексных дескрипторов. Если файл создается, то ему выделяется какой-то номер из числа свободных индексных дескрипторов. Если файл уничтожается, то уникальный номер возвращается в список свободных. Т.е. изначально определено, сколько может существовать индексных дескрипторов, система ведет учет и записывает, какие из них свободны, а какие заняты.  Нас интересует адресация блоков файла. Для хранения информации о блоках, в которых расположен файл (известно, что имя файла отделено от его характеристик) у нас выделяется 15 полей.

Если файл меньше или равен 12 блокам, то адреса блоков находится в этих полях. В каждом поле адрес одного блока. Размер блока определяется размером самого тома и формируется при форматировании. Если же этот файл больше 12 блоков - то адреса первых 12 блоков располагаются в этих 12 полях. В 13 поле располагается адрес блока, в котором содержатся адреса блоков, а их количество зависит от размера этого блока, в которых содержатся данные самого файла.  Это простая косвенная адресация. Количество блоков, в которых располагается файл, зависит от размера блока, на который разбит наш дескриптор. Если размер файла велик так, что не помещается в эти блоки, то тогда мы обращаемся к 14 полю, в котором находится адрес блока, в котором находятся адреса других блоков, а в каждом из этих блоков находятся информация о блоках, в которых расположены данные нашего файла. Это двойная косвенная адресация. Если файл по прежнему велик, тогда используются 15 блоки. В них находится адрес блока, в котором содержатся номера блоков, в этих блоках в свою очередь содержаться номера блоков, в них также содержаться номера блоков, а в них уже данные нашего файла. Это тройная косвенная адресация. В этом случае количество блоков может достигать 1012 блоков. Существуют различные типы файлов, в том числе и каталоги. В каждом каталоге существует информация о файлах, и каждая запись в каталоге состоит из двух полей: имя и номер индексного дескриптора. В этой файловой системе первым индексным дескриптором является индексный дескриптор корневого каталога.  Ограничение по длине файла не более 14 символов.

Индексные дескрипторы нумеруются в индексном файле, начиная с нуля. Для системных нужд зарезервированы два индексных дескриптора с номерами 0 и 1. Индексный дескриптор с номером 0 используется для спецификации дефектных блоков внешней памяти. Индексный дескриптор номер 1 выделен для корневого каталога файловой системы. Остальные индексные дескрипторы, с номерами больше 1, специального назначения не имеют и используются для спецификации каталогов, обычных или специальных файлов файловой системы.

Логическую организацию индексного дескриптора файла в терминах системы программирования С отражает структура struct dinode. Ее поля содержат следующую информацию:

di_mode

-

тип и код защиты файла;

di_nlink

-

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

di_uid, di_gid

-

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

di_size

-

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

di_ctime

-

дата создания файла;

di_atime, di_mtime

-

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

di_addr[40]

-

адресация блоков файла в области данных.