-
Notifications
You must be signed in to change notification settings - Fork 13
virtual_015
首先,操作系统负责将有限的内存资源动态地分配给多个进程,这种概念可以称得上一种虚拟化。
这种内存虚拟化实现的核心在于不同的进程有各自的虚拟地址空间(address space),地址空间里的地址称为虚拟地址VA,并由操作系统和硬件将其转化为物理地址PA。
[1][2]中讲的比较好。
(待续。。。)
[1] https://blog.csdn.net/ipmux/article/details/19167605
[2] https://www.mnstory.net/2016/06/30/qemu-hugepages/
涉及到mmu的虚拟化,也就是虚拟内存地址和物理内存地址的转换。
mmu虚拟化分为软件虚拟化和硬件虚拟化。软件对应影子页表;硬件对应Intel的EPT(Extent Page Table)技术和AMD的NPT(Nest Page Table)技术。
- EPT
KVM支持Intel EPT页表,即用于VM的扩展页表。基于EPT的GVA-->HPA转换中,首先,(1) GVA->GPA(HVA) 由Guest OS维护的page table进行,(2)这时Guest 会尝试用GPA(HVA)作为HPA直接访问物理内存,这肯定会引起权限错误,导致一种称为EPT异常的异常,(3)KVM处理EPT异常时,根据产生EPT异常的Guest和实现注册好的EPT页表,进行从GPA(HVA)->HPA的过程,完成整个的地址转换过程。
(?这样,Guest中产生的缺页也不会产生VM-exit了,直接Guest内核处理,HVA->HPA若产生缺页,直接Host内核处理。)
https://www.ibm.com/developerworks/cn/linux/l-cn-kvm-mem/ https://events.linuxfoundation.org/slides/2011/linuxcon-japan/lcj2011_guangrong.pdf
https://blog.csdn.net/xelatex_kvm/article/details/17679529 http://blog.vmsplice.net/2016/01/qemu-internals-how-guest-physical-ram.html
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
Wiki: wiki.jcix.top ~聚沙成塔~ Blog: blog.jcix.top