Наверх Системное программирование
Предыдущий раздел Оглавление Следующий раздел

5.3.2.4. I-узлы

Рис

Рис. 5.7. Пример i-узла

Последним методом размещения файлов и отслеживания принадлежности конкретного блока конкретному файлу выступает метод, который использует для связи с каждым файлом i-узел (индекс-узел), представляющий собой структуру данных, которая содержит атрибуты файла и дисковые адреса его блоков. На рис. 5.7 приведен пример простого i-узла. Использование i-узла позволяет найти все блоки файла. Преимущество данной схемы перед связанными списками, которые размещают в памяти таблицу, заключается в том, что i-узел переносится в память только в случае открытого соответствующего файла. При размере каждого i-узла в n байт и при условии, что в системе может быть открыто одновременно максимум k файлов, общий объем памяти под хранение i-узлов составит всего лишь kn байт. Обычно массив i-узлов значительно меньше пространства, занимаемого таблицей расположения файлов.

Однако, использование i-узлов неизбежно приводит к возникновению вопроса о том, что произойдет, когда файл перерастет ограничение на количество дисковых адресов, жестко зафиксированное в каждом узле. Одним из решений является резервирование последнего дискового адреса для блока, который будет содержать дополнительные адреса (рис. 5.7). Кроме того, появляется возможность создавать даже иерархии адресных блоков. Возможно использование также такого дискового блока, который указывал бы на другие дисковые блоки, заполненные только адресами. Файловая система NTFS в Windows использует такую же идею, только i-узлы в ней более крупные и могут содержать небольшие файлы.

Предыдущий раздел Оглавление Следующий раздел