Каталоги

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

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

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

1. Вибирає індексний дескриптор біжучої директорії. Цей дескриптор міститься в контексті процесу.

2. За допомогою інформації, що зберігається в цьому дескрипторі, виконується пошук в біжучому каталозі імені ‘. .’ і отримується номер його індексного дескриптора.

3. Система вибирає індексний дескриптор ‘. .’.

4. За допомогою інформації, що зберігається в дескрипторі ‘. .’, виконується пошук в батьківському каталозі файлу ’а’ і отримуємо номер.

5. Система вибирає індексний дескриптор ’а’.

6. За допомогою інформації, що зберігається в дескрипторі ’а’, виконується пошук в каталозі ’а’ файла з іменем ’в’ і отримується номер його індексного дескриптора.

7. Вибирається індексний дескриптор файлу ’в’.

8. Система звертається до файлу ’в’.

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

Таким чином на диску зберігаються структури, що утворюють скелет файлової системи. До них відносяться: – суперблок; – індексний дескриптор; – каталоги файлів; ‑ звичайні і спеціальні файли. В нормальних умовах з ними працює ядро, а при необхідності відновлення файлової системи – програми fsck та fsdb.

Розглянемо структури, що зберігаються в основній пам’яті, які забезпечують ядру доступ до файлової системи.

 

 

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

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