Операционные системы - статьи

         

Проект Nooks


К счастью, ситуация не является безнадежной. Исследователи прилагают усилия к созданию более надежных операционных систем. Авторы статьи рассматривают четыре подхода, используемые исследователями для придания будущим операционным системам более высокого уровня надежности и безопасности. Наиболее консервативным является подход проекта Nooks, направленного на повышение надежности существующих операционных систем (таких как Windows и Linux). В Nooks поддерживается монолитная структура ядра, но ядро защищается от содержащих ошибки драйверов устройств путем обертывания каждого драйвера уровнем защитного программного обеспечения. Оболочка драйвера тщательно отслеживает все взаимодействия между драйвером и ядром. Целями проекта Nooks являются защита ядра от сбоев драйверов, автоматическое восстановление после отказа драйвера и достижение всего этого путем небольших изменений в существующих драйверах и ядре. Первая реализация была выполнена для Linux, но идеи применимы и к другим унаследованным операционным системам.

Хотя эксперименты показали, что Nooks может перехватить 99% фатальных ошибок драйверов и 55% их прочих ошибок, система не является совершенной. Например, в драйверах могут выполняться привилегированные команды, которым в них выполняться не полагается; в них может производиться запись в неверные порты; в них могут возникать бесконечные циклы. Кроме того, группе Nooks пришлось вручную написать большое число оболочек драйверов, и в них самих могут содержаться ошибки. Наконец, не предотвращается полностью возможность доступа по записи ко всей памяти. Тем не менее, этот проект является потенциально полезным шагом к повышению надежности унаследованных операционных систем.

Второй подход произрастает из концепции виртуальной машины. Идея состоит в запуске на "голой" аппаратуре вместо операционной системы специальной управляющей программы, которая называется монитором виртуальной машины. Виртуальная машина создает несколько экземпляров настоящей машины. На каждом экземпляре может выполняться программное обеспечение, которое могло бы работать на физической машине. Этот метод обычно используется для одновременного выполнения на одной аппаратуре нескольких операционных систем, например, Linux и Windows.



Содержание раздела