一种缺页异常的处理方法、装置及系统的制作方法

文档序号:6367174阅读:172来源:国知局
专利名称:一种缺页异常的处理方法、装置及系统的制作方法
技术领域
本发明涉及操作系统技术领域,具体涉及ー种缺页异常的处理方法、装置及系统。
背景技术
现在的操作系统,都使用基于分页机制的虚拟内存,虚拟内存一般有4G,虚拟地址(virtual address)就是4G虚拟地址空间中的地址,姆个进程有4GB的虚拟地址空间,进程通过访问4GB的虚拟地址进行物理内存的访问。内存可以视为连续的字节,即内存为字节数组,内存单元的地址编号,可作为字节数组的索引,分页管理吋,将4KB个字节视为ー页。此时,内存变成了连续的页,即内存为页数组,每ー页物理内存叫页帧,以页为单位对内存进行编号,该编号可作为页数组的索引,又称为页巾贞号。进程在实际需要某个虚拟内存区(VMA, Virtual Memory Area)的数据之前,虚拟地址和物理内存之间的关联不会建立。如果进程访问的虚拟地址空间尚未与物理内存中的页中贞关联,贝1J中央处理器(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中未映射物理页帧的虚拟地址页的个数;比较所述获取的第一数值和所述第二数值的大小;当所述第二数值大于等于所述第一数值时,毎次发生缺页异常时,按照关联映射的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存;当所述第二数值小于第一数值时,毎次缺页异常时,按照关联映射的方向,建立连续的第二数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。与现有技术相比,本发明实施例提供的缺页异常的处理方法,可以在一次缺页异常中建立多个虚拟地址与物理页帧的关联关联映射,从而減少缺页异常的次数,提高系统性能。


图I是本发明实施例中缺页异常的处理方法的ー实施例示意图;图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个物理页帧的关联映射,那么每个进程只需要I次缺页异常就能完成,那么对于上述10个进程,只需要10次缺页异常就能完成。因系统本身某些进程的代码段、数据段或者栈上的缺页异常并不是很多,如果引发一次缺页异常就建立多个关联映射,可能会导致系统空间的浪费,这样,可以 设定ー个预置阈值,当同一进程在同一 VMA中连续发生缺页异常的次数达到预置阈值时才启动一次缺页异常建立多个关联映射,没达到预置阈值,还保持一次缺页异常建立一个关联映射,但本发明并不限定预置阈值的大小,预置阈值可以为1,也就是说,可以是引发一次缺页异常就建立多个关联映射。对于引发一次缺页异常,针对每个进程建立多少个VMA中虚拟地址页与物理页帧的关联映射可能不相同,程序员可能回根据每个进程的数据段和代码段为该进程设定第一数值,所述第一数值为发生缺页异常的次数达到预置阈值后,每次发生缺页异常吋,建立VMA中虚拟地址页与物理页帧关联映射的个数,假设第一数值为N,处理器在发生缺页异常的次数达到预置阈值后,获取所述第一数值。本发明实施例中,不仅要获取第一数值,还要获取第二数值,所述第二数值为所述同一进程所在的VMA中未映射物理页帧的虚拟地址页的个数。所述获取第二数值之前,还包括获取所述VMA中没有映射物理地址的虚拟内存大小;根据所述没有映射物理地址的虚拟内存大小和所述虚拟地址页的大小,计算所述第
ニ数值。因VMA中的ー些部分被映射了物理内存,ー些部分映射硬盘上的交换文件,ー些部分什么也没有映射,所以需要获取VMA中未映射的虚拟内存大小,因为虚拟地址页的大小为4KB,用VMA中未映射的虚拟内存大小除以4KB,就得到了第二数值,假设该第二数值为M0102、比较所述获取的第一数值和所述第二数值的大小。对于满足同一进程在同一 VMA中连续发生缺页异常的次数达到预置阈值这一条件吋,需要考虑,一次缺页异常建立多少个关联映射较合适,一次缺页异常建立多少个关联映射取决于第一数值和第二数值的大小,所以先比较所述第一数值和所述第二数值的大小,当所述第二数值大于等于所述第一数值时,也就是,当M > N时,执行步骤103,当所述第ニ数值小于第一数值时,也就是当M < N时,执行步骤104。103、当所述第二数值大于等于所述第一数值时,每次发生缺页异常吋,按照关联映射的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。举例来说,当N = 64,M = 256时,每次缺页异常可以建立64个关联映射,那么4次缺页异常就可以完成该进程。一次建立多个映射之前,还要获取所述关联映射的方向,所述关联映射的方向为从发生缺页异常的虚拟地址页对应的物理页帧处开始向上、向下或同时向上和向下。这样建立关联映射时,从发生缺页异常的虚拟地址页对应的物理页帧处开始,按照向上、向下或同时向上和向下的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射。对于以上技术方案的具体理解可以为对于本发明实施例中提到的关联映射的方向有三种,可以是从缺页异常的虚拟地址对应的物理页帧开始,由低地址向高地址一次性建立N个关联映射,也可以是从缺页异常的虚拟地址对应的物理页帧开始,由高地址向低地址一次性建立N个关联映射,还可以是从缺页异常的虚拟地址对应的物理页帧开始,分别向低地址和高地址同时关联映射,总共建立N个关联映射。对于按照哪个方向关联映射,根据获取的方向进行建立,如果获取的是由低到高,那么就由低到高建立,如果是其他两种,就按照其他两种方向关联映射。所述获取所述关联映射的方向之前,还包括统计所述同一进程在所述VMA中发生第预置阈值次缺页异常之前,发生的缺页异常的虚拟地址连续递增的次数和连续递减的次数;计算所述连续递增次数与连续递减次数的差值;根据所述连续递增次数与连续递减次数的差值,确定所述关联映射的方向。例如,假设同一进程在同一个VMA中,发生第预置阈值次缺页异常吋,前(预置阈值-I)次缺页异常的虚拟地址连续递增的次数为A,连续递减的次数为B,那么两者的差值为X = A-B,使用两者的差值与ー个预先设定的经验值进行比较,假设该经验值为C,当X >C时,从缺页异常的虚拟地址对应的物理页帧开始,由低地址向高地址一次性建立N个关联映射,当X < -C时,从缺页异常的虚拟地址对应的物理页帧开始,由高地址向低地址一次性建立N个关联映射;当O < 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中没有映射物理地址的虚拟内存大小=IM = 1024KB。每页为4KB,那么第三数值为1024/4 = 256,则VMA中还未关联映射的页数为256。实际上,也可以获取整个VMA内存的大小,包括之前已经发生的(H-I)次关联映射的VMA虚拟内存的大小,这种情況,因前面已经发生了 H-I次缺页异常,已经建立了 H-I个关联映射,VMA中还未关联映射的页数为((VMA-(H-I)*每页的字节数))/每页的字节数,本实施例中,第三数值为根据该公式计算得出,((VMA- (H-I) *每页的字节数))/每页的字节数。假设,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-I)次关联映射时,就需要发生(K-I)次缺页异常,当K值很大时,这么多次的缺页异常降低了操作系统的系能。參阅图4,图4为本发明实施例提供的虚拟地址与物理地址关联映射的一实施例 示意图;从图4中可以看出,引发一次缺页异常,就建立N个虚拟地址与物理地址页帧的关联映射,当N很大吋,不需要像现有技术中一祥,要引发N次缺页异常,只需要一次缺页异常就完成了该进程。參阅图5,图5为本发明实施例提供的关联映射的方向示意图;从图5中可以看出,关联映射的方向有三种,可以是从缺页异常的虚拟地址对应的页帧开始,由低地址向高地址一次性建立N个关联映射,也可以是从缺页异常的虚拟地址对应的页帧开始,由高地址向低地址一次性建立N个关联映射,还可以是从缺页异常的虚拟地址对应的页帧开始,分别向低地址和高地址同时关联映射,总共建立N个关联映射。參阅图6,图6为本发明实施例提供的虚拟地址与物理地址关联映射的另ー实施例示意图;从图6中可以看出,本应用场景是考虑到了某些进程的代码段、数据段或者栈上的缺页异常不多的情況,对启动一次缺页异常建立多个关联映射设置了启动条件,从图中可以看出,前H-I次引起缺页异常后,都是每次建立一个关联映射,当第H次缺页异常时,才一次性的建立了 N个关联映射。參阅图7,图7为本发明实施例提供的虚拟地址与物理地址关联映射的另ー实施例示意图;从图7中可以看出,本应用场景本应用场景是考虑到了某些进程的代码段、数据段或者栈上的缺页异常不多的情況,对启动一次缺页异常建立多个关联映射设置了启动条件,从图中可以看出,前H-I次引起缺页异常后,都是每次建立一个关联映射,当第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、磁盘或光盘等。以上对本发明实施例所提供的缺页异常的处理方法、装置及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种缺页异常的处理方法,其特征在于,包括 当同一进程在同一虚拟内存区VMA中连续发生缺页异常的次数达到预置阈值时,获取第一数值和第二数值,所述第一数值为发生缺页异常的次数达到预置阈值后,每次发生缺页异常时,建立VMA中虚拟地址页与物理页帧关联映射的个数,所述第二数值为所述同一进程所在的VMA中未映射物理页帧的虚拟地址页的个数; 比较所述获取的第一数值和所述第二数值的大小; 当所述第二数值大于等于所述第一数值时,每次发生缺页异常时,按照关联映射的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存; 当所述第二数值小于第一数值时,每次缺页异常时,按照关联映射的方向,建立连续的第二数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。
2.根据权利要求I所述的方法,其特征在于,所述获取第二数值之前,还包括 获取所述VMA中没有映射物理地址的虚拟内存大小; 根据所述没有映射物理地址的虚拟内存大小和所述虚拟地址页的大小,计算所述第二数值。
3.根据权利要求I或2所述的方法,其特征在于,所述按照关联映射的方向,建立连续的第一数值个或第二数值个虚拟地址页与物理页帧的关联映射,具体包括 获取所述关联映射的方向,所述关联映射的方向为从发生缺页异常的虚拟地址页对应的物理页帧处开始向上、向下或同时向上和向下; 从发生缺页异常的虚拟地址页对应的物理页帧处开始,按照向上、向下或同时向上和向下的方向,建立连续的第一数值个或第二数值个虚拟地址页与物理页帧的关联映射。
4.根据权利要求I或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.一种计算机系统,其特征在于,包括所述计算机系统包括处理器和存储器,所述处理器上运行有操作系统,所述操作系统之上运行有至少一种应用程序,所述应用程序表现为进程,所述存储器中划分有虚拟内存和物理内存;其中当所述进程访问的所述虚拟内存中的虚拟地址页与所述物理内存中的物理页帧未建立关联映射,所述处理器弓I发一次缺页异常,所述处理器处理所述缺页异常,所述处理器为上述权利要求9 16任意一项所述的缺页异常的处理装置。
全文摘要
本发明公开了一种缺页异常的处理方法,当同一进程在同一虚拟内存区VMA中连续发生缺页异常的次数达到预置阈值时,获取第一数值和第二数值;比较所述获取的第一数值和所述第二数值的大小;当所述第二数值大于等于所述第一数值时,每次发生缺页异常时,按照关联映射的方向,建立连续的第一数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存;当所述第二数值小于第一数值时,每次缺页异常时,按照关联映射的方向,建立连续的第二数值个虚拟地址页与物理页帧的关联映射,以使所述同一进程快速读取物理内存。本发明实施例提供的技术方案可以减少发生缺页异常的次数,提高系统性能。
文档编号G06F12/08GK102662864SQ201210087940
公开日2012年9月12日 申请日期2012年3月29日 优先权日2012年3月29日
发明者林志南 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1