
- •Практичне заняття 7
- •Введення
- •Розділи носія інформації (partitions) в unix
- •Логічна структура файлової системи і типи файлів в unix
- •Організація файлу на диску в unix на прикладі файлової системи s5fs. Поняття індексного вузла (inode)
- •Організація директорій (каталогів) в unix
- •Поняття суперблоку
- •Операції над файлами і директоріями
- •Системні виклики і команди для виконання операцій над файлами і директоріями
- •Спеціальні функції для роботи з вмістом директорій
- •Поняття про файли, що відображаються в пам'ять (memory mapped файлах). Системні виклики mmap(), munmap()
- •Аналіз, компіляція і прогін програми для створення memory mapped файлу і запису його вмісту Аналіз, компіляція і прогін програми для створення memory mapped файлу і запису його вмісту
- •Питання до захисту роботи
Організація файлу на диску в unix на прикладі файлової системи s5fs. Поняття індексного вузла (inode)
Розглянемо, як організовується на фізичному носії будь-який файл в UNIX на прикладі простої файлової системи, операційної системи System V, що вперше з'явилася у варіантах, і носячої тому назва s5fs (System V file system).
Весь дисковий простір розділу у файловій системі s5fs логічно розділяється на дві частини: заголовок розділу і логічні блоки даних. Заголовок розділу містить службову інформацію, необхідну для роботи файлової системи, і звичайно розташовується на самому початку розділу. Логічні блоки зберігають власне змістовну інформацію файлів і частину інформації про розміщення файлів на диску (тобто які логічні блоки і в якому порядку містять інформацію, записану у файл).
Для розміщення будь-якого файлу на диску використовується метод індексних вузлів (inode – від index node), про який детально розказується в лекції 12 (розділ "Методи виділення дискового простору"). Індексний вузол містить атрибути файлу і частину інформації, що залишилася, про його розміщення на диску. Необхідно, проте, відзначити, що такі типи файлів, як "зв'язок", "сокет", "пристрій", "FIFO" не займають на диску ніякого іншого місця, окрім індексного вузла (їм не виділяється логічних блоків). Все необхідне для роботи з цими типами файлів міститься в їх атрибутах.
Перерахуємо частину атрибутів файлів, що зберігаються в індексному вузлі і властивих більшості типів файлів. До таких атрибутів відносяться:
Тип файлу і права різних категорій користувачів для доступу до нього.
Ідентифікатори власника-користувача і власника-групи.
Розмір файлу в байтах (тільки для регулярних файлів, директорій і файлів типу "зв'язок").
Час останнього доступу до файлу.
Час останньої модифікації файлу.
Час останньої модифікації самого індексного вузла.
Кількість індексних вузлів в розділі є постійною величиною, визначуваною на етапі генерації файлової системи. Всі індексні вузли системи організовані у вигляді масиву, що зберігається в заголовку розділу. Кожному файлу відповідає тільки один елемент цього масиву і, навпаки, кожному непорожньому елементу цього масиву відповідає тільки один файл. Таким чином, кожний файл на диску може бути однозначно ідентифікований номером свого індексного вузла (його індексом в масиві).
На мові представлення логічної організації файлової системи у вигляді графа це означає, що кожному вузлу графа відповідає тільки один номер індексного вузла, і ніякі два вузли графа не можуть мати однакових номерів.
Треба відзначити, що властивістю унікальності номерів індексних вузлів, що ідентифікують файли, ми вже неявно користувалися при роботі з іменованими pip'ами і засобами System V IPC. Для іменованого pip'a саме номер індексного вузла, відповідного файлу з типом FIFO, є тією самою точкою прив'язки, користуючись яку, неспоріднені процеси можуть одержати дані про той, що розташовує pip'а в адресному просторі ядра і його стані і зв'язатися один з одним. Для засобів System V IPC при генерації IPC-ключа за допомогою функції ftok() насправді використовується не ім'я заданого файлу, а номер відповідного йому індексного дескриптора, який по певному алгоритму об'єднується з номером екземпляра засобу зв'язку.