Загальна структура файлової системи

Система зберігання даних на дисках може бути структурована таким чином (див. мал. 12.1).

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

Безпосередньо з пристроями (дисками) взаємодіє частина ОС, звана системою введення-виводу (див. лекцію 13). Система введення-виводу надає в розпорядження більш високорівневого компоненту ОС - файлової системи - використовуваний дисковий простір у вигляді безперервної послідовності блоків фіксованого розміру. Система введення-виводу має справу з фізичними блоками диска, які характеризуються адресою, наприклад диск 2, циліндр 75, сектор 11. Файлова система має справу з логічними блоками, кожен з яких має номер (від 0 або 1 до N). Розмір логічних блоків файлу збігається або є кратним розміру фізичного блоку диска і може бути заданий рівним розміру сторінки віртуальної пам'яті, підтримуваною апаратурою комп'ютера спільно з операційною системою.

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

Стандартний запит на відкриття (open) або створення (create) файлу поступає від прикладної програми до логічної підсистеми. Логічна підсистема, використовуючи структуру директорій, перевіряє права доступу і викликає базову підсистему для діставання доступу до блоків файлу. Після цього файл вважається за відкритий, він міститься в таблиці відкритих файлів, і прикладна програма отримує в своє розпорядження дескриптор (або handle в системах Microsoft) цього файлу. Дескриптор файлу є посиланням на файл в таблиці відкритих файлів і використовується в запитах прикладної програми на читання-запис з цього файлу. Запис в таблиці відкритих файлів указує через систему виділення блоків диска на блоки даного файлу. Якщо до моменту відкриття файл вже використовується іншим процесом, тобто міститься в таблиці відкритих файлів, то після перевірки прав доступу до файлу може бути організований сумісний доступ. При цьому новому процесу також повертається дескриптор - посилання на файл в таблиці відкритих файлів. Далі в тексті детально проаналізована робота найбільш важливих системних викликів.

Рис. 14.1. Блок-схема файлової системи