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

Паравиртуализация


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

В принципе, этот подход должен обеспечивать более высокую надежность, чем у отдельной операционной системы, поскольку при отказе виртуальной машины, содержащей один или несколько драйверов, эта виртуальная машина может быть перезапущена, а драйверы могут быть возвращены в исходное состояние. Здесь не предпринимаются попытки вернуть драйверы в состояние, предшествующее отказу, как это делается в Nooks. Измерения производительности показывают, что накладные расходы на использование паравиртуальных машин в такой манере составляют около 3-8%.

Первые два подхода сфокусированы на повышении надежности унаследованных операционных систем. Следующие два подхода ориентированы на создание будущих надежных систем. Один из этих подходов разрушает саму суть проблемы: наличие всей операционной системы в виде одной гигантской программы, выполняемой в режиме ядра. Вместо этого в режиме ядра работает только крошечное микроядро, а остальная часть операционной системы выполняется в пользовательском режиме в виде набора полностью изолированных процессов серверов и драйверов. Этой идее почти двадцать лет, но в прошлые годы она не была полностью исследована, поскольку обеспечивала слегка худшую производительность, чем монолитное ядро. В 1980-е гг. производительность стояла на первом месте, а надежность и безопасность недооценивались. Однако времена меняются, а вместе с ними и представления людей о том, что является важным.



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