ЗНАЕТЕ ЛИ ВЫ?

Інтерфейс віртуальної файлової системи VFS



Більшість UNIX-систем сьогодні керують різними типами файлових систем із використанням універсального рівня програмного забезпечення, який називають віртуальною файловою системою (Virtual File System, VFS). Така система надає прикладним програмам однаковий програмний інтерфейс, що реалізується за допомогою системних викликів роботи з файлами, описаних у розділі 11.5; надає розробникам файлових систем набір функцій, які їм треба реалізувати для інтеграції їхньої системи в інфраструктуру VFS (цей набір функцій називають інтерфейсом файлової системи).

Загальні принципи організації VFS на прикладі її реалізації в Linux описані нижче.

 

Основні функції VFS

Основною метою VFS є забезпечення можливості роботи ОС із максимально широким набором файлових систем. Цей рівень програмного забезпечення перетворює стандартні системні виклики UNIX для керування файлами у виклики функцій низького рівня, реалізованих розробником конкретної файлової системи.

Рівень VFS забезпечує доступ через стандартні файлові системні виклики до будь-якого рівня програмного забезпечення, що реалізує інтерфейс файлової системи. Це програмне забезпечення може взагалі не працювати із дисковою файловою системою, а, наприклад, генерувати всю інформацію «на льоту». Програмні модулі, що реалізують інтерфейс файлової системи, називаються модулями підтримки файлових систем.

Файлові системи, підтримувані VFS, можуть бути розділені на три основні категорії.

· Дискові є файловими системами в їхньому традиційному розумінні (розташовані на диску). Вони можуть мати будь-яку внутрішню структуру, важливо тільки, щоб відповідне програмне забезпечення реалізовувало інтерфейс файлової системи. Серед дискових файлових систем, які підтримує VFS, можна виділити розроблені спеціально для Linux (ext2fs, ext3fs, ReiserFS); Windows XP (лінія FAT, NTFS); інших версій UNIX (FFS, XFS); CD-ROM (ISO9660).

· Мережні реалізують прозорий доступ до файлів на інших комп'ютерах через мережу. До них належать NFS (забезпечує доступ до інших UNIX-серверів) і SMB (виконує аналогічні функції для серверів мережі Microsoft).

· Спеціальні або віртуальні відображають у вигляді файлової системи те, що насправді файловою системою не є. Вони не керують дисковим простором ні локально, ні віддалено.

Розглянемо, як працює VFS на прикладі копіювання файла із дискети на жорсткий диск за допомогою коду. На дискеті розміщена файлова система FAT, на диску — стандартна для Linux файлова система ext2fs. Обидва ці дискових пристрої монтуються в окремі каталоги дерева каталогів UNIX. Припустимо, що шлях до файла на дискеті буде /floppy/src.txt, шлях до файла на диску - /tmp/desttxt.

Інфраструктура VFS абстрагує відмінності між файловими системами джерела і місця призначення (рис. 4.1).

4.1

 

Прикладна програма, що здійснює копіювання, має зробити тільки такі універсальні дії:

Як видно, жоден із викликів не використовує інформацію, специфічну для тієї чи іншої файлової системи. Для реалізації зворотного копіювання (із диска на дискету) досить поміняти місцями імена файлів — увесь інший код залишиться незмінним.

 

Загальна організація VFS

Під час розробки VFS були широко використані принципи об'єктної орієнтації. Ця інфраструктура складається із двох основних груп елементів: набору правил, яким мають підлягати файлові об'єкти, і рівня програмного забезпечення для керування цими об'єктами. Базова архітектура VFS визначає три основних об'єктних типи.

· Об'єкт індексного дескриптора (об'єкт і node, inode object) описує набір атрибутів і методів, за допомогою яких відображують файл на рівні файлової системи. Його назва свідчить про те, що більшість файлових систем в UNIX використовує індексоване розміщення даних; насправді цей об'єкт може інкапсулювати будь-яку структуру фізичного розміщення файла на диску.

· Об'єкт відкритого файла (об'єкт fіlе, file object) відображає відкритий файл на рівні процесу.

· Об'єкт файлової системи (filesystem object) відображає всю файлову систему; i?if Linux його називають об'єктом суперблока (superblock object).

IV У реалізації VFS y Linux до цих трьох об'єктів додають ще один: об'єкт елемента каталогу (об'єкт dentry, dentry object), що відображає елемент каталогу і його зв'язок із файлом на диску.

Для кожного із цих типів об'єктів VFS визначає набір операцій (методів), які мають бути реалізовані в об'єктах. Набір цих методів становить інтерфейс файлової системи. У кожному об'єкті є покажчик на таблицю набору адрес функцій, що реалізують ці методи для конкретного об'єкта. Програмне забезпечення VFS завжди викликає ці функції через покажчики на них, йому не потрібно знати заздалегідь, із яким конкретним типом об'єкта воно працює (з погляду об'єктного підходу у VFS реалізовано поліморфізм). Так, під час читання даних через об'єкт файлового дескриптора для рівня VFS байдуже, який саме елемент конкретної файлової системи відображає цей об'єкт (такими елементами можуть бути мережні файли, дискові файли різних файлових систем тощо). На цьому рівні відбувається тільки виклик стандартного методу читання даних через покажчик на нього. Реальна файлова система може зовсім не використовувати індексних дескрипторів — відповідний об'єкт генеруватиметься «на ходу».

 

Об'єкти файлової системи





Последнее изменение этой страницы: 2016-07-11; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 35.153.39.7 (0.007 с.)