- •Лабораторная работа №1 «Моделирование файловых систем»
- •1.1Теоретические сведения Файлы и каталоги
- •Общая модель файловой системы
- •Физическая организация файла на устройстве внешней памяти
- •Права доступа к файлу и каталогу
- •Файловая система fat
- •Файловая система ntfs
- •Файловая система ext2
- •1.2Задание на лабораторную работу
- •Варианты заданий
- •Журналируемые файловые системы
Файловая система ext2
Как и во многих файловых системах в Ext2 существует загрузочная область. На первичном разделе (primary, в терминологии программы Fdisk фирмы Microsoft) она содержит загрузочную запись – фрагмент кода, который инициирует процесс загрузки операционной системы при запуске. Все остальное пространство раздела делится на блоки стандартного размера. Блок может иметь размер 1, 2 или 4 Кбайт. Блок является минимальной логической единицей дискового пространства (в других операционных системах такой блок называют кластером). Выделение места файлам осуществляется целыми блоками.
Блоки, в свою очередь, объединяются в группы блоков. Каждая группа блоков имеет одинаковое строение. Рассмотрим ее структуру (табл. 3.1).
Таблица 3.3. Структура группы блоков
Суперблок (Superblock) |
Описание группы блоков (Group Descriptors) |
Битовая карта блока (Block Bitmap) |
Битовая карта индексного дескриптора (Inode Bitmap) |
Таблица индексных дескрипторов (Inode Table) |
Блоки данных |
Суперблок одинаков для всех групп, все же остальные поля индивидуальны для каждой группы. Суперблок хранится в первом блоке каждой группы блоков, является начальной точкой файловой системы, имеет размер 1024 байта и располагается по смещению 1024 байта от начала файловой системы. Копии Суперблок используются при восстановлении файловой системы после сбоев.
Информация в суперблоке служит для доступа к остальным данным на диске. В суперблоке определяется размер файловой системы, максимальное число файлов в разделе, объем свободного пространства и т.п. При старте операционной системы суперблок считывается в память, и все изменения файловой системы сначала записываются в копию суперблока, находящуюся в оперативной памяти, и только затем сохраняются на диске.
После суперблока следует являющееся массивом описание группы блоков (Group Descriptors).
Битовая карта блоков (Block Bitmap) – это структура, каждый бит которой показывает, отведен ли соответствующий ему блок какому-либо файлу. Если бит равен 1, то блок занят. Эта карта служит для поиска свободных блоков в тех случаях, когда надо выделить место под файл.
Битовая карта индексных дескрипторов (Inode Bitmap) выполняет аналогичную функцию по отношению к таблице индексных дескрипторов – показывает, какие дескрипторы заняты.
Блоки данных – в этой части файловой системы хранятся реальные данные файлов. Все блоки данных одного файла пытаются разместить в одной группе блоков.
Таблица индексных дескрипторов (Inode Table) содержит индексные дескрипторы файлов (i-узлы). Индексные дескрипторы файлов содержат информацию о файлах группы блоков. Каждому файлу на диске соответствует один и только один индексный дескриптор файла, который идентифицируется своим порядковым номером – индексом файла. Отсюда следует, что число файлов, которые могут быть созданы в файловой системе, ограничено числом индексных дескрипторов. В i-узле хранится информация, описывающая файл: режимы доступа к файлу, время создания и последней модификации, идентификатор пользователя и идентификатор группы создателя файла, описание блочной структуры файла и т.д.
Каталог, по сути, является специальным файлом, содержимое которого состоит из записей определенной структуры (см. рис. 3.1)
Система адресации данных позволяет находить нужный файл среди блоков на диске. В Ext2 система адресации реализуется полем i_block индексного дескриптора файла.
Поле i_block в индексном дескрипторе файла представляет собой массив из 15 адресов блоков. Первые 12 адресов в этом массиве представляют собой прямые ссылки на номера блоков, в которых хранятся данные из файла. Следующий адрес в этом массиве является косвенной ссылкой (адресом блока), в котором хранится список адресов следующих блоков с данными из этого файла. Следующий адрес в поле i_block индексного дескриптора указывает на блок двойной косвенной адресации (double indirect block). Этот блок содержит список адресов блоков, которые, в свою очередь, содержат списки адресов следующих блоков данных того файла, который задается индексным дескриптором.
Последний адрес в поле i_block индексного дескриптора задает адрес блока тройной косвенной адресации, то есть блока со списком адресов блоков, которые являются блоками двойной косвенной адресации.
