Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Answers.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.55 Mб
Скачать

Суперблок

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

  • Тип файловой системы.

  • Флаги состояния файловой системы.

  • Размер логического блока в байтах (обычно кратен 512 байтам).

  • Размер файловой системы в логических блоках (включая сам суперблок и массив inode).

  • Размер массива индексных узлов (т.е. сколько файлов может быть размещено в файловой системе).

  • Число свободных индексных узлов (сколько файлов еще можно создать).

  • Число свободных блоков для размещения данных.

  • Часть списка свободных индексных узлов.

  • Часть списка свободных блоков для размещения данных.

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

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

  • Суперблок содержит следующую информацию:

  • Тип файловой системы (s_type)

  • Размер файловой системы в логических блоках, включая сам суперблок, ilist и блоки хранения данных (s_fsize)

  • Размер массива индексных дескрипторов (s_isize)

  • Число свободных блоков, доступных для размещения (s_tfree)

  • Число свободных inode, доступных для размещения (s_t inode)

  • Флаги (флаг модификации s_fmod, флаг режима монтирования s_fronly)

  • Размер логического блока (512, 1024, 2048)

  • Список номеров свободных inode

  • Список адресов свободных блоков

Поскольку число свободных inode и блоков хранения данных может быть значительным, хранение двух последних списков целиком в суперблоке непрактично. Например, для индексных дескрипторов хранится только часть списка. Когда число свободных inode в этом списке приближается к 0 (zero), ядро просматривает ilist и вновь формирует список свободных inode. Для этого ядро анализирует поле di_mode индексного дескриптора, которое равно 0 у свободных inode.

К сожалению, такой подход неприменим в отношении свободных блоков хранения данных, поскольку по содержимому блока нельзя определить, свободен он или нет. Поэтому необходимо хранить список адресов свободных блоков целиком. Список адресов свободных блоков может занимать несколько блоков хранения данных, но суперблок содержит только один блок этого списка. Первый элемент этого блока указывает на блок, хранящий продолжение списка и т. д., как это показано на рис. 3.2.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]