Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1.docx
Скачиваний:
21
Добавлен:
12.02.2016
Размер:
1.06 Mб
Скачать

Керування файловою системою

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

Керування дисковим простором

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

Розмір блоку

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

Тепер розглянемо ефективність використання дискового простору. Втрати при використанні файлів розміром 4 Кбайт і блоків розміром 1, 2 або 4 Кбайт практично відсутні. При блоках по 8 Кбайт і файлах по 4 Кбайт ефективність використання дискового простору падає до 50%, а при блоках по 16 Кбайт - до 25%. У реальності точно потрапляють в кратність розміру дискових блоків лише кілька файлів, тому втрати простору в останньому блоці файлу бувають завжди.

Відслідковування вільних блоків

Після вибору розміру блоку виникає питання відслідковування вільних блоків. Найбільш широко використовуються два методи.

Перший метод полягає у використанні зв'язаного списку дискових блоків, при цьому в кожному блоці списку міститься стільки номерів вільних дискових блоків, скільки в нього може поміститися. При блоках розміром 1 Кбайт і 32-розрядному номері дискового блоку кожен блок в списку вільних блоків може зберігати номери 255 вільних блоків. (Одне слово необхідно під покажчик на наступний блок.) Розглянемо диск ємністю 500 Гбайт, що має близько 488 млн дискових блоків. Для зберігання всіх цих адрес по 255 на блок необхідно близько 1,9 млн. блоків.

Якщо ми маємо безперервні послідовності вільних блоків, система, що використовує список вільних блоків, може бути модифікована на відстеження послідовності блоків, а не окремих блоків. З кожним блоком, що дає номер послідовних вільних блоків, може бути пов'язаний 8-, 16- або 32-розрядний лічильник.

Інша технологія управління вільним дисковим простором базується на використанні бітового масиву. Для диску, що має n блоків, потрібно бітовий масив, що складається з n біт. Вільні блоки представлені в масиві у вигляді одиниць, а розподілені - у вигляді нулів (або навпаки). У нашому прикладі з диском в 500 Гбайт, масиву необхідно мати 488 млн бітів, для зберігання яких потрібно трохи менше 60000 блоків, що мають розмір 1 Кбайт кожен. Додаткова перевага такого підходу полягає в тому, що при здійсненні всіх розподілів з одного блоку бітового масиву дискові блоки будуть знаходиться близько один до одного, зводячи до мінімуму переміщення блоку головок. Оскільки бітовий масив відноситься до структур даних з фіксованим розміром, якщо ядро частково розбите на сторінки, бітова карта може бути розміщена в віртуальної пам'яті і мати сторінки, що завантажуються в міру їх необхідності.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]