Система адресации данных - это одна из самых существенных составных частей
файловой системы. Именно система адресации позволяет находить нужный файл
среди множества как пустых, так и занятых блоков на диске. В ext2
система адресации реализуется полем i_block
индексного дескриптора
файла.
Поле i_block
в индексном дескрипторе файла представляет собой
массив из 15 адресов блоков. Первые 12 адресов в этом массиве
(EXT2_NDIR_BLOCKS[12]
) представляют собой прямые ссылки (адреса) на
номера блоков, в которых хранятся данные из файла. Следующий адрес в этом
массиве (EXT2_IND_BLOCK
) является косвенной ссылкой, то есть
адресом блока, в котором хранится список адресов следующих блоков с
данными из этого файла. В этом блоке могут быть записаны адреса
(размер_блока / размер_ULONG)
блоков с данными файла.
Следующий адрес в поле i_block
индексного дескриптора
(EXT2_DIND_BLOCK
) указывает на блок двойной косвенной адресации
(double indirect block). Этот блок содержит список адресов блоков,
которые в свою очередь содержат списки адресов следующих блоков данных
того файла, который задается данным индексным дескриптором.
И, наконец, последний адрес (EXT2_TIND_BLOCK
) в поле i_block
индексного дескриптора задает адрес блока тройной косвенной адресации, то
есть блока со списком адресов блоков, которые являются блоками двойной
косвенной адресации.