WikiSort.ru - Не сортированное

о проекте

Виртуальная файловая система (англ. virtual file system — VFS) или виртуальный коммутатор файловой системы (англ. virtual filesystem switch) — уровень абстракции поверх конкретной реализации файловой системы. Целью VFS является обеспечение единообразного доступа клиентских приложений к различным типам файловых систем. VFS может быть использована для доступа к локальным устройствам и файлам (fat32, ext4, 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

Примечания

Ссылки

Литература

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

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2019
WikiSort.ru - проект по пересортировке и дополнению контента Википедии