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

Битовая карта блоков (block bitmap) - это структура, в которой каждому логическому блоку соответствует один бит. Порядковый номер бита соответствует порядковому номеру блока. Если бит равен 1, то блок занят каким-либо файлом, если равен 0 - свободен. Эта карта служит для поиска свободных блоков в тех случаях, когда надо выделить место под файл. Вот как выглядит фрагмент 2-го логического блока (block bitmap). Байты FF в двоичном виде - это 1111 1111 (все блоки заняты). Со смещения 24CCh начинаются свободные блоки. Наличие байтов, отличных от FF, указывает на то, что в файловой системе присутствуют свободные блоки, ранее принадлежавшие каким-то файлам.

0x00002460

FF

FF

FF

FF

FF

FF

FF

FF :

: 3F

FC

3F

F0

FF

FF

FF

FF

0x00002470

FF

FF

FF

FF

FF

FF

FF

FF :

: FF

FF

FF

FF

FF

FF

FF

FF

0x00002480

FF

FF

FF

FF

FF

FF

FF

FF :

: FF

FF

FF

FF

FF

FF

FF

FF

0x00002490

FF

FF

FF

FF

FF

FF

FF

FF :

: FF

FF

FF

FF

FF

FF

FF

FF

0х000024А0

FF

FF

FF

FF

FF

FF

FF

FF :

: FF

FF

FF

FF

FF

FF

FF

FF

0х000024В0

FF

FF

FF

FF

FF

FF

FF

FF :

: FF

FF

FF

FF

FF

FF

FF

FF

0х000024С0

FF

FF

FF

FF

FF

FF

FF

FF :

: FF

FF

FF

OF

00

00

00

00

0x000024D0

00

00

00

00

00

00

00

00 :

: 00

00

00

00

00

00

00

00

0х000024Е0

00

00

00

00

00

00

00

00 :

: 00

00

00

00

00

00

00

00

0x000024F0

00

00

00

00

00

00

00

00 :

: 00

00

00

00

00

00

00

00

0x00002500

00

00

00

00

00

00

00

00 :

: 00

00

00

00

00

00

00

00

0x00002510

00

00

00

00

00

00

00

00 :

: 00

00

00

00

00

00

00

00

0x00002520

00

00

00

00

00

00

00

00 :

: 00

00

00

00

00

00

00

00

0x00002530

00

00

00

00

00

00

00

00 :

: 00

00

00

00

00

00

00

00

Листинг 9. Фрагмент битовой карты блоков

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

Битовая карта индексных дескрипторов имеет аналогичную структуру, но иную гранулярность: один бит соответствует 128-байтному фрагменту в таблице inode. Фрагмент битовой карты индексных дескрипторов приведен в листинге 10. Здесь наблюдается иной порядок, чем в битовой карте блоков: вначале идут свободные индексные дескрипторы, затем занятые.

0х000037В0

00

00

00

00

00

00

00

00 :

: 00

00

00

00

00

00

00

00

0х000037С0

00

00

00

00

00

00

00

00 :

: 00

00

00

00

00

00

00

00

0x000037D0

00

00

00

00

00

00

00

00 :

: 00

00

00

00

00

00

00

00

0х000037Е0

00

00

00

00

00

00

00

00 :

: 00

00

00

00

00

00

00

00

0x000037F0

00

00

00

00

00

00

00

00 :

: 00

00

00

00

00

00

00

00

0x00003800

00

00

00

00

FF

FF

FF

FF :

: FF

FF

FF

FF

FF

FF

FF

FF

0x00003810

FF

FF

FF

FF

FF

FF

FF

FF :

: FF

FF

FF

FF

FF

FF

FF

FF

0x00003820

FF

FF

FF

FF

FF

FF

FF

FF :

: FF

FF

FF

FF

FF

FF

FF

FF

0x00003830

FF

FF

FF

FF

FF

FF

FF

FF :

: FF

FF

FF

FF

FF

FF

FF

FF

0x00003840

FF

FF

FF

FF

FF

FF

FF

FF :

: FF

FF

FF

FF

FF

FF

FF

FF

0x00003850

FF

FF

FF

FF

FF

FF

FF

FF :

: FF

FF

FF

FF

FF

FF

FF

FF

Листинг 10. Фрагмент битовой карты индексных дескрипторов.

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