本文内容参考:
《QEMU/KVM》源码解析与应用 —— 李强,机械工业出版社
特此致谢!
在本系列之前文章中,讲解了QEMU参数解析、QEMU Module(模块)、并且花了大力气(十几篇文章)重点讲解了QOM。这些基础讲过之后,要正式开始对于各个硬件模块的详细介绍了。但在此之前,先以一个QEMU/KVM API的使用实例作为引子和序幕。
一提到QEMU,总是会提到KVM,而反之亦是如此。正所谓是“焦不离孟,孟不离焦”。但实际上从本质上来说,QEMU和KVM可以不必互相依赖。之所以将这两者“捆绑”在一起,是因为KVM创立之初重用了QEMU的设备模拟部分。本回以一个简单的示例展示QEMU和KVM的关系,也为后边深入各模块的研究提供一个最为简单和基础的框架流程上的参考。
示例包括两部分:第一部分是一个极简版内核,其任务仅仅是向I/O端口写入数据;第二部分可以看做是一个精简版的QEMU,它的任务也很简单,就是将此极简内核写入端口的数据打印出来。
- 极简内核
极简内核代码如下(x86汇编,test.S)