Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

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


Файловая система extX. Как адресуются блоки файлов? Указатели на блоки файла.

Файловая система extX. Как адресуются блоки файлов? Указатели на блоки файла.

Количество полей в каждом индексном узле является статической величиной. Дополнительная информация сохраняется в расширенных атрибутах и косвенных указателях, о которых речь пойдет далее в этой главе. Состояние выделения индексного узла определяется по карте индексных узлов, местонахождение которой задается в дескрипторе группы. Поле размера в новых версиях extX является 64-разрядным, но в старых версиях оно содержало всего 32 бита, что делало невозможной работу с файлами, размер которых превышал 4 Гбайт. В новых версиях старшие 32 бита размера хранятся в поле, которое ранее не использовалось. Индексный узел содержит информацию о размере файла, его владельце и временных штампах. Файловая система extX проектировалась еще в расчете на эффективную работу с небольшими файлами. По этой причине в каждом индексном узле могут храниться адреса первых 12 блоков, выделенных файлу. Эти адреса называются прямыми указателями. Если для хранения файла потребуется более 12 блоков, выделяется специальный блок для хранения остальных адресов. Указатель на него называется косвенным указателем блоков. Все адреса блоков занимают 4 байта, а общее количество адресов в блоке зависит от размера блока. Косвенный указатель хранится в индексных узлах.

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

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

- 12 прямых указателей,

- один косвенный указатель,

- один указатель двойной адресации,

- и один указатель тройной адресации.

QIP Shot - Image: 2017-03-09 12:10:27 

Рис. 1. Примеры реализации косвенной адресации на одном (а), двух (б) и трех уровнях (в)

Первые 12 блоков, занимаемых файлом, называются непосредственными блоками (для наглядности они выделены на рис. 2 «полужирным» шрифтом). Они хранятся в массиве direct blocks непосредственно в теле inode.

Каждый элемент массива представляет собой 32-битный номер блока. При среднем значении block_size, равном 4 Кбайт, непосредственные блоки могут адресовать до 4x12 == 48 Кбайт данных.

Если файл превышает этот размер, создаются один или несколько блоков косвенной адресации (indirect block).

Первый блок косвенной адресации (1x indirect block или просто indirect block) хранит ссылки на другие непосредственные блоки. Адрес этого блока хранится в поле i_indirect_block в inode.

Как легко вычислить, он адресует порядка BLOCK_SIZE/sizeof (DWORD) * block_size = 4096/4 *4 Мбайт данных.

Если этого окажется недостаточно, создается косвенный блок двойной косвенной адресации (2х indirect block или double indirect block), хранящий указатели на косвенные блоки, что позволяет адресовать (BLOCK_SIZE/sizeof(DWORD))**2* BLOCK_SIZE =4096/4 ** 4096 == 4 Гбайт данных.

Если же и этого все равно недостаточно, создается блок тройной косвенной адресации (3х indirect block или triple indirect block), содержащий ссылки на блоки двойной косвенной адресации.

Иерархия непосредственных блоков и блоков косвенной адресации показана на рис. 2 (от индексного дескриптора до блоков файла).

По сравнению с NTFS такая схема хранения информации о размещении устроена намного проще. Вместе с тем, она и гораздо "прожорливее". С другой стороны, ее несомненное достоинство по сравнению с NTFS состоит в том, что поскольку все ссылки хранятся в неупакованном виде, для каждого блока файла можно быстро найти соответствующий ему косвенный блок, даже если inode полностью разрушен.

Логическое представление файла отличается от его физического представления. Логическое представление – можно получить распечатав файл (мы видим массив символов, которые представляют содержимое файла). Физическое представление определяет истинную организацию файла на диске. Файл, размер которого превышает один блок, обычно разбросан по диску. При доступе к файлу, система находит отдельные его блоки, и в правильном порядке организует логическое представление информации в файле.

QIP Shot - Image: 2017-03-09 12:11:28 

Рис. 2. Варианты порядка размещения блоков файла на диске - иерархия непосредственных и косвенных блоков (блок косвенной адресации третьего порядка здесь не показан – см. рис. 1 в).

 


Лицензия