当前位置:主页 > www.365838.com > 正文
 

KVM,QEMU和KQemu有什么区别?

日期:2019-01-27  点击:   作者:日博娱乐网站  来源:值得信赖bt365官网

展开全部
Qemu:一种非常灵活,便携的完整独立软件,可用于模拟机器。
它使用特殊的重新编译器将一个处理器的二进制代码转换为另一个处理器。
(即,在PPCmac MIPS执行代码或X86PC以上的ARM代码执行),如86 86最常见的情况上运行KQEMU :(同上)如果源代码和目标代码具有相同体系结构,相同的代码是必要的。分析删除所有特权指令并将其替换为上下文更改。
为了使这个过程尽可能有效,有一个KQemu内核模块来处理这个问题。
作为内核模块,KQemu仅替换最低的单环0指令。
在这种情况下,Qemu仍然分配所有RAM并加载模拟的机器代码。
区别在于KQemu不需要重新编译代码,它只是调用KQemu来调用scan / patch / execute。
所有外围硬件仿真都在Qemu中执行。
由于大多数代码都没有翻译,KQemu仍然需要翻译代码环0(VM核心中的大部分代码)。结果,表现还不好。
KVM:KVM包含许多组件。首先是Linux内核模块(现在包含在主线中),用于将处理器转换为新的guset模式。
用户模式具有自己的呼叫状态,但具有特权环0的命令进入管理程序代码。
这是一种新的处理器执行模型,因此您无需更改代码。
除处理器状态转换外,它还处理相同的低级模拟内核模块的一小部分,例如MMU记录(用于管理VM)和PCI的模拟硬件部分。
在不久的将来,Qemu团队专注于可移植性和硬件模拟,但团队专注于KVM内核模块(如果有部分性能,KVM是否小?除了更改之外,还会发生用户空间代码交互。
KVM - qemu Qemu与普通可执行文件相同。与RAM内存分配,加载代码,重新编译或调用者的KQemu调用不同,创建了一个线程(这非常重要)。KVM线程调用内核模块,切换到用户模式,并执行虚拟机的代码。
如果找到特权指令,请再次更改KVM内核模块。如有必要,它会通知大多数硬件仿真,例如Qemu线程。
这种架构的聪明之处在于客户端代码是在posix子流程中模拟的。有了这个,您可以使用普通的Linux工具进行管理。
如果需要具有两个或四个内核的虚拟机,kvm-qemu会创建两个或四个子进程,每个子进程调用KVM内核模块并开始执行。
如果并发(如果它不是问题)或程序(如果你真的有足够的核),程序员通用Linux,这使得KVM很少?当你一起工作了很多代码,参观了CPU管理KVM和MEM,QEMU是,模拟硬件资源(硬盘,声卡,USB等),当你单独运行QEMU,QEMU是一个CPU模拟两个硬件。