CN115516438A - 内存管理装置及方法 - Google Patents

内存管理装置及方法 Download PDF

Info

Publication number
CN115516438A
CN115516438A CN202080100609.XA CN202080100609A CN115516438A CN 115516438 A CN115516438 A CN 115516438A CN 202080100609 A CN202080100609 A CN 202080100609A CN 115516438 A CN115516438 A CN 115516438A
Authority
CN
China
Prior art keywords
address
virtual
translation table
physical
mapping
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080100609.XA
Other languages
English (en)
Inventor
伊戈尔·斯托帕
杨-艾瑞克·艾克伯格
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN115516438A publication Critical patent/CN115516438A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

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

Description

内存管理装置及方法
技术领域
本发明大体涉及计算机工程领域,更具体地,涉及一种以受保护的方式提供虚拟地址到物理地址转换的内存管理装置及方法。
背景技术
Linux等操作系统(operating system,OS)支持虚拟内存的概念,以便将物理内存用于计算进程,使每个计算进程“认为”自己是唯一运行的进程。虚拟内存特别有用,因为它可以规避物理内存特有的一些问题(例如,物理内存中的间隙,即未使用的部分),并且使物理内存中几个分散的物理页看起来是连续的。此外,虚拟内存使用户能够在可能远远大于物理地址空间的虚拟地址空间中操作。将这些空间相互映射所需的地址转换由内存管理单元(memory management unit,MMU)执行。
MMU主要使用地址转换表执行地址转换,地址转换表也称为页表。地址转换表预填充有虚拟地址空间的虚拟地址和物理地址空间的物理地址之间的映射。除了地址转换外,MMU还用于在通过对应虚拟地址映射到的物理地址访问的物理内存页上执行某些属性。例如,此类属性包括“只读”或“可执行但不可修改”。为了加速地址转换,MMU可以设称为旁路转换缓冲(Translation Look-aside Buffer,TLB)的内部缓存,该内部缓存存储虚拟地址和物理地址之间最近使用的映射。
某个物理内存页的映射有某些限制,例如“只读”,这种情况并不少见。在这些情况下,恶意用户可能会试图通过以下两种方式规避此类限制:对地址转换表进行相应更新,使物理内存页可写;或者完全关闭MMU,从而直接访问物理内存页。为了避免这些恶意攻击,地址转换表可以使用基于虚拟机管理程序的保护或交替映射。然而,基于虚拟机管理程序的保护和交替映射都会导致额外的显著延迟,最终会减缓执行需要地址转换的计算进程。
发明内容
提供本发明内容是为了以简化的形式介绍在以下具体实施方式中进一步描述的一些概念。本发明内容并非旨在确定本发明的关键特征,也不旨在用于限制本发明的范围。
本发明的目的在于提供一种确保以受保护的方式进行虚拟地址到物理地址转换的技术方案。
上述目的是通过所附权利要求中独立权利要求的特征来实现的。进一步的实施例和示例从从属权利要求、具体实施方式和附图中是显而易见的。
根据本发明的第一方面,提供了一种内存管理装置,所述内存管理装置包括:至少一个处理单元;存储单元,耦合到所述至少一个处理单元。所述存储单元用于存储处理器可执行指令和数据,所述处理器可执行指令和数据在进行处理时,使所述至少一个处理单元执行以下操作:
-跟踪地址转换表中具有映射的虚拟地址空间的虚拟地址和物理地址空间的物理地址;
-生成指示所述虚拟地址和所述物理地址在所述地址转换表中存在映射的元数据;
-拦截对所述地址转换表的更新操作,所述更新操作涉及在所述地址转换表中创建所述虚拟地址空间的目标虚拟地址和所述物理地址空间的目标物理地址之间的新映射;
-根据所述元数据,确定所述目标虚拟地址和所述目标物理地址中的至少一个在所述地址转换表中是否具有所述映射;
-根据确定结果,决定是否执行所述更新操作。
采用如此配置的内存管理装置,可以检测和防止对所述地址转换表的恶意攻击,例如针对双重映射的恶意攻击。此外,与基于虚拟机管理程序的保护相比,根据本发明第一方面所述的内存管理装置可以为所述地址转换表提供类似级别或更高级别的安全性,而不会造成所述基于虚拟机管理程序的保护所特有的延迟。
在所述第一方面的一个实施例中,所述至少一个处理单元用于:将所述元数据存储到所述存储单元的预设部分。这可以简化所述元数据在根据本发明第一方面所述的装置操作中的使用。
在所述第一方面的一个实施例中,所述至少一个处理单元用于:响应于确定所述目标虚拟地址和所述目标物理地址中的每一个在所述地址转换表中不具有所述映射,执行所述更新操作。之后,所述至少一个处理单元还用于:更新所述元数据。这样,可以检测到所述更新操作与所述双重映射等恶意攻击无关。
在所述第一方面的一个实施例中,所述至少一个处理单元用于:响应于确定所述目标虚拟地址和所述目标物理地址中的至少一个在所述地址转换表中具有映射,拒绝所述更新操作。这样,可以检测到所述更新操作与所述双重映射等恶意攻击有关。
在所述第一方面的一个实施例中,所述至少一个处理单元还用于:提供拒绝所述更新操作的通知。通过此类通知,授权用户可以获知恶意攻击企图,并且作为响应可以在必要时采取适当的保护措施。
在所述第一方面的一个实施例中,所述至少一个处理单元用于:在所述确定之前,检查所述目标虚拟地址和所述目标物理地址是否分别在所述虚拟地址空间和所述物理地址空间的预设受保护子空间内。在该实施例中,所述至少一个处理单元用于:当所述目标虚拟地址和所述目标物理地址在所述预设受保护子空间内时,继续执行所述确定和所述决定。这可以选择性保护所述地址转换表,从而选择性保护所述物理地址空间的所述物理地址。
在所述第一方面的一个实施例中,所述至少一个处理单元用于:将所述元数据生成为位图。所述位图通过使用第一预设位值指示所述地址转换表中具有所述映射的虚拟地址和物理地址。这可以简化并加快根据本发明第一方面所述的装置的操作。
在所述第一方面的一个实施例中,所述至少一个处理单元还用于:通过使用第二预设位值在所述位图中指示所述地址转换表中不具有所述映射的所述虚拟地址空间的虚拟地址和所述物理地址空间的物理地址。所述第二预设位值不同于所述第一预设位值。这样,可以确保更好地区分所述地址转换表中具有和不具有所述映射的虚拟地址和物理地址。
根据本发明的第二方面,提供了一种内存管理方法。所述方法包括以下步骤:首先,跟踪地址转换表中具有映射的虚拟地址空间的虚拟地址和物理地址空间的物理地址;然后,生成指示所述虚拟地址和所述物理地址在所述地址转换表中存在映射的元数据;拦截对所述地址转换表的更新操作,所述更新操作涉及在所述地址转换表中创建所述虚拟地址空间的目标虚拟地址和所述物理地址空间的目标物理地址之间的新映射;接下来,根据所述元数据,确定所述目标虚拟地址和所述目标物理地址中的至少一个在所述地址转换表中是否具有映射;最后,根据确定结果,决定是否执行所述更新操作。这样,可以检测和防止对所述地址转换表的恶意攻击,例如针对双重映射的攻击。此外,与基于虚拟机管理程序的保护相比,可以为所述地址转换表提供类似级别或更高级别的安全性,而不会造成所述基于虚拟机管理程序的保护所特有的延迟。
在所述第二方面的一个实施例中,如果确定所述目标虚拟地址和所述目标物理地址中的每一个在所述地址转换表中不具有所述映射,则所述决定步骤包括:决定执行所述更新操作;更新所述元数据。这样,可以检测到所述更新操作与所述双重映射等恶意攻击无关。
在所述第二方面的一个实施例中,如果确定所述目标虚拟地址和所述目标物理地址中的至少一个在所述地址转换表中已经具有所述映射,则所述决定步骤包括:决定拒绝所述更新操作。这样,可以检测到所述更新操作与所述双重映射等恶意攻击有关。
在所述第二方面的一个实施例中,所述方法还包括以下步骤:提供拒绝所述更新操作的通知。通过此类通知,授权用户可以获知恶意攻击企图,并且作为响应可以在必要时采取适当的保护措施。
在所述第二方面的一个实施例中,所述方法还包括以下步骤:在所述确定步骤之前,检查所述目标虚拟地址和所述目标物理地址是否分别在所述虚拟地址空间和所述物理地址空间的预设受保护子空间内。在该实施例中,当检查到所述目标虚拟地址和所述目标物理地址在所述预设受保护子空间内时,执行所述确定和所述决定步骤。这可以选择性保护所述地址转换表,从而选择性保护所述物理地址空间的所述物理地址。
在所述第二方面的一个实施例中,所述生成步骤包括:将所述元数据生成为位图。所述位图通过使用第一预设位值指示所述地址转换表中具有所述映射的虚拟地址和物理地址。这可以简化并加快根据本发明第二方面所述的方法的执行。
在所述第二方面的一个实施例中,所述方法还包括以下步骤:通过使用第二预设位值在所述位图中指示所述地址转换表中不具有所述映射的所述虚拟地址空间的虚拟地址和所述物理地址空间的物理地址。所述第二预设位值不同于所述第一预设位值。这样,可以确保更好地区分所述地址转换表中具有和不具有所述映射的虚拟地址和物理地址。
根据本发明的第三方面,提供了一种计算机可读存储介质。所述计算机可读存储介质存储有计算机程序,所述计算机程序在由至少一个处理器执行时,使所述至少一个处理器执行根据本发明第二方面所述的方法。这可以简化根据本发明第二方面所述的方法在任何计算设备(例如,根据本发明第一方面所述的装置)中的实现方式。
通过阅读下面的具体实施方式并回顾附图,本发明的其它特征和优点将是显而易见的。
附图说明
以下将结合附图说明本发明的实质,其中:
图1以简化形式示出了用于虚拟地址到物理地址转换的典型计算机体系结构;
图2示出了说明如何通过使用k级地址转换表实现虚拟地址到物理地址转换的框图;
图3示出了说明恶意用户如何针对同一物理地址实现双重映射的框图;
图4示出了一个示例性实施例提供的内存管理装置的框图;
图5示出了一个示例性实施例提供的图4所示内存管理装置的操作方法的流程图;
图6示出了一个示例性实施例提供的用于虚拟地址到物理地址转换的计算机体系结构。
具体实施方式
结合附图进一步详细地描述了本发明的各种实施例。但是,本发明可以通过许多其它形式体现,并且不应解释为限于在以下描述中公开的任何特定结构或功能。相反,提供这些实施例是为了使本发明的描述详细和完整。
根据详细描述,本领域技术人员将显而易见的是,本发明的范围包括本文中所公开的本发明的任何实施例,而不论该实施例是独立实现还是与本发明的任何其它实施例协同实现。例如,在实践中,本文中所公开的装置和方法可以使用本文中所提供的任意数量的实施例来实现。此外,应理解,本发明的任何实施例都可以使用所附权利要求中提出的一个或多个元件来实现。
本文中所使用的“示例性”一词的含义为“用作说明”。除非另有说明,否则本文中描述为“示例性”的任何实施例都不应被理解为优选或具有优于其它实施例的优点。
根据本文中所公开的实施例,虚拟地址空间可以指操作系统(operating system,OS)为特定进程创建的逻辑或虚拟地址的集合/范围。所述虚拟地址空间可以组织成虚拟页,每个页是所述虚拟地址空间的子空间。换句话说,每个虚拟页可以包含所述虚拟地址空间的一个或多个虚拟地址。所述虚拟页最终应映射到物理页,物理页也称为页帧,是物理地址空间的子空间。所述映射也称为地址转换或分页,通常由内存管理单元(memorymanagement unit,MMU)执行。
本文中所公开的实施例中使用的地址转换表可以指所述OS中用于存储虚拟地址和物理地址之间的上述映射的数据结构。更具体地,所述地址转换表可以指由将所述虚拟页映射到所述物理页的一组页表项(page table entries,PTE)表示的页表。所述MMU或类似单元在接收到来自中央处理器(central processing unit,CPU)等处理单元的所述映射的请求时,可以使用所述地址转换表。所述地址转换表可以按先到先得的方式填充映射。
所述地址转换表可以组织成平面表,其中包含每个进程从所述虚拟地址空间到所述物理地址空间的所有映射,包括与当前未映射的虚拟页和物理页对应的映射。然而,此类组织对于所述地址转换表本身来说浪费了大量内存。为了克服这一缺点,可以按分层的方式组织所述地址转换表。所述分层组织意味着将所述地址转换表拆分为不同的级别,以便更高级别(更接近地址转换表的根)的PTE(也称为页中间目录(Page Middle Directory,PMD)项)保存物理内存较大区域的信息。因此,分层组织的地址转换表的大小取决于每个进程使用的虚拟页的数量。
图1示出了用于虚拟地址到物理地址转换的典型计算机体系结构100。计算机体系结构100包括以下硬件组件:CPU 102、MMU 104和组织成物理页(0、1、……、n)的分页物理内存106。CPU 102用于生成虚拟地址108,MMU 104用于将虚拟地址108映射到物理地址110,物理地址110允许访问物理内存106的物理页(0、1、……、n)中的某一个或多个。为了加快该映射,MMU 104可以使用称为旁路转换缓冲(Translation Lookaside Buffer,TLB)112的内部缓存。TLB 112用于存储虚拟地址和物理地址之间最近使用的映射。MMU 104在接收到虚拟地址108时,首先查找TLB 112,以确定TLB 112是否已经存储了虚拟地址108的映射。如果找到匹配项(称为TLB命中),则返回物理地址110,并且对物理内存106的访问可以继续。然而,如果没有匹配项(称为TLB未命中),MMU 104将继续查找地址转换表114,以确定地址转换表114是否包含虚拟地址108的映射(称为页遍历)。如果存在此类映射,则将其写回TLB 112,并重新启动地址转换操作(在这种情况下,MMU 104将在TLB 112中找到虚拟地址108的映射,并且对物理内存106的访问将继续)。然而,如果地址转换表114中没有虚拟地址108的映射(称为页面错误),MMU 104中断地址转换操作并将控制权转交给OS,使得OS可以执行页面错误处理程序来检查页面错误的原因,并对发生的情况采取相应的补救措施。
图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)中的每一个由一组(PTE 1、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中的PTE 2(由索引202-1表示)指向2级表206-2的基(即,PTE 1),该基根据索引202-2进一步变为PTE 2,以此类推。k级表206-k中的每个PTE包含物理内存106的某个物理页的物理页号(physical page number,PPN)208。PPN 208和偏移量210(根据偏移量204确定)构成物理地址110。因此,为了构造物理地址110,MMU 104在能够确定PPN 208之前应访问k个PTE。
图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对应的物理页可写,并完全关闭MMU 104,从而直接访问物理内存106的物理页。
避免上述恶意行为的一种可能的方式是对k级地址转换表200采取基于虚拟机管理程序的保护。虚拟机管理程序可以指创建和运行虚拟机的计算机软件、固件或硬件。在这种情况下,k级地址转换表200的所有映射也被注册到所述虚拟机管理程序,使得所述虚拟机管理程序可以在物理内存106的物理页上复制与OS提供的相同保护,即处于异常级别1(Exception Level 1,EL1)但处于自己的异常级别(EL2)的OS内核。这种额外保护可以防止任何试图放松对某个物理页的保护,从而将其映射到不同的虚拟地址(例如,虚拟地址302),即双重映射。然而,基于虚拟机管理程序的保护的问题是,所述OS内核与所述虚拟机管理程序之间的上下文切换(用于检测映射是否被滥用)会导致额外的显著延迟。
避免上述恶意攻击的另一种可能的方式可以包括引入k级地址转换表200的交替映射,使物理页能够被映射为可写。此类交替映射通常处于非活动状态,可防止恶意写入轻易发生(即,恶意用户现在还必须激活相应的交替映射)。然而,基于交替映射的保护也会因在原始映射和交替映射之间切换而产生明显的延迟。此外,基于交替映射的保护不如基于虚拟机管理程序的保护可靠。
本文中所公开的示例性实施例提供了一种技术方案,可以减轻或者甚至消除现有技术特有的上述缺点。具体而言,本文中所公开的技术方案基于跟踪地址转换表中具有映射的虚拟地址和物理地址,并生成区分所述地址转换表中具有和不具有所述映射的虚拟地址和物理地址的元数据。换句话说,所述元数据可以用于检查是否为所述地址转换表中的某个虚拟地址或物理地址创建了相应的PTE。随后,在拦截在所述地址转换表中创建新映射的请求时,使用所述元数据检查与所述新映射对应的虚拟地址和物理地址。如果与所述新映射对应的虚拟地址和物理地址在所述地址转换表中不具有任何映射,则做出创建所述新映射的决定。这样,可以检测和防止对所述地址转换表的恶意攻击,例如针对双重映射的攻击。此外,与基于虚拟机管理程序的保护相比,可以为所述地址转换表提供类似级别或更高级别的安全性,而不会造成所述基于虚拟机管理程序的保护所特有的延迟。
图4示出了一个示例性实施例提供的内存管理装置400的框图。内存管理装置400包括处理单元402和存储单元404。存储单元404存储处理器可执行指令406,处理器可执行指令406在由处理单元402执行时,使处理单元402拦截更新操作408并就更新操作408做出决定410,如下文所述。应当注意的是,图4中所示的构成内存管理装置400的结构性元件的数量、布置和互连并非旨在限制本发明,而仅仅用于提供关于如何在内存管理装置400内实现所述结构性元件的一般理念。例如,根据特定应用,处理单元402可以用几个处理单元替换,存储单元404可以用几个存储单元替换。
处理单元402可以实现为一个或多个处理器内核、CPU、通用处理器、专用处理器、微控制器、微处理器、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)、数字信号处理器(digitalsignal processor,DSP)、复杂可编程逻辑器件等。此外,还应当注意的是,处理单元402可以实现为上述一个或多个的任意组合。例如,处理单元402可以是两个或多个微处理器的组合。
存储单元404可以实现为现代电子计算机中使用的典型非易失性存储器或易失性存储器。例如,所述非易失性存储器可以包括只读存储器(Read-Only Memory,ROM)、铁电随机存取存储器(Random-Access Memory,RAM)、可编程ROM(Programmable ROM,PROM)、电可擦除PROM(Electrically Erasable PROM,EEPROM)、固态驱动器(solid state drive,SSD)、闪存、磁盘存储器(例如,硬盘驱动器和磁带)、光盘存储器(例如,CD、DVD和蓝光光盘)等。关于所述易失性存储器,其示例包括动态RAM、同步DRAM(Synchronous DRAM,SDRAM)、双倍数据速率SDRAM(Double Data Rate SDRAM,DDR SDRAM)、静态RAM等。
存储在存储单元404中的处理器可执行指令406可以用作计算机可执行代码,所述计算机可执行代码使处理单元402执行本发明各方面。用于执行本发明各方面的操作或步骤的计算机可执行代码可以用一种或多种编程语言的任何组合编写,例如Java、C++等。在一些示例中,计算机可执行代码可以是高级语言的形式或预编译的形式,并由解释器(也预存储在存储单元404中)动态生成。
图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。
如果在步骤S508中确定所述目标虚拟地址和所述目标物理地址中的每一个在所述地址转换表中不具有任何映射,则处理单元402决定在步骤S510中执行更新操作408。处理单元402还用于更新元数据,使所述元数据现在也指示目标虚拟地址和物理地址。
然而,如果在步骤S508中确定所述目标虚拟地址和所述目标物理地址中的至少一个在所述地址转换表中已经具有映射,则处理单元402决定拒绝更新操作408。换句话说,所述地址转换表中存在所述目标虚拟地址和所述目标物理地址中的任何一个的映射意味着更新操作408是恶意的,并且例如是针对双重映射的。此外,处理单元402还可以用于提供所述拒绝更新操作408的通知。通过此类通知,授权用户可以获知恶意攻击企图,并且作为响应可以在必要时采取适当的保护措施。
在一个示例性实施例中,处理单元402还用于将所述元数据存储到存储单元404的预设部分。因此,与缓存在TLB中的最近使用的映射相似,与所述地址转换表中的映射相关的元数据也可以缓存在存储单元404中。
关于元数据本身,处理单元402可以用于将元数据生成为位图,所述位图通过使用第一预设位值(例如,“1”)指示所述地址转换表中具有映射的虚拟地址和物理地址。处理单元402还可以用于通过使用第二预设位值(例如,“0”)在同一位图中指示所述地址转换表中不具有映射的虚拟地址和物理地址。对于本领域技术人员显而易见的是,所述元数据的结构不限于上述结构,可以根据特定应用替换为任何其它数据结构。例如,所述元数据可以包含两个独立的位图,其中一个位图正确标记虚拟地址(简称虚拟地址位图),另一个位图正确标记物理地址(简称物理地址位图)。
现在举例说明,其中,所述元数据包含所述虚拟地址位图和所述物理地址位图,如上所述,使用“1”和“0”标记每个位图中的地址。方法500的步骤S508和步骤S510可以按以下方式执行。
首先,针对更新操作408中指示的目标虚拟地址测试所述虚拟地址位图。如果所述目标虚拟地址在所述虚拟地址位图中标记为“0”,则在步骤S508中,处理单元402确定所述地址转换表中不存在与所述目标虚拟地址相关的PTE(或换句话说,映射),并且步骤S508相对于更新操作408中指示的所述目标物理地址继续。如果所述目标虚拟地址在所述虚拟地址位图中标记为“1”,则在步骤S508中,处理单元402确定所述地址转换表中存在与所述目标虚拟地址相关的既有PTE,因此,在步骤S510中,处理单元402拒绝更新操作408。
当发现所述目标虚拟地址标记为“0”时,可以针对所述目标物理地址测试所述物理地址位图。如果所述目标物理地址在所述物理地址位图中标记为“0”,则在步骤S508中,处理单元402确定所述地址转换表中不存在与所述目标物理地址相关的PTE,因此,在步骤S510中,允许进行更新操作408,即,处理单元402决定执行更新操作408。如果所述目标物理地址在所述物理地址位图中标记为“1”,则在步骤S508中,处理单元402确定所述地址转换表中存在与所述目标物理地址相关的既有PTE,因此,在步骤S510中,处理单元402拒绝更新操作408。
在一个示例性实施例中,处理单元402还用于在步骤S508之前,检查所述目标虚拟地址和所述目标物理地址是否分别在所述虚拟地址空间和所述物理地址空间的预设受保护子空间内。在该实施例中,当所述目标虚拟地址和所述目标物理地址在所述预设受保护子空间内时,处理单元402转到方法500的步骤S508和步骤S510。这可以选择性保护所述地址转换表,从而选择性保护所述物理地址空间的所述物理地址。
图6示出了一个示例性实施例提供的用于虚拟地址到物理地址转换的计算机体系结构600。计算机体系结构600包括以下硬件组件:CPU 602、物理内存604和内存管理装置400。物理内存604具有用于访问物理内存604的物理地址的内存地址总线606以及用于从/向物理内存604读取/写入数据的内存数据总线608。CPU 602不直接访问内存地址总线606。相反,当需要执行存储操作时,CPU 602依赖内存管理装置400生成物理地址(例如,物理地址110)。为了生成物理地址,内存管理装置400访问内存地址总线606(如双箭头610所示)。CPU 602可以直接访问内存数据总线608(如双箭头612所示),以通过使用由内存管理装置400生成的物理地址在物理内存604中读写数据。传统MMU(例如,MMU 104)从不向物理内存604写入任何内容:只能通过内存数据总线608(如箭头614所示)从物理内存604中读取数据。进而,可以向计算机体系结构600中使用的取代传统MMU的内存管理装置400分配一部分物理内存604,其中内存管理装置400可以自主地写入元数据,例如,上文所述的位图(如双箭头616所示)。例如,如果内存管理装置400的存储单元404由于某种原因不再能够存储元数据,则可以这样做。
应当注意的是,方法500的每个步骤或操作或这些步骤或操作的任何组合可以通过硬件、固件和/或软件等各种手段来实现。例如,上述步骤或操作中的一个或多个可以由处理器可执行指令、数据结构、程序模块和其它适当的数据表示来体现。此外,体现上述步骤或操作的可执行指令可以存储在对应数据载体上,并由处理单元402执行。该数据载体可以实现为可由至少一个处理器读取以执行计算机可执行指令的任何计算机可读存储介质。这种计算机可读存储介质可以包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而不是限制,计算机可读介质包括以任何适合存储信息的方法或技术实现的介质。更详细地,计算机可读介质的实际示例包括但不限于信息传递介质、RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能光盘(digital versatile disc,DVD)、全息介质或其它光盘存储器、磁带、磁带盒、磁盘存储器和其它磁存储设备。
此外,还应当注意的是,内存管理装置400可以与现有虚拟机管理程序协同操作。例如,如果所述虚拟机管理程序已经为所述地址转换表提供保护,则内存管理装置400提供的保护可以视为替代选项。
尽管本文描述了本发明的示例性实施例,但应注意,在不偏离由所附权利要求所定义的法律保护范围的情况下,可以在本发明的实施例中进行任何各种改变和修改。在所附权利要求书中,词语“包括”不排除其它元件或步骤,术语“一”或者“一个”不排除多个。在互不相同的从属权利要求中列举某些措施并不表示这些措施的组合不能被有利地使用。

Claims (16)

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中任一项所述的内存管理方法。
CN202080100609.XA 2020-05-15 2020-05-15 内存管理装置及方法 Pending CN115516438A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2020/063672 WO2021228408A1 (en) 2020-05-15 2020-05-15 Memory management apparatus and method

Publications (1)

Publication Number Publication Date
CN115516438A true CN115516438A (zh) 2022-12-23

Family

ID=70740655

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080100609.XA Pending CN115516438A (zh) 2020-05-15 2020-05-15 内存管理装置及方法

Country Status (3)

Country Link
EP (1) EP4127944A1 (zh)
CN (1) CN115516438A (zh)
WO (1) WO2021228408A1 (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10241931B2 (en) * 2016-07-29 2019-03-26 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
GB2570474B (en) * 2018-01-26 2020-04-15 Advanced Risc Mach Ltd Region fusing

Also Published As

Publication number Publication date
EP4127944A1 (en) 2023-02-08
WO2021228408A1 (en) 2021-11-18

Similar Documents

Publication Publication Date Title
EP3491520B1 (en) Controlling access to pages in a memory in a computing device
US7673345B2 (en) Providing extended memory protection
US8423747B2 (en) Copy equivalent protection using secure page flipping for software components within an execution environment
US7930513B2 (en) Writing to asymmetric memory
US8954959B2 (en) Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU
US10169244B2 (en) Controlling access to pages in a memory in a computing device
US7917724B2 (en) Protection of user-level applications based on page table information
US8631170B2 (en) Memory overcommit by using an emulated IOMMU in a computer system with a host IOMMU
US8516221B2 (en) On-the fly TLB coalescing
US20130227248A1 (en) System and method for supporting finer-grained copy-on-write page sizes
US20130024598A1 (en) Increasing granularity of dirty bit information in hardware assisted memory management systems
CN112241310B (zh) 页表管理、信息获取方法、处理器、芯片、设备及介质
CN110928737B (zh) 监控样本进程的内存访问行为的方法和装置
US9696933B2 (en) Virtual machine manager initiated page-in of kernel pages
US10061918B2 (en) System, apparatus and method for filtering memory access logging in a processor
US8806146B2 (en) Method and system to accelerate address translation
US11200175B2 (en) Memory accessor invailidation
CN115516438A (zh) 内存管理装置及方法
JP2019144921A (ja) 情報処理装置及び情報処理方法
US11243864B2 (en) Identifying translation errors
US20230342289A1 (en) Apparatus and method for managing capabilities

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination