CN102662864A - 一种缺页异常的处理方法、装置及系统 - Google Patents
一种缺页异常的处理方法、装置及系统 Download PDFInfo
- Publication number
- CN102662864A CN102662864A CN201210087940XA CN201210087940A CN102662864A CN 102662864 A CN102662864 A CN 102662864A CN 201210087940X A CN201210087940X A CN 201210087940XA CN 201210087940 A CN201210087940 A CN 201210087940A CN 102662864 A CN102662864 A CN 102662864A
- Authority
- CN
- China
- Prior art keywords
- page
- numerical value
- virtual address
- 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.)
- Granted
Links
- 230000005856 abnormality Effects 0.000 title claims abstract description 46
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 238000013507 mapping Methods 0.000 claims abstract description 195
- 238000000034 method Methods 0.000 claims description 116
- 230000003247 decreasing effect Effects 0.000 claims description 19
- 230000002159 abnormal effect Effects 0.000 claims description 10
- 230000007423 decrease Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 16
- 239000002699 waste material Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种缺页异常的处理方法,当同一进程在同一虚拟内存区VMA中连续发生缺页异常的次数达到预置阈值时,获取第一数值和第二数值;比较所述获取的第一数值和所述第二数值的大小;当所述第二数值大于等于所述第一数值时,每次发生缺页异常时,按照关联映射的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存;当所述第二数值小于第一数值时,每次缺页异常时,按照关联映射的方向,建立连续的第二数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。本发明实施例提供的技术方案可以减少发生缺页异常的次数,提高系统性能。
Description
技术领域
本发明涉及操作系统技术领域,具体涉及一种缺页异常的处理方法、装置及系统。
背景技术
现在的操作系统,都使用基于分页机制的虚拟内存,虚拟内存一般有4G,虚拟地址(virtual address)就是4G虚拟地址空间中的地址,每个进程有4GB的虚拟地址空间,进程通过访问4GB的虚拟地址进行物理内存的访问。
内存可以视为连续的字节,即内存为字节数组,内存单元的地址编号,可作为字节数组的索引,分页管理时,将4KB个字节视为一页。此时,内存变成了连续的页,即内存为页数组,每一页物理内存叫页帧,以页为单位对内存进行编号,该编号可作为页数组的索引,又称为页帧号。
进程在实际需要某个虚拟内存区(VMA,Virtual Memory Area)的数据之前,虚拟地址和物理内存之间的关联不会建立。如果进程访问的虚拟地址空间尚未与物理内存中的页帧关联,则中央处理器(CPU,Central Processing Unit)自动地引发一个缺页异常。
现有技术中发生缺页异常时,CPU在缺页异常处理函数中做相应处理,找到虚拟地址对应的VMA,如果该虚拟地址属于代码段或者数据段,则申请一个4KB页映射到该VMA,如果该地址属于栈,则扩展栈对应的VMA,并调入一个4KB页以扩展该VMA。
在对现有技术的研究和实践过程中,本发明的发明人发现,无论进程访问代码段数据段还是访问栈地址所引发的缺页异常,针对请求调页方面,都是每次缺页异常申请分配一页,当程序本身的代码段、数据段或者栈都较大时,那么对对应段的访问将导致大量的缺页异常,需要多次请求调页,假设一个程序代码段大小为1M,那么该程序对代码段的访问最多将需要经历256次缺页异常才能完成,需要申请256次调页,降低了系统的性能。
发明内容
本发明实施例提供一种缺页异常处理方法,可以在一次缺页异常中申请分配多个页面,从而减少缺页异常的次数,提高系统性能。本发明实施例还提供相应的装置及系统。
一种缺页异常的处理方法,包括:
当同一进程在同一虚拟内存区VMA中连续发生缺页异常的次数达到预置阈值时,获取第一数值和第二数值,所述第一数值为发生缺页异常的次数达到预置阈值后,每次发生缺页异常时,建立VMA中虚拟地址页与物理页帧关联映射的个数,所述第二数值为所述同一进程所在的VMA中未映射物理页帧的虚拟地址页的个数;
比较所述获取的第一数值和所述第二数值的大小;
当所述第二数值大于等于所述第一数值时,每次发生缺页异常时,按照关联映射的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存;
当所述第二数值小于第一数值时,每次缺页异常时,按照关联映射的方向,建立连续的第二数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。
一种缺页异常的处理方法,包括:
当同一进程在同一VMA中连续发生缺页异常的次数达到预置阈值时,获取第三数值,所述第三数值为所述VMA中未与物理页帧关联映射的虚拟地址页的个数;
按照关联映射的方向,建立连续的第三数值个虚拟地址页与物理页帧的关联映射。
一种缺页异常的处理装置,包括:
第一获取单元,用于当同一进程在同一虚拟内存区VMA中连续发生缺页异常的次数达到预置阈值时,获取第一数值和第二数值,所述第一数值为发生缺页异常的次数达到预置阈值后,每次发生缺页异常时,建立VMA中虚拟地址页与物理页帧关联映射的个数,所述第二数值为所述同一进程所在的VMA中未映射物理页帧的虚拟地址页的个数;
比较单元,用于比较所述第一获取单元获取的第一数值和第二数值的大小;
第一映射建立单元,用于当所述比较单元比较出所述第二数值大于等于所述第一数值时,每次发生缺页异常时,按照关联映射的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存;
所述第一映射建立单元,还用于当所述比较单元比较出第二数值小于第一数值时,每次缺页异常时,按照关联映射的方向,建立连续的第二数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。
一种缺页异常的处理装置,包括:
第二获取单元,用于当同一进程在同一VMA中连续发生缺页异常的次数达到预置阈值时,获取第三数值,所述第三数值为所述VMA中未与物理页帧关联映射的虚拟地址页的个数;
第二映射建立单元,用于按照关联映射的方向,建立连续的所述第二获取单元获取的第三数值个虚拟地址页与物理页帧的关联映射。
一种计算机系统,包括:所述计算机系统包括处理器和存储器,所述处理器上运行有操作系统,所述操作系统之上运行有至少一种应用程序,所述应用程序关联有/表现为进程,所述存储器中划分有虚拟内存和物理内存;其中:当进程访问的虚拟地址页与物理页帧未建立关联映射,所述处理器引发一次缺页异常,所述处理器处理所述缺页异常,所述处理器为上述技术方案中任意一项所述的缺页异常的处理装置。
本发明实施例采用当同一进程在同一虚拟内存区VMA中连续发生缺页异常的次数达到预置阈值时,获取第一数值和第二数值,所述第一数值为发生缺页异常的次数达到预置阈值后,每次发生缺页异常时,建立VMA中虚拟地址页与物理页帧关联映射的个数,所述第二数值为所述同一进程所在的VMA中未映射物理页帧的虚拟地址页的个数;比较所述获取的第一数值和所述第二数值的大小;当所述第二数值大于等于所述第一数值时,每次发生缺页异常时,按照关联映射的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存;当所述第二数值小于第一数值时,每次缺页异常时,按照关联映射的方向,建立连续的第二数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。与现有技术相比,本发明实施例提供的缺页异常的处理方法,可以在一次缺页异常中建立多个虚拟地址与物理页帧的关联关联映射,从而减少缺页异常的次数,提高系统性能。
附图说明
图1是本发明实施例中缺页异常的处理方法的一实施例示意图;
图2是本发明实施例中缺页异常的处理方法的另一实施例示意图;
图3是本发明实施例应用场景中的一示意图;
图4是本发明实施例应用场景中的另一示意图;
图5是本发明实施例应用场景中的另一示意图;
图6是本发明实施例应用场景中的另一示意图;
图7是本发明实施例应用场景中的另一示意图;
图8是本发明实施例中处理装置的一实施例示意图;
图9是本发明实施例中处理装置的一另实施例示意图;
图10是本发明实施例中处理装置的另一实施例示意图;
图11是本发明实施例中处理装置的另一实施例示意图;
图12是本发明实施例中处理装置的另一实施例示意图;
图13是本发明实施例中处理装置的另一实施例示意图;
图14是本发明实施例中系统的一实施例示意图。
具体实施方式
本发明实施例提供一种缺页异常处理方法,可以在一次缺页异常中申请分配多个页面,从而减少缺页异常的次数,提高系统性能。本发明实施例还提供相应的处理器。以下分别进行详细说明。
参阅图1,本发明实施例提供的缺页异常的处理方法的一实施例包括:
101、当同一进程在同一虚拟内存区VMA中连续发生缺页异常的次数达到预置阈值时,获取第一数值和第二数值。
所述第一数值为发生缺页异常的次数达到预置阈值后,每次发生缺页异常时,建立VMA中虚拟地址页与物理页帧关联映射的个数,所述第二数值为所述同一进程所在的VMA中未映射物理页帧的虚拟地址页的个数。
内存可以视为连续的字节,即内存为字节数组,内存单元的地址编号,可作为字节数组的索引,分页管理时,将4KB个字节视为一页。此时,内存变成了连续的页,即内存为页数组,每一页物理内存叫页帧。
进程在实际需要某个虚拟内存区(VMA,Virtual Memory Area)的数据之前,虚拟地址和物理内存之间的关联不会建立,也就是还没有建立虚拟地址与物理内存中页帧的关联映射,如果进程访问的虚拟地址尚未与物理内存中的页帧关联映射,则会引发一次缺页异常。
也就是说,缺页异常是由于虚拟地址的页与物理页帧没有关联映射导致的,处理缺页异常,也就需要将VMA的虚拟地址页与物理页帧关联映射。
现有技术中处理器每引发一次缺页异常,处理器就会建立一个虚拟地址页与物理内存中一个页帧的关联映射,这样导致缺页异常次数增多,假设系统上有10个进程,进程的代码段大小都为1MB,1MB/4KB=256页,则每个进程运行所有的代码将会需要256次缺页异常才能完成,总共需要2560次缺页异常能完成。
本发明实施例,提供一种方案,就是在引发一次缺页异常时,建立多个虚拟地址页与多个物理页帧的关联映射,从而减少缺页异常的次数,假如一次缺页异常,直接建立256个虚拟地址页与256个物理页帧的关联映射,那么每个进程只需要1次缺页异常就能完成,那么对于上述10个进程,只需要10次缺页异常就能完成。
因系统本身某些进程的代码段、数据段或者栈上的缺页异常并不是很多,如果引发一次缺页异常就建立多个关联映射,可能会导致系统空间的浪费,这样,可以设定一个预置阈值,当同一进程在同一VMA中连续发生缺页异常的次数达到预置阈值时才启动一次缺页异常建立多个关联映射,没达到预置阈值,还保持一次缺页异常建立一个关联映射,但本发明并不限定预置阈值的大小,预置阈值可以为1,也就是说,可以是引发一次缺页异常就建立多个关联映射。
对于引发一次缺页异常,针对每个进程建立多少个VMA中虚拟地址页与物理页帧的关联映射可能不相同,程序员可能回根据每个进程的数据段和代码段为该进程设定第一数值,所述第一数值为发生缺页异常的次数达到预置阈值后,每次发生缺页异常时,建立VMA中虚拟地址页与物理页帧关联映射的个数,假设第一数值为N,处理器在发生缺页异常的次数达到预置阈值后,获取所述第一数值。
本发明实施例中,不仅要获取第一数值,还要获取第二数值,所述第二数值为所述同一进程所在的VMA中未映射物理页帧的虚拟地址页的个数。
所述获取第二数值之前,还包括:获取所述VMA中没有映射物理地址的虚拟内存大小;根据所述没有映射物理地址的虚拟内存大小和所述虚拟地址页的大小,计算所述第二数值。
因VMA中的一些部分被映射了物理内存,一些部分映射硬盘上的交换文件,一些部分什么也没有映射,所以需要获取VMA中未映射的虚拟内存大小,因为虚拟地址页的大小为4KB,用VMA中未映射的虚拟内存大小除以4KB,就得到了第二数值,假设该第二数值为M。
102、比较所述获取的第一数值和所述第二数值的大小。
对于满足同一进程在同一VMA中连续发生缺页异常的次数达到预置阈值这一条件时,需要考虑,一次缺页异常建立多少个关联映射较合适,一次缺页异常建立多少个关联映射取决于第一数值和第二数值的大小,所以先比较所述第一数值和所述第二数值的大小,当所述第二数值大于等于所述第一数值时,也就是,当M≥N时,执行步骤103,当所述第二数值小于第一数值时,也就是当M<N时,执行步骤104。
103、当所述第二数值大于等于所述第一数值时,每次发生缺页异常时,按照关联映射的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。
举例来说,当N=64,M=256时,每次缺页异常可以建立64个关联映射,那么4次缺页异常就可以完成该进程。
一次建立多个映射之前,还要获取所述关联映射的方向,所述关联映射的方向为从发生缺页异常的虚拟地址页对应的物理页帧处开始向上、向下或同时向上和向下。
这样建立关联映射时,从发生缺页异常的虚拟地址页对应的物理页帧处开始,按照向上、向下或同时向上和向下的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射。
对于以上技术方案的具体理解可以为:
对于本发明实施例中提到的关联映射的方向有三种,可以是从缺页异常的虚拟地址对应的物理页帧开始,由低地址向高地址一次性建立N个关联映射,也可以是从缺页异常的虚拟地址对应的物理页帧开始,由高地址向低地址一次性建立N个关联映射,还可以是从缺页异常的虚拟地址对应的物理页帧开始,分别向低地址和高地址同时关联映射,总共建立N个关联映射。
对于按照哪个方向关联映射,根据获取的方向进行建立,如果获取的是由低到高,那么就由低到高建立,如果是其他两种,就按照其他两种方向关联映射。
所述获取所述关联映射的方向之前,还包括:统计所述同一进程在所述VMA中发生第预置阈值次缺页异常之前,发生的缺页异常的虚拟地址连续递增的次数和连续递减的次数;计算所述连续递增次数与连续递减次数的差值;根据所述连续递增次数与连续递减次数的差值,确定所述关联映射的方向。
例如,假设同一进程在同一个VMA中,发生第预置阈值次缺页异常时,前(预置阈值-1)次缺页异常的虚拟地址连续递增的次数为A,连续递减的次数为B,那么两者的差值为X=A-B,使用两者的差值与一个预先设定的经验值进行比较,假设该经验值为C,当X>C时,从缺页异常的虚拟地址对应的物理页帧开始,由低地址向高地址一次性建立N个关联映射,当X<-C时,从缺页异常的虚拟地址对应的物理页帧开始,由高地址向低地址一次性建立N个关联映射;当0<X<|C|时,从缺页异常的虚拟地址对应的物理页帧开始,分别向低地址和高地址同时关联映射,总共建立N个关联映射。
一次性建立多个缺页异常后,可以避免后续发生多次缺页异常影响处理器的时钟周期,从而可以使所述同一进程快速读取物理内存。
104、当所述第二数值小于第一数值时,每次缺页异常时,按照关联映射的方向,建立连续的第二数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。
举例来说,当M=64,N=256时,那么只需要引发一次缺页异常,建立64个关联映射就完成了一个进程。
本步骤中的关联映射的方向与上述104中的相同,在此不再做详细赘述。
从以上几个步骤中可以看出,N=M时,只需要引发一次缺页异常就可以完成一个进程。
本发明实施例中,当同一进程在同一虚拟内存区VMA中连续发生缺页异常的次数达到预置阈值时,获取第一数值和第二数值,所述第一数值为发生缺页异常的次数达到预置阈值后,每次发生缺页异常时,建立VMA中虚拟地址页与物理页帧关联映射的个数,所述第二数值为所述同一进程所在的VMA中未映射物理页帧的虚拟地址页的个数;比较所述获取的第一数值和所述第二数值的大小;当所述第二数值大于等于所述第一数值时,每次发生缺页异常时,按照关联映射的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存;当所述第二数值小于第一数值时,每次缺页异常时,按照关联映射的方向,建立连续的第二数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。与现有技术相比,本发明实施例提供的缺页异常的处理方法,可以在一次缺页异常中建立多个虚拟地址与物理页帧的关联关联映射,从而减少缺页异常的次数,提高系统性能。
参阅图2,本发明实施例提供的缺页异常的处理方法的另一实施例包括:
201、当同一进程在同一VMA中连续发生缺页异常的次数达到预置阈值时,获取第三数值,所述第三数值为所述VMA中未与物理页帧关联映射的虚拟地址页的个数。
因系统本身某些进程的代码段、数据段或者栈上的缺页异常并不是很多,如果引发一次缺页异常就建立多个关联映射,可能会导致系统空间的浪费,这样,可以设定一个预置阈值,当同一进程在同一VMA中连续发生缺页异常的次数达到预置阈值时才启动一次缺页异常建立多个关联映射,没达到预置阈值,还保持一次缺页建立一个关联映射,但本发明并不限定预置阈值的大小,预置阈值可以为1,也就是说,可以是引发一次缺页异常就建立多个关联映射。
所述获取第三数值,具体包括:获取所述VMA中没有映射物理地址的虚拟内存大小;根据所述没有映射物理地址的虚拟内存大小和所述虚拟地址页的大小,计算所述第二数值。
举例来说,假设预置阈值为H,当H次缺页异常都是同一进程在同一VMA中连续发生的,则获取VMA中没有映射物理地址的虚拟内存大小,假设VMA中没有映射物理地址的虚拟内存大小=1M=1024KB。
每页为4KB,那么第三数值为1024/4=256,则VMA中还未关联映射的页数为256。
实际上,也可以获取整个VMA内存的大小,包括之前已经发生的(H-1)次关联映射的VMA虚拟内存的大小,这种情况,因前面已经发生了H-1次缺页异常,已经建立了H-1个关联映射,VMA中还未关联映射的页数为((VMA-(H-1)*每页的字节数))/每页的字节数,本实施例中,第三数值为根据该公式计算得出,((VMA-(H-1)*每页的字节数))/每页的字节数。假设,VMA=1064KB,H=10次,每页的字节数为4K,则将VMA=1064KB,H=10,页的字节数为4K带入公式可以得出,VMA中还未关联映射的页数为256。
202、按照关联映射的方向,建立连续的第三数值个虚拟地址页与物理页帧的关联映射。
本步骤中的关联映射的方向与上述103中的相同,在此不再做详细赘述。
本实施例中,按照上述例子,就是前面发生给了9次缺页异常,先一对一的建立9个关联映射,到第10次缺页异常时,直接一次性建立256个关联映射,与现有技术相比,现有技术中需要256次缺页异常建立的关联映射,本发明实施例只需要10次就能建立完成。
本发明实施例中,当同一进程在同一VMA中连续发生缺页异常的次数达到预置阈值时,获取第三数值,所述第三数值为所述VMA中未与物理页帧关联映射的虚拟地址页的个数;按照关联映射的方向,建立连续的第三数值个虚拟地址页与物理页帧的关联映射。与现有技术相比,本发明实施例提供的缺页异常的处理方法,可以在一次缺页异常中建立多个虚拟地址与物理地址页帧的关联映射,从而减少缺页异常的次数,提高系统性能。
为了便于理解,下面以三个具体应用场景为了,详细说明本发明实施例提供的缺页异常的处理方法:
参阅图3,图3为现有技术中虚拟地址与物理地址关联映射的示意图;从中可以看出,每引发一次缺页异常,就对应建立一个虚拟地址与物理地址页帧的关联映射,当建立(K-1)次关联映射时,就需要发生(K-1)次缺页异常,当K值很大时,这么多次的缺页异常降低了操作系统的系能。
参阅图4,图4为本发明实施例提供的虚拟地址与物理地址关联映射的一实施例示意图;从图4中可以看出,引发一次缺页异常,就建立N个虚拟地址与物理地址页帧的关联映射,当N很大时,不需要像现有技术中一样,要引发N次缺页异常,只需要一次缺页异常就完成了该进程。
参阅图5,图5为本发明实施例提供的关联映射的方向示意图;从图5中可以看出,关联映射的方向有三种,可以是从缺页异常的虚拟地址对应的页帧开始,由低地址向高地址一次性建立N个关联映射,也可以是从缺页异常的虚拟地址对应的页帧开始,由高地址向低地址一次性建立N个关联映射,还可以是从缺页异常的虚拟地址对应的页帧开始,分别向低地址和高地址同时关联映射,总共建立N个关联映射。
参阅图6,图6为本发明实施例提供的虚拟地址与物理地址关联映射的另一实施例示意图;从图6中可以看出,本应用场景是考虑到了某些进程的代码段、数据段或者栈上的缺页异常不多的情况,对启动一次缺页异常建立多个关联映射设置了启动条件,从图中可以看出,前H-1次引起缺页异常后,都是每次建立一个关联映射,当第H次缺页异常时,才一次性的建立了N个关联映射。
参阅图7,图7为本发明实施例提供的虚拟地址与物理地址关联映射的另一实施例示意图;从图7中可以看出,本应用场景本应用场景是考虑到了某些进程的代码段、数据段或者栈上的缺页异常不多的情况,对启动一次缺页异常建立多个关联映射设置了启动条件,从图中可以看出,前H-1次引起缺页异常后,都是每次建立一个关联映射,当第H次缺页异常时,才一次性的建立了N-H+1个关联映射。
参阅图8,本发明实施例提供的缺页异常的处理装置的一实施例包括:
第一获取单元301,用于当同一进程在同一虚拟内存区VMA中连续发生缺页异常的次数达到预置阈值时,获取第一数值和第二数值,所述第一数值为发生缺页异常的次数达到预置阈值后,每次发生缺页异常时,建立VMA中虚拟地址页与物理页帧关联映射的个数,所述第二数值为所述同一进程所在的VMA中未映射物理页帧的虚拟地址页的个数;
比较单元302,用于比较所述第一获取单元301获取的第一数值和第二数值的大小;
第一映射建立单元303,用于当所述比较单元302比较出所述第二数值大于等于所述第一数值时,每次发生缺页异常时,按照关联映射的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存;
所述第一映射建立单元303,还用于当所述比较单元302比较出第二数值小于第一数值时,每次缺页异常时,按照关联映射的方向,建立连续的第二数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。
本发明实施例中,第一获取单元301当同一进程在同一虚拟内存区VMA中连续发生缺页异常的次数达到预置阈值时,获取第一数值和第二数值,所述第一数值为发生缺页异常的次数达到预置阈值后,每次发生缺页异常时,建立VMA中虚拟地址页与物理页帧关联映射的个数,所述第二数值为所述同一进程所在的VMA中未映射物理页帧的虚拟地址页的个数;比较单元302比较所述第一获取单元301获取的第一数值和第二数值的大小;第一映射建立单元303当所述比较单元302比较出所述第二数值大于等于所述第一数值时,每次发生缺页异常时,按照关联映射的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存;所述第一映射建立单元303当所述比较单元302比较出第二数值小于第一数值时,每次缺页异常时,按照关联映射的方向,建立连续的第二数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。与现有技术相比,本发明实施例提供的处理装置,可以在一次缺页异常中建立多个虚拟地址与物理页帧的关联映射,从而减少缺页异常的次数,提高系统性能。
参阅图9,在上述图8对应的实施例的基础上,本发明实施例提供的处理装置的另一实施例还包括:
所述第一获取单元301,还用于获取所述VMA中没有映射物理地址的虚拟内存大小;
第一计算单元304,用于根据所述第一获取单元301获取的没有映射物理地址的虚拟内存大小和所述虚拟地址页的大小,计算所述第二数值。
在上述图8或图9对应的实施例的基础上,本发明实施例提供的处理装置的另一实施例还包括:
所述第一获取单元301,用于获取所述关联映射的方向,所述关联映射的方向为从发生缺页异常的虚拟地址页对应的物理页帧处开始向上、向下或同时向上和向下;
所述第一映射建立单元303,具体用于从发生缺页异常的虚拟地址页对应的物理页帧处开始,按照所述第一获取单元301获取的向上、向下或同时向上和向下的方向,建立连续的第一数值个或第二数值个虚拟地址页与物理页帧的关联映射。
参阅图10,在上述实施例的基础上,本发明实施例提供的处理装置的另一实施例还包括:
第一统计单元305,用于统计所述同一进程在所述VMA中发生第预置阈值次缺页异常之前,发生的缺页异常的虚拟地址连续递增的次数和连续递减的次数;
所述第一计算单元304,还用于计算所述第一统计单元305统计出的连续递增次数与连续递减次数的差值;
第一确定单元306,用于根据所述第一计算单元304计算出的连续递增次数与连续递减次数的差值,确定关联映射的方向。
参阅图11,本发明实施例提供的处理装置的另一实施例包括:
第二获取单元311,用于当同一进程在同一VMA中连续发生缺页异常的次数达到预置阈值时,获取第三数值,所述第三数值为所述VMA中未与物理页帧关联映射的虚拟地址页的个数;
第二映射建立单元312,用于按照关联映射的方向,建立连续的所述第二获取单元311获取的第三数值个虚拟地址页与物理页帧的关联映射。
本发明实施例中,第二获取单元311当同一进程在同一VMA中连续发生缺页异常的次数达到预置阈值时,获取第三数值,所述第三数值为所述VMA中未与物理页帧关联映射的虚拟地址页的个数;第二映射建立单元312按照关联映射的方向,建立连续的所述第二获取单元311获取的第三数值个虚拟地址页与物理页帧的关联映射。与现有技术相比,本发明实施例提供的处理装置,可以在一次缺页异常中建立多个虚拟地址与物理页帧的关联映射,从而减少缺页异常的次数,提高系统性能。
参阅图12,在上述图11对应的实施例的基础上,本发明实施例提供的处理装置另一实施例还包括:
所述第二获取单元311,还用于获取所述VMA中没有映射物理地址的虚拟内存大小;
第二计算单元313,用于根据所述第二获取单元311获取的没有映射物理地址的虚拟内存大小和所述虚拟地址页的大小,计算所述第二数值。
在上述图11或图12对应的实施例的基础上,本发明实施例提供的处理装置另一实施例还包括:
所述第二获取单元311,还用于获取所述关联映射的方向,所述关联映射的方向为从发生缺页异常的虚拟地址页对应的物理页帧处开始向上、向下或同时向上和向下;
所述第二映射建立单元312,具体用于从发生缺页异常的虚拟地址页对应的物理页帧处开始,按照所述第二获取单元311获取的向上、向下或同时向上和向下的方向,建立连续的第三数值个虚拟地址页与物理页帧的关联映射。
参阅图13,在上述实施例的基础上,本发明实施例提供的处理装置另一实施例还包括:
第二统计单元314,用于统计所述同一进程在所述VMA中发生第预置阈值次缺页异常之前,发生的缺页异常的虚拟地址连续递增的次数和连续递减的次数;
所述第二计算单元313,还用于计算所述第二统计单元314统计出的连续递增次数与连续递减次数的差值;
第二确定单元315,用于根据所述第二计算单元313计算出的连续递增次数与连续递减次数的差值,确定所述关联映射的方向。
本发明实施例中,通过多个技术方案来实现缺页异常的处理方法,可以在一次缺页异常中建立多个虚拟地址与物理地址页帧的关联映射,从而减少缺页异常的次数,提高系统性能。
本发明实施例可以应用于各种的操作系统中,例如适用于64位系统。
参阅图14,本发明实施例提供了一种计算机系统,所述计算机系统包括处理器20和存储器30,所述处理器上运行有操作系统,所述操作系统之上运行有至少一种应用程序,所述应用程序表现为进程,所述存储器30中划分有虚拟内存301和物理内存302;其中:当所述进程访问的所述虚拟内存中的虚拟地址页与所述物理内存中的物理页帧未建立关联映射,所述处理器引发一次缺页异常,所述处理器处理所述缺页异常;
所述处理器20,用于当同一进程在同一虚拟内存区VMA中连续发生缺页异常的次数达到预置阈值时,获取第一数值和第二数值,所述第一数值为发生缺页异常的次数达到预置阈值后,每次发生缺页异常时,建立VMA中虚拟地址页与物理页帧关联映射的个数,所述第二数值为所述同一进程所在的VMA中未映射物理页帧的虚拟地址页的个数;
比较所述获取的第一数值和所述第二数值的大小;
当所述第二数值大于等于所述第一数值时,每次发生缺页异常时,按照关联映射的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存;
当所述第二数值小于第一数值时,每次缺页异常时,按照关联映射的方向,建立连续的第二数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。
或者,
所述处理器20,用于统计所述同一进程在所述VMA中发生第预置阈值次缺页异常之前,发生的缺页异常的虚拟地址连续递增的次数和连续递减的次数;
计算所述连续递增次数与连续递减次数的差值;根据所述连续递增次数与连续递减次数的差值,确定所述关联映射的方向。
本发明实施例中物理内存指的是计算机中的内存、虚拟内存为磁盘或硬盘提供的内存空间。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
以上对本发明实施例所提供的缺页异常的处理方法、装置及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (17)
1.一种缺页异常的处理方法,其特征在于,包括:
当同一进程在同一虚拟内存区VMA中连续发生缺页异常的次数达到预置阈值时,获取第一数值和第二数值,所述第一数值为发生缺页异常的次数达到预置阈值后,每次发生缺页异常时,建立VMA中虚拟地址页与物理页帧关联映射的个数,所述第二数值为所述同一进程所在的VMA中未映射物理页帧的虚拟地址页的个数;
比较所述获取的第一数值和所述第二数值的大小;
当所述第二数值大于等于所述第一数值时,每次发生缺页异常时,按照关联映射的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存;
当所述第二数值小于第一数值时,每次缺页异常时,按照关联映射的方向,建立连续的第二数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。
2.根据权利要求1所述的方法,其特征在于,所述获取第二数值之前,还包括:
获取所述VMA中没有映射物理地址的虚拟内存大小;
根据所述没有映射物理地址的虚拟内存大小和所述虚拟地址页的大小,计算所述第二数值。
3.根据权利要求1或2所述的方法,其特征在于,所述按照关联映射的方向,建立连续的第一数值个或第二数值个虚拟地址页与物理页帧的关联映射,具体包括:
获取所述关联映射的方向,所述关联映射的方向为从发生缺页异常的虚拟地址页对应的物理页帧处开始向上、向下或同时向上和向下;
从发生缺页异常的虚拟地址页对应的物理页帧处开始,按照向上、向下或同时向上和向下的方向,建立连续的第一数值个或第二数值个虚拟地址页与物理页帧的关联映射。
4.根据权利要求1或2所述的方法,其特征在于,所述获取所述关联映射的方向之前,还包括:
统计所述同一进程在所述VMA中发生第预置阈值次缺页异常之前,发生的缺页异常的虚拟地址连续递增的次数和连续递减的次数;
计算所述连续递增次数与连续递减次数的差值;根据所述连续递增次数与连续递减次数的差值,确定所述关联映射的方向。
5.一种缺页异常的处理方法,其特征在于,包括:
当同一进程在同一VMA中连续发生缺页异常的次数达到预置阈值时,获取第三数值,所述第三数值为所述VMA中未与物理页帧关联映射的虚拟地址页的个数;
按照关联映射的方向,建立连续的第三数值个虚拟地址页与物理页帧的关联映射。
6.根据权利要求5所述的方法,其特征在于,所述获取第三数值,具体包括:
获取所述VMA中没有映射物理地址的虚拟内存大小;
根据所述没有映射物理地址的虚拟内存大小和所述虚拟地址页的大小,计算所述第二数值。
7.根据权利要求5或6所述的方法,其特征在于,所述按照关联映射的方向,建立连续的第三数值个虚拟地址页与物理页帧的关联映射,具体包括:
获取所述关联映射的方向,所述关联映射的方向为从发生缺页异常的虚拟地址页对应的物理页帧处开始向上、向下或同时向上和向下;
从发生缺页异常的虚拟地址页对应的物理页帧处开始,按照向上、向下或同时向上和向下的方向,建立连续的第三数值个虚拟地址页与物理页帧的关联映射。
8.根据权利要求7所述的方法,其特征在于,所述获取所述关联映射的方向之前,还包括:
统计所述同一进程在所述VMA中发生第预置阈值次缺页异常之前,发生的缺页异常的虚拟地址连续递增的次数和连续递减的次数;
计算所述连续递增次数与连续递减次数的差值;根据所述连续递增次数与连续递减次数的差值,确定所述关联映射的方向。
9.一种缺页异常的处理装置,其特征在于,包括:
第一获取单元,用于当同一进程在同一虚拟内存区VMA中连续发生缺页异常的次数达到预置阈值时,获取第一数值和第二数值,所述第一数值为发生缺页异常的次数达到预置阈值后,每次发生缺页异常时,建立VMA中虚拟地址页与物理页帧关联映射的个数,所述第二数值为所述同一进程所在的VMA中未映射物理页帧的虚拟地址页的个数;
比较单元,用于比较所述第一获取单元获取的第一数值和第二数值的大小;
第一映射建立单元,用于当所述比较单元比较出所述第二数值大于等于所述第一数值时,每次发生缺页异常时,按照关联映射的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存;
所述第一映射建立单元,还用于当所述比较单元比较出第二数值小于第一数值时,每次缺页异常时,按照关联映射的方向,建立连续的第二数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。
10.根据权利要求9所述的装置,其特征在于,还包括:
所述第一获取单元,还用于获取所述VMA中没有映射物理地址的虚拟内存大小;
第一计算单元,用于根据所述第一获取单元获取的没有映射物理地址的虚拟内存大小和所述虚拟地址页的大小,计算所述第二数值。
11.根据权利要求9或10所述的装置,其特征在于,
所述第一获取单元,用于获取所述关联映射的方向,所述关联映射的方向为从发生缺页异常的虚拟地址页对应的物理页帧处开始向上、向下或同时向上和向下;
所述第一映射建立单元,具体用于从发生缺页异常的虚拟地址页对应的物理页帧处开始,按照所述第一获取单元获取的向上、向下或同时向上和向下的方向,建立连续的第一数值个或第二数值个虚拟地址页与物理页帧的关联映射。
12.根据权利要求10所述的装置,其特征在于,还包括:
第一统计单元,用于统计所述同一进程在所述VMA中发生第预置阈值次缺页异常之前,发生的缺页异常的虚拟地址连续递增的次数和连续递减的次数;
所述第一计算单元,还用于计算所述第一统计单元统计出的连续递增次数与连续递减次数的差值;
第一确定单元,用于根据所述第一计算单元计算出的连续递增次数与连续递减次数的差值,确定关联映射的方向。
13.一种缺页异常的处理装置,其特征在于,包括:
第二获取单元,用于当同一进程在同一VMA中连续发生缺页异常的次数达到预置阈值时,获取第三数值,所述第三数值为所述VMA中未与物理页帧关联映射的虚拟地址页的个数;
第二映射建立单元,用于按照关联映射的方向,建立连续的所述第二获取单元获取的第三数值个虚拟地址页与物理页帧的关联映射。
14.根据权利要求13所述的装置,其特征在于,还包括:
所述第二获取单元,还用于获取所述VMA中没有映射物理地址的虚拟内存大小;
第二计算单元,用于根据所述第二获取单元获取的没有映射物理地址的虚拟内存大小和所述虚拟地址页的大小,计算所述第二数值。
15.根据权利要求13或14所述的装置,其特征在于,
所述第二获取单元,还用于获取所述关联映射的方向,所述关联映射的方向为从发生缺页异常的虚拟地址页对应的物理页帧处开始向上、向下或同时向上和向下;
所述第二映射建立单元,具体用于从发生缺页异常的虚拟地址页对应的物理页帧处开始,按照所述第二获取单元获取的向上、向下或同时向上和向下的方向,建立连续的第三数值个虚拟地址页与物理页帧的关联映射。
16.根据权利要求15所述的装置,其特征在于,还包括:
第二统计单元,用于统计所述同一进程在所述VMA中发生第预置阈值次缺页异常之前,发生的缺页异常的虚拟地址连续递增的次数和连续递减的次数;
所述第二计算单元,还用于计算所述第二统计单元统计出的连续递增次数与连续递减次数的差值;
第二确定单元,用于根据所述第二计算单元计算出的连续递增次数与连续递减次数的差值,确定所述关联映射的方向。
17.一种计算机系统,其特征在于,包括:所述计算机系统包括处理器和存储器,所述处理器上运行有操作系统,所述操作系统之上运行有至少一种应用程序,所述应用程序表现为进程,所述存储器中划分有虚拟内存和物理内存;其中:当所述进程访问的所述虚拟内存中的虚拟地址页与所述物理内存中的物理页帧未建立关联映射,所述处理器引发一次缺页异常,所述处理器处理所述缺页异常,所述处理器为上述权利要求9~16任意一项所述的缺页异常的处理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210087940.XA CN102662864B (zh) | 2012-03-29 | 2012-03-29 | 一种缺页异常的处理方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210087940.XA CN102662864B (zh) | 2012-03-29 | 2012-03-29 | 一种缺页异常的处理方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102662864A true CN102662864A (zh) | 2012-09-12 |
CN102662864B CN102662864B (zh) | 2015-07-08 |
Family
ID=46772360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210087940.XA Expired - Fee Related CN102662864B (zh) | 2012-03-29 | 2012-03-29 | 一种缺页异常的处理方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102662864B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015090043A1 (zh) * | 2013-12-20 | 2015-06-25 | 华为技术有限公司 | 一种数据换入内存的方法和装置 |
CN108932149A (zh) * | 2017-05-22 | 2018-12-04 | 中兴通讯股份有限公司 | 数据传输方法及装置 |
CN111984374A (zh) * | 2020-08-20 | 2020-11-24 | 海光信息技术有限公司 | 用于管理安全内存的方法及其系统、装置和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070124540A1 (en) * | 2005-11-30 | 2007-05-31 | Red. Hat, Inc. | Method for tuning a cache |
CN101859282A (zh) * | 2010-05-26 | 2010-10-13 | 浙江大学 | 基于双重跟踪的虚拟化平台的磁盘页面换入的方法 |
CN102184142A (zh) * | 2011-04-19 | 2011-09-14 | 中兴通讯股份有限公司 | 一种利用巨页映射降低cpu资源消耗的方法和装置 |
-
2012
- 2012-03-29 CN CN201210087940.XA patent/CN102662864B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070124540A1 (en) * | 2005-11-30 | 2007-05-31 | Red. Hat, Inc. | Method for tuning a cache |
CN101859282A (zh) * | 2010-05-26 | 2010-10-13 | 浙江大学 | 基于双重跟踪的虚拟化平台的磁盘页面换入的方法 |
CN102184142A (zh) * | 2011-04-19 | 2011-09-14 | 中兴通讯股份有限公司 | 一种利用巨页映射降低cpu资源消耗的方法和装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015090043A1 (zh) * | 2013-12-20 | 2015-06-25 | 华为技术有限公司 | 一种数据换入内存的方法和装置 |
CN108932149A (zh) * | 2017-05-22 | 2018-12-04 | 中兴通讯股份有限公司 | 数据传输方法及装置 |
CN108932149B (zh) * | 2017-05-22 | 2023-11-17 | 中兴通讯股份有限公司 | 数据传输方法及装置 |
CN111984374A (zh) * | 2020-08-20 | 2020-11-24 | 海光信息技术有限公司 | 用于管理安全内存的方法及其系统、装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102662864B (zh) | 2015-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9058268B1 (en) | Apparatus, system and method for memory management | |
US20200057729A1 (en) | Memory access method and computer system | |
JP5654056B2 (ja) | 階層的な変換テーブル制御 | |
CN106782642B (zh) | Dram控制器及其控制方法和计算机程序产品 | |
US9329873B2 (en) | Method and device, terminal and computer readable medium for accelerating startup of operating system | |
EP2564321B1 (en) | Memory usage scanning | |
US10776308B2 (en) | Smart memory data store or load method and apparatus | |
US10572378B2 (en) | Dynamic memory expansion by data compression | |
CN104462225B (zh) | 一种数据读取的方法、装置及系统 | |
US20180129429A1 (en) | Method and apparatus for writing data into cache | |
JP6130971B2 (ja) | データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システム | |
US10152420B2 (en) | Multi-way set associative cache and processing method thereof | |
US9436751B1 (en) | System and method for live migration of guest | |
US20170068455A1 (en) | Application execution enclave memory page cache management method and apparatus | |
EP2919120B1 (en) | Memory monitoring method and related device | |
US10013205B2 (en) | Memory migration method and device | |
US9875191B2 (en) | Electronic device having scratchpad memory and management method for scratchpad memory | |
EP3163451B1 (en) | Memory management method and device, and memory controller | |
CN112416819A (zh) | 基于主机内存缓冲器的固态驱动器的实现方法及装置 | |
CN108351818B (zh) | 用于在存储器中实现纠错码的系统和方法 | |
CN102662864B (zh) | 一种缺页异常的处理方法、装置及系统 | |
WO2015156830A1 (en) | Relocating a virtual address in a persistent memory | |
WO2015150976A1 (en) | Cluster-wide memory management using similarity-preserving signatures | |
CN112764925A (zh) | 基于虚拟内存的数据存储方法、装置、设备及存储介质 | |
CN108369624B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150708 Termination date: 20180329 |