4. Загальна модель файлової системи

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

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

Загальну модель файлової системи представляють двома випадками: перший випадок - файлова система містить 4 рівні, другий випадок - 5 рівнів.

Загальна модель файлової системи:

Перший випадок:

Снимок112.JPG

Другий випадок:

11333.JPG

Розглянемо детальныше другий випадок загальноъ моделы файловоъ системи.

Символьний рівень. Якщо файл має тільки одне символьне ім'я, то у такій файловій системі символьний рівень відсутній, тому що символьне ім'я є унікальним і може бути використане операційною системою(ОС). Якщо файлова система має файл, який може мати кілька символьних імен, то на цьому рівні проглядається ланцюжок каталогів для визначення унікального імені файлу.

Базовий рівень. Характеристики файлу можуть входити до каталогу чи збурігатися в окремих таблицях. Якщо файл відкрити, то його характеристики переміщуються з диска в оперативну пам'ять. Це відбувається для того, щоб зменшити середній час доступу до файлу. Є такі файлові системи , у яких при відкритті файлу в оперативну пам'ять переміщаються не тільки його характеристики, але й трохи перших блоків файлу, що містять дані.

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

Логічний рівень. На цьому рівні визначаються координати логічного запису у файлі, на який надавався запит. Тобто визначається на якій відстані від початку файлу знаходиться необхідний логічний запис (відстань вимірюється у байтах). Звертається увага на фізичне розташування файлу. Файл представляється у вигляді безепинної послідовності байт. На даному рівні алгоритм роботи залежить від логічної організації файлу.

Наприклад, якщо файл організований як послідовність логічних записів фіксованої довжини 1, то n-a логічний запис має зсув 1(n-1) байт. Для визначення координат логічного запису у файлі з індексно-послідовною організацією виконується читання таблиці індексів (ключів), у якій вказується адреса логічного запису.

Снимок113.JPG

Мал. 2. Функції фізичного рівня файлової сисеми.

Вихідні дані:

V - розмір блоку,

N - номер першого блоку у файлі,

S - зсув логічного запису у файлі.

Потрібно визначити на фізичному рівні:

n - номур блоку, що містить необхідний логічний запис,

s - зсув логічного запису в межах блоку.

n=N+[S/V], де [S/V] - ціла частина числа S/V;

s=R[S/V] - дробова частина числа S/V.

Фізичний рівень. Файлова система визначає номер фізичного блоку, що містить необхідний логічний запис, і зсув логічного запису у цьому блоці. Для вирішення цієї задачі використовують: зсув логічного запису у файлі, адрусу файлу на зовнішньому пристрої, зведення про фізичну організацію файлу, включаючи розмір блоку (все це результати роботи логічного рівня). На малюнку 2 показано роботу фізичного рівня для елементарної фізичної організації файлу у вигляді бузупинної послідовності блоків. Задача фізичного рівня зважується незалежно від того, як був логічно організований фійл.

Пістя того, як було визначено номер фізичного блоку, файлова система звертається до системи вводу-виводу для виконання операції обміну із зовнішнім пристроєм. Отримавши запит у буфер файлової системи передається потрібний блок. У цьому блоці на підставі отриманого при роботі фізичного рівня зсуву вибирається необхідний логічний запис.


Сучасна архітектура файлових систем


Нова файлова система має багаторівневу структуру (малюнок 2.39), на верхньому рівні якої розташовується так званий перемикач файлових систем (у Windows 95, наприклад, такий перемикач називається встановлюваним диспетчером файлової системи - installable filesystem manager, IFS). Він забезпечує інтерфейс між запитами додатка і конкретною файловою системою, до якої звертається це застосування. Перемикач файлових систем перетворить запити у формат, сприйманий наступним рівнем - рівнем файлових систем.

Мал. 2.39. Архітектура сучасної файлової системи

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

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

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

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

Внесена в ланцюжок виклику процедура драйвера може вирішити передати запит далі - в зміненому або в незміненому виді - на наступний рівень, або, якщо це можливо, процедура може задовольнити запит, не передаючи його далі по ланцюжку.