如何阅读KVM代码

转载请注明:【转载自博客xelatex KVM】,并附本文链接。谢谢。

KVM作为目前越来越流行的VMM,受到越来越多人的关注。但是关于KVM代码的说明却很少,无论是网上还是实体书籍,都少有这方面的资料。一方面是KVM的代码变动的太快了,另外一方面也是因为这个领域里面的人也不多。我在这里简单写一个《如何阅读KVM代码》,一方面是记录一些信息以备查询,另一方面也是能够抛砖引玉,让刚开始阅读KVM代码的人不用经历无从下手的困境。

文章中采用的内核版本:Linux-3.11,https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.11.tar.gz

一、KVM与Qemu的定位

KVM是一种VMM(Virtual Machine Monitor),是虚拟机管理器;Qemu是一个模拟器,用来模拟不同的机器模型、CPU、存储架构、外设等等。目前的KVM是依赖于Qemu-kvm的项目的,两者的关系对于理解KVM的代码有着非常重要的意义。

首先,总的来说KVM提供虚拟化的机制和解决方案,Qemu提供策略。

Qemu负责几乎所有模拟的工作。对于一个真实的机器来说,BIOS、CPU、内存模型、外存、外设都可能是不同的,Qemu提供了对上述这些的模拟工作。比如内存模型,Qemu在自己的用户态空间申请指定大小的内存,并指定这些内存暴露给Guest VM的情况。如果Guest VM需要一个NUMA的内存模型,Qemu则会申请若干片内存,将其分别作为一个个Node暴露给Guest VM。

KVM负责虚拟化的机制。KVM提供虚拟机管理器相关的一些操作,如虚拟机的创建、销毁、内存区的注册等等。以虚拟机内存模型为例,KVM提供多种内存操作的接口供Qemu调用,但KVM并不提供内存使用的策略,如KVM并维护诸如NUMA等内存模型,而是提供了能够与Qemu userspace相关联的内存结构(memslot),KVM通过软件、硬件机制对内存的访问进行加速。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值