kvm之虚拟化原理-内存虚拟化【理论知识】

1、基础知识

1.1、内存虚拟化

内存本身就是虚拟化的。
因为进程看到的是线性地址空间,内核看到的是物理地址空间。
没有虚拟化的时候,主机内核以为自己操作的是整个内存空间,而在虚拟化场景中,每个虚拟机内核都认为自己操作的是整个内存空间,这是不现实的。

1.2、基本原理图

2、虚拟机操作宿主机的资源的方式

实现虚拟机操作宿主机的资源的方式很多,主要是通过以下几种方式来实现:模拟、mmu虚拟化、TLB虚拟化

2.1、模拟

虚拟机进程经过CPU的MMU的转换到虚拟机的内存中找到了相应的地址,但是这个地址不是真正的宿主机的内存地址,所以再次经过shadow page table的技术,将虚拟的内存地址转换成真正的物理地址,找到对应的存储元素。
 
缺点:
 shadow page table 必须和虚拟机一一对应使用TLB缓存相应的虚拟机A地址转换信息,但是当切换虚拟机B使用的时候,TLB内容就失效了。

2.2、mmu虚拟化

借助于cpu的硬件虚拟化作用,在虚拟机进行线性地址转换的同时,通过虚拟MMU将其转换成宿主机内存的物理地址,提升了内存的性能。
 
缺点:TLB的命中率还是比较低

2.3、TLB虚拟化

在方法二的基础上,引入一个TLB虚拟化功能,在缓存信息的时候,增加一个标签的功能,类似数据库表字段。

 

posted @ 2023-05-22 17:30  小粉优化大师  阅读(121)  评论(0编辑  收藏  举报