Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора UNIX.doc
Скачиваний:
29
Добавлен:
15.06.2014
Размер:
530.43 Кб
Скачать

Индексные дескрипторы

Массив индексных дескрипторов содержит метаданные всех файлов файловой системы. Индексный дескриптор содержит информацию о файле, необходимую для обработки данных, хранящихся в файле. Каждый файл ассоциирован с одним индексным дескриптором, хотя в файловой системе может быть несколько имен, каждый из которых указывает на один и тот же индексный дескриптор. Ядро обращается к индексному дескриптору по индексу в массиве индексных дескрипторов. Один индексный дескриптор является корневым индексным дескриптором файловой системы. Через него обеспечивается доступ к структуре каталогов и файлов после монтирования файлов системы. Размер массива индексных дескрипторов является фиксированным и задается при создании файловой системы. Следовательно, файловая система s5fs имеет ограничение по числу файлов, которые могут в ней храниться, независимо от размера этих файлов.

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

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

  1. первое поле хранит атрибуты файла, такие, как тип файла и права доступа к файлу, а также три бита под модификацию прав доступа. Типы могут быть следующими:

  • обычные файлы

  • каталоги

  • специальные блочные устройства

  • символьные устройства;

  1. число ссылок на файл

  2. идентификаторы владельца-пользователя и группы

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

Для специальных файлов это поле содержит старшие и младшие номера устройства.

  1. время последнего доступа к файлу

  2. время последней модификации

  3. время последней модификации индексного дескриптора;

Далее  массив адресов дисковых блоков хранения данных. Массив имеет фиксированный размер и состоит из двенадцати элементов. Первые десять элементов адресуют непосредственно блоки хранения данных файла, одиннадцатый элемент адресует блок, который содержит адреса хранения данных, двенадцатый указывает на дисковый блок, хранящий адреса блоков, каждый из которых адресует блок хранения данных файла (то есть, двойная косвенная адресация) и тринадцатый используется для тройной косвенной адресации.

Блоки хранения данных

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

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