[发明专利]X86体系结构内存管理单元虚拟化方法无效
申请号: | 200910043830.1 | 申请日: | 2009-07-03 |
公开(公告)号: | CN101620573A | 公开(公告)日: | 2010-01-06 |
发明(设计)人: | 易晓东;谭郁松;刘晓建;张卫华;戴华东;吴庆波;孔金珠 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F12/08 | 分类号: | G06F12/08;G06F12/10;G06F9/455 |
代理公司: | 国防科技大学专利服务中心 | 代理人: | 郭 敏 |
地址: | 410073湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | x86 体系结构 内存 管理 单元 虚拟 方法 | ||
技术领域
本发明涉及计算机体系结构及操作系统领域内存管理方法,尤其是X86体系结构的内存管理单元(Memory Management Unit,MMU)虚拟化方法。
背景技术
当前,计算机的处理能力不断快速提升,而根据相关统计,运行于其上的服务软件在系统空闲时段往往只用到了不到10%的处理能力,在忙时也往往用不到50%。与此同时,计算机的能耗不断加大,电能的消耗已经逐渐成为IT业的主要开销之一。另外,出于安全和可靠等方面的考虑,大量的服务提供商必须使用多台服务器以满足数据备份、冗余容错和服务的安全隔离等方面的需求,这不仅大大增加了设备购置的资金投入、成倍提高了电能消耗,而且由于大量服务器的利用率较低,造成了性价比严重低下。
为了解决这个问题,人们提出了虚拟化(virtualization)的概念,即通过虚拟机监控器(Virtual Machine Monitor,VMM),对真实计算机的CPU(Central Processing Unit,中央处理单元)、内存管理单元MMU和外设进行虚拟化,在一台真实的计算机上虚拟出多台“虚拟机(Virtual Machine,VM)”,每台虚拟机都可分别运行一个操作系统。这样,就能进行服务器整合(server consolidation),即将多台服务器整合为一台物理服务器,从而大大提高服务器利用率、降低能源消耗和提高安全性与可靠性。在桌面计算领域,虚拟化技术使得用户能够同时运行多个不同的操作系统,满足了用户对不同计算平台的需求。
X86计算机所装配的物理内存从0开始编址,每个内存单元的地址称为物理地址(physical address),CPU基于物理地址访问内存的不同单元。为了在X86计算机上同时运行多个虚拟机,虚拟机监控器中必须包含一个名为“MMU虚拟化模块”的组成模块,由该模块进行内存管理单元MMU的虚拟化。当前国际上的MMU虚拟化方法都包括以下步骤:
第一步,为虚拟机分配物理内存,即根据用户的配置,将X86计算机的物理内存划分为多块,每一块内存对应一个虚拟机。目前有两种方法实现物理内存分配:第一种方法是借助操作系统提供的内存分配接口分配,例如KVM项目(http://www.linux-kvm.org/),这种分配方法直接调用操作系统提供的服务,实现简单,但不能保证所分配物理内存的物理地址的连续性;第二种方法是在X86计算机引导时预留出相应的物理内存,例如Xen项目(http://www.xen.org/),这种方法能够保证预留物理内存的物理地址的连续性,但实现复杂。
第二步,为虚拟机创建E820表。在X86计算机中,并非所有的物理内存都是可用的。例如,物理地址区间0xA0000至0xC0000被保留给显卡的显示缓冲区,从而这部分物理内存是不可用的。为了描述X86计算机的物理内存是否可用,X86计算机定义了所谓的E820表,E820表中记录了每一段物理地址区间对应的物理内存是否可用。当今所有的操作系统都通过查询E820表获得可用内存信息,以保证只使用可用物理内存。
假设在第一步中为某个虚拟机分配的物理内存的物理地址区间是[M,M+N),则当前国际上MMU虚拟化方法所构建的E820表中将物理地址区间[0,N)标识为可用内存(不考虑其它保留的物理地址区间)。例如,如果为某虚拟机分配256MB物理内存,则不管这些物理内存处于哪个物理地址区间,该虚拟机的E820表中从0开始至256MB的物理地址区间被标识为可用。
第三步,当虚拟机加载新页表时,为其构建影子页表(shadow page table)和反向映射(backmap)。X86体系结构MMU虚拟化的核心是分页(paging)机制,即将机器的物理内存划分为若干个固定大小的内存页(memory page),再引入虚拟地址(virtual address)的概念,并构造页表(page table),在页表中记录每个虚拟地址页所对应的内存页的物理地址(physical address)。应用程序使用虚拟地址来访问内存,CPU通过查找页表,将对应的虚拟地址转换为真实的物理地址后完成内存访问。例如,X86体系结构规定的最小页大小是4KB,假设页表中记录的虚拟地址页0x12345000对应的物理地址页是0x00055000,那么虚拟地址0x12345678经该页表转换后的物理地址是0x00055678。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910043830.1/2.html,转载请声明来源钻瓜专利网。