
Лабораторный практикум по курсу "Операционные системы"
Далее мы будем рассматривать архитектуру файловой системы применительно к UNIX-
системам, поскольку в основе архитектур файловых систем различных ОС лежат схожие
идеи.
Виртуальная Файловая Система
Виртуальная файловая система (Virtual File System) - это дополнительный уровень
абстрагирования, позволяющий осуществлять единообразную работу с различными
файловыми системами – ext3, Minix, FAT и т.д. Это прослойка между процессом и
настоящей файловой системой.
Принцип работы
Выше мы перечислили набор операций для работы с файлами и директориями. Семантика
операций из данного набора может отличаться в зависимости от типа файловой системы
(например, для операций по управлению доступом к файлу). Однако большинство запросов
обслуживаются одинаковым способом при работе с различными файловыми системами.
При поступлении запроса на работу с
объектом файловой системы, он обслуживается кодом
виртуальной файловой системы, содержащимся в ядре ОС. Этот код анализирует запросы,
определяет местоположение используемого объекта и тип файловой системы, которой он
принадлежит, и вызывает необходимые функции модуля работы с соответствующей
файловой системой для выполнения операции ввода/вывода. Такой механизм работы с
файлами используется для упрощения
объединения и использования нескольких типов
файловых систем.
Когда какой-либо процесс выдает системный вызов, связанный с работой файловой системы,
ядро вызывает функцию, расположенную в коде виртуальной файловой системы (VFS). Эта
функция производит действия, независимые от структуры файловой системы, определяет
местоположение используемого объекта и тип файловой системы, которой он принадлежит,
и перенаправляет
вызов к функции драйвера этой файловой системы (код, реализующий
операции с файловой системой), который выполняет операции, связанные с ее структурой и
выполнением операций ввода/вывода.
Структура VFS
VFS не ориентируется на какую-либо конкретную файловую систему, механизмы
реализации файловой системы полностью скрыты как от пользователя, так и от приложений.
В ОС нет системных вызовов, предназначенных для работы со специфическими типами
файловой системы, а имеются абстрактные вызовы типа open, read, write и другие, которые
имеют содержательное описание, обобщающее некоторым образом содержание этих
операций в наиболее популярных типах файловых систем (например, ext3, ufs, nfs и т.п.).
VFS также предоставляет ядру возможность оперирования файловой системой, как с единым
целым: операции монтирования и демонтирования, а также операции получения общих
характеристик конкретной файловой системы (размера блока, количества свободных и
занятых блоков и т.п.) в единой форме (
монтирование – включение логической структуры
файловой системы некоторого отдельного внешнего устройства в общую логическую
структуру, в UNIX – «подвешивание» дерева некоторой файловой системы к некоторой
«ветке»-каталогу единого дерева). Если конкретный тип файловой системы не поддерживает
какую-то абстрактную операцию VFS, то файловая система должна вернуть ядру код
возврата, извещающий об этом факте.
Интерфейс VFS состоит
из ряда операций, которые оперируют тремя типами объектов:
файловые системы, индексные дескрипторы и открытые файлы.
Учебно-исследовательская лаборатория «Информационные технологии» 91