Vkernel

vkernel
Original author(s)Matthew Dillon
Developer(s)DragonFly BSD
Initial releaseDragonFly BSD § 1.8 (30 January 2007 (2007-01-30))[1][2]
Repositorysys/vkernel.h, dev/virtual/vkernel/, vm/vm_vmspace.c, …
Written inC
Operating systemDragonFly BSD
TypeOS-level virtualisation, virtualised userspace kernel
LicenceBSD Licence
Websitevkernel(7)

A virtual kernel architecture (vkernel) is an operating system virtualisation paradigm where kernel code can be compiled to run in the user space, for example, to ease debugging of various kernel-level components,[3][4][5] in addition to general-purpose virtualisation and compartmentalisation of system resources. It is used by DragonFly BSD in its vkernel implementation since DragonFly 1.7,[2] having been first revealed in September 2006 (2006-09),[3][6] and first released in the stable branch with DragonFly 1.8 in January 2007 (2007-01).[1][7][8][9]

The long-term goal, in addition to easing kernel development, is to make it easier to support internet-connected computer clusters without compromising local security.[3][4]

Similar concepts exist in other operating systems as well; in Linux, a similar virtualisation concept is known as user-mode Linux;[10][7] whereas in NetBSD since the summer of 2007, it has been the initial focus of the rump kernel infrastructure.[11]

The virtual kernel concept is nearly the exact opposite of the unikernel concept — with vkernel, kernel components get to run in userspace to ease kernel development and debugging, supported by a regular operating system kernel; whereas with a unikernel, userspace-level components get to run directly in kernel space for extra performance, supported by baremetal hardware or a hardware virtualisation stack. However, both vkernels and unikernels can be used for similar tasks as well, for example, to self-contain software to a virtualised environment with low overhead. In fact, NetBSD's rump kernel, originally having a focus of running kernel components in userspace, has since shifted into the unikernel space as well (going after the anykernel moniker for supporting both paradigms).

The vkernel concept is different from a FreeBSD jail in that a jail is only meant for resource isolation, and cannot be used to develop and test new kernel functionality in the userland, because each jail is sharing the same kernel.[7] (DragonFly, however, still has FreeBSD jail support as well.[7])

In DragonFly, the vkernel can be thought of as a first-class computer architecture, comparable to i386 or amd64, and, according to Matthew Dillon circa 2007, can be used as a starting point for porting DragonFly BSD to new architectures.[12]

DragonFly's vkernel is supported by the host kernel through new system calls that help manage virtual memory address space (vmspace) — vmspace_create() et al.,[3][9][13] as well as extensions to several existing system calls like mmap's madvisemcontrol.[9][14][15]

  1. ^ a b Cite error: The named reference release18 was invoked but never defined (see the help page).
  2. ^ a b Cite error: The named reference vkernel.7 was invoked but never defined (see the help page).
  3. ^ a b c d Cite error: The named reference Dillon2006 was invoked but never defined (see the help page).
  4. ^ a b Cite error: The named reference Reed2007 was invoked but never defined (see the help page).
  5. ^ Cite error: The named reference Lorch2009 was invoked but never defined (see the help page).
  6. ^ Cite error: The named reference vkernel.h was invoked but never defined (see the help page).
  7. ^ a b c d Cite error: The named reference informit-2007 was invoked but never defined (see the help page).
  8. ^ Cite error: The named reference lwn-2007-03 was invoked but never defined (see the help page).
  9. ^ a b c Cite error: The named reference lwn-2007-04 was invoked but never defined (see the help page).
  10. ^ Cite error: The named reference lwn-2010 was invoked but never defined (see the help page).
  11. ^ Cite error: The named reference RUMPs was invoked but never defined (see the help page).
  12. ^ Cite error: The named reference kerneltrap-2007 was invoked but never defined (see the help page).
  13. ^ Cite error: The named reference vmspace… was invoked but never defined (see the help page).
  14. ^ Cite error: The named reference mcontrol.2 was invoked but never defined (see the help page).
  15. ^ Cite error: The named reference syscalls.master was invoked but never defined (see the help page).

Vkernel

Dodaje.pl - Ogłoszenia lokalne