
воспринимает файл как упорядоченную, но необязательно
последовательную, совокупность единичных блоков на диске.
Для того, чтобы операционная система могла доставить байт или
логическую запись n из какого-то файла, она должна пользоваться
некоторым методом для определения местонахождения данных. Если файл
расположен последовательно, то операционная система должна знать только
место начала файла, чтобы вычислить позицию нужной записи.
Если файл расположен на диске непоследовательно, то только по
начальной позиции невозможно определить местоположение требуемой
записи. Чтобы найти произвольный байт или логическую запись, нужна
таблица (так называемый
индекс файла), которая выдает единичные блоки и
их физические адреса на диске. Индекс файла может быть организован либо
в виде списка адресов блоков (UNIX), либо в виде списка логических
записей, для каждой из которых дается адрес на диске и смещение. Иногда
каждая логическая запись имеет
ключ, и программы могут обращаться к
записи по этому ключу, а не по номеру логической записи. В этом случае
каждый элемент таблицы должен содержать не только информацию о
местонахождении записи на диске, но и ее ключ. Такая структура обычно
применяется в универсальных вычислительных машинах.
Альтернативный метод нахождения блоков файлов – организовать файл
в виде связного списка. Каждый единичный блок содержит адрес
следующего единичного блока. Для реализации этой схемы нужно в
основной памяти иметь таблицу со всеми последующими адресами.
Например, для диска с 64 К блоками операционная система должна иметь в
памяти таблицу из 64 К элементов, в каждом из которых дается индекс
следующего единичного блока. Так, если файл занимает блоки 4, 52, 19, то
элемент 4 таблицы будет содержать число 52, элемент 52 – число 19, а 19
элемент – специальный код, указывающий на конец файла. Так работают
файловые системы в MS DOS, Windows 95 b Windows 98. Windows NT
поддерживает эту систему файлов, но и кроме того имеет свой собственную
систему, которая больше похожа на файловую систему UNIX.
Сравнение двух типов расположения файлов.
Последовательно расположенными файлами легко управлять, но если
максимальный размер файла не известен заранее, эту технологию нельзя
использовать. Если файл располагается непоследовательно, то проблем с
поиском связного пространства не возникает.
С другой стороны, если максимальный размер файла известен заранее,
то программа может заранее определить серии секторов, точно
соответствующих размерам различных файлов.
Чтобы распределить пространство на диске для файла, операционная
система должна следить, какие блоки доступны, а какие уже заняты другими
файлами. При записи на компакт-диск такие вычисления производятся один
раз и навсегда, а на жестком диске файлы постоянно записываются и
удаляются. Один из способов – сохранить список всех «дырок». Этот список
называется
списком свободной памяти.
128