<<
>>

Индексные узлы

Схема индексного узла М1№Х показана на рис. 5.31. Она практически совпадает со строением индексного узла в иМХ. Имеются девять 32-разрядных указателей на зоны диска, из которых семь прямых и два косвенных.
В М1№Х 3 индексный узел занимает 64 байта, как и в стандартной системе ТЛЯХ, поэтому остается место для дополнительного десятого указателя (тройного уровня косвенности), хотя в текущей версии файловой системы он не поддерживается. Время последнего доступа, модификации и изменения индексного узла в М1№Х 3 хранятся стандартным образом, как в иМХ. Последний из этих параметров обновляется практически при каждой операции, за исключением чтения файла.

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

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

Главное предназначение индексного узла в том, чтобы хранить сведения о положении блоков файла на диске. Первые семь номеров зон записываются в индексный узел напрямую. Таким образом, при стандартных параметрах, когда зоны и блоки имеют размер 1 Кбайт, файлы размером до 7 Кбайт не требуют использования блоков косвенной адресации. После 7 Кбайт применяются косвенные блоки примерно так, как это показано на рис.

5.8, за тем исключением, что это только блоки первого и второго уровней косвенности. Если блоки и зоны имеют размер 1 Кбайт, блок первого уровня косвенности содержит 256 записей, что соответствует

четверти мегабайта. Блок второго уровня косвенности ссылается на 256 блоков первого уровня, обеспечивая доступ к области в 64 Мбайт. При размере блока в 4 Кбайт блок второго уровня косвенности ссылается на 1024 х 1024 блоков, что составляет более миллиона, а, следовательно, размер файловой системы превышает 4 Гбайт. На практике использование 32-разрядных указателей в качестве файловых смещений ограничивает максимальный размер файла до величины 232 - 1 байт. Таким образом, при блоках размером 4 Кбайт М1№Х 3 не нужны блоки третьего уровня косвенности. Предельный размер файла ограничен разрядностью указателя, а не возможностью следить за достаточным количеством блоков.

Рис. 5.31. Структура индексного узла в MINIX

Кроме того, индексный узел хранит информацию о типе файла (обычный файл, каталог, специальный блочный файл, специальный символьный файл, канал ввода-вывода) и биты защиты, а также биты SETUID и SETGID. В поле link

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

В заключение отметим, что структуру, представленную на рис. 5.31, можно изменять для различных целей. Пример, используемый в М1№Х 3, — индексные узлы для блочных и символьных устройств, которым не нужны указатели зон, так как не требуется ссылаться на области данных диска. Главный и вспомогательный номера устройств хранятся в пространстве нулевой зоны. Индексный узел также можно использовать для хранения данных небольшого файла (непосредственного файла), хотя эта возможность в М1МХ 3 не реализована.

5.6.5.

<< | >>
Источник: Э. ТАНЕНБАУМ, А. ВУДХАЛЛ. ОПЕРАЦИОННЫЕ СИСТЕМЫ Разработка и реализация 3-е издание. 2007

Еще по теме Индексные узлы:

  1. Дуальные пары и двойные узлы
  2. Дуальные пары и двойные узлы
  3. Двойные узлы.
  4. ЛИМФАТИЧЕСКИЕ УЗЛЫ (ОПУХАНИЕ)
  5. Двойные узлы
  6. Двойные узлы
  7. Лунные узлы, или путеводитель по жизни
  8. Лунные узлы и Арабские части (точки)
  9. Глава 4 ЛУННЫЕ УЗЛЫ
  10. Солнце и Лунные узлы.
  11. Меркурий и Лунные узлы.
  12. Венера и Лунные узлы.
  13. Марс и Лунные узлы.
  14. Юпитер и Лунные узлы.
  15. Юпитер и Лунные узлы.
  16. Сатурн и Лунные узлы.