Логическая организация файла

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

В первом случае, когда все действия, связанные со структуризацией и интерпре­тацией содержимого файла, целиком относятся к ведению приложения, файл представляется ФС неструктурированной последовательностью данных. Прило­жение формулирует запросы к файловой системе на ввод-вывод, используя об­щие для всех приложений системные средства, например, указывая смещение от начала файла и количество байт, которые необходимо считать или записать. Поступивший к приложению поток байт интерпретируется в соответствии с за­ложенной в программе логикой. Например, компилятор генерирует, а редактор связей воспринимает вполне определенный формат объектного модуля програм­мы. При этом формат файла, в котором хранится объектный модуль, известен только этим программам.

Модель файла, в соответствии с которой содержимое файла представляется неструктурированной последовательностью (потоком) байт, стала популярной вместе с ОС UNIX, а теперь она широко используется в большинстве современных ОС, в том числе в Windows NT/2000. Неструктурированная мо­дель файла позволяет легко организовать разделение файла между несколькими приложениями: разные приложения могут по-своему структурировать и интер­претировать данные, содержащиеся в файле.

Другая модель файла, которая применялась в ОС OS/360, DEC RSX и VMS, а в настоящее время используется достаточно редко, – это структурированный файл. В этом случае поддержание структуры файла поручается файловой систе­ме. Файловая система видит файл как упорядоченную последовательность логи­ческих записей. Приложение может обращаться к ФС с запросами на ввод-вывод на уровне записей, например “считать запись 25 из файла FILE.DOC”. ФС долж­на обладать информацией о структуре файла, достаточной для того, чтобы выде­лить любую запись ФС предоставляет приложению доступ к записи, а вся даль­нейшая обработка данных, содержащихся в этой записи, выполняется приложе­нием. Развитием этого подхода стали системы управления базами данных (СУБД), которые поддерживают не только сложную структуру данных, но и взаимосвязи между ними.

Физическая организация файловой системы

Представление пользователя о файловой системе как об иерархически организо­ванном множестве информационных объектов имеет мало общего с порядком хранения файлов на диске. Файл, имеющий образ цельного, непрерывающегося набора байт, на самом деле очень часто разбросан “кусочками” по всему диску, причем это разбиение никак не связано с логической структурой файла, напри­мер, его отдельная логическая запись может быть расположена в несмежных секторах диска. Логически объединенные файлы из одного каталога совсем не обязаны соседствовать на диске. Принципы размещения файлов, каталогов и системной информации на реальном устройстве описываются физической организацией файловой системы. Очевидно, что разные файловые системы имеют разную физическую организацию.

Наши рекомендации