Запись-ориентированная файловая система

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Запись-ориентированная файловая система — файловая система, в которой данные хранятся в виде коллекций записей. В отличие от байт-ориентированной файловой системы, где данные рассматриваются как неформатированный поток байтов. Существует несколько различных форматов записей, детали которых зависят от конкретной системы. В общем случае форматы могут быть фиксированной или переменной длины, с различной физической организацией или механизмами вставки; метаданные могут быть связаны с файловыми записями для определения длины записи, а могут быть частью записи. Могут быть предусмотрены различные методы доступа к записям, например, записи могут извлекаться в последовательном порядке, по ключу или по номеру записи.

Происхождение и характеристики

[править | править код]

Файловые системы, ориентированные на записи, часто ассоциируются с операционными системами для мэйнфреймов, такими как OS/360 и её наследники и DOS/360 и её наследники, а также с операционными системами среднего уровня, такими как RSX-11 и VMS. Однако они возникли раньше в таких программах, как Input/Output Control System (IOCS). Записи, иногда называемые логическими записями, часто записываются блоками, иногда называемыми физическими записями; это норма для устройств прямого доступа и ленточных устройств, но файлы на устройствах записи блоков обычно не блокируются, то есть в каждом блоке только одна запись.

Файловые системы, ориентированные на записи, могут поддерживаться и на других носителях, кроме устройств прямого доступа. Колода перфокарт может считаться файлом, ориентированным на запись. Магнитная лента — пример носителя, который может поддерживать записи одинаковой или переменной длины

В файловой системе записей программист разрабатывает записи, которые могут использоваться в файле. Все прикладные программы, обращающиеся к файлу, будь то добавление, чтение или обновление записей, имеют общее представление о конструкции записей. В DOS/360, OS/360 и их преемниках нет ограничений на битовые шаблоны, составляющие запись данных, то есть нет символов-разделителей; это не всегда верно в других программах, например, некоторые типы записей для RCA File Control Processor (FCP) на 301, 501, 601 и 3301

Файл появляется, когда в файловую систему поступает запрос на создание файла. В запрос на создание может быть включена некоторая информация о файле. Эта информация может указывать, что файл содержит записи фиксированной длины (все записи имеют одинаковый размер), а также размер записей. В качестве альтернативы в спецификации может быть указано, что записи имеют переменную длину, а также максимальная длина записи. Может быть указана дополнительная информация, включая коэффициент блокировки, двоичный или текстовый формат и максимальное количество записей.

Может быть разрешено читать только начало записи; при следующем последовательном чтении возвращается следующая коллекция данных (запись), которые, по замыслу автора, должны быть сгруппированы вместе. Также может быть разрешено записывать только начало записи. В этих случаях запись заполняется двоичными нулями или пробелами, в зависимости от того, распознается ли файл как двоичный или как текстовый

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

Другие операционные системы включают в себя различные процедуры и связывают соответствующую процедуру, основанную на организации файла, во время выполнения

В любом случае значительный объём кода для управления записями должен быть представлен в защищенных процедурах, чтобы обеспечить целостность файла.

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

Обычно для текстовых файлов, представленных в виде потоков, используется новый ограничитель строки для разделения или завершения записей, обычно CR, CRLF или LF. К сожалению, процессорное время, необходимое для разбора разделителя записей, значительно, а исключение шаблона разделителя записей из данных часто нежелательно.

Альтернативным вариантом является включение поля длины в каждую запись. Приложение для записи отвечает за навязывание любой структуры записи, а приложение для чтения — за выделение записей

Преимущества и стоимость

[править | править код]

Файл, ориентированный на запись, имеет несколько преимуществ. После того как программа записывает коллекцию данных в виде записи, программа, которая читает эту запись, понимает эти данные как коллекцию. Часто файл содержит несколько связанных записей, расположенных последовательно; после того как программа прочитает начало последовательности, следующее последовательное чтение вернет следующую коллекцию данных (запись), которые, по замыслу автора, должны быть сгруппированы вместе. Ещё одно преимущество заключается в том, что запись имеет определённую длину и обычно нет ограничений на битовые шаблоны, составляющие запись данных, то есть нет разделительного символа.

Файлы, ориентированные на запись, обычно имеют определённые издержки. В случае записей фиксированной длины некоторые записи могут занимать неиспользуемое пространство, а в случае записей переменной длины место занимает разделитель или поле длины. Блоки переменной длины могут иметь накладные расходы из-за разделителей или полей длины. Кроме того, накладные расходы накладываются устройством. На магнитной ленте накладные расходы обычно выражаются в межзаписном зазоре. На устройстве прямого доступа с секторами фиксированной длины в последнем секторе блока может быть неиспользуемое пространство. На устройстве прямого доступа с физической записью переменной длины эти накладные расходы обычно принимают форму метаданных и межзаписных зазоров.