Vnode разработаны как объектно-ориентированный интерфейс. Соответственно ядро манипулирует ими, передавая запросы нижележащему объекту посредством набора определенных операций. Из-за множества различающихся файловых систем, которые поддерживаются в FreeBSD, набор операций, определенных для vnode, и большой, и расширяемый. В отличие от первоначальной реализации vnode фирмой Sun Microsystems, реализация в FreeBSD допускает динамическое добавление операций vnode либо во время загрузки системы, либо в ходе динамической загрузки в ядро новой файловой системы. В процессе активации файловая система регистрирует набор операций vnode, которые она поддерживает. Затем ядро строит таблицу, которая перечисляет объединение всех операций, поддерживаемых любой файловой системой. Из этой таблицы оно строит вектор операций для каждой файловой системы. Поддерживаемые операции заполняются точками входа, зарегистрированными системой. Файловые системы могут предпочесть, чтобы неподдерживаемые операции заполнялись либо процедурой по умолчанию (обычно процедурой для передачи операции на следующий,

Либо процедурой, возвращающей типичную ошибку «операция не поддерживается» [Heidenamm & Popek, 1994].
В 4.3BSD код локальной файловой системы предоставлял как семантику иерархического именования файловой системы, так и детали управления дисковой памятью. Эти функции связаны лишь незначительно. Чтобы дать возможность экспериментировать с другими методиками дисковой памяти без необходимости воспроизводить всю семантику именования, 4.4BSD разнесла код именования и код хранения в отдельные модули. Операции уровня vnode определяют набор иерархических операций файловой системы. Ниже уровня именования находится отдельный набор операций, определенных для хранения объектов различного размера с использованием плоского пространства имен. Около 60 процентов традиционного кода файловой системы стали кодом управления пространством имен, а оставшиеся 40 процентов стали кодом реализации дискового хранилища файлов. Система 4.4BSD использовала это разделение для поддержки двух отдельных схем дисков: традиционной быстрой файловой системы и файловой системы, структурированной для журналирования. В FreeBSD поддержка файловой системой со структурированием для журналирования была опущена из-за отсутствия тех, кто хотел бы ее поддерживать, но она остается основной файловой системой в NetBSD.
- 16/11/2010 03:20 - Службы экспортированных файловых систем
- 15/11/2010 15:49 - Трансляция имен путей
- 10/11/2010 06:57 - Интерфейс виртуальной файловой системы
- 09/11/2010 19:30 - Перемещение данных внутри ядра
- 09/11/2010 18:56 - Реализация select
- 08/11/2010 02:22 - Мультиплексирование ввода/вывода для дескрипторов
- 04/11/2010 08:33 - Блокировка дескриптора файла