русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Структура файловой системы ext2fs


Дата добавления: 2013-12-23; просмотров: 2674; Нарушение авторских прав


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

Остальные секторы диска объединены в логические блоки размером 1,2 или 4 килобайт. Логический блок — это наименьшая адресуемая порция данных: любой файл занимает целое число блоков. Чем больше размер блока, тем меньше обращений к диску, но и выше процент неиспользуемого места.

Блоки объединяются в группы блоков. Группы блоков и блоки внутри групп последовательно нумеруются с 1. Первый блок на диске имеет номер 1 и принадлежит группе блоков с номером 1. Общее число блоков во всех группах является делителем объема диска, выраженного в секторах. Число групп блоков не обязано быть делителем числа блоков, так как последняя группа блоков может быть неполной. Начало каждой группы блоков имеет адрес, вычисляемый как

(номер_группы - 1)×(число_блоков_в_группе)

Структура файловой система ext2fs описана в файле ext2_fs.h в каталоге /usr/include/linux/.

Раздел диска с файловой системой ext2fs имеет следующую логическую структуру:

Загрузочный сектор
  Суперблок
Группа блоков
Группа блоков
  …
Группа блоков

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

— размер файловой системы;

— максимальное число файлов в разделе;

— количество свободных блоков;

— список свободных блоков в файловой системе;

— индексный дескриптор следующего свободного блока в списке свободных блоков;



— размер списка индексных дескрипторов;

— количество свободных индексных дескрипторов;

— следующий свободный индексный дескриптор;

— другие служебные поля.

При загрузке ОС суперблок считывается в оперативную память. Все изменения в файловой системе находят отражение сначала в копии суперблока в оперативной памяти. Эта копия периодически записывается на диск для согласования полей суперблока и реальным состоянием файловой системы.

Каждая группа блоков имеет следующую структуру:

  Копия суперблока
Описание группы блоков
Битовая карта блоков
Битовая карта индексных дескрипторов
Таблица индексных дескрипторов
Область блоков данных

Суперблок одинаков для всех групп и является копией основного суперблока. Это позволяет восстановить суперблок в случае сбоев.

Описание (дескриптор) группы блоков позволяет найти битовые карты блоков и индексных дескрипторов, а также таблицу индексных дескрипторов.

Битовая карта блоков (block bitmap) — это структура, каждый бит которой показывает, отведен ли такой же по счету блок какому-либо файлу. Если бит равен 1, то блок занят. Битовая карта служит для поиска свободных блоков, когда необходимо выделить место под файл. Битовая карта блоков занимает число блоков, равное

(число_блоков_в_группе / 8) / размер_блока

Битовая карта индексных дескрипторов выполняет аналогичную функцию, показывая, какие дескрипторы заняты.

Каждому файлу соответствует один и только один дескриптор (i-node, информационный узел), который идентифицируется своим индексом (номером). В индексном дескрипторе хранятся метаданные файла и указатель на собственно данные.

Для обычного файла или каталога этот указатель представляет массив из 15 адресов блоков. Первые 12 адресов — это ссылки на номера блоков, в которых хранятся данные файла. Если, например, размер блока равен 4 килобайт, то эти 12 адресов используются для файлов с максимальным размером 4×12=48 килобайт.

Номер i-node
Длина записи
Длина имени файла
Имя файла
Номер i-node
Длина записи
Длина имени файла
Имя файла
Если файл имеет больший размер, то используется 13-й адрес, указывающий на номер блока, в котором хранится список адресов следующих блоков (относительная адресация). Т.к. адрес блока занимает 4 байта, то при размере блока 4 килобайт с помощью 13-го поля можно указать на 4096/4=1024 блока. 14-й адрес используется для двойной относительной адресации: а нем указывается адрес блока, в котором хранятся адреса блоков относительной адресации. 15-й адрес используется для тройной относительной адресации по аналогичному принципу.

Т.о., максимальный размер файловой системы равен (12+1024×1024×1024) ×4»4 терабайт.

Имя файла не хранится в индексном дескрипторе, а хранится только в каталоге, к которому приписан файл. Структура каталога в файловых системах ext2fs и ext3fs имеет вид, представленный на рисунке. Исходя из подобной структуры, можно сделать следующие выводы:

— одному индексному дескриптору может соответствовать множество имен, приписанных к разным каталогам. Количество имен (жестких ссылок) учитывается в индексном дескрипторе. Это количество отображает команда ls -l;

— удаление файла означает просто удаление записи о нем из каталога и уменьшения на 1 счетчика ссылок;

— сопоставить имя номеру индексного дескриптора можно только внутри одной файловой системы: именно поэтому нельзя создать жесткую ссылку на файл в другой файловой системе.



<== предыдущая лекция | следующая лекция ==>
Диск-ориентированные файловые системы | Журналируемая файловая система XFS


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.