Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1857016
  • 博文数量: 211
  • 博客积分: 464
  • 博客等级: 下士
  • 技术积分: 3794
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-24 18:25
个人简介

阿弥陀佛

文章分类

全部博文(211)

文章存档

2020年(2)

2019年(3)

2018年(5)

2017年(6)

2016年(10)

2015年(9)

2014年(73)

2013年(90)

2012年(13)

分类: 虚拟化

2015-01-03 17:22:08

     最为称赞的是XEN的内存虚拟化技术,因为xen是半虚拟化方案。
    这里需要科普一个概念,页表是由操作系统来管理的,而MMU是内存管理单元,做地址翻译的,将虚拟地址转换成物理地址。TLB是做页表的缓存,因为如果让CPU访问页表,时间会比较长, 因为这个时候要访问内存,而CPU访问TLB,TLB在处理器的内部,所以访问时间很短。由于每个页表项都包含了该页是否在内存中等详细的信息,所以发生缺页,系统会产生缺页中断,从内存中将数据读出来。MMU只能做一个逻辑地址,转换成物理地址。
    虚拟机并不知道实际内存的总线地址,这个只有宿主机才会知道,如果每次访存都需要VMM的介入,那么访存的性能将会严重下降。
    半虚拟化的方法是修改操作系统的代码,剥夺了guest os的写页表的权利,由于VMM知道了所有的映射关系,所以直接将机器地址写入到guest os的页表中实现页表的虚拟化。
    内存的全虚拟化方案是采用影子页表的方法,采取了将虚拟机的物理地址到中线地址的映射关系转换到了VMM层,VMM为每一个页表都准备了一个影子页表,VMM将影子页表的转换工作交给了MMU来进行地址转换。
阅读(2985) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~