52 | 计算虚拟化之内存:如何建立独立的办公室?
刘超
该思维导图由 AI 生成,仅供参考
上一节,我们解析了计算虚拟化之 CPU。可以看到,CPU 的虚拟化是用户态的 qemu 和内核态的 KVM 共同配合完成的。它们二者通过 ioctl 进行通信。对于内存管理来讲,也是需要这两者配合完成的。
咱们在内存管理的时候讲过,操作系统给每个进程分配的内存都是虚拟内存,需要通过页表映射,变成物理内存进行访问。当有了虚拟机之后,情况会变得更加复杂。因为虚拟机对于物理机来讲是一个进程,但是虚拟机里面也有内核,也有虚拟机里面跑的进程。所以有了虚拟机,内存就变成了四类:
虚拟机里面的虚拟内存(Guest OS Virtual Memory,GVA),这是虚拟机里面的进程看到的内存空间;
虚拟机里面的物理内存(Guest OS Physical Memory,GPA),这是虚拟机里面的操作系统看到的内存,它认为这是物理内存;
物理机的虚拟内存(Host Virtual Memory,HVA),这是物理机上的 qemu 进程看到的内存空间;
物理机的物理内存(Host Physical Memory,HPA),这是物理机上的操作系统看到的内存。
咱们内存管理那一章讲的两大内容,一个是内存管理,它变得非常复杂;另一个是内存映射,具体来说就是,从 GVA 到 GPA,到 HVA,再到 HPA,这样几经转手,计算机的性能就会变得很差。当然,虚拟化技术成熟的今天,有了一些优化的手段,具体怎么优化呢?我们这一节就来一一解析。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了qemu和KVM在CPU虚拟化过程中的协作,以及内存管理的复杂性和优化方法。在CPU虚拟化方面,qemu和KVM通过ioctl进行通信,共同完成CPU虚拟化。而在内存管理方面,涉及虚拟机内部的虚拟内存、虚拟机内部的物理内存、物理机上的虚拟内存和物理机上的物理内存,这种复杂性对内存管理和内存映射提出了挑战,可能导致性能下降。然而,随着虚拟化技术的成熟,出现了一些优化手段来解决这些问题。 在CPU虚拟化初始化过程中的内存相关操作中,包括地址空间的初始化、内存区域的注册和内存结构的转换。此外,文章还解析了内存的虚拟化过程,包括内存的申请、初始化和映射等操作。为了解决内存映射的性能问题,介绍了影子页表的软件方式,通过维护一套相应的影子页表实现了从客户机虚拟地址到宿主机物理地址的直接转换,提高了缓存的效率。然而,引入影子页表也带来了内存占用较大和实时同步的问题。 通过本文的阐述,读者可以更好地理解虚拟化技术的特点和优化方法,以及影子页表在内存管理中的应用,为读者提供了深入了解虚拟化技术的重要参考。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》,新⼈⾸单¥68
《趣谈 Linux 操作系统》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(18)
- 最新
- 精选
- ClassCastException别管看不看的懂,能坚持到这的也是神级人物了
作者回复: 加油
2019-07-30322 - 没心没肺快要被劝退了,硬着头皮看。
作者回复: 加油,多看几遍就好了
2019-07-288 - 小龙的城堡把c语言写出面相对象,确实有意思!
作者回复: 是的,很惊艳
2019-07-2624 - LDxy真难
作者回复: 其实还好,多看几遍
2019-07-272 - 起飞的鸭子这配图是网易吗
作者回复: 不是的
2019-07-262 - 浪子超哥会讲overcommit吗
作者回复: 没有分析内存overcommit的部分。
2019-07-271 - Spring总结下来就是:虚拟机用户态qemu中的KVMSlot结构维护虚拟机进程的虚拟地址,虚拟机内核态kvm_memory_slot结构维护虚拟机的物理页面,二者通过普通页表建立映射关系。当访问虚拟机虚拟页面发生缺页异常时,切换到宿主机中分配真正的物理页面,然后通过EPT(扩展页表)建立虚拟机物理地址到宿主机物理地址的映射关系。2019-10-0414
- zKerry感觉怼到了一堵墙上,请问刘老师,你当初是怎么整明白的?2019-10-316
- Ascend我感觉这章没有先讲qemu的宏观架构,直接引入qemu细节代码,有点吃力2020-10-264
- why是不是 qemu 维护的 slot 相当于 gpa,KVM 维护的 slot 相当于 hva。2020-02-2612
收起评论