CN103257936A - 内存映射方法和内存映射模块 - Google Patents

内存映射方法和内存映射模块 Download PDF

Info

Publication number
CN103257936A
CN103257936A CN2012100377456A CN201210037745A CN103257936A CN 103257936 A CN103257936 A CN 103257936A CN 2012100377456 A CN2012100377456 A CN 2012100377456A CN 201210037745 A CN201210037745 A CN 201210037745A CN 103257936 A CN103257936 A CN 103257936A
Authority
CN
China
Prior art keywords
linear address
address space
table entry
page table
frame number
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.)
Granted
Application number
CN2012100377456A
Other languages
English (en)
Other versions
CN103257936B (zh
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.)
Shenzhen Union Memory Information System Co Ltd
Original Assignee
Lenovo Beijing 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 Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CN201210037745.6A priority Critical patent/CN103257936B/zh
Publication of CN103257936A publication Critical patent/CN103257936A/zh
Application granted granted Critical
Publication of CN103257936B publication Critical patent/CN103257936B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

提供了内存映射方法和内存映射模块。该内存映射方法用于将物理内存页映射到用户态中的线性地址空间,该方法包括:在用户态中分配第一线性地址空间;在用户态中查询第一线性地址空间对应的第一页表项;在内核态中查询第一页表项对应的第一物理页框号;在用户态中分配对应于第一页表项的第二线性地址空间;在用户态中查询所述第二线性地址空间对应的第二页表项;在内核态中将第一物理页框号填入第二页表项中,以使得在用户态中操作第二线性地址空间等效于在内核态操作第一页表项。通过根据本发明实施例的内存映射方法和内存映射模块,可以显著减少将物理内存页映射到线性地址空间的时间,提高了物理内存的访问速度,实现了高效的数据共享。

Description

内存映射方法和内存映射模块
技术领域
本发明涉及内存映射方法和内存映射模块。
背景技术
在当前的计算机设备中,例如,在进行PC平台上的虚拟系统开发时,映射物理内存页是跨进程、跨虚拟域的一种相对高效的数据共享方式。例如,对于Linux虚拟机Xen的域间数据传递方案来说,即时采用grant table(授权表)来进行各个域之间的数据传递,其中,授权表通过携带索引值来传递物理内存页,在进行数据传递(非拷贝)操作时只需要完成物理内存页从一个域的映射和另一个域的解映射,因此数据传递运行效率很高。
但是,在系统辅助工具开发或者虚拟系统开发中,会不时遇到在用户空间映射物理内存页的需求,其中,在日益苛刻的大数据量实时需求的应用场景下,现有的内存映射方法可能不能达到处理性能指标的需求。
这是因为在现有的应用层的物理内存映射方案中,映射模块接收到待映射的物理页框号数组,即一组物理页框号时,都会在用户态中向操作系统工作集申请对应长度的线性地址空间,并在内核态中调用内核态组件将物理页框号填入对应的页表项以完成物理内存映射。但是,由于每映射一组物理页框号都需要调用一次内核态组件完成物理页框号到页表项的填写,因此在内核态和用户态之间的切换时间成为高速系统的一大时延瓶颈。为了实现高速的内存映射,迫切需要解决这种频繁在内核态和用户态之间的切换所造成的时间延迟。
发明内容
因此,针对上述现有技术中存在的问题和需求做出本发明。
本发明实施例的目的是提供一种内存映射方法和内存映射模块,其能够通过使得在用户态中操作线性地址空间等效于在内核态操作页表项,而减少进入内核态查询页表项所对应的物理页框号的次数,从而减少在内核态和用户态之间的切换所造成的时间延迟。
根据本发明实施例的一个方面,提供了一种内存映射方法,用于将物理内存页映射到用户态中的线性地址空间,其中,通过将所述物理内存页的页框号填入所述线性地址空间对应的页表项来将物理内存页映射到线性地址空间,所述方法包括:在用户态中分配第一线性地址空间;在用户态中查询所述第一线性地址空间对应的第一页表项;在内核态中查询所述第一页表项对应的第一物理页框号;在用户态中分配对应于所述第一页表项的第二线性地址空间;在用户态中查询所述第二线性地址空间对应的第二页表项;以及在内核态中将第一物理页框号填入所述第二页表项中,以使得在用户态中操作第二线性地址空间等效于在内核态操作第一页表项。
在上述内存映射方法中,所述在用户态中查询所述第一线性地址空间对应的第一页表项的步骤具体包括:利用所述第一线性地址空间的分段索引规则计算出所述第一页表项线性地址;以及所述在用户态中查询所述第二线性地址空间对应的第二页表项的步骤具体包括:利用所述第二线性地址空间的分段索引规则计算出所述第二页表项线性地址。
在上述内存映射方法中,所述在内核态中查询所述第一页表项对应的第一物理页框号的步骤具体包括:调用系统函数查询第一页表项线性地址对应的物理页框号。
在上述内存映射方法中,所述将第一物理页框号填入所述第二页表项中的步骤之后进一步包括:当接收到新的物理页框号数组时,根据接收到的物理页框号数目在用户态第一线性地址空间中分配第三线性地址空间;在用户态中将所述新的物理页框号填入映射到所述第二线性地址空间的第一页表项中,以将新的物理内存页映射到所述第三线性地址空间中。
在上述内存映射方法中,在接收到多个物理页框号数组时,所述第一线性地址空间循环使用。
根据本发明实施例的另一方面,提供了一种内存映射模块,用于将物理内存页映射到用户态中的线性地址空间,其中,通过将所述物理内存页的页框号填入所述线性地址空间对应的页表项来将物理内存页映射到线性地址空间,所述模块包括:第一分配单元,配置为在用户态中分配第一线性地址空间;第一查询单元,配置为在用户态中查询由所述第一分配单元分配的第一线性地址空间所对应的第一页表项;第二查询单元,配置为在内核态中查询与由所述第一查询单元查询的第一页表项对应的第一物理页框号;第二分配单元,配置为在用户态中分配与由所述第一分配单元分配的第一页表项对应的第二线性地址空间;第三查询单元,配置为在用户态中查询由所述第二分配单元分配的第二线性地址空间对应的第二页表项;以及第一映射单元,配置为在内核态中将由所述第二查询单元查询的第一物理页框号填入由所述第三查询单元查询的第二页表项中,以使得在用户态中操作第二线性地址空间等效于在内核态操作第一页表项。
在上述内存映射模块中,所述第一查询单元具体配置为:利用由所述第一分配单元分配的第一线性地址空间的分段索引规则计算出所述第一页表项线性地址;以及所述第三查询单元具体配置为:利用由所述第二分配单元分配的第二线性地址空间的分段索引规则计算出所述第二页表项线性地址。
在上述内存映射模块中,所述第二查询单元具体配置为:调用系统函数查询与由所述第一查询单元查询的第一页表项的线性地址对应的物理页框号。
在上述内存映射模块中,进一步包括:第三分配单元,配置为当接收到新的物理页框号数组时,根据接收到的物理页框号数目在用户态中由所述第一分配单元分配的第一线性地址空间中分配第三线性地址空间;以及第二映射单元,配置为在用户态中将所述新的物理页框号填入映射到所述第二线性地址空间的第一页表项中,以将新的物理内存页映射到所述第三线性地址空间中。
在上述内存映射模块中,在接收到多个物理页框号数组时,所述第一线性地址空间循环使用。
通过根据本发明实施例的内存映射方法和内存映射模块,可以仅进入内核态一次来查询页表项所对应的物理页框号,从而显著减少了将物理内存页映射到线性地址空间的时间,提高了物理内存的访问速度,实现了高效的数据共享。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是示出根据本发明实施例的内存映射方法的示意性流程图;
图2是示出现有内存映射方法所需要的时间的示意图;
图3是示出根据本发明实施例的内存映射方法所需要的时间的示意图;
图4是示出根据本发明实施例的线性地址空间的分段索引规则的示意图;
图5是示出根据本发明实施例的内存映射方法中地址空间分配的示意图;
图6是示出根据本发明实施例的内存映射模块的示意性框图。
具体实施方式
下面,将结合附图详细描述根据本发明实施例的内存映射方法和内存映射模块。
由于进程的页表项本身处于操作系统工作集的线性地址空间的内核空间中,因此,设置页表项需要内核态组件辅助是不可避免的。但是,相比于每映射一组物理页框号都进入内核态进行页表项的填写的现有方案,根据本发明实施例的内存映射方法寻求将内核态中的页表项映射到用户态中的线性地址空间中,从而使得在用户态中操作线性地址空间就等效于在内核态中操作页表项。
具体地说,在根据本发明实施例的内存映射方法中,在启动该高速内存映射方案时,首先进行初始化,以在操作系统工作集中一次性地申请较大长度的线性地址空间供循环利用,并且仅进入一次内核态查找该段固定线性地址空间的第一页表项及其所对应的物理页框号,并在用户态中分配第一页表项所对应的另一段线性地址空间,这样,通过将上述物理页框号填入该另一端线性地址空间所对应的第二页表项中,就可以完成第一页表项从内核态中的线性地址空间到用户态中的该段固定线性地址空间的映射。之后,在具体工作过程中,用户态中的内存映射模块每次接收到传入的物理页框号数组,都可以通过在用户态中将该组物理页框号填入第一页表项所映射到的该段固定线性地址空间来快速完成页表项的填写,从而实现线性地址空间与物理内存页的高速映射。
根据本发明实施例的一个方面,提供了一种内存映射方法,用于将物理内存页映射到用户态中的线性地址空间,其中,通过将物理内存页的页框号填入所述线性地址空间对应的页表项来将物理内存页映射到线性地址空间,所述方法包括:在用户态中分配第一线性地址空间;在用户态中查询所述第一线性地址空间对应的第一页表项;在内核态中查询所述第一页表项对应的第一物理页框号;在用户态中分配对应于所述第一页表项的第二线性地址空间;在用户态中查询所述第二线性地址空间对应的第二页表项;在内核态中将第一物理页框号填入所述第二页表项中,以使得在用户态中操作第二线性地址空间等效于在内核态操作第一页表项。
图1是示出根据本发明实施例的内存映射方法的示意性流程图。根据本发明实施例的内存映射方法用于将物理内存页映射到用户态中的线性地址空间,其中,通过将物理内存页的页框号填入所述线性地址空间对应的页表项来将物理内存页映射到线性地址空间。如图1所示,该方法包括:S100,在用户态中分配第一线性地址空间;S101,在用户态中查询所述第一线性地址空间对应的第一页表项;S102,在内核态中查询所述第一页表项对应的第一物理页框号;S103,在用户态中分配对应于所述第一页表项的第二线性地址空间;S104,在用户态中查询所述第二线性地址空间对应的第二页表项;S105,在内核态中将第一物理页框号填入所述第二页表项中,以使得在用户态中操作第二线性地址空间等效于在内核态操作第一页表项。
通过根据本发明实施例的内存映射方法,可以仅在该高速内存映射方案的初始化进程中,也就是在该方案的准备阶段进入内核态一次,以完成内核态中的页表项到用户态中的线性地址空间的映射。这样,在其后的工作过程中,每次接收到新的物理页框号数组时,仅需要将该组新的物理页框号在用户态中填入页表项所映射到的线性地址空间,就可以完成物理内存页到线性地址空间的映射,而不需要再次进入内核态中进行操作。
因此,对于现有的用户态物理内存页映射方法来说,如图2所示,每次进行物理内存页到线性地址空间的映射,都需要进入内核态一次,并调用系统函数来查询该线性地址空间所对应的页表项线性地址所对应的物理页框号,这里,假设调用系统函数的查询时间为IoControlTime,且将物理页框号填入到页表项的映射时间为MappingTime,则完成n次映射所需要的时间为n×(IoControlTime+MappingTime),如图2所示。
而在根据本发明实施例的内存映射方法中,仅需要在准备阶段进入内核态一次,并调用系统函数来查询页表项线性地址所对应的物理页框号,从而将物理页框号填入页表项中,此后,每次需要进行物理内存页到线性地址空间的映射时,仅需要在用户态中将物理页框号填入到页表项所对应的线性地址空间中即可。这样,同样完成n次映射,根据本发明实施例的内存映射方法所需要的时间为IoControlTime+(n+1)×MappingTime,如图3所示。这里,图2是示出现有内存映射方法所需要的时间的示意图,且图3是示出根据本发明实施例的内存映射方法所需要的时间的示意图。
通过在一台运行Window XP的测试机上进行运行时间的测试,在进入内核态查询页表项所对应的物理页框号时,例如调用一次DeviceIoControl函数大约需要58微妙,而将物理页框号填入页表项以进行映射时,例如,直接填写4字节内存数据,即一个物理页框号的数据重复1000次仅需要1微妙。所以,可以看到MappingTime<<IoControlTime。所以,由于在根据本发明实施例的内存映射方法中,显著减少了调用系统函数查询页表项对应的物理页框号的次数,可以显著减少在用户态和内核态之间切换所造成的时间延迟,从而实现高速内存映射。
在上述内存映射方法中,所述在用户态中查询所述第一线性地址空间对应的第一页表项的步骤具体包括:利用所述第一线性地址空间的分段索引规则计算出所述第一页表项线性地址;所述在用户态中查询所述第二线性地址空间对应的第二页表项的步骤具体包括:利用所述第二线性地址空间的分段索引规则计算出所述第二页表项线性地址。
图4是示出根据本发明实施例的线性地址空间的分段索引规则的示意图。本领域技术人员可以理解,根据如图4所示的32位线性地址-高11位索引页目录或者32位线性地址-高20位索引页表可以计算出线性地址所对应的页表项线性地址,这里为了简明的缘故便不再赘述。
在上述内存映射方法中,所述在内核态中查询所述第一页表项对应的第一物理页框号的步骤具体包括:调用系统函数查询第一页表项线性地址对应的物理页框号。
具体地说,在根据本发明实施例的内存映射方法中,通过用户态中线性地址空间的分段索引规则来计算出页表项在内核态中的线性地址。例如,当在用户态中分配对应于第一页表项的第二线性地址空间时,通过第一线性地址空间的分段索引规则计算出第一页表项在内核态中的线性地址,并且在用户态中分配与第一页表项在内核态中的线性地址相等大小的第二线性地址空间,以使得可以将第一页表项映射到第二线性地址空间中。而在分配了用于映射第一页表项的第二线性地址空间之后,则利用该第二线性地址空间的分段索引规则计算出第二页表项的线性地址,也将第一物理页框号填入该第二页表项的线性地址,从而完成第一页表项到第二线性地址空间的映射。此外,通过调用系统函数,例如如上所述的DeviceIoControl函数来查询第一页表项线性地址所对应的物理页框号。如上所述,在内核态中将物理页框号填入页表项的操作中,调用系统函数来查询物理页框号所需的时间远大于将物理页框号填入页表项所需的时间。因此,在根据本发明实施例的内存映射方法中,将第一页表项从内核态的线性地址空间映射到用户态中的线性地址空间时,并不是使得将物理页框号填入页表项的时间本身缩短,而是减少了在内核态中调用系统函数来查询页表项所对应的物理页框号所需的时间。
图5是示出根据本发明实施例的内存映射方法中地址空间分配的示意图。如图5中所示,在用户态中分配用于映射物理内存页的第一线性地址空间和用于映射第一线性地址空间所对应的第一页表项的第二线性地址空间。这里,由于在准备阶段过后的实际工作过程中,对第一线性地址空间进行循环利用以映射物理内存页,由此,优选地向第一线性地址空间分配较大的地址长度,从而满足物理内存页的映射的需要。在根据本发明实施例的内存映射方法中,一个物理内存页的大小通常为4K字节,因此需要根据实际映射的物理内存页的数目来设置较大的地址长度。而对于用于映射第一页表项的第二线性地址空间,因为其仅需要具有将接收的新的物理页框号数组填入其的容量,因此并不需要设置为具有很大的地址长度,在根据本发明实施例的内存映射方法中,如上所述,填入一个物理页框号需要4字节的空间大小。因此,在一个物理页框号对应于一个物理内存页的情况下,对于每个物理内存页,需要分配4K字节的第一线性地址空间,而仅需要分配4字节的第二线性地址空间即可。在实际过程中,可以将该第二线性地址空间设置为与在内核态中查询到的第一页表项的线性地址相同的地址长度。此外,因为用户态中映射第一页表项的线性地址空间的地址长度要小于用户态中映射物理内存页的线性地址空间的地址长度,因此相应地在内核态中,第一页表项的线性地址长度也会大于第二页表项的线性地址长度。本领域技术人员可以理解,在图5中,仅是示意性地示出了各个线性地址空间,而并不意在对于各个线性地址空间的地址长度进行任何定量的限制。
在上述内存映射方法中,所述将第一物理页框号填入所述第二页表项中的步骤之后进一步包括:当接收到新的物理页框号数组时,根据接收到的物理页框号数目在用户态第一线性地址空间中分配第三线性地址空间;在用户态中将所述新的物理页框号填入映射到所述第二线性地址空间的第一页表项中,以将新的物理内存页映射到所述第三线性地址空间中。
在根据本发明实施例的内存映射方法中,为了描述的方便,可以划分为准备阶段和工作阶段,如上所述,在准备阶段中,是将需要填入物理页框号的内核态中的第一页表项映射到用户态中的第二线性地址空间中,这样,在工作阶段中,当需要将物理页框号填入页表项已将物理内存页映射到线性地址空间时,就不需要再进入内核态中将物理页框号填入页表项,而仅需要将新的物理页框号填入到映射到的用户态中的第二线性地址空间的第一页表项中即可。这样,就将新接收到的物理内存页映射到了在准备阶段中在用户态中分配的第一线性地址空间中。并且,每次接收到新的物理页框号数组,都可以在预先分配的第一线性地址空间中分配用于映射该新的物理内存页的第三线性地址空间,从而实现物理内存页到线性地址空间的映射。
并且,例如,第一线性地址空间可在映射物理内存页时循环使用。具体地说,当在多次接收到物理页框号数组从而完成了多组物理内存页到线性地址空间的映射之后,第一线性地址空间中剩余的线性地址空间不足以映射接下来要接收到的物理内存页,此时可以释放首次接收到的第一组物理内存页所对应的第一线性地址空间,从而将该部分线性地址空间用于接下来要接收到的物理内存页。当将第一线性地址空间设置得足够大时,如果出现上述情况,则释放的第一线性地址空间将是很多次映射之前所占用的线性地址空间,可以基本保证用户已经通过该线性地址空间完成了对内存的访问,从而释放该段第一线性地址空间不大可能影响到用户当前对内存的及时和正确的访问。所以,在根据本发明实施例的内存映射方法中,将第一线性地址空间设置得越大,显然越能够保证用户对内存的及时和正确的访问,但同时不可避免地会出现部分线性地址空间闲置,从而造成存储空间的浪费。通过采取较小长度的线性地址空间的循环使用,可以保证存储空间的使用效率。因此,在根据本发明实施例的内存映射方法中,可以按照实际情况来决定第一线性地址空间的大小,本发明实施例并不意在对此进行任意限制。
在根据本发明实施例的内存映射方法中,物理页框号实际上是物理内存页的索引,每一个或一组物理内存页具有唯一的物理页框号,从而可以通过物理页框号找到具体的物理内存页。因此,物理页框号便代表着实际的物理内存页,可以将其看作是每个物理内存页的编号。如上所述,在每个物理内存页中,通常存储4K字节的内存数据,而该物理页框号本身占据4K字节,即32位,如图4所示的。在接收到新的需要映射的物理内存页时,因为通常不会是仅映射一个物理内存页,因此接收到的时物理页框号的数组,例如,物理页框号1-10,物理页框号10-20等等。
在将一组物理页框号填入了映射到第二线性地址空间的第一页表项,即将该组物理页框号的数据存储到第一页表项所对应的第二线性地址空间之后,便实际上将该组物理内存页映射到了在第一线性地址空间中为该组物理内存页分配的第三线性地址空间。这里,第三线性地址空间是根据接收到的物理页框号的数目确定的,如上所述,因为每个物理内存页通常存储4K字节的内存数据,因此如果接收到的物理页框号的数目是10,例如物理页框号1-10,则分配大小为40K字节大小的第三线性地址空间。并且,通过将该第三线性地址空间的起始线性地址返回给用户,用户便可以通过对该40K字节的第三线性地址空间的访问来实现及时和正确的对上述10个物理内存页的访问,即用户通过访问线性地址空间来实现对实际的物理内存的访问,从而实现高效的数据共享。
这样,通过根据本发明实施例的内存映射方法,可以使得在用户态中操作线性地址空间等效于在内核态操作页表项,而减少进入内核态查询页表项所对应的物理页框号的次数,从而减少在内核态和用户态之间的切换所造成的时间延迟。
并且,在根据本发明实施例的内存映射方法中,向操作系统进程工作集申请线性地址空间和释放线性地址空间都可以采用标准处理,且物理内存页的映射操作也可以自主完成,这使得系统的运行相对稳定。
根据本发明实施例的另一方面,提供了一种内存映射模块,用于将物理内存页映射到用户态中的线性地址空间,其中,通过将所述物理内存页的页框号填入所述线性地址空间对应的页表项来将物理内存页映射到线性地址空间,所述模块包括:第一分配单元,配置为在用户态中分配第一线性地址空间;第一查询单元,配置为在用户态中查询由所述第一分配单元分配的第一线性地址空间所对应的第一页表项;第二查询单元,配置为在内核态中查询与由所述第一查询单元查询的第一页表项对应的第一物理页框号;第二分配单元,配置为在用户态中分配与由所述第一分配单元分配的第一页表项对应的第二线性地址空间;第三查询单元,配置为在用户态中查询由所述第二分配单元分配的第二线性地址空间对应的第二页表项;以及第一映射单元,配置为在内核态中将由所述第二查询单元查询的第一物理页框号填入由所述第三查询单元查询的第二页表项中,以使得在用户态中操作第二线性地址空间等效于在内核态操作第一页表项。
图6是示出根据本发明实施例的内存映射模块的示意性框图。根据本发明实施例的内存映射模块100用于将物理内存页映射到用户态中的线性地址空间,其通过将物理内存页的页框号填入线性地址空间对应的页表项来将物理内存页映射到线性地址空间。如图6所示,该内存映射模块100包括:第一分配单元101,配置为在用户态中分配第一线性地址空间;第一查询单元102,与第一分配单元101连接,配置为在用户态中查询由第一分配单元101分配的第一线性地址空间所对应的第一页表项;第二查询单元103,与第一查询单元102连接,配置为在内核态中查询与由第一查询单元102查询的第一页表项对应的第一物理页框号;第二分配单元104,与第一分配单元101连接,配置为在用户态中分配与由第一分配单元101分配的第一页表项对应的第二线性地址空间;第三查询单元105,与第二分配单元104连接,配置为在用户态中查询由第二分配单元104分配的第二线性地址空间对应的第二页表项;以及第一映射单元106,与第二查询单元103和第三查询单元105连接,配置为在内核态中将由第二查询单元103查询的第一物理页框号填入由第三查询单元105查询的第二页表项中,以使得在用户态中操作第二线性地址空间等效于在内核态操作第一页表项。
在上述内存映射模块中,所述第一查询单元具体配置为:利用由所述第一分配单元分配的第一线性地址空间的分段索引规则计算出所述第一页表项线性地址;以及所述第三查询单元具体配置为:利用由所述第二分配单元分配的第二线性地址空间的分段索引规则计算出所述第二页表项线性地址。
在上述内存映射模块中,所述第二查询单元具体配置为:调用系统函数查询与由所述第一查询单元查询的第一页表项的线性地址对应的物理页框号。
在上述内存映射模块中,进一步包括:第三分配单元,配置为当接收到新的物理页框号数组时,根据接收到的物理页框号数目在用户态中由所述第一分配单元分配的第一线性地址空间中分配第三线性地址空间;以及第二映射单元,配置为在用户态中将所述新的物理页框号填入映射到所述第二线性地址空间的第一页表项中,以将新的物理内存页映射到所述第三线性地址空间中。
在上述内存映射模块中,在接收到多个物理页框号数组时,所述第一线性地址空间循环使用。
通过根据本发明实施例的内存映射方法和内存映射模块,可以仅进入内核态一次来查询页表项所对应的物理页框号,从而显著减少了将物理内存页映射到线性地址空间的时间,提高了物理内存的访问速度,实现了高效的数据共享。
本发明已经参考具体实施例进行了详细说明。然而,很明显,在不背离本发明的精神的情况下,本领域技术人员能够对实施例执行更改和替换。换句话说,本发明用说明的形式公开,而不是被限制地解释。要判断本发明的要旨,应该考虑所附的权利要求。

Claims (10)

1.一种内存映射方法,用于将物理内存页映射到用户态中的线性地址空间,其中,通过将所述物理内存页的页框号填入所述线性地址空间对应的页表项来将物理内存页映射到线性地址空间,所述方法包括:
在用户态中分配第一线性地址空间;
在用户态中查询所述第一线性地址空间对应的第一页表项;
在内核态中查询所述第一页表项对应的第一物理页框号;
在用户态中分配对应于所述第一页表项的第二线性地址空间;
在用户态中查询所述第二线性地址空间对应的第二页表项;
在内核态中将第一物理页框号填入所述第二页表项中,以使得在用户态中操作第二线性地址空间等效于在内核态操作第一页表项。
2.如权利要求1所述的内存映射方法,其中,所述在用户态中查询所述第一线性地址空间对应的第一页表项的步骤具体包括:
利用所述第一线性地址空间的分段索引规则计算出所述第一页表项线性地址;以及
所述在用户态中查询所述第二线性地址空间对应的第二页表项的步骤具体包括:
利用所述第二线性地址空间的分段索引规则计算出所述第二页表项线性地址。
3.如权利要求1所述的内存映射方法,其中,所述在内核态中查询所述第一页表项对应的第一物理页框号的步骤具体包括:
调用系统函数查询第一页表项线性地址对应的物理页框号。
4.如权利要求1到3中任意一项所述的内存映射方法,其中,所述将第一物理页框号填入所述第二页表项中的步骤之后进一步包括:
当接收到新的物理页框号数组时,根据接收到的物理页框号数目在用户态第一线性地址空间中分配第三线性地址空间;
在用户态中将所述新的物理页框号填入映射到所述第二线性地址空间的第一页表项中,以将新的物理内存页映射到所述第三线性地址空间中。
5.如权利要求4所述的内存映射方法,其中,在接收到多个物理页框号数组时,所述第一线性地址空间循环使用。
6.一种内存映射模块,用于将物理内存页映射到用户态中的线性地址空间,其中,通过将所述物理内存页的页框号填入所述线性地址空间对应的页表项来将物理内存页映射到线性地址空间,所述模块包括:
第一分配单元,配置为在用户态中分配第一线性地址空间;
第一查询单元,配置为在用户态中查询由所述第一分配单元分配的第一线性地址空间所对应的第一页表项;
第二查询单元,配置为在内核态中查询与由所述第一查询单元查询的第一页表项对应的第一物理页框号;
第二分配单元,配置为在用户态中分配与由所述第一分配单元分配的第一页表项对应的第二线性地址空间;
第三查询单元,配置为在用户态中查询由所述第二分配单元分配的第二线性地址空间对应的第二页表项;
第一映射单元,配置为在内核态中将由所述第二查询单元查询的第一物理页框号填入由所述第三查询单元查询的第二页表项中,以使得在用户态中操作第二线性地址空间等效于在内核态操作第一页表项。
7.如权利要求6所述的内存映射模块,其中,所述第一查询单元具体配置为:
利用由所述第一分配单元分配的第一线性地址空间的分段索引规则计算出所述第一页表项线性地址;以及
所述第三查询单元具体配置为:
利用由所述第二分配单元分配的第二线性地址空间的分段索引规则计算出所述第二页表项线性地址。
8.如权利要求6所述的内存映射模块,其中,所述第二查询单元具体配置为:
调用系统函数查询与由所述第一查询单元查询的第一页表项的线性地址对应的物理页框号。
9.如权利要求6到8中任意一项所述的内存映射模块,进一步包括:
第三分配单元,配置为当接收到新的物理页框号数组时,根据接收到的物理页框号数目在用户态中由所述第一分配单元分配的第一线性地址空间中分配第三线性地址空间;
第二映射单元,配置为在用户态中将所述新的物理页框号填入映射到所述第二线性地址空间的第一页表项中,以将新的物理内存页映射到所述第三线性地址空间中。
10.如权利要求9所述的内存映射模块,其中,在接收到多个物理页框号数组时,所述第一线性地址空间循环使用。
CN201210037745.6A 2012-02-17 2012-02-17 内存映射方法和内存映射模块 Active CN103257936B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210037745.6A CN103257936B (zh) 2012-02-17 2012-02-17 内存映射方法和内存映射模块

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210037745.6A CN103257936B (zh) 2012-02-17 2012-02-17 内存映射方法和内存映射模块

Publications (2)

Publication Number Publication Date
CN103257936A true CN103257936A (zh) 2013-08-21
CN103257936B CN103257936B (zh) 2016-03-02

Family

ID=48961866

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210037745.6A Active CN103257936B (zh) 2012-02-17 2012-02-17 内存映射方法和内存映射模块

Country Status (1)

Country Link
CN (1) CN103257936B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107729159A (zh) * 2017-09-29 2018-02-23 华为技术有限公司 一种共享内存的地址映射方法及装置
CN109086221A (zh) * 2018-07-20 2018-12-25 郑州云海信息技术有限公司 一种增加存储设备内存容量的方法及系统
CN110007869A (zh) * 2019-04-12 2019-07-12 苏州浪潮智能科技有限公司 一种内存数据拷贝方法、装置、设备及计算机存储介质
CN110892388A (zh) * 2018-07-11 2020-03-17 华为技术有限公司 增强用户空间与内核空间的隔离性的方法和装置
CN110968599A (zh) * 2018-09-30 2020-04-07 北京国双科技有限公司 一种基于Impala的查询方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044445A (en) * 1995-06-30 2000-03-28 Kabushiki Kaisha Toshiba Data transfer method and memory management system utilizing access control information to change mapping between physical and virtual pages for improved data transfer efficiency
CN101063963A (zh) * 2006-04-26 2007-10-31 韩国电子通信研究院 数据零拷贝文件的移动方法
US20070288718A1 (en) * 2006-06-12 2007-12-13 Udayakumar Cholleti Relocating page tables
US20100313201A1 (en) * 2009-06-09 2010-12-09 Open Kernel Labs Methods and apparatus for fast context switching in a virtualized system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044445A (en) * 1995-06-30 2000-03-28 Kabushiki Kaisha Toshiba Data transfer method and memory management system utilizing access control information to change mapping between physical and virtual pages for improved data transfer efficiency
CN101063963A (zh) * 2006-04-26 2007-10-31 韩国电子通信研究院 数据零拷贝文件的移动方法
US20070288718A1 (en) * 2006-06-12 2007-12-13 Udayakumar Cholleti Relocating page tables
US20100313201A1 (en) * 2009-06-09 2010-12-09 Open Kernel Labs Methods and apparatus for fast context switching in a virtualized system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李大斌: "并行数据库通讯组件零拷贝技术的研究与实现", 《万方学位论文数据库》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107729159A (zh) * 2017-09-29 2018-02-23 华为技术有限公司 一种共享内存的地址映射方法及装置
CN110892388A (zh) * 2018-07-11 2020-03-17 华为技术有限公司 增强用户空间与内核空间的隔离性的方法和装置
CN110892388B (zh) * 2018-07-11 2022-07-22 华为技术有限公司 增强用户空间与内核空间的隔离性的方法和装置
US11436155B2 (en) 2018-07-11 2022-09-06 Huawei Technologies Co., Ltd. Method and apparatus for enhancing isolation of user space from kernel space
CN109086221A (zh) * 2018-07-20 2018-12-25 郑州云海信息技术有限公司 一种增加存储设备内存容量的方法及系统
CN109086221B (zh) * 2018-07-20 2021-10-29 郑州云海信息技术有限公司 一种增加存储设备内存容量的方法及系统
CN110968599A (zh) * 2018-09-30 2020-04-07 北京国双科技有限公司 一种基于Impala的查询方法和装置
CN110968599B (zh) * 2018-09-30 2023-04-07 北京国双科技有限公司 一种基于Impala的查询方法和装置
CN110007869A (zh) * 2019-04-12 2019-07-12 苏州浪潮智能科技有限公司 一种内存数据拷贝方法、装置、设备及计算机存储介质
CN110007869B (zh) * 2019-04-12 2020-06-30 苏州浪潮智能科技有限公司 一种内存数据拷贝方法、装置、设备及计算机存储介质

Also Published As

Publication number Publication date
CN103257936B (zh) 2016-03-02

Similar Documents

Publication Publication Date Title
CN103257936A (zh) 内存映射方法和内存映射模块
US6757802B2 (en) Method for memory heap and buddy system management for service aware networks
KR101502896B1 (ko) 맵 리듀스를 이용한 분산 메모리 클러스터 제어 장치 및 방법
CN100382048C (zh) 一种内存管理方法
CN102289409B (zh) 分层可伸缩的存储器分配器
CN110096221B (zh) 存储器系统及其控制方法
CN102306126A (zh) 内存管理方法、装置和系统
CN110209490A (zh) 一种内存管理方法及相关设备
KR20200053204A (ko) 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법
CN103077126A (zh) 一种内存管理方法和装置
CN112685333B (zh) 一种堆内存管理方法及装置
CN102446139A (zh) 一种数据存储方法及装置
CN110674052B (zh) 内存管理方法、服务器及可读存储介质
CN103699497A (zh) 一种缓存分配方法及装置
CN105718319B (zh) 一种内存池版图解析方法和内存池装置
CN103605728A (zh) 一种数据分级存储方法及系统
CN104899159B (zh) 高速缓冲存储器Cache地址的映射处理方法和装置
CN109101194A (zh) 一种刷写性能优化方法和存储系统
CN102446136A (zh) 自适应的大页分配方法及装置
CN102231136A (zh) 一种闪存存储设备的数据存储方法和装置
CA2966117C (en) A method of partitioning a set-associative cache in a computing platform
CN115794417A (zh) 内存管理方法及装置
EP3690660B1 (en) Cache address mapping method and related device
CN103116549B (zh) 基于最大可擦除次数的闪存存储方法
CN105827548A (zh) 一种资源调度的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170208

Address after: The 100176 branch of the Beijing economic and Technological Development Zone fourteen Street No. 99 building 33 building D No. 2226

Patentee after: Beijing legend core technology Co., Ltd.

Address before: 100085 Haidian District West Road, Beijing, No. 6

Patentee before: Lenovo (Beijing) Co., Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190808

Address after: 518067 Dongjiaotou Workshop D24/F-02, Houhai Avenue, Shekou Street, Nanshan District, Shenzhen City, Guangdong Province

Patentee after: Shenzhen Yi Lian Information System Co., Ltd.

Address before: The 100176 branch of the Beijing economic and Technological Development Zone fourteen Street No. 99 building 33 building D No. 2226

Patentee before: Beijing legend core technology Co., Ltd.