Una arquitectura de kernel virtual ( vkernel ) es un paradigma de virtualización del sistema operativo donde el código del kernel se puede compilar para ejecutarse en el espacio del usuario , por ejemplo, para facilitar la depuración de varios componentes a nivel del kernel, [3] [4] [5] además a la virtualización y compartimentación de uso general de los recursos del sistema . Es utilizado por DragonFly BSD en su implementación de vkernel desde DragonFly 1.7, [2] habiendo sido revelado por primera vez en septiembre de 2006 , [3] [6]y se lanzó por primera vez en la rama estable con DragonFly 1.8 en enero de 2007 . [1] [7] [8] [9] El objetivo a largo plazo, además de facilitar el desarrollo del kernel, es facilitar la compatibilidad con clústeres de ordenadores conectados a Internet sin comprometer la seguridad local . [3] [4] Existen conceptos similares en otros sistemas operativos también; en Linux, un concepto de virtualización similar se conoce como Linux en modo de usuario ; [10] [7] mientras que en NetBSD desde el verano de 2007, ha sido el foco inicial de la infraestructura del kernel de grupa . [11]
Autor (es) original (es) | Matthew Dillon |
---|---|
Desarrollador (es) | DragonFly BSD |
Versión inicial | DragonFly BSD § 1.8 (30 de enero de 2007 | ) [1] [2]
Repositorio | sys / vkernel.h , dev / virtual / vkernel / , vm / vm_vmspace.c ,… |
Escrito en | C |
Sistema operativo | DragonFly BSD |
Tipo | Virtualización a nivel de sistema operativo , kernel de espacio de usuario virtualizado |
Licencia | Licencia BSD |
Sitio web | vkernel (7) |
El concepto de kernel virtual es casi exactamente lo opuesto al concepto de unikernel : con vkernel , los componentes del kernel se ejecutan en el espacio de usuario para facilitar el desarrollo y la depuración del kernel, con el apoyo de un kernel de sistema operativo normal; mientras que con un unikernel , los componentes de nivel de espacio de usuario pueden ejecutarse directamente en el espacio del kernel para un rendimiento adicional, con el apoyo de hardware baremetal o una pila de virtualización de hardware. Sin embargo, tanto los vkernels como los unikernels también se pueden usar para tareas similares, por ejemplo, para autocontener el software en un entorno virtualizado con una sobrecarga baja. De hecho, el kernel trasero de NetBSD , que originalmente tenía un enfoque de ejecutar componentes del kernel en el espacio de usuario, desde entonces también se ha desplazado al espacio unikernel (siguiendo el apodo de anykernel para soportar ambos paradigmas).
El concepto de vkernel es diferente del jail de FreeBSD en que jail solo está diseñado para el aislamiento de recursos y no se puede usar para desarrollar y probar nuevas funciones del kernel en el área de usuario, porque cada jail comparte el mismo kernel. [7] (DragonFly, sin embargo, todavía tiene soporte para la cárcel de FreeBSD también. [7] )
En DragonFly, el vkernel se puede considerar como una arquitectura de computadora de primera clase , comparable a i386 o amd64 y, según Matthew Dillon alrededor de 2007, se puede utilizar como punto de partida para portar DragonFly BSD a nuevas arquitecturas. [12]
El vkernel de DragonFly es compatible con el kernel del host a través de nuevas llamadas al sistema que ayudan a administrar el espacio de direcciones de memoria virtual ( vmspace ) - vmspace_create()
et al., [3] [9] [13] así como extensiones a varias llamadas al sistema existentes como la mmap
's madvise
- mcontrol
. [9] [14] [15]
Ver también
- Linux en modo de usuario
- grano de grupa
Referencias
- ^ a b "Notas de la versión de DragonFly 1.8.0" . DragonFly BSD . 2007-01-30 . Consultado el 8 de abril de 2019 .
- ^ a b Sascha Wildner (8 de enero de 2007). "vkernel, vcd, vkd, vke - arquitectura de kernel virtual" . Manual de información miscelánea de DragonFly . DragonFly BSD . Lay resumen .
- ^ a b c d Matthew Dillon (2 de septiembre de 2006). "Coherencia de caché, agrupación en clústeres y virtualización de Kernel" . kernel @ (lista de correo). DragonFly BSD .
- ^ a b Jeremy C. Reed, ed. (10 de febrero de 2007). "Respuestas de Matt Dillon sobre el kernel virtual de DragonFly" . Boletín BSD .com . Reed Media .net. Archivado desde el original el 24 de febrero de 2007.
- ^ Daniel Lorch (10 de junio de 2009). "Portar el sistema de archivos HAMMER a Linux" (PDF) . Lay resumen (PDF) .
UML ejecuta el kernel de Linux como un proceso de espacio de usuario, análogo a los kernels virtuales de DragonFly BSD ... permite un ciclo de recompilación-reinicio rápido y se puede depurar fácilmente con gdb estándar.
- ^ Matthew Dillon (2006). "sys / vkernel.h" . Referencia cruzada BSD . DragonFly BSD .
- ^ a b c d David Chisnall (15 de junio de 2007). "DragonFly BSD: ¿UNIX para clústeres?" . InformIT . Prentice Hall Professional . Consultado el 6 de marzo de 2019 .
- ^ Aggelos Economopoulos (29 de marzo de 2010). "Un vistazo al núcleo virtual DragonFly (parte 1)" . LWN.net . Consultado el 8 de abril de 2019 .
- ^ a b c Aggelos Economopoulos (16 de abril de 2010). "Un vistazo al núcleo virtual DragonFly (parte 2)" . LWN.net . Consultado el 8 de abril de 2019 .
- ^ Koen Vervloesem (21 de abril de 2010). "DragonFly BSD 2.6: hacia un sistema operativo de agrupación libre" . LWN.net . Consultado el 7 de marzo de 2019 .
- ^ Antti Kantee (5 de agosto de 2007). "Confirmación de CVS: src / sys / rump" . source-changes @ (lista de correo). NetBSD .
Introducir RUMP: metaprogramas de espacio de usuario ejecutables
- ^ Jeremy Andrews (6 de agosto de 2007). "Entrevista: Matthew Dillon" . KernelTrap . Archivado desde el original el 7 de febrero de 2012 . Consultado el 3 de marzo de 2019 .
- ^ Matthew Dillon (2006). "vm / vm_vmspace.c § sys_vmspace_create ()" . Referencia cruzada BSD . DragonFly BSD .
- ^ "madvise, posix_madvise, mcontrol - dar consejos sobre el uso de la memoria" . Manual de llamadas del sistema DragonFly . DragonFly BSD . Lay resumen .
- ^ "kern / syscalls.master" . Referencia cruzada BSD . DragonFly BSD .
enlaces externos
- página de manual de vkernel (7)
- Los núcleos virtuales DragonFly