п файлової системи не підтримує якусь абстрактну операцію VFS, то файлова система повинна повернути ядру код повернення, що сповіщає про цей факт [4].
До складу VFS Linux входять два основних компоненти:
Набір визначень, що характеризують об'єкт типу файл;
Програмний рівень, що забезпечує роботу з подібними об'єктами.
Основні типи об'єктів, що виділяються VFS:
Індекси (inode, vnode) - являють кожен елемент файлової системи;
Файлові структури (структура file) - представляють окремі файли;
Файлова система (file system) - являє файлову систему в цілому.
Для кожного типу об'єктів VFS підтримує свій набір дозволених операцій, посилання на які зберігаються в таблиці функцій. По покажчику конкретного об'єкта відбувається звернення до необхідної області таблиці, що зберігає фактичні адреси функцій, що реалізують необхідні операції.
В VFS вся інформація про файли розділена на дві частини - не залежну від типу файлової системи, яка зберігається в спеціальній структурі ядра - структурі vnode, і яка від типу файлової системи - структурі inode, формат якої на рівні VFS не визначений, а використовується тільки посилання на неї в структурі vnode. Ім'я inode не означає, що ця структура збігається зі структурою індексного дескриптора inode конкретної файлової системи. Це ім'я використовується для позначення залежної від типу файлової системи інформації про фото, як данина традиції.
Структура vnode використовується ядром для зв'язку файлу з певним типом файлової системи і конкретними реалізаціями файлових операцій. Одне з полів vnode використовується для вказівки на таблицю фізичних сторінок пам'яті у випадку, коли файл відображається у фізичну пам'ять. У vnode також міститься тип файлу і покажчик на залежну від типу файлової системи частина опису характеристик файлу - структуру inode, зазвичай містить адресну інформацію про розташування файлу на носії й про права доступу до файлу. Крім цього, vnode використовується ядром для зберігання інформації про блокування (locks), застосованих процесами до окремих областей файлу.
Самі операції над об'єктом реалізуються на програмним рівні VFS, який безпосередньо викликає необхідну функцію через таблицю функцій. При цьому не має значення, чи представляє індекс мережевої файл, файл на диску, мережеве гніздо, або каталог.
При кожному відкритті процесом файлу ядро ??створює в системній області пам'яті нову структуру типу file, яка описує як відкритий файл, так і операції, які процес збирається виробляти з файлом (наприклад, читання). Структура file містить такі поля, як визначення режиму відкриття (тільки для читання, для читання і запису і т.п.); покажчик на структуру vnode; зсув у файлі при операціях читання / запису; покажчик на структуру, яка містить права процесу, який відкрив файл; а також покажчики на попередню й наступну структуру типу file, що зв'язують всі такі структури в список.
У функції об'єкта file входить:
відстеження послідовного введення / виводу у файл;
облік запитів від процесів на дозвіл запису при відкритті файлу;
відстеження дій процесів при необхідності попереджувальн...