KVM架构

概述

KVM是一个内核模块,其官网描述:

“KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko.

Using KVM, one can run multiple virtual machines running unmodified Linux or Windows images. Each virtual machine has private virtualized hardware: a network card, disk, graphics adapter, etc.

KVM is open source software. The kernel component of KVM is included in mainline Linux, as of 2.6.20. The userspace component of KVM is included in mainline QEMU, as of 1.3.”

其架构如下

微内核 和 单内核

单内核指的是整个内核从整体上作为一个单独的大过程来实现 , 并且同时运行在一个单独的地址空间内。 所有的内核服务都在这样一个大的内 核空间运行 , 内核之间的通信可以简单地实现为函数洞用。 这样的设计具有简单高效的特点 但是, 如果使用单内核设计 , 每次对内核作出修改(比如增加或者删除驱动程序), 都必须重新编译源代码, 生成新的二进制文件 , 造成了使用和部署上的麻烦。

微内核并不是作为一个单独的大过程来实现的, 相反 , 内核的功能被划分成为多个独立的过程 , 每一个过程叫做一个服务器。 多个服务器程序都运行在自己的地址空间, 只有少数核心的服务器运行在特权模式下 , 服务器之间的通信采用了进程间通信机制。 独立的服务器 进程捉高系统的健壮性, 但是进程间通信由涉及内核空间和用户空间的上下文切换 , 其开销远比函数调用大得多 。

Linux采用了实用主义的设计。 为了满足性能要求 , Linux内核被设计成单内核。 但是, Linux内核同时借鉴了微内核的精华, 模块化设计以及动态装载内核模块的能力。 除了诸如 进程切换、 内存管理等核心的内核功能, 将大部分内核功能作为单独的内核模块设计并实 现 这些内核模块编译好后以单独的二进制文件的形式存在 , 内核在运行过程中 , 按照需求 动态地加载并链接进入内核空间运行。 不使用的模块还可以在运行的过程中动态卸载。这样的设计, 既保证了内核的性能, 也改进了传统单内核设计的灵活性。KYM就是以内核模块的形式存在, 为Linux内核增加了虚拟化的功能。

猜你喜欢

转载自www.cnblogs.com/kelamoyujuzhen/p/9048194.html
KvM