内存管理装置及方法与流程

1.本发明大体涉及计算机工程领域,更具体地,涉及一种以受保护的方式提供虚拟地址物理地址转换的内存管理装置及方法。

背景技术


::2.linux等操作系统(operatingsystem,os)支持虚拟内存的概念,以便将物理内存用于计算进程,使每个计算进程“认为”自己是唯一运行的进程。虚拟内存特别有用,因为它可以规避物理内存特有的一些问题(例如,物理内存中的间隙,即未使用的部分),并且使物理内存中几个分散的物理页看起来是连续的。此外,虚拟内存使用户能够在可能远远大于物理地址空间的虚拟地址空间中操作。将这些空间相互映射所需的地址转换由内存管理单元(memorymanagementunit,mmu)执行。3.mmu主要使用地址转换表执行地址转换,地址转换表也称为页表。地址转换表预填充有虚拟地址空间的虚拟地址和物理地址空间的物理地址之间的映射。除了地址转换外,mmu还用于在通过对应虚拟地址映射到的物理地址访问的物理内存页上执行某些属性。例如,此类属性包括“只读”或“可执行但不可修改”。为了加速地址转换,mmu可以设称为旁路转换缓冲(translationlook-asidebuffer,tlb)的内部缓存,该内部缓存存储虚拟地址和物理地址之间最近使用的映射。4.某个物理内存页的映射有某些限制,例如“只读”,这种情况并不少见。在这些情况下,恶意用户可能会试图通过以下两种方式规避此类限制:对地址转换表进行相应更新,使物理内存页可写;或者完全关闭mmu,从而直接访问物理内存页。为了避免这些恶意攻击,地址转换表可以使用基于虚拟机管理程序的保护或交替映射。然而,基于虚拟机管理程序的保护和交替映射都会导致额外的显著延迟,最终会减缓执行需要地址转换的计算进程。技术实现要素:5.提供本

发明内容

是为了以简化的形式介绍在以下具体实施方式中进一步描述的一些概念。本

发明内容

并非旨在确定本发明的关键特征,也不旨在用于限制本发明的范围。6.本发明的目的在于提供一种确保以受保护的方式进行虚拟地址到物理地址转换的技术方案。7.上述目的是通过所附权利要求中独立权利要求的特征来实现的。进一步的实施例和示例从从属权利要求、具体实施方式和附图中是显而易见的。8.根据本发明的第一方面,提供了一种内存管理装置,所述内存管理装置包括:至少一个处理单元;存储单元,耦合到所述至少一个处理单元。所述存储单元用于存储处理器可执行指令和数据,所述处理器可执行指令和数据在进行处理时,使所述至少一个处理单元执行以下操作:[0009]-跟踪地址转换表中具有映射的虚拟地址空间的虚拟地址和物理地址空间的物理地址;[0010]-生成指示所述虚拟地址和所述物理地址在所述地址转换表中存在映射的元数据;[0011]-拦截对所述地址转换表的更新操作,所述更新操作涉及在所述地址转换表中创建所述虚拟地址空间的目标虚拟地址和所述物理地址空间的目标物理地址之间的新映射;[0012]-根据所述元数据,确定所述目标虚拟地址和所述目标物理地址中的至少一个在所述地址转换表中是否具有所述映射;[0013]-根据确定结果,决定是否执行所述更新操作。[0014]采用如此配置的内存管理装置,可以检测和防止对所述地址转换表的恶意攻击,例如针对双重映射的恶意攻击。此外,与基于虚拟机管理程序的保护相比,根据本发明第一方面所述的内存管理装置可以为所述地址转换表提供类似级别或更高级别的安全性,而不会造成所述基于虚拟机管理程序的保护所特有的延迟。[0015]在所述第一方面的一个实施例中,所述至少一个处理单元用于:将所述元数据存储到所述存储单元的预设部分。这可以简化所述元数据在根据本发明第一方面所述的装置操作中的使用。[0016]在所述第一方面的一个实施例中,所述至少一个处理单元用于:响应于确定所述目标虚拟地址和所述目标物理地址中的每一个在所述地址转换表中不具有所述映射,执行所述更新操作。之后,所述至少一个处理单元还用于:更新所述元数据。这样,可以检测到所述更新操作与所述双重映射等恶意攻击无关。[0017]在所述第一方面的一个实施例中,所述至少一个处理单元用于:响应于确定所述目标虚拟地址和所述目标物理地址中的至少一个在所述地址转换表中具有映射,拒绝所述更新操作。这样,可以检测到所述更新操作与所述双重映射等恶意攻击有关。[0018]在所述第一方面的一个实施例中,所述至少一个处理单元还用于:提供拒绝所述更新操作的通知。通过此类通知,授权用户可以获知恶意攻击企图,并且作为响应可以在必要时采取适当的保护措施。[0019]在所述第一方面的一个实施例中,所述至少一个处理单元用于:在所述确定之前,检查所述目标虚拟地址和所述目标物理地址是否分别在所述虚拟地址空间和所述物理地址空间的预设受保护子空间内。在该实施例中,所述至少一个处理单元用于:当所述目标虚拟地址和所述目标物理地址在所述预设受保护子空间内时,继续执行所述确定和所述决定。这可以选择性保护所述地址转换表,从而选择性保护所述物理地址空间的所述物理地址。[0020]在所述第一方面的一个实施例中,所述至少一个处理单元用于:将所述元数据生成为位图。所述位图通过使用第一预设位值指示所述地址转换表中具有所述映射的虚拟地址和物理地址。这可以简化并加快根据本发明第一方面所述的装置的操作。[0021]在所述第一方面的一个实施例中,所述至少一个处理单元还用于:通过使用第二预设位值在所述位图中指示所述地址转换表中不具有所述映射的所述虚拟地址空间的虚拟地址和所述物理地址空间的物理地址。所述第二预设位值不同于所述第一预设位值。这样,可以确保更好地区分所述地址转换表中具有和不具有所述映射的虚拟地址和物理地址。[0022]根据本发明的第二方面,提供了一种内存管理方法。所述方法包括以下步骤:首先,跟踪地址转换表中具有映射的虚拟地址空间的虚拟地址和物理地址空间的物理地址;然后,生成指示所述虚拟地址和所述物理地址在所述地址转换表中存在映射的元数据;拦截对所述地址转换表的更新操作,所述更新操作涉及在所述地址转换表中创建所述虚拟地址空间的目标虚拟地址和所述物理地址空间的目标物理地址之间的新映射;接下来,根据所述元数据,确定所述目标虚拟地址和所述目标物理地址中的至少一个在所述地址转换表中是否具有映射;最后,根据确定结果,决定是否执行所述更新操作。这样,可以检测和防止对所述地址转换表的恶意攻击,例如针对双重映射的攻击。此外,与基于虚拟机管理程序的保护相比,可以为所述地址转换表提供类似级别或更高级别的安全性,而不会造成所述基于虚拟机管理程序的保护所特有的延迟。[0023]在所述第二方面的一个实施例中,如果确定所述目标虚拟地址和所述目标物理地址中的每一个在所述地址转换表中不具有所述映射,则所述决定步骤包括:决定执行所述更新操作;更新所述元数据。这样,可以检测到所述更新操作与所述双重映射等恶意攻击无关。[0024]在所述第二方面的一个实施例中,如果确定所述目标虚拟地址和所述目标物理地址中的至少一个在所述地址转换表中已经具有所述映射,则所述决定步骤包括:决定拒绝所述更新操作。这样,可以检测到所述更新操作与所述双重映射等恶意攻击有关。[0025]在所述第二方面的一个实施例中,所述方法还包括以下步骤:提供拒绝所述更新操作的通知。通过此类通知,授权用户可以获知恶意攻击企图,并且作为响应可以在必要时采取适当的保护措施。[0026]在所述第二方面的一个实施例中,所述方法还包括以下步骤:在所述确定步骤之前,检查所述目标虚拟地址和所述目标物理地址是否分别在所述虚拟地址空间和所述物理地址空间的预设受保护子空间内。在该实施例中,当检查到所述目标虚拟地址和所述目标物理地址在所述预设受保护子空间内时,执行所述确定和所述决定步骤。这可以选择性保护所述地址转换表,从而选择性保护所述物理地址空间的所述物理地址。[0027]在所述第二方面的一个实施例中,所述生成步骤包括:将所述元数据生成为位图。所述位图通过使用第一预设位值指示所述地址转换表中具有所述映射的虚拟地址和物理地址。这可以简化并加快根据本发明第二方面所述的方法的执行。[0028]在所述第二方面的一个实施例中,所述方法还包括以下步骤:通过使用第二预设位值在所述位图中指示所述地址转换表中不具有所述映射的所述虚拟地址空间的虚拟地址和所述物理地址空间的物理地址。所述第二预设位值不同于所述第一预设位值。这样,可以确保更好地区分所述地址转换表中具有和不具有所述映射的虚拟地址和物理地址。[0029]根据本发明的第三方面,提供了一种计算机可读存储介质。所述计算机可读存储介质存储有计算机程序,所述计算机程序在由至少一个处理器执行时,使所述至少一个处理器执行根据本发明第二方面所述的方法。这可以简化根据本发明第二方面所述的方法在任何计算设备(例如,根据本发明第一方面所述的装置)中的实现方式。[0030]通过阅读下面的具体实施方式并回顾附图,本发明的其它特征和优点将是显而易见的。附图说明[0031]以下将结合附图说明本发明的实质,其中:[0032]图1以简化形式示出了用于虚拟地址到物理地址转换的典型计算机体系结构;[0033]图2示出了说明如何通过使用k级地址转换表实现虚拟地址到物理地址转换的框图;[0034]图3示出了说明恶意用户如何针对同一物理地址实现双重映射的框图;[0035]图4示出了一个示例性实施例提供的内存管理装置的框图;[0036]图5示出了一个示例性实施例提供的图4所示内存管理装置的操作方法的流程图;[0037]图6示出了一个示例性实施例提供的用于虚拟地址到物理地址转换的计算机体系结构。具体实施方式[0038]结合附图进一步详细地描述了本发明的各种实施例。但是,本发明可以通过许多其它形式体现,并且不应解释为限于在以下描述中公开的任何特定结构或功能。相反,提供这些实施例是为了使本发明的描述详细和完整。[0039]根据详细描述,本领域技术人员将显而易见的是,本发明的范围包括本文中所公开的本发明的任何实施例,而不论该实施例是独立实现还是与本发明的任何其它实施例协同实现。例如,在实践中,本文中所公开的装置和方法可以使用本文中所提供的任意数量的实施例来实现。此外,应理解,本发明的任何实施例都可以使用所附权利要求中提出的一个或多个元件来实现。[0040]本文中所使用的“示例性”一词的含义为“用作说明”。除非另有说明,否则本文中描述为“示例性”的任何实施例都不应被理解为优选或具有优于其它实施例的优点。[0041]根据本文中所公开的实施例,虚拟地址空间可以指操作系统(operatingsystem,os)为特定进程创建的逻辑或虚拟地址的集合/范围。所述虚拟地址空间可以组织成虚拟页,每个页是所述虚拟地址空间的子空间。换句话说,每个虚拟页可以包含所述虚拟地址空间的一个或多个虚拟地址。所述虚拟页最终应映射到物理页,物理页也称为页帧,是物理地址空间的子空间。所述映射也称为地址转换或分页,通常由内存管理单元(memorymanagementunit,mmu)执行。[0042]本文中所公开的实施例中使用的地址转换表可以指所述os中用于存储虚拟地址和物理地址之间的上述映射的数据结构。更具体地,所述地址转换表可以指由将所述虚拟页映射到所述物理页的一组页表项(pagetableentries,pte)表示的页表。所述mmu或类似单元在接收到来自中央处理器(centralprocessingunit,cpu)等处理单元的所述映射的请求时,可以使用所述地址转换表。所述地址转换表可以按先到先得的方式填充映射。[0043]所述地址转换表可以组织成平面表,其中包含每个进程从所述虚拟地址空间到所述物理地址空间的所有映射,包括与当前未映射的虚拟页和物理页对应的映射。然而,此类组织对于所述地址转换表本身来说浪费了大量内存。为了克服这一缺点,可以按分层的方式组织所述地址转换表。所述分层组织意味着将所述地址转换表拆分为不同的级别,以便更高级别(更接近地址转换表的根)的pte(也称为页中间目录(pagemiddledirectory,pmd)项)保存物理内存较大区域的信息。因此,分层组织的地址转换表的大小取决于每个进程使用的虚拟页的数量。[0044]图1示出了用于虚拟地址到物理地址转换的典型计算机体系结构100。计算机体系结构100包括以下硬件组件:cpu102、mmu104和组织成物理页(0、1、……、n)的分页物理内存106。cpu102用于生成虚拟地址108,mmu104用于将虚拟地址108映射到物理地址110,物理地址110允许访问物理内存106的物理页(0、1、……、n)中的某一个或多个。为了加快该映射,mmu104可以使用称为旁路转换缓冲(translationlookasidebuffer,tlb)112的内部缓存。tlb112用于存储虚拟地址和物理地址之间最近使用的映射。mmu104在接收到虚拟地址108时,首先查tlb112,以确定tlb112是否已经存储了虚拟地址108的映射。如果到匹配项(称为tlb命中),则返回物理地址110,并且对物理内存106的访问可以继续。然而,如果没有匹配项(称为tlb未命中),mmu104将继续查地址转换表114,以确定地址转换表114是否包含虚拟地址108的映射(称为页遍历)。如果存在此类映射,则将其写回tlb112,并重新启动地址转换操作(在这种情况下,mmu104将在tlb112中到虚拟地址108的映射,并且对物理内存106的访问将继续)。然而,如果地址转换表114中没有虚拟地址108的映射(称为页面错误),mmu104中断地址转换操作并将控制权转交给os,使得os可以执行页面错误处理程序来检查页面错误的原因,并对发生的情况采取相应的补救措施。[0045]图2示出了说明如何通过使用k级地址转换表200实现虚拟地址到物理地址转换的框图。具体而言,假设虚拟地址108被划分为索引(202-1、202-2、……、202-k)和偏移量204。k级地址转换表200由分层排列的表(206-1、206-2、……、206-k)构成。表206-1对应于k级地址转换表200的第1级,表206-2对应于k级地址转换表200的第2级,以此类推。表(206-1、206-2、……、206-k)中的每一个由一组(pte1、2、……、n)构成。索引(202-1、202-2、……、202-k)中的每一个表示k级地址转换表200对应级别的表(206-1、206-2、……、206-k)中的一个的特定pte。j级表中的每个pte依次指向某个j+1级表的基,其中,1≤j≤k-1。换句话说,1级表206-1中的pte2(由索引202-1表示)指向2级表206-2的基(即,pte1),该基根据索引202-2进一步变为pte2,以此类推。k级表206-k中的每个pte包含物理内存106的某个物理页的物理页号(physicalpagenumber,ppn)208。ppn208和偏移量210(根据偏移量204确定)构成物理地址110。因此,为了构造物理地址110,mmu104在能够确定ppn208之前应访问k个pte。[0046]图3示出了说明恶意用户如何针对同一物理地址110实现双重映射的框图。正如上文结合图2所说明的,假设虚拟地址108到物理地址110的映射最初由k级地址转换表200提供。然后,恶意用户决定将不同的虚拟地址302映射到同一物理地址110。虚拟地址302可以具有与虚拟地址108相同或相似的配置,为免图3过载,省略了其细节。为了将虚拟地址302映射到物理地址110,恶意用户应更新k级地址转换表200,使其通过分层排列的表(304-1、304-2、……、304-k)提供所述映射。表(304-1、304-2、……、304-k)的数量也可以少于或多于表(206-1、206-2、……、206-k)的数量,这取决于恶意用户想要映射到物理地址110的虚拟地址302的配置。除了图3所示的双重映射外,还可能存在一些其它恶意攻击,例如,包括:使物理地址110对应的物理页可写,并完全关闭mmu104,从而直接访问物理内存106的物理页。[0047]避免上述恶意行为的一种可能的方式是对k级地址转换表200采取基于虚拟机管理程序的保护。虚拟机管理程序可以指创建和运行虚拟机的计算机软件、固件或硬件。在这种情况下,k级地址转换表200的所有映射也被注册到所述虚拟机管理程序,使得所述虚拟机管理程序可以在物理内存106的物理页上复制与os提供的相同保护,即处于异常级别1(exceptionlevel1,el1)但处于自己的异常级别(el2)的os内核。这种额外保护可以防止任何试图放松对某个物理页的保护,从而将其映射到不同的虚拟地址(例如,虚拟地址302),即双重映射。然而,基于虚拟机管理程序的保护的问题是,所述os内核与所述虚拟机管理程序之间的上下文切换(用于检测映射是否被滥用)会导致额外的显著延迟。[0048]避免上述恶意攻击的另一种可能的方式可以包括引入k级地址转换表200的交替映射,使物理页能够被映射为可写。此类交替映射通常处于非活动状态,可防止恶意写入轻易发生(即,恶意用户现在还必须激活相应的交替映射)。然而,基于交替映射的保护也会因在原始映射和交替映射之间切换而产生明显的延迟。此外,基于交替映射的保护不如基于虚拟机管理程序的保护可靠。[0049]本文中所公开的示例性实施例提供了一种技术方案,可以减轻或者甚至消除现有技术特有的上述缺点。具体而言,本文中所公开的技术方案基于跟踪地址转换表中具有映射的虚拟地址和物理地址,并生成区分所述地址转换表中具有和不具有所述映射的虚拟地址和物理地址的元数据。换句话说,所述元数据可以用于检查是否为所述地址转换表中的某个虚拟地址或物理地址创建了相应的pte。随后,在拦截在所述地址转换表中创建新映射的请求时,使用所述元数据检查与所述新映射对应的虚拟地址和物理地址。如果与所述新映射对应的虚拟地址和物理地址在所述地址转换表中不具有任何映射,则做出创建所述新映射的决定。这样,可以检测和防止对所述地址转换表的恶意攻击,例如针对双重映射的攻击。此外,与基于虚拟机管理程序的保护相比,可以为所述地址转换表提供类似级别或更高级别的安全性,而不会造成所述基于虚拟机管理程序的保护所特有的延迟。[0050]图4示出了一个示例性实施例提供的内存管理装置400的框图。内存管理装置400包括处理单元402和存储单元404。存储单元404存储处理器可执行指令406,处理器可执行指令406在由处理单元402执行时,使处理单元402拦截更新操作408并就更新操作408做出决定410,如下文所述。应当注意的是,图4中所示的构成内存管理装置400的结构性元件的数量、布置和互连并非旨在限制本发明,而仅仅用于提供关于如何在内存管理装置400内实现所述结构性元件的一般理念。例如,根据特定应用,处理单元402可以用几个处理单元替换,存储单元404可以用几个存储单元替换。[0051]处理单元402可以实现为一个或多个处理器内核、cpu、通用处理器、专用处理器、微控制器、微处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(fieldprogrammablegatearray,fpga)、数字信号处理器(digitalsignalprocessor,dsp)、复杂可编程逻辑器件等。此外,还应当注意的是,处理单元402可以实现为上述一个或多个的任意组合。例如,处理单元402可以是两个或多个微处理器的组合。[0052]存储单元404可以实现为现代电子计算机中使用的典型非易失性存储器或易失性存储器。例如,所述非易失性存储器可以包括只读存储器(read-onlymemory,rom)、铁电随机存取存储器(random-accessmemory,ram)、可编程rom(programmablerom,prom)、电可擦除prom(electricallyerasableprom,eeprom)、固态驱动器(solidstatedrive,ssd)、闪存、磁盘存储器(例如,硬盘驱动器和磁带)、光盘存储器(例如,cd、dvd和蓝光光盘)等。关于所述易失性存储器,其示例包括动态ram、同步dram(synchronousdram,sdram)、双倍数据速率sdram(doubledataratesdram,ddrsdram)、静态ram等。[0053]存储在存储单元404中的处理器可执行指令406可以用作计算机可执行代码,所述计算机可执行代码使处理单元402执行本发明各方面。用于执行本发明各方面的操作或步骤的计算机可执行代码可以用一种或多种编程语言的任何组合编写,例如java、c++等。在一些示例中,计算机可执行代码可以是高级语言的形式或预编译的形式,并由解释器(也预存储在存储单元404中)动态生成。[0054]图5示出了一个示例性实施例提供的内存管理装置400的操作方法500的流程图。方法500的每个步骤由处理单元402执行。方法500从步骤s502开始,在该步骤中,处理单元402跟踪给定虚拟地址空间的哪些虚拟地址和给定物理地址空间的哪些物理地址在预填充地址转换表(例如,k级地址转换表200)中具有映射。然后,方法500转到步骤s504,在该步骤中,处理单元402生成指示所述虚拟地址和所述物理地址在所述地址转换表中存在映射的元数据。之后,启动下一个步骤s506,在该步骤中,处理单元402拦截对所述地址转换表的更新操作408。更新操作408涉及在所述地址转换表中创建所述虚拟地址空间的目标虚拟地址和所述物理地址空间的目标物理地址之间的新映射。进一步地,方法500转到步骤s508,在该步骤中,处理单元402确定所述目标虚拟地址和所述目标物理地址中的至少一个在所述地址转换表中是否具有任何映射。方法500以步骤s510结束,在该步骤中,处理单元402根据步骤s508的结果发出关于更新操作408的决定410。[0055]如果在步骤s508中确定所述目标虚拟地址和所述目标物理地址中的每一个在所述地址转换表中不具有任何映射,则处理单元402决定在步骤s510中执行更新操作408。处理单元402还用于更新元数据,使所述元数据现在也指示目标虚拟地址和物理地址。[0056]然而,如果在步骤s508中确定所述目标虚拟地址和所述目标物理地址中的至少一个在所述地址转换表中已经具有映射,则处理单元402决定拒绝更新操作408。换句话说,所述地址转换表中存在所述目标虚拟地址和所述目标物理地址中的任何一个的映射意味着更新操作408是恶意的,并且例如是针对双重映射的。此外,处理单元402还可以用于提供所述拒绝更新操作408的通知。通过此类通知,授权用户可以获知恶意攻击企图,并且作为响应可以在必要时采取适当的保护措施。[0057]在一个示例性实施例中,处理单元402还用于将所述元数据存储到存储单元404的预设部分。因此,与缓存在tlb中的最近使用的映射相似,与所述地址转换表中的映射相关的元数据也可以缓存在存储单元404中。[0058]关于元数据本身,处理单元402可以用于将元数据生成为位图,所述位图通过使用第一预设位值(例如,“1”)指示所述地址转换表中具有映射的虚拟地址和物理地址。处理单元402还可以用于通过使用第二预设位值(例如,“0”)在同一位图中指示所述地址转换表中不具有映射的虚拟地址和物理地址。对于本领域技术人员显而易见的是,所述元数据的结构不限于上述结构,可以根据特定应用替换为任何其它数据结构。例如,所述元数据可以包含两个独立的位图,其中一个位图正确标记虚拟地址(简称虚拟地址位图),另一个位图正确标记物理地址(简称物理地址位图)。[0059]现在举例说明,其中,所述元数据包含所述虚拟地址位图和所述物理地址位图,如上所述,使用“1”和“0”标记每个位图中的地址。方法500的步骤s508和步骤s510可以按以下方式执行。[0060]首先,针对更新操作408中指示的目标虚拟地址测试所述虚拟地址位图。如果所述目标虚拟地址在所述虚拟地址位图中标记为“0”,则在步骤s508中,处理单元402确定所述地址转换表中不存在与所述目标虚拟地址相关的pte(或换句话说,映射),并且步骤s508相对于更新操作408中指示的所述目标物理地址继续。如果所述目标虚拟地址在所述虚拟地址位图中标记为“1”,则在步骤s508中,处理单元402确定所述地址转换表中存在与所述目标虚拟地址相关的既有pte,因此,在步骤s510中,处理单元402拒绝更新操作408。[0061]当发现所述目标虚拟地址标记为“0”时,可以针对所述目标物理地址测试所述物理地址位图。如果所述目标物理地址在所述物理地址位图中标记为“0”,则在步骤s508中,处理单元402确定所述地址转换表中不存在与所述目标物理地址相关的pte,因此,在步骤s510中,允许进行更新操作408,即,处理单元402决定执行更新操作408。如果所述目标物理地址在所述物理地址位图中标记为“1”,则在步骤s508中,处理单元402确定所述地址转换表中存在与所述目标物理地址相关的既有pte,因此,在步骤s510中,处理单元402拒绝更新操作408。[0062]在一个示例性实施例中,处理单元402还用于在步骤s508之前,检查所述目标虚拟地址和所述目标物理地址是否分别在所述虚拟地址空间和所述物理地址空间的预设受保护子空间内。在该实施例中,当所述目标虚拟地址和所述目标物理地址在所述预设受保护子空间内时,处理单元402转到方法500的步骤s508和步骤s510。这可以选择性保护所述地址转换表,从而选择性保护所述物理地址空间的所述物理地址。[0063]图6示出了一个示例性实施例提供的用于虚拟地址到物理地址转换的计算机体系结构600。计算机体系结构600包括以下硬件组件:cpu602、物理内存604和内存管理装置400。物理内存604具有用于访问物理内存604的物理地址的内存地址总线606以及用于从/向物理内存604读取/写入数据的内存数据总线608。cpu602不直接访问内存地址总线606。相反,当需要执行存储操作时,cpu602依赖内存管理装置400生成物理地址(例如,物理地址110)。为了生成物理地址,内存管理装置400访问内存地址总线606(如双箭头610所示)。cpu602可以直接访问内存数据总线608(如双箭头612所示),以通过使用由内存管理装置400生成的物理地址在物理内存604中读写数据。传统mmu(例如,mmu104)从不向物理内存604写入任何内容:只能通过内存数据总线608(如箭头614所示)从物理内存604中读取数据。进而,可以向计算机体系结构600中使用的取代传统mmu的内存管理装置400分配一部分物理内存604,其中内存管理装置400可以自主地写入元数据,例如,上文所述的位图(如双箭头616所示)。例如,如果内存管理装置400的存储单元404由于某种原因不再能够存储元数据,则可以这样做。[0064]应当注意的是,方法500的每个步骤或操作或这些步骤或操作的任何组合可以通过硬件、固件和/或软件等各种手段来实现。例如,上述步骤或操作中的一个或多个可以由处理器可执行指令、数据结构、程序模块和其它适当的数据表示来体现。此外,体现上述步骤或操作的可执行指令可以存储在对应数据载体上,并由处理单元402执行。该数据载体可以实现为可由至少一个处理器读取以执行计算机可执行指令的任何计算机可读存储介质。这种计算机可读存储介质可以包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而不是限制,计算机可读介质包括以任何适合存储信息的方法或技术实现的介质。更详细地,计算机可读介质的实际示例包括但不限于信息传递介质、ram、rom、eeprom、闪存或其它存储器技术、cd-rom、数字多功能光盘(digitalversatiledisc,dvd)、全息介质或其它光盘存储器、磁带、磁带盒、磁盘存储器和其它磁存储设备。[0065]此外,还应当注意的是,内存管理装置400可以与现有虚拟机管理程序协同操作。例如,如果所述虚拟机管理程序已经为所述地址转换表提供保护,则内存管理装置400提供的保护可以视为替代选项。[0066]尽管本文描述了本发明的示例性实施例,但应注意,在不偏离由所附权利要求所定义的法律保护范围的情况下,可以在本发明的实施例中进行任何各种改变和修改。在所附权利要求书中,词语“包括”不排除其它元件或步骤,术语“一”或者“一个”不排除多个。在互不相同的从属权利要求中列举某些措施并不表示这些措施的组合不能被有利地使用。当前第1页12当前第1页12

技术特征:


1.一种内存管理装置,其特征在于,包括:至少一个处理单元;存储单元,耦合到所述至少一个处理单元,用于存储处理器可执行指令;其中,所述处理器可执行指令在由所述至少一个处理单元执行时,使所述至少一个处理单元执行以下操作:-跟踪地址转换表中具有映射的虚拟地址空间的虚拟地址和物理地址空间的物理地址;-生成指示所述虚拟地址和所述物理地址在所述地址转换表中存在映射的元数据;-拦截对所述地址转换表的更新操作,所述更新操作涉及在所述地址转换表中创建所述虚拟地址空间的目标虚拟地址和所述物理地址空间的目标物理地址之间的新映射;-根据所述元数据,确定所述目标虚拟地址和所述目标物理地址中的至少一个在所述地址转换表中是否具有所述映射;-根据确定结果,决定是否执行所述更新操作。2.根据权利要求1所述的内存管理装置,其特征在于,所述至少一个处理单元用于:将所述元数据存储到所述存储单元的预设部分。3.根据权利要求1或2所述的内存管理装置,其特征在于,所述至少一个处理单元用于:响应于确定所述目标虚拟地址和所述目标物理地址中的每一个在所述地址转换表中不具有所述映射,执行所述更新操作,并更新所述元数据。4.根据权利要求1或2所述的内存管理装置,其特征在于,所述至少一个处理单元用于:响应于确定所述目标虚拟地址和所述目标物理地址中的至少一个在所述地址转换表中具有所述映射,拒绝所述更新操作。5.根据权利要求4所述的内存管理装置,其特征在于,所述至少一个处理单元还用于:提供拒绝所述更新操作的通知。6.根据权利要求1至5中任一项所述的内存管理装置,其特征在于,所述至少一个处理单元用于:在所述确定之前,检查所述目标虚拟地址和所述目标物理地址是否分别在所述虚拟地址空间和所述物理地址空间的预设受保护子空间内;当所述目标虚拟地址和所述目标物理地址在所述预设受保护子空间内时,继续执行所述确定和所述决定。7.根据权利要求1至6中任一项所述的内存管理装置,其特征在于,所述至少一个处理单元用于:将所述元数据生成为位图,所述位图通过使用第一预设位值指示所述地址转换表中具有所述映射的虚拟地址和物理地址。8.根据权利要求7所述的内存管理装置,其特征在于,所述至少一个处理单元还用于:通过使用第二预设位值在所述位图中指示所述地址转换表中不具有所述映射的所述虚拟地址空间的虚拟地址和所述物理地址空间的物理地址,所述第二预设位值不同于所述第一预设位值。9.一种内存管理方法,其特征在于,所述内存管理方法包括以下步骤:跟踪地址转换表中具有映射的虚拟地址空间的虚拟地址和物理地址空间的物理地址;生成指示所述虚拟地址和所述物理地址在所述地址转换表中存在映射的元数据;拦截对所述地址转换表的更新操作,所述更新操作涉及在所述地址转换表中创建所述虚拟地址空间的目标虚拟地址和所述物理地址空间的目标物理地址之间的新映射;
根据所述元数据,确定所述目标虚拟地址和所述目标物理地址中的至少一个在所述地址转换表中是否具有所述映射;根据确定结果,决定是否执行所述更新操作。10.根据权利要求9所述的内存管理方法,其特征在于,如果确定所述目标虚拟地址和所述目标物理地址中的每一个在所述地址转换表中不具有所述映射,则所述决定包括:决定执行所述更新操作;更新所述元数据。11.根据权利要求9所述的内存管理方法,其特征在于,如果确定所述目标虚拟地址和所述目标物理地址中的至少一个在所述地址转换表中具有所述映射,则所述决定包括:决定拒绝所述更新操作。12.根据权利要求11所述的内存管理方法,其特征在于,所述内存管理方法还包括:提供拒绝所述更新操作的通知。13.根据权利要求9至12中任一项所述的内存管理方法,其特征在于,所述内存管理方法还包括:在所述确定之前,检查所述目标虚拟地址和所述目标物理地址是否分别在所述虚拟地址空间和所述物理地址空间的预设受保护子空间内,其中,当所述目标虚拟地址和所述目标物理地址在所述预设受保护子空间内时,执行所述确定和所述决定。14.根据权利要求9至13中任一项所述的内存管理方法,其特征在于,所述生成包括:将所述元数据生成为位图,所述位图通过使用第一预设位值指示所述地址转换表中具有所述映射的虚拟地址和物理地址。15.根据权利要求14所述的内存管理方法,其特征在于,所述内存管理方法还包括:通过使用第二预设位值在所述位图中指示所述地址转换表中不具有所述映射的所述虚拟地址空间的虚拟地址和所述物理地址空间的物理地址,所述第二预设位值不同于所述第一预设位值。16.一种计算机程序产品,其特征在于,所述计算机程序产品包括用于存储计算机程序的计算机可读介质,其中所述计算机程序在由至少一个处理器执行时,使所述至少一个处理器执行根据权利要求9至15中任一项所述的内存管理方法。

技术总结


本发明涉及一种以受保护的方式提供虚拟地址到物理地址转换的内存管理装置及方法。所述内存管理装置及方法基于跟踪地址转换表中具有映射的虚拟地址和物理地址,并生成区分所述地址转换表中具有和不具有所述映射的虚拟地址和物理地址的元数据。随后,在拦截在所述地址转换表中创建新映射的请求时,使用所述元数据检查与所述新映射对应的虚拟地址和物理地址。如果与所述新映射对应的虚拟地址和物理地址在所述地址转换表中不具有任何其它映射,则做出创建所述新映射的决定。这样,可以检测和防止对所述地址转换表的恶意攻击,例如针对双重映射的恶意攻击。双重映射的恶意攻击。双重映射的恶意攻击。


技术研发人员:

伊戈尔

受保护的技术使用者:

华为技术有限公司

技术研发日:

2020.05.15

技术公布日:

2022/12/23

本文发布于:2024-09-22 13:27:30,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/47525.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   地址   物理地址   单元
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议