CN110998552B - 用于内核空间和用户空间的存储器管理系统和方法 - Google Patents
用于内核空间和用户空间的存储器管理系统和方法 Download PDFInfo
- Publication number
- CN110998552B CN110998552B CN201880054625.2A CN201880054625A CN110998552B CN 110998552 B CN110998552 B CN 110998552B CN 201880054625 A CN201880054625 A CN 201880054625A CN 110998552 B CN110998552 B CN 110998552B
- Authority
- CN
- China
- Prior art keywords
- page
- address
- physical
- index
- page table
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
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)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
本申请提供一种用于内核空间和用户空间的存储器管理系统和方法。用于内核空间和用户空间的存储器管理的示例性系统可以包括第一存储单元,该存储单元被配置为存储与内核空间相对应的第一根页表索引。该系统还可以包括第二存储单元,该存储单元被配置为存储与用户空间相对应的第二根页表索引。该系统可以进一步包括与第一和第二存储单元可通信连接的控制单元,该控制单元被配置为:根据操作系统内核的第一根页表索引将第一虚拟地址转换为第一物理地址,根据用户进程的第二根页表索引将第二虚拟地址转换为第二物理地址。
Description
技术领域
本申请涉及存储器管理,尤其涉及一种计算机中用于内核空间和用户空间的存储器管理系统和方法。
背景技术
在传统计算机中,存储在存储器中的指令和/或数据可以通过使用虚拟地址来寻址。当进程需要访问指令和/或数据时,需要将虚拟地址转换为存储器的物理地址,并相应地检索指令和/或数据。操作系统(Operating System,OS)内核可以使用一个或更多个页表将虚拟地址转换为物理地址。例如,Linux内核可能使用三级页表将32位虚拟地址转换为页面大小为4千字节(KB)的32位物理地址。
目前,操作系统内核可以将虚拟地址分成分别用于OS内核(或其它OS内核)和用户进程的内核空间和用户空间。内核空间通常以较高的中央处理权限进行处理,而用户空间则可能以较低的CPU权限级别进行处理。操作系统内核和用户进程可以具有各自的根页表索引,但它们通常共享用于虚拟到物理地址映射相同的页表。然而,这样的设计可能无法有效地利用存储器空间。此外,这可能会引起安全问题。例如,攻击者可能通过OS内核和用户进程之间的常见页表,欺骗OS内核在用户空间中执行恶意程序。此外,另一方面,典型的页表条目可能没有空间用于新兴功能,例如作为在32位计算机系统中增强病毒防护的不可执行(No-eXecute,NX)位。期待有新的用于内核空间和用户空间的存储器管理方法和系统以增强对恶意软件、间谍软件和/或病毒的防护。
发明内容
本公开实施例提供一种用于计算机、设备或系统的内核和用户空间的存储器管理改进的方法和系统。
这些实施例包括用于内核空间和用户空间的存储器管理系统。所述系统可以包括第一存储单元,所述第一存储单元被配置为存储与内核空间相对应的第一根页表索引。该系统还可以包括第二存储单元,该第二存储单元被配置为存储与用户空间相对应的第二根页表索引。该系统还可以包括与第一和第二存储单元可通信连接的控制单元,所述控制单元被配置为:根据操作系统内核的第一根页表索引将第一虚拟地址转换为第一物理地址,根据用户进程的第二根页表索引将第二虚拟地址转换为第二物理地址。
这些实施例还包括内核空间和用户空间的存储器管理方法。所述方法可包括获取与内核空间相对应的第一根页表索引。该方法还可包括获取与用户空间相对应的第二根页表索引。该方法还可进一步包括根据操作系统内核的第一根页表索引将第一虚拟地址转换为第一物理地址。此外,该方法可包括根据用户进程的第二根页表索引将第二虚拟地址转换为第二物理地址。
此外,这些实施例还包括存储有指令的非暂时性的计算机可读介质,所述指令可由一个或更多个设备的处理器执行以使设备执行内核空间和用户空间的存储器管理方法。该方法可以包括获取与内核空间相对应的第一根页表索引。该方法还可包括获取与用户空间相对应的第二根页表索引。该方法还可进一步包括根据操作系统内核的第一根页表索引将第一虚拟地址转换为第一物理地址。此外,该方法还可包括根据用户进程的第二根页表索引将第二虚拟地址转换为第二物理地址。
所公开的实施例的附加目的和优点将在以下描述中部分的进行阐述,并且部分地将从说明书中显而易见,或者可以通过对实施例的实践而获知。可以通过权利要求中阐述的要素和组合来实现和获得公开的实施例的目的和优点。
应该理解,以上的一般描述和以下的详细描述仅仅是示例性和说明性的,其不应限制所要求保护的本发明。
附图说明
现在提供本公开示例性实施例的参考附图。在附图中:
图1是根据本公开的一些实施例的用于内核和用户空间的存储器管理的示例性计算机系统的框图。
图2A是根据本公开的一些实施例的用于内核空间存储器管理的示例性方法的示意图。
图2B是根据本公开的一些实施例的用于内核空间的示例性页面映射的示意图。
图3A是根据本公开的一些实施例的用于内核空间存储器管理的示例性方法的示意图。
图3B是根据本公开的一些实施例的用于内核空间的示例性页面映射的示意图。
图4A是根据本公开的一些实施例的用于用户空间存储器管理的示例性方法的示意图。
图4B是根据本公开的一些实施例的用于用户空间的示例性页面映射的示意图。
图5A是根据本公开的一些实施例的用于用户空间存储器管理的示例性方法的示意图。
图5B是根据本公开的一些实施例的用于用户空间的示例性页面映射的示意图。
图6是根据本公开的一些实施例的示例性存储器管理方法的流程图。
具体实施方式
现在将详细参考示例性实施例,其实例在附图中示出。以下描述所参考的附图中,除非另有说明,不同附图中的相同数字代表相同或相似的元素。以下示例性实施例描述中阐述的实施方式并不代表与本发明一致的所有实现。相反,它们仅仅是与所附权利要求中列举的与本发明有关的方面相一致的装置和方法的例子。
本申请实施例提供一种用于计算机、设备或系统中的内核和用户空间的存储器管理改进的方法和系统。此处描述的实施例可以分别分配OS内核和用户进程专用寄存器来存储它们的用于内核和用户空间的存储器管理的根页表索引。OS内核和用户进程还分别提供它们的用于虚拟到物理地址映射的页目录、页表和页表条目。OS内核和用户进程的虚拟到物理地址映射可以分别映射到整个物理存储器空间。例如,OS内核和用户进程可以分别具有4GB的内核空间和用户空间,与32位计算机系统中4GB的整个物理存储器空间相对应。可选的,OS内核和用户进程的虚拟到物理地址映射也可以分别映射到整个物理存储器空间的一部分。例如,OS内核和用户进程可以分别具有32GB的内核空间和用户空间,对应于64位计算机系统16艾字节(EB)(即16x109 GB)的整个物理存储器空间的一部分。因此,它可以提高存储器空间使用率并消除相关的安全漏洞。
因此,操作系统内核可通过分别将操作系统内核和用户进程的虚拟地址转换为物理地址而免受恶意软件、间谍软件和/或病毒的攻击。此外,在虚拟地址到物理地址的转换单独执行时,典型的页表条目可能会为新兴的功能提供空间,例如在32位计算机系统不可执行(NX)位以增强病毒防护。因此,计算机的安全性系统会得到加强和改进。
根据一些实施例,这里描述的操作、技术和/或组件可以通过包括一个或更多个专用计算设备的电子设备来实现。所述专用计算设备可以通过硬连线来执行此处描述的操作、技术和/或组件,或者可以包括数字电子设备,例如一个或更多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)是持久编程来执行操作、技术和/或在此描述的组件,或者可以包括一个或更多个硬件处理器,该硬件处理器被编程来根据固件、存储器、其他存储器或组合中的程序指令执行本公开的这些功能。这种专用算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制编程相结合,以实现本公开的技术和其他功能。所述专用计算设备可以是台式计算机系统、便携式计算机系统、手持设备、网络设备,或者任何其他包含硬连线和/或程序逻辑的设备,以实现当前披露的技术和其他功能。
一个或更多个专用计算设备通常可以由操作系统软件控制和协调,例如iOS、Android、黑莓、Chrome OS、Windows XP、Windows Vista、windows 7、Windows 8、WindowsServer、Windows CE、Unix、Linux、SunOS、Solaris、VxWorks、或其他兼容的操作系统。在其他实施例中,计算设备可以由专有操作系统控制。操作系统控制和调度计算机执行、执行存储器管理、提供文件系统、网络、I/O服务以及提供用户界面功能,例如图形用户界面(“GUI”),以及除前述之外的其它事务。
图1示出了根据本公开的一些实施例的用于内核和用户空间的存储器管理的示例性计算机系统100的框图。在一些实施例中,计算机系统100可包括存储器110、处理器120、存储器130和输入/输出(I/O)接口140。
存储器110可包括任何适当类型的提供以用于存储处理器120可能需要操作的任何类型的信息的大容量存储器。例如,存储器110可包括动态随机存取存储器(DRAM),并可被配置为计算机系统100的主存储器。在一些实施例中,存储器110可以是挥发性的或非挥发性的,磁性的,半导体的,磁带,光学,可拆卸,不可拆卸或其他类型的存储设备或有形和/或非暂时性的计算机可读介质。常见的非暂时性计算机可读介质形式包括,例如,软盘、柔性磁盘、硬盘、固态驱动器、磁带或任何其他磁数据存储介质,CDROM,任何其他的光学数据存储媒介,任何带有孔图案的物理介质,RAM、PROM、和EPROM、FLASH-EPROM或任何其他闪存、NVRAM、高速缓存、任何其他存储芯片或盒式磁带,及其联网版本。
在一些实施例中,存储器110可被配置为存储一个或更多个可以由处理器120执行的计算机程序,以执行本应用程序公开的示例性存储器管理方法。例如,如当前公开所述,存储器110可被配置为可由处理器120执行的存储程序,以管理内核和用户存储器空间。另一个例子,存储器110可被配置为存储可由处理器120执行的OS内核,以操作计算机系统100的整个系统,例如存储器管理、进程管理、资源分配、I/O设备管理、进程间通信、多任务调度、系统调用和中断处理、和安全或保护管理。
在一些实施例中,存储器110也可被配置为存储供处理器120访问的信息和数据。例如,存储器110可被配置为存储在执行用户进程时处理器120可以访问的语音、视频或文档数据。在一些实施例中,当存储器110可能不包含处理器120想要访问的数据或程序时,由处理器120执行的OS内核可能会将某些页面移出存储器110,并将所需的数据或程序从存储器130移入存储器110。此过程也可称为交换,并可用于确保所需的数据或程序在用于处理器120的存储器110中可用。
物理地址可以是指向或寻址存储器110的位置的存储器地址,并且可使处理器120相应地访问存储器110中所述位置的数据或程序。例如,32位OS可以包含32位的存储器地址。32位存储器地址最多可指向存储器110的4千兆字节(GB)。
另一方面,虚拟地址可指向或寻址进程虚拟存储器的存储器地址。OS内核可以为每个进程创建和管理虚拟存储器,例如OS内核本身、另一个OS内核或每个用户进程。通过虚拟存储器,该过程可以摆脱管理共享的物理存储器空间,由于存储器隔离而能够增加安全性,并且可以在概念上使用比采用分页技术物理可用的存储器更多的存储器。例如,一个32位的微软Windows可能包含4GB的虚拟存储器。32位Windows中的每个进程都可以使用4GB的虚拟地址空间作为存储器。每个进程可不需要管理共享的物理存储器空间,也可不必管理从虚拟地址到物理地址的转换。
对于某些进程,虚拟地址可以映射到存储器110的物理地址。或者,虚拟地址可以映射到存储器110和/或存储器130的物理地址。OS内核可以通过其存储器管理功能来管理每个进程的虚拟地址和物理地址之间的转换。OS内核可以创建一个或更多个页表以将每个进程的虚拟地址转换为相应物理地址。例如,运行在x86中央处理器(CPU)上并使用4KB页面大小的32位linux内核,可以在它的主存储器中为每个进程创建和管理三级页表结构。这三个级别可能包括页目录、页表和页表条目级别。OS内核可以为每个进程维护根页表索引,并且可以使用这样的根页表索引和三级页表将存储器110的虚拟地址转换为物理地址。
处理器120可包括微处理器、数字信号处理器、控制器或微控制器。处理器120可被配置为分别管理OS内核和用户进程的内核空间和用户空间。处理器120可包括控制寄存器122和控制寄存器124,如图1所示。处理器120可被配置为在控制寄存器122中存储与内核空间相对应的根页表索引。对应于内核空间的根页表索引可用于OS内核以将虚拟地址转换为物理地址,如图2A所示,并在下面进一步描述。
处理器120也可被配置为存储对应于控制寄存器124中用户空间的另一个根页表索引。对应于用户空间的根页表索引可用于用户进程以将虚拟地址转换为物理地址,如图3A所示,如下描述。每个用户进程可具有与用户空间相对应的根页表索引。只要处理器120被配置为执行另一个用户进程,处理器120就可被配置为用另一个根页表索引更新的控制寄存器124。
如上所述,控制寄存器122和控制寄存器124可被配置为存储单元,以存储操作系统内核和用户进程的根页表索引。当OS内核的虚拟地址转换为物理地址时,可以将控制寄存器122配置为存储单元,以存储OS内核的根页表索引。另一方面,当用户进程的虚拟地址转换为物理地址时,控制寄存器124可被配置为存储单元来存储用户进程的根页表索引。在一些实施例中,控制寄存器122可能不会被配置为存储用户进程的根页表索引。在一些实施例中,控制寄存器124可能不会被配置为存储OS内核的根页表索引。
例如,根据本公开的新兴处理器可以包括用于OS内核的控制寄存器3(CR3K)和另外的用于用户进程的控制寄存器3(CR3U),以分别存储OS内核和用户进程的根页表索引。CR3K和CR3U是两个独立的寄存器。当内核OS启动时,在启用用于内核OS的虚拟到物理映射之前,CPU最初可以在分页禁用模式下运行。因为内核空间可以映射到物理存储器的整个空间,所以OS内核可以建立从内核空间到系统物理存储器的一对一映射。例如,在具有32GB物理存储器的64位系统中,OS内核可以将其虚拟地址空间的前32GB映射到32GB物理存储器。初始化后,OS内核将OS内核的根页表索引写入CR3K,并将CPU切换到分页启用的模式。OS内核开始虚拟到物理地址映射操作。
OS内核还负责管理和设置每个用户进程的页表。当用户进程启动时,OS内核为用户进程建立页面目录、页面表和页面表条目。因为用户空间也可以映射到物理存储器的整个空间,所以用户进程可以灵活高效的进行虚拟到物理地址映射。在用户进程初始化后,OS内核将用户进程的根页表索引写入CR3U,并将其存储在进程的任务空间中。当OS内核的调度器中发生上下文切换时,另外用户进程需要替换当前用户进程。CPU可以读取另外用户进程的根页表索引,并将其写入CR3U。然后CPU切换到执行另一个用户进程。
在一些实施例中,X86 CPU可被配置为将OS内核的根页表索引存储在其控制寄存器3(CR3)中。X86 CPU还可被配置为将用户进程的根页表索引存储在其控制寄存器4(CR4)中。
或者,在计算机系统100中但在处理器120之外的两个存储单元(未示出),可被配置为分别存储OS内核和用户进程的根页表索引,所述根页表索引用于将OS内核和用户进程的虚拟地址转换为物理地址。例如,高速缓存的两个32位空间可被配置为存储Linux内核和用户进程的根页表索引的两个存储单元。作为另一例子,存储器110的两个32位空间可被配置为存储单元来存储Linux内核和用户进程的根页表索引。在一些实施例中,在计算机系统100中但在处理器120之外的两个存储单元(未示出)之一,可被配置为存储OS内核或用户进程的根页表索引,用于将OS内核或用户进程的虚拟地址转换为物理地址。另一存储单元可以是处理器120中的控制寄存器。例如,控制寄存器122可被配置为存储Linux内核的根页表索引,而存储器110的32位空间可被配置为存储用户进程的根页表索引。
在本公开中,处理器120可包括存储器管理单元来执行用于当前OS内核和/或用户进程的存储器管理。
存储器130可包括任何适当类型的大容量存储,以存储处理器120可能需要操作的任何类型的信息。存储器130可以是挥发性或非挥发性的、磁性的、半导体的、磁带的、光学的、可拆卸的、不可拆卸的,或其他类型的存储设备或有形和/或非暂时性的计算机可读介质。存储器130可被配置为存储一个或更多个可由处理器120执行的计算机程序,以执行本应用程序中公开的示例性存储器管理方法。例如,存储器130可被配置为存储可以由处理器120执行以将OS内核和用户进程的虚拟地址转换为物理地址的程序,如上所述。
存储器130可进一步被配置为存储处理器120使用的信息和数据。例如,可将存储器130可被配置为存储存储器110可能无法存储的数据。当存储器110可能已满时,存储器110中的一些数据可能会被交换到存储器130。
I/O接口140可被配置为方便计算机系统100和其他设备之间的通信。例如,I/O接口140可被配置为接收来自其他设备(例如,另一计算机)的数据或指令。I/O接口140也可被配置为向其他设备输出数据或指令,例如笔记本电脑或扬声器。
处理器120可被配置为分别分配操作系统内核和用户进程专用寄存器CR3K和CR3U来存储它们的根页表索引,用于内核和用户空间的存储器管理。处理器120也可被配置为分别为操作系统内核和用户进程构建和检索页目录、页表和页表条目。使用专用的CR3K和CR3U以及各自的页表,处理器120可被配置为将内核空间和用户空间映射到整个物理存储器空间。例如,处理器120可被配置为将内核空间和用户空间映射到32位系统中4GB的整个物理存储器空间。换句话说,内核空间和用户空间都是4-GB空间。或者,处理器120可被配置为将内核空间和用户空间映射到整个物理存储器空间的一部分。例如,在64位计算机系统,处理器120可被配置为将32GB的内核空间和用户空间映射到16艾字节(EB)的整个物理存储器空间的一部分(即16x109 GB)。
处理器120可被配置为从OS内核或用户进程获取用于虚拟到物理地址映射的虚拟地址。OS内核获取虚拟地址后,处理器120可被配置为确定访问内核空间作为默认结果。用户进程获取虚拟地址后,处理器120可被配置为确定访问用户空间作为默认结果。在一些实施例中,处理器120可被配置为获取OS内核的访问用户空间指示。从OS内核获取所述访问用户空间指示后,处理器120可被配置为确定访问用户空间。
图2A和2B是根据本公开的一些实施例的用于内核空间存储器管理的示例性方法和用于相应示例性页面映射的示意图。OS内核的虚拟地址可包括页目录索引、页表索引和页偏移量。例如,如图2A所示,32位OS内核的虚拟地址270可包括页目录索引271,页表索引272和页偏移量273。
页目录索引271可是页目录的索引,并且可与根地址一起用于指向可能包括页表基地址的页目录。在图2A中,例如,控制寄存器122可以存储OS内核的根页表索引作为根地址210。页目录索引271可以与根地址210一起使用,以指向包含页表240的基地址230的页目录(PD)223。
页表索引272可以是页表的索引,并可以与基地址230一起用于指向可能包括页表条目的条目地址的页表(PT)。例如,页表索引272可以与基地址230一起使用,指向可以包括页表条目260的条目地址250的页表242,如图2A所示。
页偏移量273可以是页面的偏移量,也可以用作转换的物理地址中的页偏移量。例如,虚拟地址270的页偏移量273可直接用作物理地址290的页偏移量293,如图2A所示。
为了将OS内核的虚拟地址转换为物理地址,处理器120可被配置为将OS内核的根页表索引存储在存储单元中。例如,处理器120可被配置为在控制寄存器122中存储Linux内核的根页表索引。处理器120可被配置为使用存储的根页表索引作为指向位置的根地址210,例如,在页目录220中的页目录221,如图2A所示。处理器120也可被配置为将存储在控制寄存器122中的根页表索引与页目录索引271相结合,以查找可能包括页表基地址的页目录。例如,处理器120可被配置为将根地址210与虚拟地址270的页目录索引271结合,以查找页面目录223,如图2B所示。换句话说,处理器120配置为使用页目录221作为页目录220中的起始位置,使用页目录索引271作为偏移量来查找页目录223,如图2A和2B所示。
页目录223可包括指向页表基地址的基地址,三级页表结构中的下一级。如图2B所示,页目录223包含指向三级页表下一级页表的4-KB基地址223-1。处理器120可进一步被配置为读取页目录223内容以获取指向页表240中的页表241的基地址230,如图2A。
处理器120也可被配置为将存储在找到的页目录223中的基址与页表索引272相结合,以找到包含页表条目的条目地址的页表。例如,处理器120可被配置为将基地址230(即4-KB基地址223-1)与虚拟地址270的页表索引272相结合,以查找页表242,如图2B所示。换句话说,处理器120被配置为在页表240中使用页表241作为起始位置,并使用页表索引272作为偏移量来查找页表242,如图2A和2B所示。
页表242可包括指向页表条目位置中的条目地址,在三级页表结构中的下一级。如图2B所示,页表242包含指向三级页表的下一级页表条目的4-KB条目地址242-1。处理器120可被配置为读取页表242的内容,以获取指向页表条目260中的页表条目262的条目地址250,如图2A所示。
处理器120可进一步被配置为读取页表条目262的内容以获取物理页面索引。如图2B所示,页表条目262包括4-KB的物理页面索引262-1和页面属性262-2。根据条目地址250,处理器120可被配置为读取页表条目262中的4-KB物理页面索引262-1,作为物理页面索引291,如图2A和2B所示。
处理器120可以进一步配置为将物理页面索引和页偏移量结合为OS内核的物理地址。例如,处理器120可被配置为将获取的物理页面索引291(即4-KB物理页面索引262-1)和页偏移量293(即页偏移量273)结合为OS内核的物理地址290。因此,处理器120可被配置为访问转换物理地址290处的存储器110,以获取操作系统内核所需的数据或指令。
在一些实施例中,处理器120可被配置为获取一个页面大小指示器,指示内核空间的页面大小,或者内核-空间的页面大小。如图2B所示,页表条目262包括页面属性262-2。处理器120可被配置为在页表条目262中读取页面属性262-2。页面属性262-2可包括位,例如,位7,表示内核空间的页面大小。例如,如果页面属性262-2的位7是“1”,则内核空间的页面大小可以为4KB。如果页面属性262-2的位7是“0”,则内核空间的页面大小可以是4兆字节(MB)。
当页面大小指示器表明内核空间包括第一页面大小,如上所述,处理器120可被配置为将虚拟地址转换为物理地址。例如,当页面属性262-2的位7为“1”时,表示内核空间的页面大小为4-KB,处理器120可被配置为将虚拟地址270转换为物理地址290,如图2A和2B所示。当页面属性262-2的位7为“0”时,表示内核空间的页面大小为4-MB,处理器120可被配置为将虚拟地址370转换为物理地址390,如下所述,如图3A和3B所示。
指示内核空间页面大小的位也可包含在页目录或页表中。例如,一个页面大小的位可包含在页目录223的保留字段223-2中,或者在图2B中页表242的保留字段242-2中。例如,保留字段242-2中的位7可用作页面大小的位。处理器120可被配置为读取保留字段242-2中的位7,并相应地获取内核空间的页面大小。
参考图2B,页表条目262包括物理页面索引262-1和页面属性262-2。如上所述,处理器120可被配置为使用物理页面索引262-1将虚拟地址转换为物理地址。物理页面索引262-1可包括,例如,页表条目262中最高有效位(MSB)20位用于在32位计算机系统的内核空间中寻址4-KB页面。
页面属性262-2可包括,例如,32位计算机系统中的页表条目262的最低有效位(LSB)12位。这些页面属性262-2的12位可被配置为在转换的物理地址指示的页面属性。例如,页面属性262-2位7可被配置为表示内核空间的页面大小。例如,如上所述,如果页面属性262-2的位7是“1”,则内核空间的页面大小可被配置为4KB。如果页面属性262-2的7位是“0”,则内核空间的页面大小可被配置为4MB。如上所述,处理器120可以根据页面属性262-2的位7将虚拟地址转换为物理地址。
当需要两种以上的页面大小时,页面属性262-2可包括两位,例如,位9和位7,表示内核空间的页面大小。页面属性262-2的位9可进一步配置为这样使用,尽管它在图中显示为未使用。例如,如果页面属性262-2的位9和位7是“11”,则内核空间的页面大小可能为4KB。如果页面属性262-2的位9和位7是“10”,则内核空间的页面大小可能为4MB。如果页面属性262-2的位9和位7是“01”,则内核空间的页面大小可能为16MB。如果页面属性262-2的9位和7位是“00”,则内核空间的页面大小可能为64MB。类似于上面描述,处理器120可被配置为根据页面属性262-2的位9和位7将虚拟地址转换为物理地址。
此外,页面属性262-2可包括一个NX指示器,例如,位2,表示在转换的物理地址的页面是不可执行的。例如,如果页面属性262-2的位2是“1”,则转换的物理地址290处的页面不可执行。根据如上所述的页面属性262-2的位2,处理器120可被配置为不可执行或访问转换物理地址290的页面。
指示内核空间页面大小的位也可包含在页目录或页表中的其中一个中。例如,一个页面大小的位可包含在页目录223的保留字段223-2中,或者包含在如图2B中页表242的保留字段242-2中。例如,保留字段242-2的位7可以用作页面大小的位。处理器120可被配置为读取保留字段242-2的位7,并相应地获取内核空间的页面大小。
类似于指示页面大小的位,NX指示器也可包含在页目录或页表的其中一个中。例如,NX位可能包含在页面目录223的保留字段223-2中,或者包含在如图2B中页表242的保留字段242-2中。处理器120可相应地配置为在转换的物理地址读取页面的NX位。
在一些实施例中,处理器120可被配置为直接将虚拟地址转换为物理地址。换句话说,虚拟地址等同于与物理地址。例如,如图2A所示,虚拟地址270可以直接转换成物理地址290,而无需通过如图所示的页目录220、页表240和页表条目260进行转换。从虚拟地址到物理地址的直接转换可有助于OS内核快速和有效地访问存储器110。
当页面大小指示器表明内核空间包括第二页面大小时,处理器120可被配置为将虚拟地址转换为物理地址,如图3A和3B所示。例如,在图3B中,当页面属性362-2的7位是“0”时,则表示内核空间4-MB的页面大小,处理器120可被配置为通过两级页表将虚拟地址370转换为物理地址390,包括页目录320和页表条目360,如图3A所示。
图3A和3B是根据本公开的一些实施例的内核空间的存储器管理的示例性方法和相应页面映射的实施例的示意图。操作系统内核的虚拟地址可包括页目录索引和页偏移量。例如,如图3A所示,32位OS内核的虚拟地址370可能包括页目录索引371和页偏移量373。
页目录索引371可能是页面目录的索引,也可能是与根地址一起使用,以指向可能包含页表条目的条目地址的页面目录。在图3A中,控制寄存器122可被配置为存储,例如,作为根地址310的OS内核的根页表索引。页目录索引371可以与根地址310一起使用,以指向包含页表条目360的条目地址350的页目录(PD)323。
页偏移量373可以是页面的偏移量,也可以用作转换的物理地址中的页偏移量。例如,如图3A所示,虚拟地址370的页偏移量373可以直接用作物理地址390的页偏移量393。
为了将OS内核的虚拟地址转换为物理地址,处理器120可被配置为在存储单元中存储OS内核的根页表索引。例如,在图3A中,处理器120可被配置为在控制寄存器122中存储Linux内核的根页表索引。处理器120可被配置为使用存储根页表索引作为根地址310指向例如在页目录320中的页目录321的位置,如图3A。处理器120也可被配置为将存储在控制寄存器122中的根页表索引与页目录索引371相结合,以查找包含页表的条目地址的页目录。例如,处理器120可被配置为将根地址310与虚拟地址370的页面目录索引371结合起来,以查找页面目录323,如图3B所示。换句话说,处理器120被配置为使用页目录321作为页目录320中的起始位置,并使用页目录索引371作为偏移量来查找页目录323,如图3A和3B所示。
页目录323可包括指向页表条目中位置的条目地址,二级页表结构中的下一级。如图3B所示,页目录323包括指向二级页表下一级别的页表条目的4-MB的条目地址323-1。处理器120可被配置为读取页目录323的内容,以获取指向页表条目360中的页面表条目362的条目地址350,如图3A所示。
处理器120也可被配置为读取页表条目362的内容以获取物理页面索引。如图3B所示,页表条目362包括4-MB的物理页面索引362-1,页面属性362-2,和保留字段362-3。根据条目地址350,处理器120可被配置为读取页表条目362的4-MB物理页面索引362-1,作为物理页面索引391,如图3A和3B所示。
处理器120可进一步配置为将物理页面索引和页偏移量结合为OS内核的物理地址。例如,处理器120可被配置为将获取的物理页面索引391(即4-MB物理页面索引362-1)和页偏移量393(即页偏移373)结合为OS内核的物理地址390。因此,处理器120可被配置为在转换物理地址390处访问存储器110以获取OS内核所需的数据或说明。
参考图3B,页表条目362包括物理页面索引362-1和页面属性362-2。如上所述,处理器120可被配置为使用物理页面索引362-1将虚拟地址转换为物理地址。物理页面索引362-1可包括,例如,页表条目362的最高有效位(MSB)10位用于寻址32位计算机系统内核空间中的4-MB页面。
页面属性362-2可包括,例如,在32位计算机系统中的页表条目362的最低有效位(LSB)12位。这12位页面属性362-2可被配置为在转换物理地址指示页面属性。例如,页面属性362-2的位7可被配置为表示内核空间的页面大小。例如,如上所述,如果页面属性362-2的位7是“0”,则内核空间的页面大小可被配置为4MB。如果页面属性362-2的位7为“0”,则内核空间的页面大小可以配置为4KB。如上所述,处理器120可被配置为根据页面属性362-2的位7将虚拟地址转换为物理地址。
当需要两种以上的页面大小时,页面属性362-2可包括两位,例如,位9和位7,表示内核空间的页面大小。页面属性362-2的位9还可被配置为这样的使用,尽管它在图中显示为未使用。例如,如果页面属性362-2的位9和位7是“11”,则内核空间的页面大小可以是4KB。如果页面属性362-2的位9和位7是“10”,则内核空间的页面大小可以是4MB。如果页面属性362-2的位9和位7是“01”,则内核空间的页面大小可能是16MB。如果页面属性362-2的位9和位7为“00”,则内核空间的页面大小可能为64MB。类似于上面描述,处理器120可被配置为根据页面属性362-2的位9和位7将虚拟地址转换为物理地址。
此外,页面属性362-2可包括一个NX指标,例如,位2,表示在转换物理地址页面是不可执行的。例如,如果页面属性362-2的位2是“1”,则转换物理地址390处的页面不可执行。处理器120可以根据如上所述的页面属性362-2的位2,配置为不执行或访问转换物理地址390的页面。
或者,指示内核空间页面大小的位还可以包含在页目录或页表条目的其中一个中。例如,页面大小的位可以包含在页目录323的保留字段323-2中,或者包含在图3B中的页表条目362的保留字段362-2中。例如,保留字段323-2中的位7可以用作页面大小的位。处理器120可被配置为读取保留字段323-2的位7,并获取相应地内核空间的页面大小。
类似于指示页面大小的位,NX指示器还可以包含在页目录或页表条目的其中一个中。例如,NX位可能包含在页目录323的保留字段323-2中,或者包含在图3B中页表条目362的保留字段362-2中。处理器120可被配置为在转换物理地址相应地读取页面的NX位。不可执行指示器可能有助于阻止OS内核在转换的物理地址页面执行任何恶意代码或病毒。
在一些实施例中,处理器120可被配置为直接将虚拟地址转换为物理地址。换句话说,虚拟地址等同于物理地址。例如,如图3A所示,虚拟地址370可以直接转换为物理地址390,而无需通过图中所示的页目录320和页面表条目360进行转换。从虚拟地址到物理地址的直接转换可能有助于OS内核快速和有效地访问存储器110。
对于用户进程,处理器120可被配置为根据存储在控制寄存器124中的根页表索引将虚拟地址转换为物理地址。例如,处理器120可被配置为根据控制寄存器124中存储的根页表索引,将应用程序的32位虚拟地址转换为存储器110的32位物理地址。
图4A和4B是根据本公开的一些实施例的用户空间存储器管理的示例性方法和相应示例性页面映射的示意图。用户进程的虚拟地址可包括页目录索引、页表索引和页偏移量。例如,如图4A所示,32位用户进程的虚拟地址470可包括页目录索引471,页表索引472和页偏移量473。
页目录索引471可以是页面目录的索引,也可以与根地址一起用于指向可能包括页表基地址的页面目录。在图4A中,控制寄存器124可以存储,例如用户进程的根页表索引作为根地址410。页目录索引471可以与根地址410一起使用,以指向包含页表440的基地址430的页目录(PD)423。
页表索引472可以是页表的索引,并且也可与基地址430一起用于指向可能包括页表条目的条目地址的页表(PT)。例如,页表索引472可以与基地址430一起使用,指向可能包括页表条目460的条目地址450的页表442,如图所示4A。
页偏移量473可以是页面的偏移量,也可以用作转换物理地址中的页偏移量。例如,虚拟地址470的页偏移量473可以直接用作物理地址490的页偏移量490,如图4A所示。
为了将用户进程的虚拟地址转换为物理地址,处理器120可被配置为将用户进程的根页表索引存储在存储单元中。例如,处理器120可被配置为在控制寄存器124中存储Linux内核的根页表索引。处理器120可被配置为使用存储的根页表索引作为指向例如页目录420中页目录421位置的根地址410,如图4A所示。处理器120还可以配置为将存储在控制寄存器124中的根页表索引与页目录索引471相结合,以查找可能包括页表基地址的页目录。例如,处理器120可被配置为将根地址410与虚拟地址470的页目录索引471结合,以查找页目录423,如图4B所示。换句话说,处理器120可被配置为在页目录420中使用页目录421作为的起始位置,并使用页目录索引471作为偏移量来查找页目录423,如图4A和4B所示。
页目录423可包括指向页表基地址的基地址,三级页表结构中的下一级。如图4B所示,页面目录423包含指向三级页表下一级别的页表的4-KB基地址423-1。处理器120还可进一步配置为读取页目录423的内容以获取指向页表440中的页表441的基地址430,如图4A所示。
处理器120还可以配置为将存储在已找到的页目录423中的基地址与页表索引472相结合,以找到包含页表条目的条目地址的页表。例如,处理器120可被配置为将基地址430(即4-KB基地址423-1)与虚拟地址470的页表索引472相结合,以查找页表442,如图4B所示。换句话说,处理器120被配置为在页表440中使用页表441作为起始位置,并使用页表索引472作为偏移量来查找页表442,如图4A和4B所示。
页表442可包括指向页表条目中的位置的条目地址,三级页表结构中的下一级。如图4B所示,页表442包括4-KB条目地址442-1,该地址指向三级页表的下一级页表条目。处理器120可被配置为读取页表442的内容,以获取指向页表条目460中的页表条目462的条目地址450,如图4A所示。
处理器120可进一步配置为读取页表条目462的内容以获取物理页面索引。如图4B所示,页表条目462包括4-KB的物理页面索引462-1和页面属性462-2。根据条目地址450,处理器120可被配置为读取页表条目462中的4-KB物理页面索引462-1作为物理页面索引491,如图4A和4B所示
处理器120可进一步配置为将物理页面索引和页偏移量结合为用户进程的物理地址。例如,处理器120可被配置为将获取的物理页面索引491(即4-KB物理页面索引462-1)和页偏移量493(即页偏移量473)结合为用户进程的物理地址490。因此,处理器120可被配置为在转换物理地址490处访问的存储器110,以获取用户进程所需的数据或指令。
在一些实施例中,处理器120可配置成获取指示用户空间的页面大小或者用户空间页面大小的页面大小指示器。如图4B所示,页表条目462包括页面属性462-2。处理器120可被配置为在页表条目462中读取页面属性462-2。页面属性462-2可包括位,例如,位7,表示用户空间的页面大小。例如,如果页面属性462-2的位7是“1”,则用户空间的页面大小可能为4KB。如果页面属性462-2的位7是“0”,则用户空间的页面大小可能为4MB。
当页面大小指示器指示用户空间包括第一页面大小时,处理器120可被配置为如上所述的将虚拟地址转换为物理地址。例如,当页面属性462-2的位7为“1”时,表示用户空间的页面大小为4-KB,处理器120可被配置为将虚拟地址470转换为物理地址490,如上所述及如图4A和4B所示。当页面属性462-2的位7为“0”时,表示用户空间的页面大小为4-MB,处理器120可被配置为将虚拟地址570转换为物理地址590,如下所示的和如图5A和5B所示。
表示内核空间页面大小的位还可包含在页面目录或页表的其中之一中。例如,页面大小的位可包含图4B中的在页面目录423的保留字段423-2中,或者包含在页表442的保留字段442-2中。例如,保留字段442-2的位7可作为页面大小的位。处理器120可被配置为读取保留字段442-2的位7,并获取相应地用户空间的页面大小。
参考图4B,页表条目462包括物理页面索引462-1和页面属性462-2。如上所述,处理器120可被配置为使用物理页面索引462-1将虚拟地址转换为物理地址。物理页面索引462-1可包括,例如,页表条目462的最高有效位(MSB)20位用于在32位计算机系统的用户空间中寻址4-KB页面。
页面属性462-2可包括,例如,在32位计算机系统中的页表条目462的最低有效位(LSB)12位。页面属性462-2的这些12位可被配置为指示在转换物理地址的页面属性。例如,页面属性462-2的位7可被配置为指示用户空间的页面大小。例如,如上所述,如果页面属性462-2的位7是“1”,则用户空间的页面大小可被配置为4KB。如果页面属性462-2的位7为“0”,则用户空间的页面大小可被配置为4MB。如上所述,处理器120可以根据页面属性462-2的位7将虚拟地址转换为物理地址。
当需要两种以上的页面大小时,页面属性462-2可包括两位来指示用户空间的页面大小,例如,位9和位7。页面属性462-2的位9可进一步配置为这样的使用,尽管它在图中显示为未使用。例如,如果页面属性462-2的位9和位7是“11”,则用户空间的页面大小可以为4KB。如果页面属性462-2的位9和位7为“10”,则用户空间的页面大小可以为4MB。如果页面属性462-2的位9和位7为“01”,则用户空间的页面大小可以为16MB。如果页面属性462-2的位9和位7为“00”,则用户空间的页面大小可以为64MB。类似于上面描述,处理器120可被配置为根据页面属性462-2的位9和位7将虚拟地址转换为物理地址。
此外,页面属性462-2可包括一个NX指标,例如,位2,指示在转换物理地址的页面是不可执行的。例如,如果页面属性462-2的位2是“1”,则转换物理地址490处的页面不可执行。根据如上所述的页面属性462-2的2位,处理器120可被配置为不执行或访问转换物理地址490的页面。
表示用户空间页面大小的位也可包含在页目录或页表其中之一中。例如,页面大小的位可以包含在图4B中页面目录423的保留字段423-2中或者包含页表442的保留字段442-2中。例如,保留字段442-2中的位7可用作页面大小的位。处理器120可被配置为读取保留字段442-2中的位7,并获取相应地用户空间的页面大小。
类似于指示页面大小的位,NX指示器也可包含在页目录或页表其中之一中。例如,NX位可包含在图4B中页目录423的保留字段423-2中或者包含页表442的保留字段442-2中。处理器120可被配置为从转换物理地址的NX位相应地读取页面的NX位。
在一些实施例中,处理器120可被配置为直接将虚拟地址转换为物理地址。换句话说,虚拟地址等同于物理地址。例如,如图4A所示,虚拟地址470可以直接转换成物理地址490,而无需通过图中所示的页目录420、页表440和页表条目460进行转换。从虚拟地址到物理地址的直接转换可有助于用户进程快速有效地访问存储器110。
当页面大小指示器指示用户空间包括第二页面大小时,处理器120可被配置为将虚拟地址转换为物理地址,如图5A和5B所示。例如,在图5B中,当页面属性562-2的位7是“0”,表示内核空间的页面大小是4-MB,处理器120可被配置为通过如图5A所示的包括页目录520和页表条目560的两级页表将虚拟地址570转换为物理地址590。
图5A和5B是根据本公开的一些实施例的用于用户空间的存储器管理的示例性方法和相应的示例性页面映射的示意图。用户进程的虚拟地址可包括页目录索引和页偏移量。例如,如图5A所示,32位用户进程的虚拟地址570可包括页目录索引571和页偏移量573。
页目录索引571可能是页目录的索引,也可能是与根地址一起使用,以指向可能包含页表条目的条目地址的页目录。在图5A中,控制寄存器124可被配置为存储,例如用户进程的根页表索引作为根地址510。页目录索引571可与根地址510一起使用,以指向包含页表条目560的条目地址550的页目录(PD)523。
页偏移量573可以是页面的偏移量,并且也可以用作转换的物理地址中的页偏移量。例如,虚拟地址570的页偏移量573可以直接用作物理地址590的页偏移量593,如图5A所示。
为了将用户进程的虚拟地址转换为物理地址,处理器120可被配置为将用户进程的根页表索引存储在存储单元中。例如,在图5A中,处理器120可被配置为在控制寄存器124中存储Linux内核的根页表索引。处理器120可被配置为使用存储的根页表索引作为根地址510指向位置,例如,在页目录520中的页目录521,如图5A所示。处理器120还可被配置为将存储在控制寄存器124中的根页表索引与页目录索引571相结合,以查找包含页表的条目地址的页目录。例如,处理器120可被配置为将根地址510与虚拟地址570的页目录索引571结合来查找页目录523,如图5B所示。换句话说,处理器120被配置为使用页目录521作为页目录520中的起始位置,并使用页目录索引571作为偏移量来查找页目录523,如图5A和5B所示。
页目录523可包括指向页表条目中的二级页表结构中的下一级位置的条目地址。如图5B所示,页目录523包括4-MB的条目地址523-1,该地址指向二级页表下一级别中的页表条目。处理器120可被配置为读取页目录523的内容,以获取指向页表条目560中的页表条目562的条目地址550,如图5A所示。
处理器120还可被配置为读取页表条目562的内容以获取物理页面索引。如图5B所示,页表条目562包括4-MB的物理页面索引562-1,页面属性562-2,以及保留字段562-3。根据条目地址550,处理器120可被配置为读取页表条目562中的4-MB物理页面索引562-1作为物理页面索引591,如图5A和5B所示。
处理器120可进一步配置为将物理页面索引和页偏移量结合作为用户进程的物理地址。例如,处理器120可被配置为结合获取的物理页面索引591(即4-MB物理页面索引562-1)和页偏移量593(即页偏移量573)作为用户进程的物理地址590。因此,处理器120可被配置为访问在转换物理地址590的存储器110,以获取用户进程所需的数据或指令。
参考图5B,页表条目562包括物理页面索引562-1和页面属性562-2。如上所述,处理器120可被配置为使用物理页面索引562-1将虚拟地址转换为物理地址。物理页面索引562-1可包括,例如,在32位计算机系统中,用于用户空间中寻址4-MB页面的页表条目562中最高有效位(MSB)10位。
页面属性562-2可包括,例如,在32位计算机系统中,页表条目562的最低有效位(LSB)12位。页面属性562-2这些12位可被配置为指示在转换物理地址的页面属性。例如,页面属性562-2的位7可被配置为指示用户空间的页面大小。例如,如上所述,如果页面属性562-2的位7为“0”,则用户空间的页面大小可以配置为4MB。如果页面属性562-2的位7为“0”,则用户空间的页面大小可以配置为4KB。如上所述,处理器120可以根据页面属性562-2的位7将虚拟地址转换为物理地址。
当需要两种以上的页面大小时,页面属性562-2可包括两位,例如,位9和位7,指示用户空间的页面大小。页面属性562-2的位9进一步可被配置为这样的使用,尽管它在图中显示为未使用。例如,如果页面属性562-2的位9和位7为“11”,则用户空间的页面大小可能为4KB。如果页面属性562-2的位9和位7为“10”,则用户空间的页面大小可能为4MB。如果页面属性562-2的位9和位7为“01”,用户空间的页面大小可能是16MB。如果页面属性562-2的位9和位7为“00”,则用户空间的页面大小可能为64MB。类似于上面描述,处理器120可被配置为根据页面属性562-2的位9和位7将虚拟地址转换为物理地址。
此外,页面属性562-2可包括一个NX指标,例如,位2,指示在转换物理地址处的页面是不可执行的。例如,如果页面属性562-2的位2是“1”,则转换物理地址590处的页面不可执行。处理器120可以根据如上所述的页面属性562-2的位2,配置为不执行或访问转换物理地址590处的页面。
或者,指示用户空间页面大小的位也可包含在页目录或页表条目中的其中之一中。例如,页面大小的位可包含在页目录523的保留字段523-2或保留字段中562-2的页表条目562中,如图5B。例如,保留字段523-2的位7可被配置为页面大小的位。处理器120可被配置为读取保留字段523-2的位7,并获取相应地用户空间的页面大小。
类似于指示页面大小的位,NX指示器也可包含在页目录或页表条目中的其中之一中。例如,NX位可能包含在页目录523的保留字段523-2中,或者页表条目562的保留字段562-2中,如图5B。处理器120可被配置为相应地在转换物理地址处读取页面NX指示器。不可执行指示器可有助于防止OS内核在转换物理地址执行页面中的任何恶意代码或病毒。
在一些实施例中,处理器120可被配置为直接将虚拟地址转换为物理地址。换句话说,虚拟地址等同于物理地址。例如,图5A中的虚拟地址570可以直接转换为物理地址590,而无需通过页目录520和页表条目560进行转换。从虚拟地址到物理地址的直接转换可能有助于用户进程快速和有效地访问存储器110。
在一些实施例中,处理器120可被配置为获取访问用户空间指示器,该指示器用于指示允许OS内核访问用户空间。例如,处理器120可在其指令集中包括包含前缀“US”的一个或更多个用于访问用户空间的指令。包括前缀“US”的指令可用作访问用户空间指示器。当执行带有“US”前缀的指令时,处理器120可被配置为获取访问用户空间指示。参考图2A,处理器120可被配置为使用虚拟地址270访问用户空间。
进程120可被配置为根据用户空间的根页表索引和虚拟地址的页目录索引获取用户空间的基地址。例如,参考图2A和4A,处理器120可被配置为将存储在控制寄存器124中的根页表索引与页目录索引271相结合,以查找可能包括页表基地址的页目录。处理器120可被配置为将根地址410与虚拟地址270的页目录索引271相结合,以查找页目录423。换句话说,处理器120被配置为在页目录420中使用页目录421作为起始位置,并使用页目录索引271作为偏移量来查找页目录423。处理器120可进一步被配置为读取页目录423的内容,以获取指向页表440中的页表441的基地址430。
处理器120还可以配置为将存储在找到的页面目录423中的基地址与页表索引272相结合,以查找包含页表条目的条目地址的页表。例如,处理器120可被配置为将基地址430(即4-KB基地址423-1)与虚拟地址270的页表索引272相结合,以查找页表442。换句话说,处理器120可被配置为使用页表441作为页表440中的起始位置,并使用页表索引272作为偏移量查找页表442。处理器120可进一步配置为读取页表442的内容,以获取指向页表条目460中的页表条目462的条目地址450。
处理器120还可被配置为读取页表条目462的内容以获取物理页面索引。根据条目地址450,处理器120可被配置为读取页表条目462的4-KB物理页面索引462-1,作为物理页面索引491。
处理器120可进一步配置为将物理页面索引和页偏移量结合为用户进程的物理地址。例如,处理器120可被配置为结合获取的物理页面索引491(即4-KB物理页面索引462-1)和页偏移量273作为OS内核访问用户空间的物理地址。因此,处理器120可被配置为在转换物理地址处访问存储器110,以从用户空间获取OS内核所需的数据或指令。
在一些实施例中,处理器120可被配置为获取指示允许用户进程访问用户空间的访问用户空间指示器。例如,处理器120可在其指令集中包含包括前缀“US”的用于访问用户空间的一个或更多个指令。包括前缀“US”的指令可以用作访问用户空间指示器。当执行带有“US”前缀的指令时,处理器120可被配置为设置一般保护错误,因为带有“US”前缀的指令仅OS内核保留。例如,处理器120可设置警告消息或标志,而不为用户进程执行带有“US”前缀的指令。
图6是根据本公开的一些实施例的示例的存储器管理方法600的流程图。方法600包括获取虚拟地址(步骤610),确定访问内核空间或用户空间(步骤620),获取与内核空间相对应的第一根页表索引(步骤631),获取与用户空间相对应的第二根页表索引(步骤641),根据操作系统内核的第一根页表索引,将第一虚拟地址转换为第一物理地址(步骤632),并根据用户进程的第二根页表索引将第二虚拟地址转换为第二物理地址(步骤642)。方法600还可包括获取指示内核空间或用户空间的页面大小的页面大小指示器。方法600还可包括获取用于在转换物理地址处的页面的不可执行指示器。方法600可进一步包括获取OS内核或用户进程的访问用户空间指示。
步骤610包括获取虚拟地址。例如,在步骤610中获取虚拟地址可包括在解码指令后获取虚拟地址。另一个例子,在步骤610中获取虚拟地址可包括从OS内核或用户进程获取虚拟地址到虚拟到物理地址映射。
步骤620包括确定访问内核空间或用户空间。例如,在步骤610中从OS内核获取虚拟地址之后,在步骤620中确定访问内核空间或用户空间可包括确定访问内核空间作为默认结果。另一个例子,在步骤610中从用户进程获取虚拟地址之后,在步骤620确定访问内核空间或用户空间可包括确定访问用户空间作为默认结果。
在一些实施例中,方法600可包括获取OS内核的访问用户空间指示。从OS内核获取访问用户空间指示后,在步骤620确定访问内核空间或用户空间可以包括确定访问用户空间。
步骤631包括获取对应于内核空间的根页表索引。例如,在步骤631获取对应于内核空间的根页表索引可以包括从存储单元获取根页表索引,所述存储单元例如控制寄存器3(CR3),OS内核的控制寄存器3(CR3K),或在高速缓存、主存储器中的存储空间,或存储设备,如上所述。
在一些实施例中,在步骤631获取对应于内核空间的根页表索引可以还包括从存储单元读取对应于OS内核的根页表索引,并将其存储在处理器的专用控制寄存器中。例如,在步骤631获取对应于内核空间的根页表索引可以包括从OS内核的堆栈中弹出对应于OS内核的根页表索引,并将其存储在CR3K中。另一个例子,在步骤631获取对应于内核空间的根页表索引可以包括交换数据,这些数据可包括来自OS内核存储器130的根页表索引,并将其存储在处理器120的控制寄存器中122。
步骤632包括根据OS内核的根页表索引将虚拟地址转换为物理地址。例如,在步骤632中,将OS内核的虚拟地址转换为物理地址可包括根据如图2A和图2B所示的控制寄存器122中的根页表索引将OS内核的虚拟地址270转换为物理地址290,以及上述描述。另一个例子,在步骤632中,将OS内核的虚拟地址转换为物理地址可包括根据OS内核控制寄存器122中存储的根页表索引,将虚拟地址370转换为物理地址390,如图3A和3B所示,以及上述描述。
在一些实施例中,在步骤632中,将OS内核的虚拟地址转换为物理地址可包括根据OS内核的根页表索引和虚拟地址的页目录索引获取基地址。例如,获取步骤632中的基地址可包括将根地址210与虚拟地址270的页目录索引271相结合来查找页目录223,如图2A和2B所示。页目录223可包括页表240的基地址。
在步骤632中,将OS内核的虚拟地址转换为物理地址还可以包括根据基地址和页表索引获取条目地址。例如,步骤632中获取的条目地址可包括将基地址230与虚拟地址270的页表索引272相结合来查找页表242,如图2A和2B所示。页表242可以包括指向页表条目中位置的条目地址。步骤632中获取条目地址可以还包括读取页表242的内容,以获取指向页表条目260中的页表条目262的条目地址250。
在步骤632中,将OS内核的虚拟地址转换为物理地址还可以包括根据条目地址获取物理页面索引。例如,在步骤632获取的物理页面索引可包括读取页表条目262的内容以获取物理页面索引291。
在步骤632中,将OS内核的虚拟地址转换为物理地址还可以包括将物理页面索引和页偏移量结合为物理地址。例如,在步骤632中将物理页面索引和的页偏移量结合可包括将物理页面索引291和页偏移量293合并为物理地址290,如图2A所示。页偏移量293可以与虚拟地址270的页偏移量273相同。
在步骤632中,将虚拟地址转换为OS内核的物理地址还可以包括将虚拟地址直接转换为物理地址。换句话说,虚拟地址等同于物理地址。例如,如图2A所示,虚拟地址270可以直接转换成物理地址290,而无需通过页目录220、页表240和页表条目260进行转换。
另一个例子,在步骤632中,将OS内核的虚拟地址转换为物理地址可以包括将虚拟地址370转换为物理地址390,如图3A和3B所示以及上述描述。
步骤641中包括获取与用户空间相对应的根页表索引。例如,步骤641中获取与用户空间相对应的根页表索引可包括从存储单元获取根页表索引,例如,如上所述,控制寄存器4(CR4),用户进程的控制寄存器3(CR3U),或在缓存、主存储器中的存储空间,或存储设备。
在一些实施例中,步骤641中获取与的用户空间相对应的根页表索引也可包括从存储单元读取与用户进程相对应的根页表索引,并将其存储在处理器的专用控制寄存器中。例如,在步骤641中获取对应于用户空间的根页表索引可包括从用户进程的堆栈中弹出对应于用户进程的根页表索引,并将其存储在CR3U中。另一个例子,步骤641中获取对应于的用户空间的根页表索引可包括交换数据,这些数据可包括来自存储器130的用户进程的根页表索引,并将其存储在处理器120的控制寄存器124中。
步骤642包括根据用户进程的根页表索引将虚拟地址转换为物理地址。例如,在步骤641将用户进程的虚拟地址转换为物理地址可包括,根据存储在控制寄存器124中的用户进程的根页表索引将虚拟地址470转换为物理地址490,如图4A和4B所示以及上述描述。另一个例子,步骤642中将虚拟地址转换为的用户进程的物理地址可包括根据用户进程的控制寄存器124中存储的根页表索引将虚拟地址570转换为物理地址590,如图5A和5B所示及以上所述。
在步骤642中,将虚拟地址转换为用户进程的物理地址可包括根据用户进程的根页表索引和虚拟地址的页目录索引获取基地址。例如,步骤642中,获取的基地址可包括将根地址410与虚拟地址470的页目录索引471相结合来查找页目录423,如图4A和4B所示。页目录423可能包括页表440的基地址。
在步骤642中,将用户进程的虚拟地址转换为物理地址还可包括根据基地址和页表索引获取条目地址。例如,步骤642中获取的条目地址可包括将基地址430与虚拟地址470的页表索引472相结合来查找页表442,如图4A和4B所示。页表442可包括指向页表条目中的位置的条目地址。步骤642中获取的条目地址可还包括读取页表442的内容,以获取指向页表条目460中的页表条目462的条目地址450。
在一些实施例中,步骤642中将用户进程的虚拟地址转换为物理地址可还包括根据条目地址获取物理页面索引。例如,步骤642中获取的物理页面索引可包括读取页表条目462的内容以获取物理页面索引491。
在一些实施例中,在步骤642中,将用户进程的虚拟地址转换为物理地址可还包括将物理页面索引和页偏移量结合为物理地址。例如,步骤642中结合物理页面索引和的页偏移量可包括将物理页面索引491和页偏移量492结合为物理地址490,如图4A所示。页偏移量492可与虚拟地址470的页偏移量471相同。
或者,在步骤642中,将用户进程的虚拟地址转换为物理地址可包括将虚拟地址直接转换为物理地址。换句话说,虚拟地址与物理地址相同。例如,图4A所示,虚拟地址470可以直接转换成物理地址490,而无需通过图中所示的页目录420、页表440和页表条目460进行转换。
另一个例子,在步骤642中,将用户进程的虚拟地址转换为物理地址可以包括将虚拟地址570转换为物理地址590,如图5A和5B所示及上述所述。
方法600还可包括获取指示内核空间或用户空间的页面大小的页面大小指示器。例如,在方法600中获取页面大小指示器可包括读取页表条目262中页面属性262-2的位7,如图2B所示及如上所述。页面属性262-2的位7表示内核空间的页面大小。例如,如果页面属性262-2的位7是“1”,则内核空间的页面大小可能为4KB。如果页面属性262-2的位7是“0”,则内核空间的页面大小可能是4MB。
当获取的页面大小指示器可表明内核空间可能包括第一页面大小时,在步骤632中,将虚拟地址转换为物理地址可包括如图2A和2B所示及以上所述将虚拟地址转换为物理地址。例如,当页面属性262-2的位7为“1”时,则表示内核空间的页面大小为4-KB,在步骤632中将虚拟地址转换为物理地址可包括如上所述和如图2A所示的将虚拟地址270转换为物理地址290。
当获取的页面大小指示器可表明内核空间可能包括第二页面大小时,步骤632中将虚拟地址转换为物理地址可包括如图3A所示及如上所述的将虚拟地址转换为物理地址。例如,当页面属性262-2的位7为“0”时,则表示内核空间的页面大小为4MB,步骤632中将虚拟地址转换为物理地址可包括如图3A和3B所示及如上所述的通过两级页表、页目录320和页表条目360将虚拟地址370转换为物理地址390。
另一个例子,方法600中获取页面大小指示器可包括如图4B所示的在页表条目462中读取页面属性462-2的位7。页面属性462-2的位7指示用户空间的页面大小。例如,如果页面属性462-2的位7为“1”,则用户空间的页面大小可能为4KB。如果页面属性462-2的位7为“0”,则用户空间的页面大小可能为4MB。
当获取的页面大小指示器可表明用户空间可包括第一页面大小,在步骤642中,将虚拟地址转换为物理地址可包括如图4A和4B所示及如上所述的将虚拟地址转换为物理地址。例如,当页面属性462-2的位7为“1”时,则表示用户空间的4-KB页面大小,在步骤642中将虚拟地址转换为物理地址可包括如上所述及如图4A所示的将虚拟地址470转换为物理地址490。
当获取的页面大小指示器可表明用户空间可能包括第二页面大小,在步骤642中,将虚拟地址转换为物理地址可包括如图5A和5B所示及如上所述的将虚拟地址转换为物理地址。例如,当页面属性562-2的位7为“0”时,则表示用户空间的页面大小为4MB,步骤642中将虚拟地址转换为物理地址可包括如图5A所示及如上所述的通过两级页表、页目录520和页表条目560将虚拟地址570转换为物理地址590。
方法600还可包括在转换物理地址处获取页面的不可执行指示器。例如,在方法600中获取不可执行指示器可包括读取如图2B所示的页表条目262中的页面属性262-2的位2。如果页面属性262-2的位2为“1”,则转换物理地址处的页面不可执行。方法600可包括不可访问的页面内容,或者访问但不执行页面内容。如果页面属性262-2的位2为“0”,则转换物理地址处的页面可以是可执行的。方法600可包括在内核空间中访问页面内容和/或相应地执行它。
另一个例子,方法600中获取的不可执行指示器可包括获取用户空间的不可执行指示器。例如,在方法600中获取不可执行指示器可包括如上所述及如图4B所示的在页表条目462中读取页面属性462-2的位2。如果页面属性462-2的位2是“1”,则转换物理地址处的页面不可执行。方法600可包括不可访问的页面内容,或者访问但不执行的页面内容。如果页面属性462-2的位2为“0”,则转换物理地址处的页面可执行。方法600可包括访问用户空间中的页面内容和/或相应地执行它。
方法600可进一步包括获取OS内核或用户进程的访问用户空间指示。例如,处理器120可包括其指令集中的用于访问用户空间的包含前缀“US”的一个或更多个指令。包含前缀“US”的指令可以用作OS内核中的访问用户空间指示器。当可以执行具有“US”前缀的指令时,在步骤631中获取根页表索引可包括读取相应于用户空间控制寄存器124中的根页表索引,用于将虚拟地址转换为物理地址。例如,在步骤631中获取根页表索引可包括根据来自控制寄存器124的用户空间读取根地址410。并且,步骤632中将虚拟地址转换为物理地址可包括通过使用如图4A所示及如上所述的根地址410和三级页表结构将虚拟地址270转换为物理地址。
另一个例子,处理器120可包括其指令集中的用于访问用户空间的包含前缀“US”的一个或更多个指令。包括前缀“US”的指令可以作为在用户进程中的访问用户空间指示器。当具有“US”前缀的指令可执行用于用户进程时,方法600还包括设置一般保护错误,因为具有“US”前缀的指令可仅给OS内核保留。例如,方法600可包括设置警告消息或标志,而不是为用户进程执行具有“US”前缀的指令。
如上所述,本公开的另一个方面是针对存储了一组指令的非暂时性的计算机可读介质,这些指令可由一个或更多个设备的处理器执行,以使设备执行一种内核空间和用户空间的存储器管理方法。计算机可读介质可包括挥发性或非挥发性、磁性、半导体,磁带,光学,可拆卸,不可拆卸,或其他类型的计算机可读介质或计算机可读存储设备。例如,如所公开的,计算机可读媒体可是在其上存储有指令的存储设备或存储模块。在一些实施例中,计算机可读介质可以是其上存储计算机指令的光盘或闪存驱动器。
应当理解的是,本公开不限于已在上面描述并在附图中图示的确切结构,并且在不脱离本公开的范围的情况下,可做出各种修改和变化。本发明的范围应该仅受到所附权利要求限制。
Claims (27)
1.一种用于内核空间和用户空间的存储器管理系统,该系统包括:
第一存储单元,所述第一存储单元被配置为存储与内核空间相对应的第一根页表索引;
第二存储单元,所述第二存储单元被配置为存储与用户空间相对应的第二根页表索引;
控制单元,所述控制单元与所述第一存储单元和第二存储单元可通信连接,且所述控制单元被配置为:
根据操作系统内核的第一根页表索引,将第一虚拟地址转换为第一物理地址;
根据用户进程的第二根页表索引,将第二虚拟地址转换为第二物理地址;
其中,所述第一虚拟地址包括:第一页目录索引、第一页表索引和第一页偏移量,或者,第一页目录索引和第一页偏移量;
所述被配置为将第一虚拟地址转换为第一物理地址的控制单元包括被配置为:
获取表示内核空间的页面大小的第一页面大小指示器,所述内核空间的页面大小包括第一或第二内核空间的页面大小;
其中,响应于表示第一内核空间页面大小的第一页面大小指示器,所述被配置为将第一虚拟地址转换为第一物理地址的控制单元进一步包括被配置为:
根据第一根页表索引和第一页目录索引获取第一基地址;
根据第一基地址和第一页表索引获取第一条目地址;
根据第一条目地址获取第一物理页面索引;
结合第一物理页面索引和第一页面偏移量作为第一物理地址。
2.根据权利要求1所述的系统,其中,所述内核空间和所述用户空间对应于相同的物理存储器空间,所述相同的物理存储器空间为整个物理存储器空间或整个物理存储器空间的一部分。
3.根据权利要求2任一所述的系统,其中,
所述第二虚拟地址包括:
第二页目录索引、第二页表索引和第二页偏移量,
或者
第二页目录索引、第二页表索引和第二页偏移量。
4.根据权利要求1所述的系统,其中,所述响应于指示第二内核空间页面大小的第一页面大小指示器,所述被配置为将第一虚拟地址转换为第一物理地址的控制单元进一步包括被配置为:
根据第一根页表索引和第一页目录索引获取第一条目地址;
根据第一条目地址获取第一物理页面索引;
结合第一物理页面索引和第一页面偏移量作为第一物理地址。
5.根据权利要求1-4任一所述的系统,其中,所述被配置为将第一虚拟地址转换为第一物理地址的控制单元进一步包括被配置为:
获取第一不可执行指示器,所述第一不可执行指示器指示第一物理地址处的页面不可执行。
6.根据权利要求3-4任一所述的系统,其中,所述被配置为将第二虚拟地址转换为第二物理地址的控制单元包括被配置为:
根据第二根页表索引和第二页目录索引获取第二基地址;
根据第二基地址和第二页表索引获取第二条目地址;
根据第二条目地址获取第二物理页面索引;
结合第二物理页面索引和第二页面偏移量作为第二物理地址。
7.根据权利要求3-4任一所述的系统,其中,所述被配置为将第二虚拟地址转换为第二物理地址的控制单元包括被配置为:
获取第二页面大小指示器,所述第二页面大小指示器指示用户空间的页面大小,所述用户空间的页面大小包括第一或第二用户空间大小,
响应于指示第一用户空间大小的第二页面大小指示器,所述被配置为将第二虚拟地址转换为第二物理地址的控制单元进一步包括被配置为:
根据第二根页表索引和第二页目录索引获取第二基地址;
根据第二基地址和第二页表索引获取第二条目地址;
根据第二条目地址获取第二物理页面索引;
结合第二物理页面索引和第二页面偏移量作为第二物理地址。
8.根据权利要求7所述的系统,其中,所述响应于指示第二用户空间大小的第二页面大小指示器,所述被配置为将第二虚拟地址转换为第二物理地址的控制单元进一步包括被配置为:
根据第二根页表索引和第二页目录索引获取第二条目地址;
根据第二条目地址获取第二物理页面索引;
结合第二物理页面索引和第二页面偏移量作为第二物理地址。
9.根据权利要求1-4任一所述的系统,其中,所述被配置为将第二虚拟地址转换为第二物理地址的控制单元进一步包括被配置为:
获取第二不可执行指示器,所述第二不可执行指示器指示第二物理地址处的页面不可执行。
10.根据权利要求1-4任一所述的系统,其中,所述被配置为将第二虚拟地址转换为第二物理地址的控制单元包括被配置为:
获取第二访问用户空间指示;
设置一般保护错误。
11.根据权利要求1-2任一所述的系统,其中,所述被配置为将第一虚拟地址转换为第一物理地址的控制单元包括被配置为:
将第一虚拟地址直接转换为第一物理地址。
12.根据权利要求1-4任一所述的系统,其中,所述被配置为将第二虚拟地址转换为第二物理地址的控制单元还包括被配置为:
将第二虚拟地址直接转换为第二物理地址。
13.一种用于内核空间和用户空间的存储器管理方法,该方法包括:
获取对应于内核空间的第一根页表索引,所述第一根页表索引不同于对应于用户空间的第二根页表索引;
根据操作系统内核的第一根页表索引,将第一虚拟地址转换为第一物理地址;
其中,所述第一虚拟地址包括:第一页目录索引、第一页表索引和第一页偏移量,或者,第一页目录索引和第一页偏移量;
将所述第一虚拟地址转换为第一物理地址包括:
获取表示内核空间的页面大小的第一页面大小指示器,所述内核空间的页面大小包括第一或第二内核空间的页面大小;
其中,响应于表示第一内核空间页面大小的第一页面大小指示器,将第一虚拟地址转换为第一物理地址还包括:
根据第一根页表索引和第一页目录索引获取第一基地址;
根据第一基地址和第一页表索引获取第一条目地址;
根据第一条目地址获取第一物理页面索引;
结合第一物理页面索引和第一页面偏移量作为第一物理地址。
14.根据权利要求13所述的方法,其中,所述内核空间和所述用户空间对应于相同的物理存储器空间,所述相同的物理存储器空间是整个物理存储器空间或整个物理存储器空间的一部分。
15.根据权利要求13所述的方法,其中,将所述第一虚拟地址转换为第一物理地址包括:
获取表示内核空间的页面大小的第一页面大小指示器,所述内核空间的页面大小包括第一或第二内核空间的页面大小;
其中,响应于表示第一内核空间页面大小的第一页面大小指示器,将第一虚拟地址转换为第一物理地址还包括:
根据第一根页表索引和第一页目录索引获取第一基地址;
根据第一基地址和第一页表索引获取第一条目地址;
根据第一条目地址获取第一物理页面索引;
结合第一物理页面索引和第一页面偏移量作为第一物理地址。
16.根据权利要求15所述的方法,其中,响应于表示第二内核空间页面大小的第一页面大小指示器,将第一虚拟地址转换为第一物理地址包括:
根据第一根页表索引和第一页目录索引获取第一条目地址;
根据第一条目地址获取第一物理页面索引;
结合第一物理页面索引和第一页面偏移量作为第一物理地址。
17.根据权利要求13-16任一所述的方法,其中,所述将第一虚拟地址转换为第一物理地址还包括:
获取第一不可执行指示器,所述第一不可执行指示器指示在第一物理地址处的页面不可执行。
18.根据权利要求13-16任一所述的方法,还包括:
获取对应于用户空间的第二根页表索引;和
根据用户进程的第二根页表索引将第二虚拟地址转换为第二物理地址。
19.根据权利要求18所述的方法,其中,
所述第二虚拟地址包括:
第二页目录索引、第二页表索引和第二页偏移量,
或
第二页目录索引、第二页表索引和第二页偏移量。
20.根据权利要求19所述的方法,其中,所述将第二虚拟地址转换为第二物理地址包括:
根据第二根页表索引和第二页目录索引获取第二基地址;
根据第二基地址和第二页表索引获取第二条目地址;
根据第二条目地址获取第二物理页面索引;
结合第二物理页面索引和第二页面偏移量作为第二物理地址。
21.根据权利要求19所述的方法,其中,所述将第二虚拟地址转换为第二物理地址包括:
获取表示用户空间的页面大小的第二页面大小指示器,所述用户空间的页面大小包括第一或第二用户空间大小;
其中,响应于表示第一用户空间大小的第二页面大小指示器,将第二虚拟地址转换为第二物理地址还包括:
根据第二根页表索引和第二页目录索引获取第二基地址;
根据第二基地址和第二页表索引获取第二条目地址;
根据第二条目地址获取第二物理页面索引;
结合第二物理页面索引和第二页面偏移量作为第二物理地址。
22.根据权利要求21所述的方法,其中,
响应于指示第二用户空间大小的第二页面大小指示器,将第二虚拟地址转换为第二物理地址包括:
根据第二根页表索引和第二页目录索引获取第二条目地址;
根据第二条目地址获取第二物理页面索引;
结合第二物理页面索引和第二页面偏移量为第二物理地址。
23.根据权利要求20-22任一所述的方法,其中,所述将第二虚拟地址转换为第二物理地址还包括:
获取第二不可执行指示器,所述第二不可执行指示器指示在第二物理地址处页面不可执行。
24.根据权利要求13-14任一所述的方法,其中,所述将第一虚拟地址转换为第一物理地址包括:将第一虚拟地址直接转换为第一物理地址。
25.根据权利要求18所述的方法,其中,所述将第二虚拟地址转换为第二物理地址包括:
将第二虚拟地址直接转换为第二物理地址。
26.根据权利要求18任一所述的方法,其中,所述将第二虚拟地址转换为第二物理地址包括:
获取第二访问用户空间指示;
设置一般保护错误。
27.一种非暂时性计算机可读介质,存储有一组指令,所述指令可由设备的一个或更多个处理器执行,以使设备执行内核空间和用户空间存储器管理方法,该方法包括:
获取对应于内核空间的第一根页表索引,所述第一根页表索引不同于对应于用户空间的第二根页表索引;
根据操作系统内核的第一根页表索引,将第一虚拟地址转换为第一物理地址;
其中,所述第一虚拟地址包括:第一页目录索引、第一页表索引和第一页偏移量,或者,第一页目录索引和第一页偏移量;
将所述第一虚拟地址转换为第一物理地址包括:
获取表示内核空间的页面大小的第一页面大小指示器,所述内核空间的页面大小包括第一或第二内核空间的页面大小;
其中,响应于表示第一内核空间页面大小的第一页面大小指示器,将第一虚拟地址转换为第一物理地址还包括:
根据第一根页表索引和第一页目录索引获取第一基地址;
根据第一基地址和第一页表索引获取第一条目地址;
根据第一条目地址获取第一物理页面索引;
结合第一物理页面索引和第一页面偏移量作为第一物理地址。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/682,437 US11119939B2 (en) | 2017-08-21 | 2017-08-21 | Methods and systems for memory management of kernel and user spaces |
| US15/682,437 | 2017-08-21 | ||
| PCT/US2018/047201 WO2019040417A1 (en) | 2017-08-21 | 2018-08-21 | METHODS AND SYSTEMS FOR MANAGING CORE MEMORY AND USER SPACES |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN110998552A CN110998552A (zh) | 2020-04-10 |
| CN110998552B true CN110998552B (zh) | 2023-05-09 |
Family
ID=65361447
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201880054625.2A Active CN110998552B (zh) | 2017-08-21 | 2018-08-21 | 用于内核空间和用户空间的存储器管理系统和方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US11119939B2 (zh) |
| JP (1) | JP2020531951A (zh) |
| CN (1) | CN110998552B (zh) |
| WO (1) | WO2019040417A1 (zh) |
Families Citing this family (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2568059B (en) * | 2017-11-02 | 2020-04-08 | Advanced Risc Mach Ltd | Method for locating metadata |
| US10599835B2 (en) | 2018-02-06 | 2020-03-24 | Vmware, Inc. | 32-bit address space containment to secure processes from speculative rogue cache loads |
| US11144472B2 (en) * | 2019-03-27 | 2021-10-12 | Intel Corporation | Memory management apparatus and method for managing different page tables for different privilege levels |
| EP4049158A1 (en) * | 2019-10-25 | 2022-08-31 | Hewlett-Packard Development Company, L.P. | Integrity monitor |
| CN113032086B (zh) * | 2019-12-25 | 2025-01-24 | 中兴通讯股份有限公司 | 虚拟机部署及热迁移方法、vmm升级方法、服务器 |
| US11237891B2 (en) * | 2020-02-12 | 2022-02-01 | International Business Machines Corporation | Handling asynchronous memory errors on kernel text |
| US12366989B2 (en) * | 2020-12-23 | 2025-07-22 | Intel Corporation | Technologies to provide access to kernel and user space memory regions |
| CN112948318B (zh) * | 2021-03-09 | 2022-12-06 | 西安奥卡云数据科技有限公司 | 一种Linux操作系统下基于RDMA的数据传输方法及装置 |
| CN112947863B (zh) * | 2021-03-25 | 2024-01-30 | 北京计算机技术及应用研究所 | 一种飞腾服务器平台下存储空间合并成的方法 |
| CN118642978A (zh) * | 2024-06-21 | 2024-09-13 | 新华三信息技术有限公司 | 一种内存访问方法、装置、电子设备及存储介质 |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5873128A (en) * | 1993-06-28 | 1999-02-16 | Fujitsu Limited | Data processing system with dynamic address translation function |
| JP2001282616A (ja) * | 2000-04-03 | 2001-10-12 | Mitsubishi Electric Corp | メモリ管理方式 |
| CN101477477A (zh) * | 2009-01-12 | 2009-07-08 | 华为技术有限公司 | 内核空间隔离方法、空间管理实体及系统 |
| CN101782954A (zh) * | 2009-01-20 | 2010-07-21 | 联想(北京)有限公司 | 一种计算机及异常进程的检测方法 |
| CN103270502A (zh) * | 2010-12-14 | 2013-08-28 | 超威半导体公司 | 输入输出存储器管理单元(iommu)两层寻址 |
| US8543792B1 (en) * | 2006-09-19 | 2013-09-24 | Nvidia Corporation | Memory access techniques including coalesing page table entries |
| CN105378687A (zh) * | 2014-03-07 | 2016-03-02 | 华为技术有限公司 | 访问文件的方法和相关设备 |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8135962B2 (en) * | 2002-03-27 | 2012-03-13 | Globalfoundries Inc. | System and method providing region-granular, hardware-controlled memory encryption |
| US7058768B2 (en) * | 2002-04-17 | 2006-06-06 | Microsoft Corporation | Memory isolation through address translation data edit control |
| US7451298B2 (en) * | 2006-08-03 | 2008-11-11 | Apple Inc. | Processing exceptions from 64-bit application program executing in 64-bit processor with 32-bit OS kernel by switching to 32-bit processor mode |
| US8060722B2 (en) * | 2009-03-27 | 2011-11-15 | Vmware, Inc. | Hardware assistance for shadow page table coherence with guest page mappings |
| KR20130050156A (ko) * | 2011-11-07 | 2013-05-15 | 한국전자통신연구원 | 가상 주소 공간 전환 장치 |
| KR102327782B1 (ko) * | 2015-05-29 | 2021-11-18 | 한국과학기술원 | 전자 장치 및 커널 데이터 접근 방법 |
| US10002084B1 (en) * | 2016-12-19 | 2018-06-19 | Vmware, Inc. | Memory management in virtualized computing systems having processors with more than two hierarchical privilege levels |
-
2017
- 2017-08-21 US US15/682,437 patent/US11119939B2/en active Active
-
2018
- 2018-08-21 CN CN201880054625.2A patent/CN110998552B/zh active Active
- 2018-08-21 JP JP2020506745A patent/JP2020531951A/ja active Pending
- 2018-08-21 WO PCT/US2018/047201 patent/WO2019040417A1/en not_active Ceased
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5873128A (en) * | 1993-06-28 | 1999-02-16 | Fujitsu Limited | Data processing system with dynamic address translation function |
| JP2001282616A (ja) * | 2000-04-03 | 2001-10-12 | Mitsubishi Electric Corp | メモリ管理方式 |
| US8543792B1 (en) * | 2006-09-19 | 2013-09-24 | Nvidia Corporation | Memory access techniques including coalesing page table entries |
| CN101477477A (zh) * | 2009-01-12 | 2009-07-08 | 华为技术有限公司 | 内核空间隔离方法、空间管理实体及系统 |
| CN101782954A (zh) * | 2009-01-20 | 2010-07-21 | 联想(北京)有限公司 | 一种计算机及异常进程的检测方法 |
| CN103270502A (zh) * | 2010-12-14 | 2013-08-28 | 超威半导体公司 | 输入输出存储器管理单元(iommu)两层寻址 |
| CN105378687A (zh) * | 2014-03-07 | 2016-03-02 | 华为技术有限公司 | 访问文件的方法和相关设备 |
Non-Patent Citations (1)
| Title |
|---|
| ARM MMU中虚拟地址到物理地址转换的研究;王宏宇;;中国电力教育(S3);全文 * |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2020531951A (ja) | 2020-11-05 |
| CN110998552A (zh) | 2020-04-10 |
| US11119939B2 (en) | 2021-09-14 |
| WO2019040417A1 (en) | 2019-02-28 |
| US20190057040A1 (en) | 2019-02-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN110998552B (zh) | 用于内核空间和用户空间的存储器管理系统和方法 | |
| US7149890B2 (en) | Initializing system memory | |
| JP5079104B2 (ja) | 変換例外修飾子を用いる動的アドレス変換 | |
| ES2893618T3 (es) | Gestión del uso del almacenamiento por múltiples invitados localizables de un entorno de ordenador | |
| CN112241310B (zh) | 页表管理、信息获取方法、处理器、芯片、设备及介质 | |
| CN112602060B (zh) | 计算机处理器中的虚拟机寄存器 | |
| US9218302B2 (en) | Page table management | |
| CN102906716B (zh) | 促进计算环境的系统存储器的管理的方法 | |
| JP2559994B2 (ja) | スモール・アドレスを使用するメモリ・アクセス方法およびコンピュータ・システム | |
| US7120778B2 (en) | Option ROM virtualization | |
| CN105164653B (zh) | 属性字段的多核页表集合 | |
| US20030188122A1 (en) | Mapping of interconnect configuration space | |
| CN110557254A (zh) | 基于进程的多密钥全存储器加密 | |
| US9146879B1 (en) | Virtual memory management for real-time embedded devices | |
| KR101179341B1 (ko) | 메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스트랜잭션의 수행 | |
| US9424155B1 (en) | Use efficiency of platform memory resources through firmware managed I/O translation table paging | |
| PT2585925E (pt) | Determinação durante tempo de execução de formatos de tradução para funções de adaptador | |
| CN106415574B (zh) | 采用用于促进对安全存储器的访问的中间结构 | |
| US9740625B2 (en) | Selectable address translation mechanisms within a partition | |
| US10025726B2 (en) | Method in a memory management unit for managing address translations in two stages | |
| US20130073779A1 (en) | Dynamic memory reconfiguration to delay performance overhead | |
| JP3808058B2 (ja) | 複数のホストが圧縮データを記憶するメモリ・セクタの集合を共用できるようにするための装置 | |
| US11009841B2 (en) | Initialising control data for a device | |
| JP2001075824A (ja) | アクセス方法及びアクセス処理プログラムを記録した記録媒体 | |
| KR100677621B1 (ko) | 미리 구성된 tlb를 이용한 부팅 속도 개선 방법 및 장치 |
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 | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |