vkernel


Una arquitectura de kernel virtual ( vkernel ) es un paradigma de virtualización del sistema operativo en el que 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 . DragonFly BSD lo utiliza en su implementación de vkernel desde DragonFly 1.7, [2] que se reveló por primera vez en septiembre de 2006 (hace 15 años) , [3] [6] ( 2006-09 )y se lanzó por primera vez en la rama estable con DragonFly 1.8 en enero de 2007 (hace 14 años) . [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] ( 2007-01 )

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 poca sobrecarga. De hecho, el núcleo 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 trasladado al espacio unikernel (siguiendo el apodo de anykernel para admitir ambos paradigmas).

El concepto de vkernel es diferente del jail de FreeBSD en que jail solo está destinado al 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]