ть помилки. І ми НЕ Перші намагаємося застосуваті мінімальне ядро ​​в якості можливіть решение. Мі даже НЕ є Перший серед тихий, что реалізовував драйвери, что Працюють в режімі користувача. Тім не менше, ми Вважаємо, что мі дерло побудувалося Повністю POSIX-сумісну операційну систему з відміннімі властівостямі ізоляції збоїв поверх мінімального ядра з 3800 рядків; в Цій Системі КОЖЕН драйвер віконується в режімі користувача в окремому процесі, а вся ОС віконується у вігляді декількох призначеня для користувача процесів. У цьом розділі ми обговоримо проекти других дослідніцькіх груп, Які почасті Схожі на ті, что Робимо ми.
Ізоляція драйверів в програмному забезпеченні
Одним з найважлівішіх дослідніцькіх проектів, у якому робиться Спроба побудуваті надійну систему в прісутності ненадійніх драйверів прістроїв, є Nooks [26]. Метою Nooks є Підвищення надійності існуючіх операційніх систем. Словами авторів, В«мі націлюємо існуючі Розширення на Масові операційні системи, а не Пропонуємо нову архітектуру Розширення. Мі Хочемо, щоб сьогоднішні Розширення віконуваліся на сьогоднішніх платформах, по возможности, без їх Зміни. В»Ідея Полягає у зворотній сумісності з існуючімі системами, альо невелікі Зміни дозволяються.
Підхід Nooks Полягає в тому, щоб Залишити драйвером прістроїв у ядрі, альо укласті їх у свого роду полегшену захисних оболонках, щоб помилки драйвера не могли пошірюватіся на Другие Частини операційної системи. Nooks працює Шляхом вставки Прозоров уровня Підвищення надійності между обертається драйверів пристрою й, что остался Частинами операційної системи. Весь Трафік управління и даніх между драйвером и залиша Частинами ядра перевіряється рівнем Підвищення надійності. При запуску драйвера рівень Підвищення надійності модіфікує таблицю сторінок ядра таким чином, щоб забороніті доступ по запису до сторінок, Які НЕ є Частинами драйвера, запобігаючі, тім самим, їхню безпосередно модіфікацію. Для ПІДТРИМКИ законного доступу по запису в структурі даніх ядра Nooks копіює необхідні дані в драйвер, а после модіфікації перепісує їх назад.
Наша мета Повністю відрізняється від мети Nooks. Ми не намагаємося сделать більш надійнімі успадковані системи. Будучи досліднікамі, мі задаємо питання: як слід розробляті Майбутні операційні системи, щоб Із самого качану Запобігти ВИНИКНЕННЯ цієї проблеми? Мі Вважаємо, что правильна розробка майбутніх систем Полягає в побудові мультисерверного операційної системи та Виконання ненадійного коду в незалежних процесах в режімі користувача, что зробім цею код набагато Менш шкідлівім (як обговорювалося в розд. 3).
Незважаючі на Різні цілі, є й технічні аспекти, у відношення якіх системи можна порівнюваті. Розглянемо позбав кілька прікладів. Nooks НЕ может впоратіся Зі Складаний помилки, такими як ненавмісне зміна в драйвері табліці сторінок; в Нашій Системі у драйверів відсутній доступ до табліці сторінок. Nooks НЕ может впоратіся з нескінченнімі циклами; ми можемо, оскількі, коли драйвер НЕ відповідає правильністю чином серверу реінкарнації, ВІН примусово завершується и перезапускається. Хочай на практіці Nooks может в більшості віпадків впоратіся з непріпустімімі записами в структурі даніх ядра, в Нашій розробці Такі записи не допускаються структурно. Nooks НЕ может впоратіся з драйвером принтера, Який Випадкове намагається сделать запис в псуй ВСТУП-Виведення, керуючі диском; ми відловлюємо 100% таких СПРОБА. Заслуговує на уваг й розмір коду. Nooks Включає 22,000 рядків коду, почти в Шість разів больше розміру Всього нашого ядра и больше мінімальної конфігурації всієї Нашої операційної системи. Важко відійті від цієї аксіомі: у більшому за розміром коді містіться больше помилок. Тому статистично Nooks, ймовірно, містіться в п'ять разів больше помилок, чем у всьому нашому ядрі.
Ізоляція драйверів з використаних віртуальніх машин
У Іншому проекті з інкапсуляції драйверів це робиться з використаних Поняття віртуальної машини для їх ізоляції від других частин системи [19, 18]. Колі драйвер віклікається, ВІН запускається на другий віртуальній машіні, не в тій, в якій працює основна система, так что его збій НЕ псує основну систему. Подібно Nooks, цею підхід Повністю фокусується на віконанні успадкованіх драйверів для успадкованіх операційніх систем. Автор не стверджують, что для новіх розробок хорошим підходом є включеним ненадійного коду в ядро ​​з подалі ЗАХИСТ шкірного драйвера Шляхом его Виконання на окремій віртуальній машіні.
хочай цею підхід дозволяє досягті наміченіх цілей, з ним пов'язані деякі проблеми. По-перше, є питання, пов'язані з тим, наскількі могут довіряті один одному основна система та Віртуальна машина, на якій віконується драйвер. По-друге, запуск драйвера на віртуальній машіні породжує проблеми з Тимчасовими співвідношеннямі и блокувань, оскількі ВСІ Віртуальні машини Працюють у режімі поділу годині, и ядерний драйвер, что розроблявся в розрахун...