Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС Нижний.pdf
Скачиваний:
30
Добавлен:
25.03.2023
Размер:
2.75 Mб
Скачать

Лабораторный практикум по курсу "Операционные системы"

Далее мы будем рассматривать архитектуру файловой системы применительно к UNIXсистемам, поскольку в основе архитектур файловых систем различных ОС лежат схожие идеи.

Виртуальная Файловая Система

Виртуальная файловая система (Virtual File System) - это дополнительный уровень абстрагирования, позволяющий осуществлять единообразную работу с различными файловыми системами – ext3, Minix, FAT и т.д. Это прослойка между процессом и настоящей файловой системой.

Принцип работы

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

При поступлении запроса на работу с объектом файловой системы, он обслуживается кодом виртуальной файловой системы, содержащимся в ядре ОС. Этот код анализирует запросы, определяет местоположение используемого объекта и тип файловой системы, которой он принадлежит, и вызывает необходимые функции модуля работы с соответствующей файловой системой для выполнения операции ввода/вывода. Такой механизм работы с файлами используется для упрощения объединения и использования нескольких типов файловых систем.

Когда какой-либо процесс выдает системный вызов, связанный с работой файловой системы, ядро вызывает функцию, расположенную в коде виртуальной файловой системы (VFS). Эта функция производит действия, независимые от структуры файловой системы, определяет местоположение используемого объекта и тип файловой системы, которой он принадлежит, и перенаправляет вызов к функции драйвера этой файловой системы (код, реализующий операции с файловой системой), который выполняет операции, связанные с ее структурой и выполнением операций ввода/вывода.

Структура VFS

VFS не ориентируется на какую-либо конкретную файловую систему, механизмы реализации файловой системы полностью скрыты как от пользователя, так и от приложений. В ОС нет системных вызовов, предназначенных для работы со специфическими типами файловой системы, а имеются абстрактные вызовы типа open, read, write и другие, которые имеют содержательное описание, обобщающее некоторым образом содержание этих операций в наиболее популярных типах файловых систем (например, ext3, ufs, nfs и т.п.). VFS также предоставляет ядру возможность оперирования файловой системой, как с единым целым: операции монтирования и демонтирования, а также операции получения общих характеристик конкретной файловой системы (размера блока, количества свободных и занятых блоков и т.п.) в единой форме (монтирование – включение логической структуры файловой системы некоторого отдельного внешнего устройства в общую логическую структуру, в UNIX – «подвешивание» дерева некоторой файловой системы к некоторой «ветке»-каталогу единого дерева). Если конкретный тип файловой системы не поддерживает какую-то абстрактную операцию VFS, то файловая система должна вернуть ядру код возврата, извещающий об этом факте.

Интерфейс VFS состоит из ряда операций, которые оперируют тремя типами объектов: файловые системы, индексные дескрипторы и открытые файлы.

Учебно-исследовательская лаборатория «Информационные технологии» 91

Лабораторный практикум по курсу "Операционные системы"

VFS содержит информацию о всех типах поддерживаемых файловых систем. Здесь используется таблица, которая создается во время компиляции ядра ОС. Каждая запись в такой таблице содержит тип файловой системы: она включает в себя наименование типа и указатель на функцию, вызываемую во время монтирования этой файловой системы. При монтировании файловой системы вызывается соответствующая функция монтирования. Эта функция используется для считывания суперблока (блок данных, описывающих параметры файловой системы), установки внутренних переменных и возврата дескриптора смонтированной системы в VFS. После того, как система смонтирована, функции VFS используют этот дескриптор для доступа к процедурам используемой файловой системы.

Дескриптор смонтированной файловой системы содержит в себе некоторую информацию, которая одинакова для каждого типа файловой системы – указатели на функции, используемые для выполнения операций на данной файловой системе и некоторые данные, используемые этой системой. Указатели на функции, расположенные в дескрипторе файловой системы, позволяют VFS получить доступ к внутренним функциям файловой системы.

В VFS используются еще два типа дескрипторов: это inode (индексный дескриптор) и дескриптор открытого файла (блок управления файлом). Каждый из них содержит информацию, связанную с используемыми файлами. Индексный дескриптор (inode) содержит указатели к функциям, используемым по отношению к любому файлу (например, create или unlink). Дескриптор файлов содержит указатели к функциям, оперирующим только с открытыми файлами (например, read или write).

 

Таблица файлов

 

 

 

Таблица

 

 

Пользовательская

 

 

индексных

 

 

 

дескрипторов

таблица файлов

 

 

 

 

 

(своя у каждого

 

 

 

процесса)

 

 

 

0

1

2

3

Рис. 44 Классическая связь между таблицами, используемыми при работе с файлами

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

В VFS вся информация индексных дескрипторов разделена на две части - не зависящую от типа файловой системы, которая хранится в специальной структуре ядра - структуре vnode, и зависящую от типа файловой системы - структура inode, формат которой на уровне VFS не определен, а используется только ссылка на нее в структуре vnode. Имя inode не означает, что эта структура совпадает со структурой индексного дескриптора inode файловой системы UNIX (например, ext3). Это имя используется для обозначения зависящей от типа файловой системы информации о файле, как дань традиции.

92 Учебно-исследовательская лаборатория «Информационные технологии»

Соседние файлы в предмете Современные операционные системы