Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы и ответы по ОС.doc
Скачиваний:
37
Добавлен:
27.08.2019
Размер:
3.35 Mб
Скачать

Связанные списки с индексацией

Оба недостатка предыдущей схемы организации файлов в виде списков могут быть устранены, если указатели на следующие блоки хранить не прямо в блоках, а в отдельной таблице, загружаемой в память. На рис. 5.8 показан внешний вид такой таблицы для файлов с рис. 5.7. На обоих рисунках присутствуют два файла. Файл А занимает блоки диска 4, 7, 2, 10 и 12, а файл В — блоки 6, 3, И и 14. С помощью таблицы мы можем начать с блока 4 и следовать по цепочке до конца файла. Те же действия применимы для второго файла, если начать с блока 6. Обе цепочки завершаются специальным маркером, не являющимся допустимым номером блока (например, -1). Такая таблица, загружаемая в оперативную память, называется таблицей размещения файлов (File Allocation Table, FAT).

П ри такой организации все блоки доступны для данных. Кроме того, значительно упрощается произвольный доступ. Хотя для обращения к какому-либо блоку файла все равно понадобится проследовать по цепочке всех ссылок вплоть до требуемого блока, в данном случае вся цепочка ссылок уже хранится в памяти и ее прохождение не требует дополнительных дисковых операций. Как и в предыдущем случае, для доступа ко всем частям файла в каталоге достаточно хранить один целый индекс (номер начального блока файла).

Основной недостаток этого метода состоит в том, что вся таблица должна постоянно находиться в памяти. Для 20-гигабайтного диска с блоками размером 1 Кбайт потребовалась бы таблица из 20 000 000 записей, по одной для каждого из 20 000 000 блоков диска. Каждая запись должна состоять как минимум из 3 байт. Для ускорения поиска размер записей должен быть увеличен до 4 байт. Таким образом, резидентная таблица будет занимать 60 или 80 Мбайт оперативной памяти. Таблица, конечно, может быть размещена в виртуальной памяти, но и в этом случае она продолжит занимать большой объем виртуальной памяти и дискового пространства, а кроме того, приведет к генерации страничного трафика. Операционные системы MS-DOS и Windows 98 используют только файловые системы FAT; более поздние версии Windows также предоставляют их поддержку.

41 Вопрос. Индексные узлы

П оследний метод соотнесения блоков диска файлам заключается в связывании с каждым файлом структуры данных, называемой индексным узлом (index node), или i-узлом (i-node), содержащей атрибуты файла и адреса блоков файла. Простой пример индексного узла показан на рис. 5.9. При наличии индексного узла можно найти все блоки файла. Большое преимущество такой схемы перед хранящейся в памяти таблицей из списков состоит в том, что индексный узел оказывается в памяти только тогда, когда открыт соответствующий ему файл. Если каждый индексный узел занимает п байт, а одновременно открыть можно k файлов, для массива индексных узлов в памяти потребуется всего kn байт.

Обычно эта величина значительно меньше, чем размер таблицы FAT. Это легко объясняется. Размер таблицы, хранящей список всех блоков диска, пропорционален емкости самого диска. Для диска из п блоков потребуется п записей в таблице. Таким бразом, размер таблицы линейно растет с ростом размера диска.

Для схемы индексных узлов, напротив, требуется массив в памяти с размером, пропорциональным максимальному количеству файлов, которые можно открыть одновременно. При этом не важно, какой именно размер диска, 1, 10 или 100 Гбайт.

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