Управління "поганими" блоками

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

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

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