kvm内存管理之获取guest内存分布

一 KVM内存管理机制

(在此先只讲qemu如何让KVM获取非root的客户机的内存分布:事实上还没有与物理上形成映射,只是在qemu进程的线性空间中开辟一块区域)

KVM不改变GUEST OS,而操作系统对内存的基本认识包括:

1.        物理地址从0开始;(eg, 0~4G)

2.        存在连续性;(4KB为一页,按页组织)

同一个host中,要满足多个guest os的对内存的需求,就需要内存的虚拟化。 如多台guest  OS均分配的是4G内存,而所有VM的OS认为自己虚拟地址就是0~4G ,总页帧数为1024*1024,即客户机认为内存是独占的,而VMM则负责管理所有的物理内存,和VM对实际物理内存的占用。


OS分页机制中,利用页表来完成虚拟地址到物理的转换:

其中CR3记录了基地址,不同的进程基地址不同,因此,虽然不同进程可见的都是同样比如4GB的地址空间,同样的逻辑地址,但使用过程中映射到的是不同的物理地址,这个过程由CR3完成。

TLB位于页表的 cache中,如果CPU访问某个线性地址(byte级别)时,如果其所在页面映射存在于TLB中,则不用再查找页表,直接将PFN+偏移地址即可。


对客户机操作系统不作修改,意味着VM也有一套同样的分布的机制和MMU实现,有GVA和GPA的概念和自己的虚拟(机)页表。而GVA到实际host的HPA过程由影子列表来完成。

TLB是CPU相关的全局量,由当前的进程来更新,当进程来切换时,TLB失效,随着进程的访问来补充相应的buffer。

 

GUEST OS(VM)对内存相关的操作:

1.        修改GUEST页表;

2.        修改GUEST页表的TLB。

客户机要维护的只有自己的

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值