Об’єкти VFS та їх структури даних

Віртуальна файлова система (VFS) обєктно-оріентірованна3 Загальна файлова модель представлена ​​набором структур даних Ці структури даних дуже схожі на обєкти Так як ядро ​​програмується строго на мові С, то, за відсутності можливостей прямої підтримки парадигм ООП в мові програмування, структури даних представляються структурами мови С Структури містять як покажчики на елементи даних, так і покажчики на функції, які працюють з цими даними

Існують наступні чотири основних типи обєктів VFS

• Обєкт суперблок (superblock), який представляє певну змонтовану файлову систему

• Обєктфайловий індекс (inode), який представляє певний файл

• Обєкт елемент каталогу (denlry), який становить певний елемент каталогу

• Обєкт файл (file), який представляє відкритий файл, повязаний з процес сом

Слід звернути увагу, що оскільки підсистема VFS розглядає каталоги як звичайні файли, то не існує спеціальних обєктів для каталогів Як розповідалося раніше, обєкт dentry представляє компонент шляху, який може містити звичайний файл Іншими словами, deniry – це не те ж саме, що каталог, а каталог – це те ж, що і файл Все зрозуміло

Кожен з розглянутих основних обєктів містить обєктoperations (операції)Ці обєкти описують методи, які ядро ​​може застосовувати для основних обєктів

3 Част про многи е цього не помічають і навіть заперечують, але проте в ядрі багато прімеро в обєктно-оріентірованног про програмування Хоча розробник і ядр а і сторонятс я мову а C + + та інших явн про обєктно-орієнтованих мов програмування (ООП), іноді дуже ь корисно мислити в термінах обєктів Підсистема VFS-це хороші й примі р того, як простий про і ефективним про обєктно-орієнтоване програмування реалізується мовою С, в якому немає обєктно-орієнтованих конструкцій

Зокрема, існують наступні обєкти операцій

• Обєкт super_operation s (операції з суперблоком файлової системи) містить методи, які ядро ​​може викликати для певної файлової системи, як, наприклад, read_inode () або sync_fs ()

• Обєкт inodeoperation s (операції з файловими індексами) містить методи, які ядро ​​може викликати для певного файлу, як, наприклад, create d або lin k ()

• Обєкт dentry_operation s (операції з елементами каталогів) містить методи, які ядро ​​може викликати для певного елемента каталогу, як, наприклад, d_compare () або d_delet e ()

• Обєкт f ile_operation s (операції з файлами) містить методи, які процес може викликати для відкритого файлу, як наприклад, read () і wri te ()

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

І ще раз повторимося, що під обєктами ми будемо розуміти структури, які явно не є обєктними типами (на відміну від мов програмування C + + і Java) Однак ці структури представляють певні екземпляри обєктів, дані повязані з обєктами, і методи, які ними оперують Це практично те ж, що і обєктні типи

Джерело: Лав, Роберт Розробка ядра Linux, 2-е видання : Пер з англ – М: ТОВ «ІД Вільямс »2006 – 448 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*