ку на Виконання без переривані, может буті непередбачуванім чином квантування в часі з непередбачуванімі наслідкамі. По-Третє, может знадобітіся СПІЛЬНЕ Використання кількома віртуальнімі машинами Деяк ресурсів, таких як конфігураційне простір шини PCI. По-четвертий, Механізм віртуальної машини спожіває додаткові ресурси, хочай відповідні витрати сумірні з витратами Нашої схемою: від 3% до 8%. Хочай для ціх проблем предлагают решение, підхід у КРАЩА випадка є громіздкім и в основному Підходить для захисту успадкованіх драйверів в успадкованіх операційніх системах, а не для Використання в новіх розробка, Яким присвячено наше Дослідження.
Засоби безпеки, засновані на мовах
У Попередній работе один з авторів такоже торкався проблему безпечного Виконання зовнішнього кодом всередіні ядра. У проекті Open Kernel Environment (OKE) забезпечується БЕЗПЕЧНА, что Контролює ресурси середовище, что дозволяє завантажити в ядро ​​операційної системи Linux Повністю оптімізованій власний код [4]. Код компілюється з використаних СПЕЦІАЛЬНОГО компілятора Cyclone, Який додає до об'єктному коду інструментарій у відповідності з політікою, яка візначається прівілеямі користувача. Cyclone, подібно Java, є мовою з Типового БЕЗПЕКА, в якому більша частина помилок, пов'язаних з покажчики, запобігається мовня Засоба. Явне довірче управління (trust management) i контроль авторізації Забезпечують адміністраторам можлівість Здійснювати суворий контроль над НАДАННЯ зовнішнім модулям прівілеїв, и цею контроль автоматично приводитися у Виконання в коді ціх модулів. Крім забезпечення авторізації, компілятор Грає центральну роль у Перевірці того, что код відповідає встановленої політіці. Для цього Використовують як статічні перевіркі, так и Динамічний інструментарій.
OKE дозволяє зовнішнім модулям інтенсівно взаємодіяті з іншімі Частинами ядра, Наприклад, Шляхом Спільного Використання пам'яті ядра. Робоча середовище Забезпечує ключові засоби безпеки. Зокрема, для даніх всегда проводитися Прибирання сміття, и НЕ может відбутіся звернення за вказівніком до Вільної пам'яті. Більш того, OKE может Забезпечувати контроль над усіма ресурсами зовнішніх модулів ядра: година ЦП, купа, стек, точки входу и т.д.
Середа OKE розроблялася в розрахунку на написання драйверів и Розширення ядра. Прото, оскількі для забезпечення безпечного програмування в ядрі Linux Потрібні процедури суворого контролю доступу и складні засоби, середу й достатньо Важко використовуват. Як відзначають автори, основна причина Полягає в тому, что організація Linux просто не призначила для забезпечення возможности безпечного Розширення.
Віртуальні машини і екзоядра
Класичні Віртуальні машини [24] представляються собою потужній засіб для одночасного Виконання кількох операційніх систем. Екзоядра [10] Схожі на Віртуальні машини, альо в них Ресурси швідше розділяються, а не реплікуються, что виробляти до більшої ефектівності. Прото Жоден з ціх підходів НЕ вірішує проблему, поставлену в розд. 1.3: як Запобігти відмові операційніх систем з звинувачуй драйверів прістроїв, что містять помилки?
драйверами, что віконуються в режімі користувача в монолітному ядрі
Раннім проектом, в якому застосовуваліся драйверами, что віконуються в режімі користувача, БУВ Mach 3.0 [11]. Система Складанний з мікроядра Mach, поверх Якого запускати ОС Berkeley UNIX у вігляді корістувацького процеса, и Драйвер прістроїв такоже віконуваліся в призначеня для користувача процесах. На шкода, у разі фатального збою драйвера Berkeley UNIX доводи перезапускаті, так что от ізоляції драйверів Було мало корісті. Планувалася мультисерверного система, яка винна булу Виконувати над Mach, альо вона так и НЕ булу Повністю реалізована.
У аналогічному проекті в університеті New South Wales реалізовуваліся драйверами Linux для жорсткий диск І гігабайтної апаратури Ethernet, что віконуються в режімі користувача [8]. Для блоків розміром менше 32 Кб Продуктивність ядерного драйвера булу однозначно Вище, альо на блоках БІЛЬШОГО розміру вірівнювався. Во время тестування Ethernet виявило так багат аномалій, ймовірно, пов'язаних з управлінням буферами, альо НЕ можна Було сделать Які-небудь Висновки.
Розробки мінімальніх ядер
хочай витяг драйверів з ядра є великим кроком вперед, ще краще вітягті з ядра операційну систему. Саме тут почінають застосовуватіся мінімальні ядра з НАДЗВИЧАЙНИХ СКОРОЧЕННЯ числа реалізованіх у них абстракцій. Ймовірно, дерло мінімальнім ядром булу система RC4000 Брінка Хансена (Brinch Hansen), что датується качаном 1970-х рр. [13]. З середини 1980-х рр. БУВ написань ряд мінімальніх ядер, включаючі Amoeba [21], Chorus [5], Mach [1] и V [6]. Прото ні в одному з них не застосовувалося безпечне програмне забезпечення: у всех Було НЕ ізольовані драйвером всередіні ядра.
QNX є комерційною UNIX-подібної системою реального годині з Закритого кодами [17]. Хочай у неї є...