Операционные системы. Теория и практика. Замятин А.В. - 132 стр.

UptoLike

Составители: 

132
Первые несколько адресов блоков файла хранятся непосредственно
в индексном узле, поэтому для маленьких файлов индексный узел хра-
нит всю необходимую информацию, которая копируется с диска в па-
мять, в момент открытия файла. Для больших файлов один из адресов
индексного узла указывает на блок косвенной адресации. Этот блок со-
держит адреса дополнительных блоков диска. Если этого недостаточ-
но, используется блок двойной косвенной адресации, который содержит
адреса блоков косвенной адресации. Если и этого недостаточно исполь-
зуют блок тройной косвенной адресации.
Эту схему распределения внешней памяти использует ОС Unix, а
также файловые системы HPFS, NTFS и др. Такой подход позволяет
при фиксированном, относительно небольшом размере индексного уз-
ла, поддерживать работу с файлами, размер которых может меняться от
нескольких байт до нескольких гигабайт. Существенно то, что для ма-
леньких файлов используется только прямая адресация, обеспечиваю-
щая высокую производительность.
5.2.5 Управление дисковым пространством
Одной из основных функций файловых систем является управление
свободным и занятым пространством внешней памяти, включая учет ис-
пользуемого места на диске. Выделяют несколько способов такого уче-
та. Рассмотрим наиболее распространенные из них.
Учет при помощи организации битового вектора. Часто список
свободных блоков диска реализован в виде битового вектора (bit map
или bit vector). Каждый блок представлен одним битом, принимающим
значение 0 или 1, в зависимости от того занят он или свободен. Напри-
мер, 00111100111100011000001... .
Главное преимущество этого подхода относительная простота и
эффективность при нахождении первого свободного блока или n после-
довательных блоков на диске. Многие компьютеры (например, Intel и
Motorola) имеют специальные инструкции манипулирования битами,
при помощи которых можно легко локализовать первый единичный бит
в слове.
Описываемый способ учета свободных блоков используется в Apple
Macintosh. К сожалению, он эффективен только если битовый вектор
помещается в памяти целиком, что возможно только для относительно
небольших дисков
14
.
Учет при помощи организации связного списка. Другой под-
ход связать в список все свободные блоки, поддерживая указатель на
первый свободный блок в специальном месте диска, попутно кэшируя в
14
Например, диск размером 1.3 Гб с блоками по 512 байт нуждается в таблице размером 332Кбайт.