51
избавить пользователя от сложностей взаимодействия с аппаратурой, была
придумана
абстрактная модель файловой системы.
В ОС
используются несколько методов выделения файлу дискового
пространства, для каждого из которых запись в директории,
соответствующая символьному имени файла, содержит указатель, следуя
которому можно найти все блоки данного файла. Различают методы:
1)
выделение непрерывной последовательности блоков - каждый файл
хранится как непрерывная последовательность блоков диска, при этом файл
характеризуется адресом и длиной (в блоках). Файл, стартующий с блока b,
занимает затем блоки b+1, b+2, ... b+n-1. Преимущества схемы: легко
реализуется, так как достаточно определить, где находится первый блок;
обеспечивает хорошую производительность, так как целый файл может быть
считан за одну дисковую операцию. Недостатки: в зависимости от размера
диска и среднего размера файла в большей или меньшей степени проявляется
внешняя фрагментация; неприменим, если неизвестен максимальный размер
файла; а поскольку содержимое диска изменяется,
метод нерационален;
2)
связные списки - запись в директории содержит указатель на первый
и последний блоки файла. Каждый блок содержит указатель на следующий
блок (рисунок Б.2). Внешняя фрагментация для данного метода отсутствует.
Любой свободный блок может быть использован для удовлетворения запроса.
Не нужно декларировать размер файла в момент создания, файл может расти
неограниченно. Недостатки: при прямом доступе к файлу выборка логически
смежных записей, физически занимающих несмежные секторы, требует много
времени; способ ненадежен, поскольку наличие дефектного блока в списке
приводит к потере информации в
оставшейся части файла и потенциально к
потере дискового пространства, отведенного под файл. Метод обычно не
используется в чистом виде;
3)
таблица отображения файлов - указатели хранятся в индексной
таблице в памяти, которая называется
таблицей отображения файлов (
FAT -
file allocation table). Запись в директории содержит только ссылку на первый
блок. При помощи таблицы
FAT можно локализовать блоки файла независимо
от его размера. В тех строках таблицы, которые соответствуют последним
блокам файлов, обычно записывается некоторое граничное значение,
например, EOF. Достоинство: по таблице отображения можно судить о
физическом соседстве блоков, располагающихся на диске, и при выделении
нового блока можно легко найти свободный блок диска, находящийся
поблизости от других блоков данного файла. Недостаток: необходимость
хранения в памяти этой довольно большой таблицы;
4)
индексные узлы - с каждым файлом связывается таблица (
индексный
узел - i-node), которая перечисляет атрибуты и дисковые адреса блоков файла.
Запись в директории, относящаяся к файлу, содержит адрес индексного блока.
По мере заполнения файла указатели на блоки диска в индексном узле
принимают осмысленные значения. Индексирование поддерживает прямой
доступ к файлу, без ущерба от внешней фрагментации. Индексированное
52
размещение широко распространено и поддерживает как последовательный,
так и прямой доступ к файлу. Обычно применяется комбинация
одноуровневого и многоуровневых индексов. Схему используют файловые
системы Unix, а также файловые системы HPFS, NTFS. Подход позволяет при
фиксированном, относительно небольшом размере индексного узла
поддерживать работу с файлами, размер которых может меняться от
нескольких байтов до нескольких гигабайтов.
Дисковое пространство, не выделенное ни одному файлу, также должно
быть управляемым. В
современных ОС используется несколько
способов
учета используемого места на диске. Наиболее распространенные среди них:
1)
учет при помощи организации битового вектора -
список
свободных блоков диска реализован в виде битового вектора (bit map или bit
vector). Каждый блок представлен одним битом, принимающим значение 0
или 1, в зависимости от того, занят он или свободен. Преимущество: метод
относительно прост и эффективен при нахождении первого свободного блока
или n последовательных блоков на диске.
Используется в Apple Macintosh;
2)
учет при помощи организации связного списка - в список
связываются все свободные блоки, размещая указатель на первый свободный
блок в специально отведенном месте диска, попутно кэшируя в памяти эту
информацию. Недостаток: схема не всегда эффективна, поскольку для
трассирования списка нужно выполнить много обращений к диску.
Существуют и другие методы, например, свободное пространство
можно рассматривать как файл и ввести для него индексный узел.
Важную роль
играет
размер логического блока. В некоторых системах
(Unix) он может быть задан при форматировании диска. Небольшой размер
блока будет приводить к тому, что каждый файл будет содержать много
блоков. Чтение блока осуществляется с
задержками на поиск и вращение,
поэтому файл из многих блоков будет читаться медленно. Большие блоки
обеспечивают более высокую скорость обмена с диском, но из-за внутренней
фрагментации снижается процент полезного дискового пространства.
Структура служебных данных типовой файловой системы на одном из
Достарыңызбен бөлісу: