---
title: 组件原理
description: "KVM基于Linux内核部分机制实现包括CPU虚拟化，内存虚拟化和外设虚拟化及虚拟机管理等主要功能，它是支撑软件模拟硬件以及连接各个模式间转换的桥梁。KVM架构如图1所示。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/twp/kunpengcpfs_19_0007.html
sourcePath: /source/zh/kunpengcpfs/twp/kunpengcpfs_19_0007.html
indexId: 0c5eeed47c05c409d44103bdb3027e546d91b6509b7b1a7a86dd80ec68246b9051
---
# 组件原理

#### KVM

KVM基于Linux内核部分机制实现包括CPU虚拟化，内存虚拟化和外设虚拟化及虚拟机管理等主要功能，它是支撑软件模拟硬件以及连接各个模式间转换的桥梁。KVM架构如图1所示。

图1 KVM架构图

KVM作为Hypervisor运行在宿主机内核（Host OS Kernel），支持对CPU、内存、IO的模拟，对虚拟机的监测，并为QEMU提供实体支撑。

KVM的优势：

- 兼容性好。
- 内存易于管理，虚拟机就是一个进程。
- 性能相对较高，KVM与OS内核的代码资源可直接调用。
- 充分利用硬件支持的虚拟化，专注于虚拟化。
- 可扩展性好，可直接使用Linux内核提供的内存管理、多处理器支持等功能。
- 简单，目前KVM的IO虚拟化工作是借助QEMU完成的，也显著地降低了实现的工作量。


#### QEMU

QEMU是一个模拟器，为虚拟机提供运行的硬件环境。它作为进程运行在宿主机的用户态，基于KVM及内核的特性，能为Guest OS模拟出CPU、内存、IO等硬件，支撑Guest OS在进程中运行。QEMU支持全系统仿真、全虚拟化和半虚拟化模式。全系统仿真和全虚拟化是纯软件模拟，允许一个CPU构建的进程在另外一个CPU上执行，不同的是全系统仿真允许对整个系统进行仿真，包括CPU和配套的外围设备，而半虚拟化模式下QEMU和KVM配合使用，通过KVM硬件辅助虚拟化的方式模拟CPU，这种方式效率高，也是目前普遍使用的一种方式。QEMU架构如图2所示。

图2 QEMU架构图

QEMU和KVM配合使用，KVM运行在 内核态 ，完成CPU和内存模拟，而QEMU运行在用户态，负责IO设备虚拟化，并对外呈现模拟的虚拟设备，它对KVM来说，主要有三个作用：

- 通过QMP接口与上层libvirt交互。
- 虚拟设备模拟。
- 通过ioctl与下层KVM模块交互。
