标签:架构 Guest 示例 qemu KVM 源代码 QEMU 设备
QEMU源代码架构概述
(一)概述
1.涵盖的主题
关于QEMU的众多细节:
理解各组件如何协作。
编译和构建。
调试和故障排除。
由于时间较少,无法了解代码细节。
2.QEMU的概念
模拟x86、ARM、PowerPC和其他计算机。
用于KVM和Xen的虚拟化。
使用C语言编写,在POSIX和Windows主机上运行。
(二)外部接口
1.命令行选项
Guest是在命令行定义的:
qemu -m 1024 \
-machine accel=kvm \
-hda web-server.img
使用"man qemu"命令获取更多选项。
参考qemu-options.hx和vl.c:main()查看具体实现。
2.QMP monitor
类似RPC的JSON格式API,用于管理QEMU:
热插拔设备
暂停/继续guest
查询设备信息等
使用QMP/qmp.py编写定制化脚本,参考qapi-schema.json和QMP/
3.HMP monitor
基于文本的QEMU管理界面。
已被QMP取代,但便于交互会话。
参考hmp-commands.hx。
4.用户接口
远程UIs,包括VNC和SPICE。
本地UIs,包括GTK和SDL。
参考ui/
(三)架构
1.QEMU进程模型
QEMU是一个用户空间进程。
QEMU拥有guest RAM。
每个KVM vCPU是一个线程。
宿主机内核调度决定QEMU和虚拟机vCPU的运行。
可以使用ps(1)、nice(1)、cgroups函数进行调度。
2.主循环
QEMU基于事件驱动,提供以下异步API:
可读可写的文件描述符。
定时器。
延迟运行。
QEMU代码使用全局互斥保护:
不需要显式同步。
逐渐更新以提高扩展性。
参考include/qemu/main-loop.h。
3.架构概述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bWzyipAF-1624243554680)(img/1.png)]
4.设备模拟
硬件仿真模型:
KVM使用硬件辅助(VMX/SVM)。
TCG进行二进制代码翻译。
guest硬件设备实现:
参考/hw目录。
使用"qemu -device \?"命令列出可用设备。
5.KVM代码加速
open("/dev/kvm")
ioctl(KVM_CREATE_VM)
ioctl(KVM_CREATE_VCPU)
for (;
标签:架构,Guest,示例,qemu,KVM,源代码,QEMU,设备 来源: https://blog.csdn.net/Shangku92/article/details/118081905
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。