Спонсор: Microsoft
Санкт-Петербургский государственный университет
Опубликован: 13.11.2010 | Доступ: свободный | Студентов: 6694 / 1522 | Оценка: 4.64 / 4.23 | Длительность: 45:08:00
ISBN: 978-5-9963-0495-0
Лекция 20:

Виртуальные файловые системы (VFS). Реализации файловых систем. Сетевая файловая система NFS

< Лекция 19 || Лекция 20: 12345 || Лекция 21 >

Ссылочное размещение файла

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

  • Простота – необходимо хранить только начальный адрес;
  • Отсутствие потерь дискового пространства; система хранит списки свободной памяти.

Недостаток - отсутствие произвольного доступа: для доступа к данным файла в общем случае необходимо выполнить просмотр части списка блоков файла.

При ссылочном размещении адрес по файлу представляется в виде (Q, R),где Q – номер блока, к которому выполняется доступ, в связанном списке блоков, представляющем файл; R - cмещение в блоке.

Ссылочное размещение файлов изображено на рис. 20.3.

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

Рис. 20.3. Ссылочное размещение файлов.

К файловым системам, использующим ссылочное размещение, относится файловая система File-allocation table (FAT),используемая в MS-DOS и OS/2 и до сих пор используемая в Windows ( рис. 20.4).

Файловая система File Allocation Table (FAT).

увеличить изображение
Рис. 20.4. Файловая система File Allocation Table (FAT).

В системе FAT элемент директории содержит имя файла и адрес его начального блока (кластера) на диске. Каждый блок ссылается на следующий, кроме последнего. Система FAT разработана создателем корпорации Microsoft Биллом Гейтсом в 1976 г. Теперь читателю должно быть понятно, почему операция удаления файла в Windows не "фатальна": она означает лишь удаление элемента директории со ссылкой на начальный кластер файла. Несмотря на это, список кластеров, представляющий файл, можно обнаружить и восстановить ссылку из директории на его начало, хотя и под другим именем. В MS DOS данную функцию выполняла системная утилита unerase ( отменить удаление ).

Индексируемое размещение

При индексируемом размещении, в отличие от предыдущих, все указатели на блоки файла собраны вместе в индексный блок (i-node, superblock).Используется индексная таблица, ссылающаяся на блоки данных файла. Подобная система используется в системах UNIX, Linux, Solaris.

Пример индексируемого размещения приведен на рис. 20.5.

Индексируемое размещение файлов.

увеличить изображение
Рис. 20.5. Индексируемое размещение файлов.

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

Определенная опасность такого размещения в том, что на индексный блок ложится критическая нагрузка: если его целостность будет нарушена, файл восстановлению не подлежит. Именно поэтому в UNIX команда rm,удаляющая файл, "фатальна" для него.

Таким образом, при индексируемом размещении файлов необходима индексная таблица. Преимущество такого метода размещения - возможность произвольного доступа; отсутствие внешней фрагментации. Накладными расходами является индексный блок.

При отображении логического адреса в физический, если ограничить максимальный размер файла 256 K словами, а размер блока - 512 слов, то для индексной таблицы требуется только один блок. Логический адрес будет иметь вид (Q, R),где Q - смещение в индексной таблице, R - смещение в блоке.

При отображении логического адреса в физический для файла неограниченной длины (при размере блока – 512 слов) может использоваться ссылочная схема – в список связываются блоки индексной таблицы. В данном случае логический адрес будет иметь вид (Q1, R1), где Q1 = номер блока индексной таблицы ; R1 = (Q2, R2), где Q2 - смещение в блоке индексной таблицы, R2 смещение в блоке файла.

В системе UNIX используется комбинированная схема индексного размещения файлов: возможна одноуровневая адресация данных через индексные блоки, двухуровневая (индексные блоки адресуют другие индексные блоки, а те, в свою очередь, - блоки данных), трехуровневая и т.д. Данная схема иллюстрируется на рис. 20.6.

Комбинированная индексная схема размещения файлов в UNIX.

увеличить изображение
Рис. 20.6. Комбинированная индексная схема размещения файлов в UNIX.

Управление свободной внешней памятью

Для управления свободной памятью на диске система использует битовый вектор длины n,где n – общее число блоков на диске, каждый бит которого описывает состояние соответствующего блока: bit[i] = 0, если block[i] свободен, 1 – если блок занят. При таком представлении информации о свободных и занятых блоках, номер первого занятого блока вычисляется по простой формуле:

номер первого занятого блока = число битов в слове * число нулевых слов + номер первой 1.

Битовые шкалы, используемые для управления блоками, требуют дополнительной памяти. Например, при размере блока в 212 байтов и размере диска в 230 байтов (1 GB) длина битового вектора будет равна n = 230/212 = 218 битов (или 32 KB).

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

Для предотвращения ситуаций рассогласованности информации о свободной дисковой памяти, операционной системе необходимо защищать указатель на список свободной памяти, либо битовую шкалу (в зависимости от способа представления информации о свободной памяти). Битовый вектор должен храниться на диске. Однако его копии в памяти и на диске могут различаться. Нельзя допустить, чтобы block[i] имел такую ситуацию, когда bit[i] = 1 в памяти и bit[i] = 0 на диске. Решение этой проблемы в том, чтоты согласовывать значения битов на диске и в памяти по следующему алгоритму:

  • Установить bit[i] = 1 на диске;
  • Разместить block[i];
  • Установить bit[i] = 1 в памяти.

Представление информации о свободной дисковой памяти в виде списка блоков иллюстрируется на рис. 20.7.

Список свободной дисковой памяти.

Рис. 20.7. Список свободной дисковой памяти.

< Лекция 19 || Лекция 20: 12345 || Лекция 21 >
Гульжан Мурсакимова
Гульжан Мурсакимова
Василий Четвертаков
Василий Четвертаков