Битовая карта блоков
Битовая карта блоков (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. Фрагмент битовой карты индексных дескрипторов.
Следующая область в структуре группы блоков служит для хранения таблицы индексных дескрипторов файлов. Каждому файлу на диске соответствует один индексный дескриптор файла, который идентифицируется своим порядковым номером - индексом файла.