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

Рис. 2.36.  Общая модель файловой системы

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

На такому, базовому уровне по уникальному имени файла определяются его характеристики: права доступа, адрес, размер и другие. Как уже было сказано, характеристики файла могут входить в состав каталога или храниться в отдельных таблицах. При открытии файла его характеристики перемещаются из диска в оперативную память, чтобы уменьшить среднее время доступа к файла. В некоторых файловых системах (например, HPFS) при открытии файла вместе из его характеристиками в оперативную память перемещаются несколько первых блоков файла, что содержат данные.

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

На логическому уровне определяются координаты запрашиваемой логической записи в файле, то есть нужно определить, на каком расстоянии (в байтах) от начала файла находится необходимая логическая запись. При этом абстрагируются от физического расположения файла, он рекомендуется в виде непрерывной последовательности байтов. Алгоритм работы данного уровня зависит от логической организации файла. Например, если файл организован как последовательность логических записей фиксированной длины l, то n-ая логическая запись имеет сдвиг l((n-1) байт. Для определения координат логической записи в файле с индексной-последовательной организацией выполняется чтения таблицы индексов (ключей), у которой непосредственно указывается адрес логической записи.

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

Исходные данные:
V - размер блока
N - номер первого блока файла
S - сдвиг логической записи в файле

Нужно определить на физическом уровне:

n - номер блока, который содержит необходимую логическую запись

s - сдвиг логической записи в пределах блока

n = N + [S/V], где [S/V] - целая часть числа S/V s = R [S/V] - дробная часть числа S/V

На физическому уровне файловая система определяет номер физического блока, который содержит необходимую логическую запись, и сдвиг логической записи в физическом блоке. Для решения этой задачи используются результаты работы логического уровня - сдвиг логической записи в файле, адрес файла на внешнем устройстве, а также возведение о физической организации файла, включая размер блока. Рисунок 2.37 иллюстрирует работу физического уровня для простейшей физической организации файла в виде непрерывной последовательности блоков. Подчеркнем, что задача физического уровня решается независимо от того, как был логически организованный файл.

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

 

Возможно стоит прочитать: