Організація підтримки довгих імен файлів
Розглянемо яким чином у каталозі зберігають довгі імена файлів. Є ряд підходів вирішення цієї проблеми:
· Найпростіше зарезервувати простір у кожному елементі каталогу для максимально допустимої кількості символів у імені. Такий підхід можна використати, якщо максимальна кількість символів невелика, у протилежному випадку місце на диску витрачатиметься даремно, оскільки більше частина імен не займатиме весь зарезервований простір.
· Можна зберігати довгі імена в елементах каталогу повністю, у цьому випадку довжина такого елемента не буде фіксованою. Перед кожним елементом каталогу зберігають його довжину, а кінець імені файла позначають спеціальним символом (зазвичай нульовим). Недоліки цього підходу пов’язані з тим, що через різну довжину елементів виникає зовнішня фрагментація і каталог надто великого розміру може зайняти кілька сторінок у пам’яті, тому під час перегляду такого каталогу є ризик виникнення сторінкових переривань.
· Нарешті, можна зробити всі елементи каталогу однієї довжини, при цьому кожен із них міститиме покажчик на довге ім’я. Усі довгі імена зберігатимуться окремо. Це вирішує проблему зовнішньої фрагментації для елементів каталогу, але питання про керування ділянкою зберігання довгих імен залишається відкритим.
Поряд з урахуванням кластерів, виділених для розміщення даних файла, файлові системи мають вести облік вільних кластерів. Це насамперед необхідно для того щоб розв’язати задачу виділення нових кластерів для даних. Для організації керування вільним дисковим простором найчастіше використовують два підходи:
· Бітовий масив (бітова карта кластерів), у якому кожен біт відповідає одному кластеру на диску. Якщо відповідний кластер вільний, біт дорівнює одиниці, якщо зайнятий – нулю. Головна перевага такого підходу полягає в тому, що пошук першого ненульового біта можна легко реалізувати, спираючись на апаратну підтримку.
· Зв’язний список вільних кластерів. Такий підхід найзручніше використати, коли зв’язні списки використовують і для організації розміщення файлів. Звичайно в цьому разі організують список, елементами якого є кластери адресами (номерами) вільних кластерів на диску.
Достатньо зберігати в пам’яті один елемент списку вільних кластерів або один кластер із бітовою картою. Коли вільні блоки в ньому закінчаться, зчитують наступний елемент. У разі вилучення файла, номери його кластерів додають у поточний елемент списку або поточну бітову карту. Коли м’ясця там більше немає, поточний елемент (карту) записують на диск, а в пам'яті створюють новий елемент або нову карту, куди заносять номери кластерів, для яких забракло місця.