- 论坛徽章:
- 2
|
回复 9# liuweni
哈,我不是前辈啊,我也才看了两个星期KVM。KVM好像是从2.6.20还是之后的哪个版本才有的。
就我这两个星期的经验来说吧,不要从平台无关的地方开始看起,当然平台无关的代码本来就没多少。找些slide,大致了解一下KVM是什么东西,然后写个简单的用户态程序感受一下。之后大致浏览一下平台无关的架构,再结合硬件手册细读平台相关代码。就我个人而言,AMD的SVM,无论从手册上来看还是从代码实现上来看,都要比INTEL的简单。两者的实现虽不兼容,但思路类似,要解决的问题差不多。看懂了一种再看另一种很容易。我双管齐下,有点犯晕…………
几个主要文件是:
--> virt/kvm/kvm_main.c,提供misc设备接口,提供平台无关流程,调用平台相关函数
--> arch/x86/kvm/x86.c,提供x86平台函数,提供x86平台实现无关流程,调用x86平台实现相关函数
--> arch/x86/kvm/{svm, vmx}.c,对AMD与INTEL实现上的硬件支持。
--> arch/x86/kvm/emulation.c,实现相关中,一些硬件支持不太好的地方,提供用软件的模拟
还有MMU和IO相关的部分,我都直接跳过去了,那些部分应该也挺复杂的。其实我后面倒是对IO的虚拟挺感兴趣的,但这些恐怕多是在用户态qemu里完成的。至于x86体系,如果对x86上Linux的实现熟的话,应该没什么问题吧。
不过,和内核其它部分一样,能做的也就是bug fix或者实现新的特性。业余了解一下还好,真是工作要求做这个的话,恐怕要花大气力。 |
|