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

(перенаправлено с «VFS»)

Виртуальная файловая система (англ. virtual file system, VFS) или виртуальный коммутатор файловой системы (англ. virtual filesystem switch) — уровень абстракции поверх конкретной реализации файловой системы. Целью VFS является обеспечение единообразного доступа клиентских приложений к различным типам файловых систем. VFS может быть использована для доступа к локальным устройствам и файлам (ext4, FAT32, NTFS), сетевым устройствам и файлам на них (NFS), а также к устройствам, не предназначенным для хранения данных (procfs[1]). VFS декларирует программный интерфейс между ядром и конкретной файловой системой, таким образом, для добавления поддержки новой файловой системы не требуется вносить изменений в ядро операционной системы.

История развития править

Одна из первых виртуальных файловых систем в Unix-подобных ОС была реализована Sun Microsystems в SunOS 2.0 в 1985 году. Это позволило системным вызовам Unix получить прозрачный доступ к локальной UFS и удалённой NFS. По этой причине вендоры Unix-систем, получившие лицензию на код NFS, часто копировали дизайн VFS от Sun. Другие файловые системы могут быть подключены так же: появилась реализация файловой системы MS-DOS FAT, разработанная в Sun, использовавшая SunOS VFS, хотя она не поставлялась в качестве продукта до SunOS 4.1. Реализация SunOS лежит в основе механизма VFS в System V Release 4.

Джон Хейдеманн (John Heidemann) разработал стековую VFS под SunOS 4.0 для экспериментальной файловой системы Ficus. Этот проект предусматривал повторное использование кода в файловых системах с различной, но похожей семантикой (например, шифрованная файловая система может использовать систему имён и код для хранения данных нешифрованной файловой системы). В своей диссертации Хейдеманн адаптировал эту работу для использования в 4.4BSD. Наследники этого кода лежат в основе реализаций современных файловых систем в операционных системах, производных от BSD, включая Mac OS X.

Устройство VFS править

Как было указано ранее, основное предназначение современных VFS — организация единого интерфейса доступа пользователя к различным файловым системам, драйверы которых загружены в память компьютера. Для реализации этой цели от ядра операционной системы требуется создание единого программного интерфейса внутренних вызовов ядра. Данный интерфейс должен быть достаточно широким в плане функциональности, поскольку он будет использоваться для доступа к очень большому числу различных (в плане свойств и функционала) файловых систем. Помимо стандартных для файлов вызовов на открытие/закрытие и чтение/запись, от VFS требуется иметь интерфейс для ревалидации (от англ. revalidation) данных, работы с кэшами, посылки специальных запросов (IOCTL — Input/Output Control), а также для организации текущей сессии работы с открытым файлом.

Для работы с VFS драйверу файловой системы необходимо реализовать обозначенные программные вызовы с учётом специфики работы данной файловой системы. Драйвер может поддерживать лишь часть вызовов API VFS, в этом случае ядро ОС должно корректно «заглушить» соответствующие необрабатываемые запросы от пользователя.

Фактически, интерфейс VFS, предоставляемый драйверам файловых систем, может являться определением к самому понятию файловой системы. Любой драйвер, реализующий функционал API VFS и загруженный в ядро правильным образом, становится драйвером файловой системы, безотносительно того, используется ли он для доступа к файлам или нет. Более того, сама функциональность файловой системы может быть даже не в драйвере, а в пространстве пользователя. Ярким примером такого подхода является файловая система в пользовательском пространстве (Filesystem in Userspace — FUSE).

Применение в современных ОС править

В OS/2 и Microsoft Windows механизм виртуальной файловой системы называется устанавливаемой файловой системой (Installable File System).

В Linux механизм VFS, как и весь код ядра, является открытым. Это позволяет разработчикам файловых систем писать их драйвера максимально эффективно. Как результат — Linux поддерживает монтирование подавляющего большинства современных файловых систем.

В Unix файловые системы включают File System Switch в System V Release 3 и в Ultrix.

См. также править

  • 9P — протокол файловой системы Plan 9

Примечания править

  1. FreeBSD: виртуальные файловые системы. Дата обращения: 18 июня 2010. Архивировано 12 июня 2017 года.

Литература править

  • Э. Таненбаум, Х. Бос Современные операционные системы. — 4 изд. — СПб.: Питер, 2018.

Ссылки править

🔥 Top keywords: Заглавная страницаЯндексСлужебная:ПоискСу-57YouTubeГодовщины свадьбыЗаворотнюк, Анастасия ЮрьевнаОбодзинский, Валерий ВладимировичЗверев, АлександрКараганов, Сергей АлександровичАлькарас, КарлосВыборы в Европейский парламент (2024)Список умерших в 2024 годуЧемпионат Европы по футболу 2024РоссияПопков, Михаил ВикторовичЧернышёв, Пётр АндреевичГреф, Герман ОскаровичЧикатило, Андрей РомановичПушкин, Александр СергеевичFallout (серия игр)КлеопатраПутин, Владимир ВладимировичИмавов, Нассурдин АбдулазимовичАзбука МорзеБитва экстрасенсовРаспутин, Григорий ЕфимовичБарабаш, Юрий Владиславович9 июняМинистерство неджентльменских делВторжение России на Украину (с 2022)WildberriesСписок фильмов кинематографической вселенной MarvelTelegramХристианско-демократический союз ГерманииАльтернатива для ГерманииВКонтактеВодительское удостоверение в Российской ФедерацииЖукова, Софья Ивановна