Фрагментация паравиртуализированного ядра L4Linux

Исследовательские микроядерные проекты, такие как Fiasco.OC, NOVA, L4Re, SEL4 и другие, развиваются в парадигмах отличных от идеологии Unix Everything is File. Например, микроядро Fiasco.OC построено по идеологии Everything is Object. Как следствие, эти проекты несовместимы с популярными Linux/Unix программами, а отсутствие совместимости с POSIX стандартом усложняет процесс переноса прикладного ПО в микроядерную среду.

Для исполнения уже существующего ПО в микроядерном окружении были разработаны различные инструменты виртуализации, в частности паравиртуализированное ядро Linux, называемое L4Linux. Это ядро исполняется в пространстве пользователя и предоставляет обычный интерфейс системных вызовов Linux, что позволяет использовать обычные двоичные программы Linux в микроядерном окружении. Такой подход позволяет получить высокопроизводительную среду двоично совместимую с Linux, не требующую перекомпиляции программ для работы в микроядерном окружении.

Слабой стороной такого подхода является то, что паравиртуализированное ядро существует в однородном адресном пространстве, то есть все компоненты ядра Linux по прежнему используют общую адресацию, общее пространство имен и т.д. Исполнение в пространстве пользователя ограничивает влияние этих компонент ядра на остальные программы окружения, но не защищает одни компоненты L4Linux от других.

В рамках этого проекта мы ставим перед собой задачу фрагментации паравиртаулизированного ядра L4Linux. Мы хотим прозрачно разделить компоненты L4Linux по раздельным адресным пространствам, соединив их между собой при помощи вызовов окружения микроядра.