Розміщення файлів - студопедія

Безперервне розміщення характеризується тим, що кожен файл займає безперервну послідовність блоків.

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

Мал. 16.1 Способи розміщення файлів на диску

Безперервне розміщення має два серйозних гідності.

Інформація про розміщення файлу дуже проста і займає мало місця. Фактично досить зберігати два числа: номер початкового блоку файлу і число займаних блоків (або розмір файлу в байтах, за яким легко обчислити число блоків).

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

На жаль, недоліки безперервного розподілу ще вагоміші.

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

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

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

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

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

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

У сучасних ОС для файлових систем на магнітних дисках практично завжди використовують сегментированное розміщення. Інша річ файлові системи на дисках, призначених тільки для читання (наприклад, CD ROM). Неважко зрозуміти, що в цьому випадку недоліки безперервного розміщення не мають ніякого значення, а його гідності зберігаються.

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

Оптимальний розмір кластера або обчислюється автоматично при форматуванні диска, або задається вручну.

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

Можна зберігати всі вільні кластери як пов'язаний лінійний список, тобто на початку кожного вільного кластера зберігати номер наступного за списком. Недолік такого способу в тому, що важко пошук вільного безперервного фрагмента потрібного розміру, тому складніше оптимізувати розміщення файлів.

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

У системах з безперервним розміщенням часто кожен безперервний фрагмент диска описують так само, як файл, але відзначають його прапорцем «вільний».

Схожі статті