KVM系统架构和原理
kvm 原理

kvm 原理KVM原理是指Kernel-based Virtual Machine(基于内核的虚拟机)的原理,它是一种开源的虚拟化技术,能够将一个物理计算机分割成多个虚拟机,每个虚拟机都可以运行自己的操作系统,应用程序和用户空间。
KVM的实现原理是通过Linux内核中的虚拟化架构KVM(Kernel-based Virtual Machine)来实现的。
KVM利用硬件虚拟化技术(Intel VT-x或AMD-V)来实现虚拟化,这使得KVM相对于其他虚拟化技术来说更加高效和安全。
KVM的原理是利用虚拟化技术将物理计算机划分为多个虚拟机,每个虚拟机都具有独立的操作系统、硬件、网络和存储资源。
KVM通过将虚拟化层直接嵌入到Linux内核中来提高性能和安全性。
这意味着KVM是一个基于内核的虚拟化技术,与其他虚拟化技术相比,KVM更加高效和安全。
KVM的核心是一个内核模块,它允许Linux内核作为虚拟化层来管理虚拟机。
KVM利用Linux内核的硬件虚拟化支持(例如Intel VT-x或AMD-V)来创建虚拟化环境。
KVM使用QEMU作为默认的虚拟机管理程序,它可以模拟多种硬件设备,包括网络适配器、磁盘控制器和显示适配器。
KVM的虚拟化技术提供了一种安全和高效的虚拟化解决方案。
它允许用户在不影响物理机性能的情况下运行多个虚拟机。
KVM的虚拟化技术还具有高度可扩展性,可以在需要时轻松地添加或删除虚拟机,从而满足不同的业务需求。
KVM的虚拟化技术是一种高效、安全、可扩展的虚拟化解决方案,它使用硬件虚拟化技术来创建多个独立的虚拟机,每个虚拟机都可以运行自己的操作系统、应用程序和用户空间。
KVM的核心是一个内核模块,它允许Linux内核作为虚拟化层来管理虚拟机。
KVM的工作原理

KVM的工作原理KVM(Kernel-based Virtual Machine)是一种开源的虚拟化技术,它允许在一台物理主机上运行多个虚拟机。
KVM的工作原理可以分为三个主要方面:硬件虚拟化支持、内核模块和用户空间工具。
1. 硬件虚拟化支持:KVM利用现代处理器的硬件虚拟化技术(如Intel的VT-x和AMD的AMD-V)来提供虚拟化的基础。
这些技术允许虚拟机在物理主机上直接运行,并提供了对虚拟机的隔离和保护。
硬件虚拟化支持包括虚拟化扩展、虚拟I/O设备和内存管理。
2. 内核模块:KVM是一个内核模块,它与Linux内核紧密集成。
当KVM模块加载到内核中时,它将Linux内核转变为一个虚拟化管理程序。
KVM通过使用虚拟CPU (vCPU)和虚拟内存管理单元(MMU)来为每个虚拟机提供运行环境。
KVM还负责处理虚拟机的调度、内存管理和设备模拟等任务。
3. 用户空间工具:KVM提供了一组用户空间工具,用于管理和配置虚拟机。
其中最重要的工具是QEMU(Quick EMUlator),它是一个开源的虚拟机监控程序。
QEMU提供了虚拟机的设备模拟、磁盘和网络的管理等功能。
除了QEMU,KVM还提供了一些命令行工具(如kvm、kvm_stat和kvm_host)和图形界面工具(如virt-manager和virt-viewer)。
KVM的工作流程如下:1. 用户通过管理工具(如virt-manager)创建虚拟机配置文件,并指定虚拟机的硬件配置、磁盘映像和网络设置等。
2. KVM模块加载到Linux内核中,并创建一个虚拟化环境。
3. 当用户启动虚拟机时,KVM模块会为虚拟机创建一个vCPU,并将虚拟机的代码和数据加载到虚拟内存中。
4. 虚拟机的代码在vCPU上运行,并通过KVM模块与物理主机的硬件进行交互。
KVM模块负责将虚拟机的指令翻译为物理主机的指令,并将虚拟机的内存访问映射到物理主机的内存。
5. 虚拟机的设备模拟由QEMU负责。
KVM的工作原理

KVM的工作原理KVM是Kernel-based Virtual Machine的缩写,是一种开源的虚拟化技术,允许将Linux内核转变为一个Hypervisor,从而在一台物理服务器上运行多个虚拟机。
KVM结合了QEMU(Quick Emulator)和Linux内核的功能,提供了高性能的虚拟化解决方案。
1.KVM模块加载:当系统启动时,KVM模块会被加载到内核中。
KVM模块包含了一系列的虚拟化基础设施,用于管理虚拟机的创建、销毁、调度等操作。
2. 虚拟机创建:当用户需要创建一个虚拟机时,KVM会通过调用QEMU启动一个新的进程来模拟虚拟机的硬件和设备。
在这个过程中,KVM会利用Linux内核中的相关功能,例如虚拟地址空间管理、设备驱动等。
3. 硬件虚拟化:KVM利用硬件虚拟化扩展(Intel VT-x和AMD-V)来提高虚拟机的性能。
硬件虚拟化扩展允许虚拟机直接访问物理硬件资源,减少了虚拟机和宿主机之间的中间层次。
4. CPU调度:KVM使用Linux内核的调度器来管理虚拟机的CPU资源分配,确保虚拟机能够公平地分享物理CPU的计算能力。
KVM也支持CPU热插拔功能,可以动态调整虚拟机的CPU个数。
5. 内存管理:KVM通过使用Linux内核的虚拟内存管理系统,将虚拟机的内存映射到物理内存中。
KVM还支持内存热插拔功能,虚拟机可以根据需要增加或减少内存容量。
6. I/O虚拟化:KVM利用QEMU的设备模拟功能来模拟虚拟机的硬件设备,例如虚拟网卡、虚拟存储等。
同时,KVM也支持通过Hypervisor的直通技术将物理设备直接分配给虚拟机,提高I/O性能。
7. 网络通信:KVM支持虚拟机之间和虚拟机与宿主机之间的网络通信。
通过Linux内核的网络堆栈,虚拟机可以与外部网络通信,获取外部服务。
8. 虚拟机的迁移:KVM支持虚拟机的迁移(migration)功能,可以将虚拟机从一台物理机迁移到另一台物理机上,而不中断虚拟机的运行。
KVM的工作原理

KVM的工作原理KVM(Kernel-based Virtual Machine)是一种基于内核的虚拟化技术,它允许在一台物理主机上同时运行多个虚拟机。
KVM的工作原理涉及到虚拟化技术、硬件支持以及内核模块等方面。
虚拟化技术是指通过软件或者硬件实现在一台物理主机上运行多个虚拟机的技术。
KVM基于硬件虚拟化扩展(Intel VT或者AMD-V)来实现虚拟化。
这些硬件扩展提供了虚拟机监视器(VMM)所需的特权级别和权限控制,使得虚拟机可以在一个隔离的环境中运行。
KVM的工作原理如下:1. 硬件支持:KVM依赖于硬件虚拟化扩展,如Intel VT或者AMD-V。
这些扩展提供了虚拟化所需的特权级别和权限控制,使得虚拟机可以在一个隔离的环境中运行。
2. 内核模块加载:在物理主机上启动KVM之前,需要加载KVM内核模块。
这个内核模块提供了虚拟化所需的核心功能,包括虚拟机管理、设备摹拟和内存管理等。
3. 虚拟机创建:一旦KVM内核模块加载成功,用户可以通过管理工具(如libvirt或者virt-manager)创建虚拟机。
虚拟机可以使用不同的操作系统和应用程序,就像在独立的物理主机上一样。
4. 虚拟机运行:当虚拟机启动时,KVM内核模块会将虚拟机的运行环境隔离起来,使其独立于物理主机和其他虚拟机。
KVM利用硬件虚拟化扩展提供的特权级别和权限控制,确保虚拟机之间的安全隔离。
5. 设备摹拟:KVM通过设备摹拟来提供虚拟机对物理设备的访问。
它可以摹拟各种设备,如磁盘、网络和图形设备等。
虚拟机可以通过这些摹拟设备与外部世界进行通信。
6. 内存管理:KVM使用内存管理单元(MMU)来管理虚拟机的内存访问。
它将虚拟机的虚拟地址映射到物理地址,以确保虚拟机可以正常访问内存。
7. 调度和资源管理:KVM通过调度器来管理虚拟机的运行。
调度器负责分配物理资源,如处理器时间和内存空间,以确保虚拟机的正常运行。
总结起来,KVM的工作原理包括硬件支持、内核模块加载、虚拟机创建、虚拟机运行、设备摹拟、内存管理以及调度和资源管理等方面。
kvm虚拟化工作原理

kvm虚拟化工作原理KVM虚拟化工作原理KVM是一种开源的虚拟化技术,它是Linux内核中自带的一种虚拟化模块。
KVM全称为Kernel-based Virtual Machine,即基于内核的虚拟机。
它可以将物理服务器划分为多个独立的虚拟机,每个虚拟机都可以运行不同的操作系统和应用程序。
本文将详细介绍KVM虚拟化工作原理。
1. KVM架构KVM架构主要由三部分组成:Linux内核、QEMU和libvirt。
其中,Linux内核提供了硬件抽象层和CPU虚拟化技术,QEMU提供了设备模型和磁盘映像管理等功能,libvirt则是一个高级API,用于管理虚拟机生命周期、配置和监控等。
2. KVM CPU虚拟化CPU虚拟化是KVM最重要的部分之一。
在CPU虚拟化中,KVM利用了Intel VT或AMD-V等硬件扩展来实现对CPU资源的管理。
这些硬件扩展提供了一种称为“硬件辅助的虚拟化技术”,使得操作系统可以在不知道自己被虚拟化的情况下运行。
具体来说,在CPU虚拟化中,KVM将每个虚拟机视为一个独立的进程,并为其分配一组虚拟CPU。
当虚拟机运行时,KVM会将虚拟CPU指令转换为物理CPU指令,并利用硬件扩展提供的特殊指令来实现对CPU资源的隔离和管理。
这样,每个虚拟机就可以像运行在物理服务器上一样运行。
3. KVM设备模型KVM设备模型是QEMU的一部分,它提供了对各种设备(如磁盘、网卡、USB等)的模拟和管理。
在设备模型中,每个虚拟机都被视为一个独立的计算机系统,具有自己的设备树和驱动程序。
具体来说,在设备模型中,QEMU会模拟各种硬件设备,并将其映射到虚拟机中。
例如,在磁盘映像管理中,QEMU会将虚拟机硬盘映像文件与物理服务器上的实际磁盘进行关联,并通过驱动程序来实现数据读写等操作。
4. KVM网络管理KVM网络管理是指对虚拟网络进行配置和管理。
在KVM中,每个虚拟机都可以配置多个网络接口,并且可以使用不同类型的网络连接方式(如桥接、NAT等)。
KVM的工作原理

KVM的工作原理标题:KVM的工作原理引言概述:KVM(Kernel-based Virtual Machine)是一种基于Linux内核的虚拟化技术,可以在同一台物理服务器上运行多个虚拟机。
KVM的工作原理是通过将Linux内核转变为一个虚拟化的hypervisor,实现虚拟机的创建、管理和运行。
本文将详细介绍KVM的工作原理。
一、硬件虚拟化1.1 CPU虚拟化:KVM利用CPU的虚拟化技术,如Intel VT-x和AMD-V,将物理CPU转换为虚拟CPU,实现虚拟机对物理CPU的访问。
1.2 内存虚拟化:KVM通过内存管理单元(MMU)将虚拟机的内存地址映射到物理内存地址,实现虚拟机对内存的访问。
1.3 I/O虚拟化:KVM通过QEMU等工具摹拟各种硬件设备,如网卡、磁盘等,实现虚拟机对硬件设备的访问。
二、虚拟机管理2.1 虚拟机创建:KVM通过调用Linux内核提供的虚拟化接口,创建一个虚拟机实例,并为其分配CPU、内存等资源。
2.2 虚拟机启动:KVM将虚拟机的镜像加载到内存中,并启动虚拟机的操作系统,实现虚拟机的运行。
2.3 虚拟机迁移:KVM支持虚拟机的迁移,可以将虚拟机从一台物理服务器迁移到另一台物理服务器,实现负载均衡和故障恢复。
三、内核模块3.1 KVM模块:KVM是一个内核模块,通过加载KVM模块到Linux内核中,实现对虚拟化硬件的访问和管理。
3.2 KVM模块参数:KVM提供了一些参数供用户配置虚拟机的资源,如CPU 数量、内存大小等。
3.3 KVM模块接口:KVM提供了一些接口供用户管理虚拟机,如创建虚拟机、启动虚拟机等。
四、虚拟化技术4.1 彻底虚拟化:KVM通过彻底虚拟化技术实现虚拟机对硬件的访问,可以运行未修改的操作系统。
4.2 半虚拟化:KVM还支持半虚拟化技术,通过修改虚拟机的操作系统,提高虚拟机的性能和效率。
4.3 硬件辅助虚拟化:KVM利用CPU的虚拟化指令集,加速虚拟机的运行,提高性能和效率。
kvm基本原理及架构

kvm基本原理及架构KVM是一种开源的基于硬件虚拟化技术的虚拟机监控器(hypervisor),可运行多个独立的虚拟机。
KVM的基本原理是将Linux内核转变为虚拟机监控器,通过虚拟化扩展处理器的硬件虚拟化技术(如Intel VT或AMD-V),将物理服务器的计算资源(CPU、内存、存储)划分为多个虚拟化的独立实例。
KVM的架构包含三个主要组件: KVM内核模块、QEMU(其中包含一个虚拟机管理进程)和用户空间工具。
KVM内核模块是Linux内核的一个内核模块,用于提供对虚拟化硬件扩展的支持。
QEMU是一个用于模拟和管理虚拟机的开源模拟器,它与KVM配合使用,提供了对虚拟机的管理、输入输出设备的模拟和磁盘镜像的创建等功能。
用户空间工具包括用于创建、配置和管理虚拟机的用户空间命令行工具和图形界面工具。
KVM的工作过程如下:首先,KVM内核模块加载到Linux内核中,并识别物理服务器上的可虚拟化资源。
然后,用户通过用户空间工具创建一个虚拟机实例,并配置虚拟机的资源需求,如CPU核心数、内存大小等。
虚拟机实例的配置信息存储在一个配置文件中。
当用户启动虚拟机实例时,QEMU创建一个虚拟机管理进程,并将虚拟机配置文件加载到内存中。
然后,QEMU启动一个新的线程,该线程充当虚拟机的虚拟化管理程序,处理虚拟机的运行状态和与物理硬件的交互。
对于每个虚拟CPU,KVM内核模块将其映射到物理CPU上的一个或多个硬件线程。
对于虚拟机的输入输出设备,QEMU模拟了一系列的设备,包括显示适配器、网络适配器、磁盘控制器等。
虚拟机实例通过这些模拟设备进行输入输出操作。
在虚拟机运行时,KVM内核模块负责管理虚拟CPU的调度、内存的分配与访问,以及虚拟机和物理服务器之间的数据交换。
由于KVM将硬件虚拟化技术与Linux内核相结合,虚拟化层与虚拟机之间的性能开销较小,可以实现接近原生性能的虚拟化。
总的来说,KVM利用Linux内核的虚拟化扩展技术,通过KVM内核模块和QEMU的配合,实现了对硬件资源的虚拟化,提供了高性能和灵活性的虚拟化解决方案。
KVM的工作原理

KVM的工作原理KVM(Kernel-based Virtual Machine)是一种基于内核的虚拟化技术,它允许在一台物理计算机上同时运行多个虚拟机。
KVM利用Linux内核的虚拟化功能,将物理计算机转变为一个虚拟化主机,每一个虚拟机都可以独立运行自己的操作系统和应用程序。
KVM的工作原理可以分为以下几个步骤:1. 硬件虚拟化支持:KVM依赖于CPU的虚拟化扩展,如Intel的VT-x和AMD的AMD-V。
这些扩展提供了硬件级别的虚拟化支持,使得KVM可以更高效地运行虚拟机。
2. KVM模块加载:在Linux内核中,KVM以模块的形式存在。
当KVM模块被加载时,它会创建一个虚拟化层,负责管理虚拟机的创建、销毁和调度。
3. 虚拟机创建:通过KVM模块,可以使用工具如qemu-kvm来创建虚拟机。
在创建虚拟机时,需要指定虚拟机的配置信息,如内存大小、磁盘空间、网络设置等。
4. 虚拟机运行:一旦虚拟机被创建,KVM会为每一个虚拟机分配一部份物理资源,如CPU时间片、内存等。
虚拟机运行时,KVM会将虚拟机的指令翻译为宿主机的指令,并将其执行。
5. 虚拟机与宿主机的交互:KVM提供了一组设备模型,如VirtIO,用于虚拟机与宿主机之间的通信。
虚拟机可以通过这些设备模型访问宿主机的硬件资源,如网络、磁盘等。
6. 虚拟机的迁移:KVM支持虚拟机的迁移,即将虚拟机从一台物理计算机迁移到另一台物理计算机。
在迁移过程中,KVM会将虚拟机的状态和内存内容传输到目标计算机,并在目标计算机上恢复虚拟机的运行。
总结起来,KVM的工作原理是通过在Linux内核中加载KVM模块,利用硬件虚拟化支持创建和管理虚拟机。
KVM将虚拟机的指令翻译为宿主机的指令,并提供设备模型用于虚拟机与宿主机之间的通信。
同时,KVM还支持虚拟机的迁移,实现了虚拟机的高可用性和灵便性。
这种基于内核的虚拟化技术为企业提供了更高效、安全和可扩展的虚拟化解决方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3、硬件辅助虚拟化
2005年后,CPU厂商Intel 和 AMD 开始支持虚拟化了。 Intel 引入了 Intel-VT (Virtualization Technology)技术。
Intel-VT CPU,有 VMX root operation 和 VMX non-root operation两种模式。这样,VMM 可以运行在 VMX root operation 模式下,客户 OS 运行在VMX non-root operation模式下。 而且两种操作模式可以互相转换。运行在 VMX root operation 模式下的 VMM 通过显式调用 VMLAUNCH 或 VMRESUME 指令切 换到 VMX non-root operation 模式,硬件自动加载 Guest OS 的 上下文,于是 Guest OS 获得运行,这种转换称为 VM entry。 Guest OS 运行过程中遇到需要 VMM 处理的事件,例如外部中断 或缺页异常,或者主动调用 VMCALL 指令调用 VMM 的服务的时候 (与系统调用类似),硬件自动挂起 Guest OS,切换到 VMX root operation 模式,恢复 VMM 的运行,这种转换称为 VM exit。VMX root operation 模式下软件的行为与在没有 VT-x 技术的处理器上的 行为基本一致;而VMX non-root operation 模式则有很大不同,最 主要的区别是此时运行某些指令或遇到某些事件时,发生 VM exit。
THANK YOU!
2、软件辅助虚拟化(半虚拟化)
半虚拟化的思想就是,修改guest操作系统内核,替 换掉不能虚拟化的指令,通过超级调用(hypercall)直 接和底层的虚拟化层hypervisor来通讯,hypervisor 同 时也提供了超级调用接口来满足其他关键内核操作,比 如内存管理、中断和时间保持,Xen为代表。
性能 差 好。半虚拟化下CPU 性能开销几乎为0, 虚机的性能接近于 物理机。 CPU需要在两种模式 之间切换,带来性 能开销;但是,其 性能在逐渐逼近半 虚拟化。
应用厂商
VMware Workstation/QE MU/Virtual PC
Xen
VMware ESXi/Microsoft HyperV/Xen 3.0/KVM
三种虚拟化技术的对比
利用二进制翻译 操作系统协助/半虚 的全虚拟化 拟化 实现技术 BT和直接执行 Hypercall 硬件辅助虚拟化 遇到特权指令转到 root模式执行
客户操作系统 无需修改客户操 客户操作系统需要 无需修改客户操作 修改/兼容性 作系统,最佳兼 修改来支持hypercall,系统,最佳兼容性 容性 兼容性差,不支持 Windows
QEMU-KVM工作原理
QEMU-KVM 相比原生 QEMU 的改动: 原生的 QEMU 通过指令翻译实现 CPU 的完全虚拟化,但是修 改后的 QEMU-KVM 会调用 ICOTL 命令来调用 KVM 模块。 原生的 QEMU 是单线程实现,QEMU-KVM 是多线程实现。 主机 Linux 将一个虚拟视作一个进程,该进程包括下面几种线程: I/O 线程用于管理模拟设备 vCPU 线程用于运行 Guest 代码 其它线程,比如处理 event loop,offloaded tasks 等的线程 虚拟机的内存是由宿主机通过mmap调用映射给虚拟机的,而 vCPU是宿主机的一个线程,这个线程通过设置相应的vCPU的寄存器 指定了虚拟机的程序加载地址后,开始运行虚拟机的指令,当虚拟 机执行了IO操作后,CPU捕获到中断并把执行权又交回给宿主机.
网卡I/O虚拟卡I/O虚拟化(3)
块设备I/O虚拟化(virio)
虚拟机启动过程
第一步,获取到kvm句柄:vmfd = open("/dev/kvm", O_RDWR); 第二步,创建虚拟机,获取到虚拟机句柄。 vmfd = ioctl(kvmfd, KVM_CREATE_VM, 0); 第三步,为虚拟机映射内存,还有其他的PCI,信号处理的初始化。 ioctl(kvmfd, KVM_SET_USER_MEMORY_REGION, &mem); 第四步,将虚拟机镜像映射到内存,相当于物理机的boot过程,把镜像映射到内存。 第五步,创建vCPU,并为vCPU分配内存空间。
ioctl(kvmfd, KVM_CREATE_VCPU, vcpuid);
第五步,创建vCPU个数的线程并运行虚拟机。 ioctl(kvm->vcpus->vcpu_fd, KVM_RUN, 0);
第六步,线程进入循环,并捕获虚拟机退出原因,做相应的处理。
这里的退出并不一定是虚拟机关机,虚拟机如果遇到IO操作,访问硬件设备,缺页中 断等都会退出执行,退出执行可以理解为将CPU执行上下文返回到QEMU。
kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化, 但kvm不能模拟其他设备。
qemu模拟IO设备(网卡,磁盘等),kvm加上qemu之后就能 实现真正意义上服务器虚拟化。因为用到了上面两个东西,所以 称之为qemu-kvm。 Qemu模拟其他的硬件,如Network, Disk,同样会影响这些设备 的性能,于是又产生了pass through半虚拟化设备virtio_blk, virtio_net,提高设备性能。
什么是KVM? KVM是嵌入在Linux操作系统标准内核中的一个 虚拟化模块,它能够将一个Linux标准内核转换成为 一个VMM,嵌有KVM模块的Linux标准内核可以支 持通过kvm tools来进行加载的GuestOS。所以在这 样的操作系统平台下,计算机物理硬件层上直接就 是VMM虚拟化层,而没有独立出来的HostOS操作 系统层。在这样的环境中HostOS就是一个VMM。 每个由KVM创建的GuestOS都是HostOS(或 VMM)上的一个单个进程。而在GuestOS上的 User-space中运行的Applications可以理解为就是 进程中的线程。
什么是QEMU-KVM
首先,Qemu本身并不是KVM的一部分,而是一整套完整的虚拟 化解决方案,它是纯软件实现的,包括处理器虚拟化、内存虚拟 化以及各种虚拟设备的模拟,但因为是纯软件模拟,所以性能相 对比较低。 而广义的KVM实际上包含两部分,一部分是基于Linux内核支持 的KVM内核模块,另一部分就是经过简化和修改Qemu。
QEMU-KVM系统原理
陶正祥
虚拟化简史
虚拟化分类 基于二进制翻译的全虚拟化(Full Virtualization with Binary Translation) 软件辅助虚拟化(或者半虚拟化/操作系统辅 助虚拟化 Paravirtualization) 硬件辅助的全虚拟化
1、基于二进制翻译的全虚拟化
VMM通过模拟全部硬件平台,BIOS、CPU、内存、 磁盘、网卡等。WMM将GUEST应用包括OS,通过二进 制转译成宿主机指令执行,并且模拟硬件IO中断与宿主 机交互。
Qemu是一个模拟器,它向Guest OS模拟CPU和其他硬 件,Guest OS认为自己和硬件直接打交道,其实是同 Qemu模拟出来的硬件打交道,Qemu将这些指令转译给真 正的硬件。由于所有的指令都要从Qemu里面过一手,因而 性能较差。