Материал: 6261

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

96

Для длинных имен файлов, в формате Unicode-16, используется несколько 32байтовых записей каталога в специальном формате. Один элемент, такого формата записи, показан на рисунке 4.5 и имеет несколько полей.

Таблица 4.3 - Основной вариант записи для короткого имени FAT32

Смещение

 

Описание

Hex

Dec

Длина поля

00h

0

8 байт

Имя файла

08h

8

3 байт

Расширение файла

0Bh

11

1 байт

Атрибуты файла

0Ch

12

2 байт

Зарезервировано для NT

0Eh

14

2 байт

Время создания файла

10h

16

2 байт

Дата создания файла

12h

18

2 байт

Дата последнего доступа

14h

20

2 байт

Старшее слово номера начального кластера

16h

22

2 байт

Время последней записи

18h

24

2 байт

Дата последней записи

1Ah

26

2 байт

Младшее слово начального кластера

1Ch

28

4 байт

Размер файла в байтах

Рисунок 4.5 - Структура элемента записи для длинного имени файла

Таблица 7.4 - Значения 11-го байта атрибутов

7

6

5

4

3

2

1

0

Hex

Значение

0

0

0

0

0

0

0

1

01h

Только чтение

0

0

0

0

0

0

1

0

02h

Скрытый

0

0

0

0

0

1

0

0

04h

Системный

0

0

0

0

1

0

0

0

08h

Метка тома

0

0

0

1

0

0

0

0

10h

Подкаталог

 

 

 

 

 

 

 

 

 

97

 

 

 

 

 

 

 

 

 

 

0

0

1

0

0

0

0

0

20h

Архивный (измененный)

0

1

0

0

0

0

0

0

40h

Зарезервировано

1

0

0

0

0

0

0

0

80h

Зарезервировано

Область данных — все остальные кластеры раздела. Они используются для хранения подкатологов и файлов.

Подкатологи – это файлы, содержащие последовательности 32-битных записей

имен файлов и подкаталогов, указанного выше формата.

Содержимое файлов — данные некоторой последовательности кластеров. Последовательность кластеров — произвольная и неупорядоченная, но отражена в виде цепочки, в таблице FAT.

Замечание

Чем больше размер кластера, тем больший размер раздела может адресоваться и повышается скорость обработки файлов, но уменьшается эффективность их хранения.

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

ext2 (ext2fs) - Second Extended File System — базовая файловая система ОС Linux. Разработана Реми Кардом и представлена в январе 1993 года.

Поддерживает файлы размером до 2 Гбайт.

Является преемницей ext - Extended File System, представленной в апреле 1992 года.

Структура дискового раздела ext2fs представляет последовательность группы блоков, которые нумеруются, начиная с 1.

Загрузочная запись

– принадлежит 1-й группе блоков

Группа

Группа

...

Группа

блоков 1

блоков 2

 

блоков n

Каждая группа блоков состоит из последовательности блоков, которые также нумеруются, начиная с 1.

Каждая группа блоков имеет одинаковое число блоков, кроме последней, которая может быть неполной.

Начало каждой группы блоков имеет адрес, который может быть получен как:

Address = (номер_группы — 1)* (число_блоков_в_группе)

Размер блока может быть 1, 2 или 4 килобайта, что определяется в момент форматирования – при создании файловой системы.

Блок является адресуемой единицей дискового пространства.

 

 

 

98

 

 

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

 

Супер-

Описание

Битовая

Битовая карта

Таблица

Область

блок

группы

карта

индексных

индексных

блоков

 

блоков

блоков

дескрипторов

дескрипторов

данных

 

(Group

(Block

(Inode Bitmap)

(Inode Table)

 

 

Descriptors)

Bitmap)

 

 

 

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

•сокращается расстояние между таблицей индексных дескрипторов и блоками данных;

•сокращается время поиска нужного места головками в процессе операций записи/считывания файла.

Первый элемент группы блоков - суперблок, который одинаков для всех групп. Все остальные элементы - индивидуальны для каждой группы.

Первые 1024 байта раздела занимает загрузочная запись раздела.

Суперблок, хранится в первой группе блоков и имеет смещение 1024 байта. Наличие нескольких копий суперблока объясняется чрезвычайной важностью этого элемента файловой системы.

Дубликаты суперблока используются при восстановлении файловой системы после сбоев.

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

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

При выключении системы, суперблок обязательно должен быть записан на диск.

Таблица 4.5 - Структура суперблока

Название поля

Тип

Комментарий

s_inodes_count

ULONG

Число индексных дескрипторов в файловой системе

s_blocks_count

ULONG

Число блоков в файловой системе

s_r_blocks_count

ULONG

Число блоков, зарезервированных для суперпользователя

s_free_blocks_count

ULONG

Счетчик числа свободных блоков

s_free_inodes_count

ULONG

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

 

 

Первый блок, который содержит данные. В

s_first_data_block ULONG

зависимости от размера блока, это поле может быть

 

 

равно 0 или 1.

 

 

 

99

 

s_log_block_size

ULONG

Индикатор размера логического блока: 0 = 1 Кб; 1 = 2

Кб; 2 = 4 Кб.

 

s_log_frag_size

LONG

Индикатор размера фрагментов

 

s_blocks_per_group

ULONG

Число блоков в каждой группе блоков

s_frags_per_grou

ULONG

Число фрагментов в каждой группе блоков

p

 

 

 

 

s_inodes_per_group

ULONG

Число

индексных дескрипторов

(inodes) в каждой

группе блоков

 

 

 

s_mtime

ULONG

Время, когда в последний раз была смонтирована

 

 

файловая система.

 

s_wtime

ULONG

Время, когда в последний раз производилась запись в

файловую систему

 

 

 

Счетчик числа монтирований файловой системы.

 

 

Если этот счетчик достигает значения, указанного в

s_mnt_count

USHORT

следующем поле (s_max_mnt_count), файловая

 

 

система должна быть проверена (это делается при

 

 

перезапуске), а счетчик обнуляется.

s_max_mnt_count SHORT

Число,

определяющее, сколько

раз может быть

смонтирована файловая система

 

 

 

 

s_magic

USHORT

"Магическое число" (0xEF53), указывающее, что

 

 

файловая система принадлежит к типу ex2fs

s_state s_errors

s_pad s_lastcheck

s_checkinterval s_creator_os s_rev_level s_reserved

USHORT

Флаги, указывающее текущее состояние файловой

системы: является ли она чистой (clean) и т.п.

USHORT

Флаги, задающие процедуры обработки сообщений

 

об ошибках (что делать, если найдены ошибки).

USHORT

Заполнение

ULONG

Время последней проверки файловой системы

ULONG

Максимальный период времени между проверками

файловой системы

ULONG

Указание на тип ОС, в которой создана файловая

 

система

ULONG

Версия (revision level) файловой системы.

ULONG[

Заполнение до 1024 байт (235 * 4 = 940)

235]

 

Вслед за суперблоком расположено описание группы блоков (Group Descriptors). Это описание имеет структуру длиной 32 байта, представленную в таблице 4.6.

 

 

100

 

Таблица 4.6 - Структура описания группы блоков

 

Название поля

Тип

Назначение

 

bg_block_bitmap

ULONG

Адрес блока, содержащего битовую карту

блоков

(block bitmap) данной группы

 

 

 

 

bg_inode_bitmap

ULONG

Адрес блока, содержащего битовую карту индексных

дескрипторов (inode bitmap) данной группы

 

 

 

 

bg_inode_table

ULONG

Адрес блока, содержащего таблицу индексных деск-

рипторов (inode table) данной группы

 

 

 

 

bg_free_blocks_c

USHORT

Счетчик числа свободных блоков в данной группе

ount

 

 

 

bg_free_inodes_count

USHORT

Число свободных индексных дескрипторов в данной

группе

 

 

 

 

bg_used_dirs_count

USHORT

Число индексных дескрипторов в данной

группе,

которые являются каталогами

 

 

 

 

bg_pad

USHORT

Заполнение

 

bg_reserved

ULONG[3]

Заполнение

 

Размер описания группы блоков можно вычислить как:

N = (размер_группы_блоков_в_ext2 * число_групп) / размер_блока

Информация, которая хранится в описании группы, используется, чтобы найти:

•битовые карты блоков,

•индексных дескрипторов,

•таблицу индексных дескрипторов.

Битовая карта блоков (block bitmap) - это структура, каждый бит которой показывает, отведен ли соответствующий ему блок какому-либо файлу.

Если бит равен 1, то блок занят.

Эта карта также служит для поиска свободных блоков в тех случаях, когда надо выделить место под файл.

Битовая карта блоков занимает число блоков, равное:

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

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

Таблица индексных дескрипторов:

После битовой карты индексных дескрипторов, следует таблица индексных дескрипторов файлов - Inode Table.

Источник: https://studfile.net/preview/16438529/