Ответ на вопрос
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].
Примечания
- ↑ Release Notes for DragonFly 1.8.0 (англ.). DragonFly BSD (30 января 2007). Дата обращения: 8 апреля 2019. Архивировано 6 декабря 2024 года.
- ↑ Sascha Wildner. vkernel, vcd, vkd, vke — virtual kernel architecture (англ.). DragonFly Miscellaneous Information Manual. DragonFly BSD (8 января 2007). Архивировано 6 марта 2025 года. DragonFly On-Line Manual Pages : [англ.].
- ↑ Matthew Dillon. Cache coherency, clustering, and Kernel virtualization (англ.). DragonFly BSD (2 сентября 2006). Архивировано 9 декабря 2023 года.
- ↑ Jeremy C. Reed: Answers from Matt Dillon about DragonFly's virtual kernel (англ.). BSD Newsletter .com. Reed Media .net (10 февраля 2007). Архивировано 24 февраля 2007 года.
- ↑ Koen Vervloesem. DragonFly BSD 2.6: towards a free clustering operating system (англ.). LWN.net (21 апреля 2010). Дата обращения: 7 марта 2019. Архивировано 17 марта 2024 года.
- ↑ 1 2 3 David Chisnall. DragonFly BSD: UNIX for Clusters? (англ.). InformIT. Prentice Hall Professional (15 июня 2007). Дата обращения: 6 марта 2019. Архивировано 19 февраля 2025 года.
- ↑ Antti Kantee. CVS commit: src/sys/rump (англ.). NetBSD (5 августа 2007). — «Introduce RUMPs - Runnable Userspace Meta-Programs». Архивировано 6 декабря 2021 года.
- ↑ Jeremy Andrews. Interview: Matthew Dillon (англ.). KernelTrap (6 августа 2007). Дата обращения: 3 марта 2019. Архивировано 7 февраля 2012 года.
- ↑ 1 2 Aggelos Economopoulos. A peek at the DragonFly Virtual Kernel (part 2) (англ.). LWN.net (16 апреля 2010). Дата обращения: 8 апреля 2019. Архивировано 14 февраля 2025 года.
- ↑ Matthew Dillon. vm/vm_vmspace.c § sys_vmspace_create() (англ.). BSD Cross Reference. DragonFly BSD (2006). Архивировано 6 июля 2019 года.
- ↑ madvise, posix_madvise, mcontrol — give advice about use of memory (англ.). DragonFly System Calls Manual. DragonFly BSD. Архивировано 29 июня 2024 года. DragonFly On-Line Manual Pages : [англ.].
- ↑ kern/syscalls.master (англ.). BSD Cross Reference. DragonFly BSD. Архивировано 28 апреля 2025 года.