X86体系结构内存管理单元虚拟化方法技术

技术编号:6574163 阅读:396 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种X86体系结构内存管理单元虚拟化方法,要解决的技术问题是: 提供一种内存管理单元虚拟化方法,大幅减少影子页表页的数量,降低影子页表导致的 内存开销和影子页表同步导致的性能损失。技术方案是先为虚拟机分配物理内存;然后 为每个虚拟机创建并修正E820表;当虚拟机加载新页表时,构建影子页表和反向映射; 当虚拟机未加载新页表时,如果接收到CPU产生的页故障,则根据情况采用懒惰式页表 更新方法批量修改页表。采用本发明专利技术能大幅减少影子页表页的数量,从而降低影子页表 所导致的内存开销和影子页表同步导致的性能损失;本发明专利技术基于懒惰式影子页表更新方 法进一步降低了影子页表同步导致的性能损失。

【技术实现步骤摘要】

本专利技术涉及计算机体系结构及操作系统领域内存管理方法,尤其是X86体系结构的内 存管理单元(Memory Management Unit,丽U)虚拟化方法。
技术介绍
当前,计算机的处理能力不断快速提升,而根据相关统计,运行于其上的服务软件在 系统空闲时段往往只用到了不到10%的处理能力,在忙时也往往用不到50%。与此同时, 计算机的能耗不断加大,电能的消耗已经逐渐成为IT业的主要开销之一。另外,出于安 全和可靠等方面的考虑,大量的服务提供商必须使用多台服务器以满足数据备份、冗余 容错和服务的安全隔离等方面的需求,这不仅大大增加了设备购置的资金投入、成倍提 高了电能消耗,而且由于大量服务器的利用率较低,造成了性价比严重低下。为了解决这个问题,人们提出了虚拟化(virtualization)的概念,即通过虚拟机监 控器(Virtual Machine Monitor, V画),对真实计算机的CPU (Central Processing Unit, 中央处理单元)、内存管理单元廳U和外设进行虚拟化,在一台真实的计算机上虚拟出多 台虚拟机(Virtual Machine, VM),每本文档来自技高网...

【技术保护点】
一种X86体系结构内存管理单元虚拟化方法,其特征在于包括以下步骤: 第一步,为虚拟机分配物理内存:即在X86计算机引导时为同时运行于该计算机上的n个虚拟机预留出所需的物理内存,并保证所分配的物理内存的物理地址是连续的,为n个虚拟机预留的内存分别为[0,M↓[1]),[M↓[1],M↓[2]),…,[M↓[i-1],M↓[i]),…,[M↓[n-1],M↓[n]),其中M↓[n]=M,1≤i≤n,M为X86计算机物理内存的大小,物理内存物理地址区间为[0,M); 第k]个影子页表项,则对第j个影子页表项spte↓[j],其中1≤j≤n↓[k],设spte↓[j]中填入的物理地址为Y,则将spte...

【技术特征摘要】
1.一种X86体系结构内存管理单元虚拟化方法,其特征在于包括以下步骤第一步,为虚拟机分配物理内存即在X86计算机引导时为同时运行于该计算机上的n个虚拟机预留出所需的物理内存,并保证所分配的物理内存的物理地址是连续的,为n个虚拟机预留的内存分别为[0,M1),[M1,M2),…,[Mi-1,Mi),…,[Mn-1,Mn),其中Mn=M,1≤i≤n,M为X86计算机物理内存的大小,物理内存物理地址区间为[0,M);第二步,为每个虚拟机创建并修正E820表2.1为每个虚拟机创建E820表每个虚拟机的E820表中的物理地址区间都是[0,M),第i个虚拟机的E820表中只有物理地址区间为[Mi-1,Mi)的物理内存被标记为可用内存,其它两块物理地址区间[0,Mi-1)和[Mi,M)都被标记为不可用内存;2.2为每个虚拟机修正E820表;第三步,判断虚拟机是否加载了新页表,若加载了,则按如下方法构建影子页表和反向映射,若未加载,转第四步3.1对第i个虚拟机的每个页表页,如果满足如下任意一个条件,则为该页表页创建影子页表页,否则不创建影子页表页条件一,i≠1,且该页表页中存在一个页表项,该页表项中填入的物理地址x满足x∈[0,P);条件二,该页表页中存在一个页表项pte,pte中填入的物理地址X是下一级页表页的地址,即pte不是最末级页表的页表项,并且物理地址为X的下一级页表页需要创建影子页表页;条件三,该页表页是整套页表中最末级的页表页,且存在某个页表项pte,使得pte中填入的物理地址X是某个页表页的地址;3.2为第i个虚拟机构建影子页表后,检查所创建的每个影子页表页的每个影子页表项spte,按如下方法对影子页表项进行修正3.2.1检查影子页表项spte是否为最末级页表项,如果spte不是最末级页表项,转3.2.2;如果spte是最末级页表项,则若i≠1且spte中填入的物理地址x满足x∈[0,P)时,将spte中填入的物理地址x修正为Mi-1+x,转3.3;若spte中填入的物理地址x是某个页表页的起始物理地址,则将这些spte的R/W位改为0,转3.3;3.2.2检查spte所指向的物理地址为x的页表页是否被创建了影子页表页x′,如果是,则将spte中填入的物理地址x修正为x′,转3.3;3.3创建反向映射backmap,反向映射采用链表的数据结构,链表的每个节点记录如下信息指向该物理页的页表项的物理地址、该页表项的P位与R/W位的值;设修正过的影子页表共有m个影子页表页,分别为X1,…,Xk,…,Xm,其中1≤k≤m,第k个影子页表页Xk共有nk个影子页表项,则对第j个影子页表项sptej,其中1≤j≤nk,设sptej中填入的物理地址为Y,则将sptej的物理地址以及P位与R/W位的值加入到Y的反向映射中,用backmap(Y)表示物理页Y的所有反向映射链表项的集合;3.4为第i个虚拟机的每个页表页都设置一个“页表连续更新计数器”,初始值为0,并将创建的所有影子页表页的所有影子页表项的A位置0;3.5将影子页表装入CPU的CR3寄存器中,通知CPU使用影子页表进行虚拟地址到物理地址的转换,转第四步;第四步,如果没有接收到CPU产生的页故障,或接收到的页故障既不是P位导致的,也不是R/W位导致的,则转第三步;如果接收到CPU产生的页故障,则如果接收的页故障是由P位导致的,转第六步;如果接收的页故障是由R/W位导致的,则更新页表项和“页表连续更新计数器”4.1按如下方法更新页表项4.1.1接收页故障;4.1.2如果pte所在的页表页X没有影子页表页,则根据3.1所示的条件判断是否需要为X创建影子页表页,如果需要为X创建影子页表页,则根据3.1所示的条件考查是否需要为X的上一级页表页创建影子页表页;4.1.3如果pte所在的页表页X在此前或在4.1.2中被创建了影子页表页X’,设pte在X’中对应的影子页表项为spte,则根据3.2所示的方法修正影子页表项s...

【专利技术属性】
技术研发人员:易晓东谭郁松刘晓建张卫华戴华东吴庆波孔金珠
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1