Vkernel

vkernel — парадигма виртуализации операционной системы, в которой код ядра компилируется для выполнения в пользовательском пространстве, что, в частности, облегчает отладку компонентов ядра, а также реализует функции общей виртуализации и изоляции ресурсов системы. Данная концепция используется в системе DragonFly BSD начиная с ветки 1.7, впервые представленной в сентябре 2006 года и официально выпущенной в стабильной ветке с DragonFly BSD 1.8 в январе 2007 года[1][2].

Общие сведения
vkernel
Тип виртуализация на уровне ОС, виртуализированное пространство ядра
Автор Мэттью Диллон
Разработчик DragonFly BSD
Написана на C
Операционная система DragonFly BSD
Первый выпуск 30 января 2007
Репозиторий http://bxr.su/d/sys/dev/virtual/vkernel/, http://bxr.su/d/sys/vm/vm_vmspace.c
Лицензия BSD
Сайт mdoc.su/d/vkernel.7

Функционал

Долгосрочной целью развития vkernel, помимо упрощения разработки ядра, является обеспечение поддержки интернет-связанных кластеров без ущерба для локальной безопасности[3][4].

Похожие подходы реализованы и в других операционных системах: в Linux аналогичной концепцией виртуализации является user-mode Linux[5][6], а в NetBSD с лета 2007 года изначальным направлением инфраструктуры стал rump kernel[7].

Концепция

Virtual kernel практически противоположна подходу unikernel: в vkernel компоненты ядра выполняются в пользовательском пространстве для облегчения разработки и отладки, поддерживаемые обычным ядром ОС, тогда как в unikernel компоненты уровня user space работают непосредственно в режиме ядра ради повышения производительности, напрямую на «железе» или виртуализационной платформе. Тем не менее обе технологии позволяют создавать изолированные и виртуализированные среды с минимальными накладными расходами. Вместе с тем rump kernel в NetBSD, изначально предназначенный для запуска компонентов ядра в user space, впоследствии переключился и на нишу unikernel («anykernel»-подход для поддержки обоих стилей).

Принцип vkernel отличается от FreeBSD jail: jail обеспечивает только изоляцию ресурсов и не позволяет проводить разработку или тестирование новых возможностей ядра в пользовательском пространстве, поскольку все jail-разделы используют общее ядро[6]. Тем не менее в DragonFly BSD поддержка jail также реализована[6].

В DragonFly BSD vkernel позиционируется как полноценная вычислительная архитектура, сравнимая с i386 или amd64, и может быть использована для портирования DragonFly BSD на новые аппаратные архитектуры[8].

Поддержка vkernel в DragonFly осуществляется через специализированные системные вызовы, предназначенные для управления виртуальным адресным пространством (vmspace, например vmspace_create() и др.)[9][10], а также расширения к существующим вызовам, таким как mmap и madvise (например, mcontrol)[9][11][12].

Примечания