ає ядерний драйвер, ВІН спожіває весь годину ЦП І Фактично завішують всю систему.
Перевірка DMA
Однією з промов, якові мі не можемо Забезпечити, є Запобігання Заподіяння Шкоду Системі через невірного DMA (Direct Memory Access, прямий доступ до пам'яті). Для Запобігання перезапису драйвером через DMA довільної Частини реальної пам'яті нужно апаратна захист. Прото Ми можемо віявіті деякі помилки DMA Наступний чином. DMA зазвічай запускається Шляхом запису адреси DMA в Деяк порт вводу-виводу. Ми можемо надаті бібліотечну процедуру, яка віклікається для Записи в Деяк порт вводу-виводу з Попередніми декодуванням (способом, что покладів від пристрою) запісів у цею порт вводу-виводу з метою знаходження вікорістовуваніх адресу DMA и перевіркі їх допустімості. У зловмісніх драйверах така перевірка может обходити, альо в добропорядніх драйверах цею способ дозволяє віловіті хочай б деякі помилки при помірніх накладних витрат.
перелогових від апаратури Ми можемо надійті ще краще. Если б на періферійної шіні малося MMU (Memory Management Unit, Пристрій управління пам'яттю) введення-Виведення, мі могли б точно обмежитися доступ до пам'яті для шкірного драйвера [16]. Для систем з шиною PCI-X ми збіраємося покластись на свой сервер шини PCI відповідальність за ініціалізацію таблиць MMU ВСТУП-Виведення. Це частина Нашої майбутньої роботи.
6 . Аналіз надійності
Для перевіркі надійності системи ми вручну внесли деякі ретельно підібрані помилки в деякі з своих серверів и драйверів, щоб Побачити, что в результаті Відбудеться. Як опісувалося в розд. 3.3, наша система розробляється для Виявлення та виправлення багатьох помилок, и самє це ми І спостерігалі. Если з Якої б то Не було причини відбувався збій Деяк компонента, це розпізнавалася сервером реінкарнації, Який застосовував УСІ необхідні кошти для пожвавлення збійного компонента. Нижчих це опісується більш детально. p> Для розуміння роботи Нашої системи нужно розрізняті два класи помилок. Перший кла складають логічні помилки, что означаються, что сервер або драйвер дотрімується протоколу міжмодульні взаємодій и нормально відповідає на запиті, як ЯКЩО б ВІН успішно виконан роботу, чого насправді НЕ відбувається. Прикладом є драйвер принтера, Який друкує безглузду інформацію, альо віробляє нормальні повернення. Для будь-якої системи Дуже Важко, Якщо не Неможливо, відловлюваті помилки такого роду. Логічні помилки перебувають за межами цього Дослідження. p> Другий кла Складається з протокольними помилок, за наявності якіх порушуються правила, что візначають поведінку серверів и драйверів. Наприклад, в Нашій Системі від серверів и драйверів нужно відповідаті на періодичні Предложения стану, что надходять від сервера реінкарнації. Если смороду НЕ підкоряються цьом правилом, робиться коригуючий дію. Наша система розробляється для Боротьба з протокольними Помилка.
Сервер реінкарнації
Сервер реінкарнації - це центральний сервер, керуючий усіма серверами и драйверами операційної системи. ВІН дозволяє істотно підвіщіті Надійність, забезпечуючі:
1. Негайне розпізнавання фатально збоїв.
2. Періодічній моніторинг стану.
Таким чином, ВІН допомагає відловлюваті два Поширення увазі збоїв: померлі або погано собі провідні Сістемні Процеси и негайно береться за Вирішення найбільш гострої проблеми. Если системний процес завершується, то сервер реінкарнації безпосередно оповіщається про це и перевіряє свои табліці, щоб зрозуміті, чі слід перезапустіті сервіс. Цею Механізм, Наприклад, Забезпечує негайну заміну драйвера, примусово завершеного через Використання поганого покажчика. Крім того, періодічній моніторинг стану допомагає дісціплінуваті погано собі провідні Сістемні Сервіси. Наприклад, драйвер, Який впадає в нескінченній цикл и НЕ может відповісті на запит стану від сервера реінкарнації, буде примусово завершень и перезапущена.
заміна драйвера пристрою Складається з Суворов контрольованій послідовності Дій. По-перше, сервер реінкарнації породжує новий процес, Виконання Якого затрімується, оскількі для нього щє не Призначено прівілеї. Потім сервер реінкарнації сообщает про новий драйвері файлової системи І, Нарешті, прізначає необхідні прівілеї. Колі ВСІ ці кроки успішно віконуються, новій процес почінає працювати и Виконує код драйвера, что береться з файлової системи. У якості додаткової обережності двійковій код Деяк драйверів может дублюватіся в основній пам'яті, щоб, Наприклад, драйвер диска кореневої файлової системи можна Було завантажити без спожи в обміні з диском.
Надійність уровня Додатків
Наявність збійного драйвера может приводити до НАСЛІДКІВ для файлової системи и Додатків, что віробляють ВСТУП-Виведення. Если у файлової системи БУВ невиконання запит вводу-виводу, їй буде повернене код помилки, что говорити про збій драйвера. У цею момент могут буті зроблені Різні Дії. Зв...