一种运行进程的方法及装置的制造方法

文档序号:10624651阅读:247来源:国知局
一种运行进程的方法及装置的制造方法
【专利摘要】本发明公开了一种运行进程的方法及装置,方法为:从候选进程中选取代码页面,仅将候选进程中的代码页面存储至交换分区中,并释放该代码页面所占用的内存空间;并更新页表项中保存的代码页面的物理地址;当确定需要运行代码页面所属的候选进程时,若需要执行该代码页面,直接在交换分区中执行该代码页面即可。采用本发明技术方案,仅将具有只读特性的代码页面存储至交换分区中,当需要执行该代码页面时,直接在交换分区中执行该代码页面,无须将代码页面替换至内存中执行,在提高进程运行速度的同时,有效避免了数据的频繁交换,减少了数据频繁交换造成的写操作次数;并且,无须在本地保存每一个页槽的年龄,节约了系统空间,提高了系统性能。
【专利说明】
一种运行进程的方法及装置
技术领域
[0001]本发明涉及计算机应用技术领域,尤其涉及一种运行进程的方法及装置。
【背景技术】
[0002]随着微处理器和电子移动终端操作系统的发展,电子移动终端(例如智能手机,平板电脑等)得到了广泛的应用,针对电子移动终端设计的应用功能也越来越强大。电子移动终端中任何一个应用程序的运行,均需要占用一定的内存资源,因此,功能丰富的应用在提高电子移动终端的用户体验的同时,却需要占用更多的内存资源。在现在的所有的电子移动终端中,通常使用随机存储器(Dynamic Random Access Memory,简称DRAM)作为内存。通过增加DRAM的容量,在一定程度上可以满足应用程序对内存资源的需求。但是,DRAM容量的增加将导致电子移动终端成本的增加;并且,DRAM耗电量大,其最多可占整个操作系统功耗的30%,采用DRAM作为内存的电子移动终端时,将存在电子移动终端能耗高的问题。
[0003]基于上述问题,目前,还可以通过在操作系统中设置交换分区(Swap分区)的方式,来缓解内存压力,例如,Android操作系统是基于Linux kernel的操作系统,Linuxkernel提供了通过交换分区来缓解内存资源不足的问题。现有的Swap机制可以使用新型可字节寻址的非易失性存储器(Non-Volatile Memory,简称NVM)作为Swap分区,Swap分区通常被划分为页槽(Page Slot)来进行管理,每个页槽的大小等于内存页面的大小,以便于存储从内存中替换出的内存页面。当电子移动终端中的内存资源不足时,操作系统会将一些不经常使用的内存页面存放至交换分区中,使该不经常使用的内存页面不再占用内存,从而减少对内存的占用。
[0004]由于NVM具有有限的擦写次数,需要采取损耗均衡等技术尽可能使写操作均匀地分布在每个NVM页槽上,以实现NVM寿命的最大化。现有的一种损耗均衡技术在操作系统中维护了两个数据结构:保存空闲页槽的链表和保存所有页槽并按其年龄进行排序的小顶堆。当移动终端内存不足,需要将不活跃的内存页面存储至NVM交换分区时,需要将链表头页槽的年龄和小顶堆堆顶页槽的年龄相比较,从而将内存中不活跃的页面存储至年龄较小的页槽中。然而,当小顶堆堆顶页槽已经被使用且年龄较小的时候,还需要将小顶堆堆顶页槽的数据拷贝到链表头页槽中,然后才能使用该小顶堆堆顶页槽。该方法总是保证使用年龄较小的NVM页槽来存储内存页面,进而达到损耗均衡的目的。
[0005]采用上述技术方案,需要在电子移动终端中开辟额外的存储空间,用于保存每一个NVM页槽的年龄,造成了系统资源的浪费以及系统性能的下降;并且,任意一 NVM页槽的年龄变化,均将导致小顶推中所有NVM页槽的重新排序,进而进一步增加了系统负担;此夕卜,当上述不经常使用的内存页面需要被重新执行时,操作系统将该不经常使用的内存页面重新替换至内存中,从而存在数据的频繁交换,以及数据的多次写入,进而造成影响进程运行时间,以及影响交换分区使用寿命的问题。
[0006]由此可见,目前在运行进程的过程中,存在进程运行速度慢,交换分区使用寿命短,系统资源浪费以及系统性能差的问题。

【发明内容】

[0007]本发明实施例提供一种运行进程的方法及装置,用以解决目前在运行进程的过程中,存在进程运行速度慢,交换分区使用寿命短,系统资源浪费以及系统性能差的问题。
[0008]本发明实施例提供的具体技术方案如下:
[0009]第一方面,提供一种运行进程的方法,包括:扫描内存中的进程,从所有进程中选取候选进程;并从选取的所述候选进程中获取代码页面;其中,所述代码页面用于存放进程的二进制代码或者共享库文件;将所述代码页面写入交换分区中,并释放所述内存中所述代码页面所占用的存储空间;以及获取页表项中保存的所述代码页面的物理地址,并将所述代码页面的物理地址更新为所述交换分区中存储所述代码页面的物理地址;其中,所述页表项用于存储代码页面的虚拟地址与所述代码页面的物理地址之间的对应关系;当运行所述代码页面所属的候选进程时,根据页表项中保存的更新后的所述代码页面的虚拟地址和物理地址的对应关系,在所述交换分区中执行所述代码页面。
[0010]结合第一方面,在第一种可能的实现方式中,扫描内存中的进程之前,还包括:确定所述内存中包含的可用存储空间的容量值小于预设阈值。
[0011]结合第一方面,或者第一方面第一种可能的实现方式,在第二种可能的实现方式中,分别获取每一个进程的评分等级;其中,任意一进程的评分等级根据所述任意一进程的优先级以及所述任意一进程所占用内存空间的大小确定,当所述任意一进程的优先级越低,且所述占用内存空间越大时,所述任意一进程的评分等级越高,当所述任意一进程的优先级越高,且所述占用内存空间越小时,所述任意一进程的评分等级越低;从所有进程中依次选取评分等级从高到低的进程,直至选择至内存中包含的可用存储空间大于或等于预设阈值为止后,将选取出的各个进程确定为候选进程。
[0012]结合第一方面,第一方面第一种可能的实现方式,或者第一方面第二种可能的实现方式,在第三种可能的实现方式中,针对每一个所述候选进程,均执行如下操作:扫描所述候选进程对应的进程虚地址空间,并根据所述候选进程的进程描述符,获取所述进程虚地址空间中所有的虚地址区域;遍历所述进程虚地址空间中所有的虚地址区域;并对遍历到的每一个所述虚地址区域,根据该虚地址区域的标志位,判断该虚地址区域是否为可执行区域;当判定任意一虚地址区域为可执行区域时,将所述任意一虚地址区域中包含的页面确定为代码页面。
[0013]结合第一方面,第一方面第一种可能的实现方式至第一方面第三种可能的实现方式中的任一项,在第四种可能的实现方式中,针对每一个所述代码页面,均执行如下操作:在所述交换分区中申请一个页槽;将所述代码页面存储至申请得到的所述页槽中;将所述代码页面的物理地址,更新为所述页槽的物理地址。
[0014]结合第一方面第四种可能的实现方式,在第五种可能的实现方式中,所述交换分区为非易失性存储器NVM交换分区,且所述NVM交换分区直接与内存的内存控制器连接;将所述代码页面通过所述内存控制器存储至申请得到的所述页槽中。
[0015]结合第一方面,第一方面第一种可能的实现方式至第一方面第五种可能的实现方式中的任一项,在第六种可能的实现方式中,当运行所述代码页面所属的候选进程时,若确定需要执行所述代码页面,则获取所述页表项中保存的更新后的所述代码页面的虚拟地址;从所述页表项中确定与获取的所述虚拟地址存在对应关系的物理地址;并根据所述物理地址,在所述交换区域中获取所述代码页面;以及执行所述代码页面。
[0016]第二方面,提供一种运行进程的装置,包括:扫描单元,用于扫描内存中的进程;候选进程选取单元,用于根据所述扫描单元对内存中进程的扫描结果,从所有进程中选取候选进程;代码页面获取单元,用于从所述候选进程选取单元选取的所述候选进程中获取代码页面;其中,所述代码页面用于存放进程的二进制代码或者共享库文件;写入单元,用于将所述代码页面获取单元获取的代码页面写入交换分区中;存储空间释放单元,用于释放所述内存中所述代码页面获取单元获取的代码页面所占用的存储空间;物理地址获取单元,用于获取页表项中保存的所述代码页面的物理地址;更新单元,用于将所述物理地址获取单元获取的代码页面的物理地址更新为所述交换分区中存储所述代码页面的物理地址;其中,所述页表项用于存储代码页面的虚拟地址与所述代码页面的物理地址之间的对应关系;执行单元,用于当运行所述代码页面所属的候选进程时,根据页表项中保存的所述更新单元更新后的所述代码页面的虚拟地址和物理地址的对应关系,在所述交换分区中执行所述代码页面。
[0017]结合第二方面,在第一种可能的实现方式中,还包括确定单元,用于:扫描内存中的进程之前,确定所述内存中包含的可用存储空间的容量值小于预设阈值。
[0018]结合第二方面,或者第二方面第一种可能的实现方式,在第二种可能的实现方式中,所述候选进程选取单元,具体用于:分别获取每一个进程的评分等级;其中,任意一进程的评分等级根据所述任意一进程的优先级以及所述任意一进程所占用内存空间的大小确定,当所述任意一进程的优先级越低,且所述占用内存空间越大时,所述任意一进程的评分等级越高,当所述任意一进程的优先级越高,且所述占用内存空间越小时,所述任意一进程的评分等级越低;从所有进程中依次选取评分等级从高到低的进程,直至选择至内存中包含的可用存储空间大于或等于预设阈值为止后,将选取出的各个进程确定为候选进程。
[0019]结合第二方面,第二方面第一种可能的实现方式,或者第二方面第二种可能的实现方式,在第三种可能的实现方式中,所述代码页面获取单元,具体用于:针对每一个所述候选进程,均执行如下操作:扫描所述候选进程对应的进程虚地址空间,并根据所述候选进程的进程描述符,获取所述进程虚地址空间中所有的虚地址区域;遍历所述进程虚地址空间中所有的虚地址区域;并对遍历到的每一个所述虚地址区域,根据该虚地址区域的标志位,判断该虚地址区域是否为可执行区域;当判定任意一虚地址区域为可执行区域时,将所述任意一虚地址区域中包含的页面确定为代码页面。
[0020]结合第二方面,第二方面第一种可能的实现方式至第二方面第三种可能的实现方式中的任一项,在第四种可能的实现方式中,所述写入单元,具体用于:针对每一个所述代码页面,均执行如下操作:在所述交换分区中申请一个页槽;将所述代码页面存储至申请得到的所述页槽中;所述更新单元,具体用于:将所述代码页面的物理地址,更新为所述页槽的物理地址。
[0021]结合第二方面第四种可能的实现方式,在第五种可能的实现方式中,所述写入单元,具体用于:将所述代码页面通过所述内存控制器存储至申请得到的所述页槽中;所述交换分区为非易失性存储器NVM交换分区,且所述NVM交换分区直接与内存的内存控制器连接。
[0022]结合第二方面,第二方面第一种可能的实现方式至第二方面第五种可能的实现方式中的任一项,在第六种可能的实现方式中,所述执行单元,具体用于:当运行所述代码页面所属的候选进程时,若确定需要执行所述代码页面,则获取所述页表项中保存的更新后的所述代码页面的虚拟地址;从所述页表项中确定与获取的所述虚拟地址存在对应关系的物理地址;并根据所述物理地址,在所述交换区域中获取所述代码页面;以及执行所述代码页面。
[0023]本发明实施例中,从候选进程中选取代码页面,仅将候选进程中的代码页面存储至交换分区中,并释放该代码页面所占用的内存空间;并更新页表项中保存的代码页面的物理地址;当确定需要运行代码页面所属的候选进程时,若需要执行该代码页面,直接在交换分区中执行该代码页面即可。采用本发明技术方案,仅将具有只读特性的代码页面存储至交换分区中,当需要执行该代码页面时,直接在交换分区中执行该代码页面,无须将代码页面替换至内存中执行,在提高进程运行速度的同时,有效避免了数据的频繁交换,减少了数据频繁交换造成的写操作次数;并且,无须在本地保存每一个页槽的年龄,节约了系统空间,减少了系统负担,提高了系统性能。
【附图说明】
[0024]图1为本发明实施例中运行进程流程图;
[0025]图2为本发明实施例中终端软件层级示意图;
[0026]图3为本发明实施例中虚拟地址空间示意图;
[0027]图4a和图4b为本发明实施例中内存和交换分区示意图;
[0028]图5为本发明实施例中交换分区写操作过程示意图;
[0029]图6为本发明实施例中比较结果示意图一;
[0030]图7为本发明实施例中比较结果示意图二;
[0031]图8为本发明实施例中运行进程装置结构示意图;
[0032]图9为本发明实施例中进程运行设备结构示意图。
【具体实施方式】
[0033]为了解决目前在运行进程的过程中,存在进程运行速度慢,交换分区使用寿命短,系统资源浪费以及系统性能差的问题。本发明实施例中,从候选进程中选取代码页面,仅将候选进程中的代码页面存储至交换分区中,并释放该代码页面所占用的内存空间;并更新页表项中保存的代码页面的物理地址;当确定需要运行代码页面所属的候选进程时,若需要执行该代码页面,直接在交换分区中执行该代码页面即可。采用本发明技术方案,仅将具有只读特性的代码页面存储至交换分区中,当需要执行该代码页面时,直接在交换分区中执行该代码页面,无须将代码页面替换至内存中执行,在提高进程运行速度的同时,有效避免了数据的频繁交换,减少了数据频繁交换造成的写操作次数;并且,无须在本地保存每一个页槽的年龄,节约了系统空间,减少了系统负担,提高了系统性能。
[0034]下面结合说明书附图,对本发明实施例作进一步详细描述。
[0035]参阅图1所示,本发明实施例中,在终端中运行进程的方法,包括:
[0036]步骤100:扫描内存中的进程,从所有进程中选取候选进程。
[0037]本发明实施例中,终端中可以在一个时刻运行一个应用程序,也可以在一个时刻同时运行多个应用程序,每一个应用程序在运行过程中均需要申请相应的内存资源,并使用该内存资源;由于进程为应用程序在运行过程中的最小单位,因此,当终端在运行应用程序的过程中,内存不足以支撑应用程序的运行时,即终端的内存中包含的存储空间小于预设阈值时,终端需要扫描正在运行的应用程序对应的进程,并从所有进程中选取候选进程,转存至交换分区中,以解决内存资源不足的问题;其中,上述终端可以为移动终端(如手机等),也可以为个人电脑(Personal Computer,简称PC),且该终端包含中心处理器(Central Processing Unit,简称CPU),内存(如DRAM),交换分区等硬件设备,且该终端中安装有操作系统;上述预设阈值可以根据具体应用场景动态调整。
[0038]可选的,终端根据每一个进程的评分等级,从所有进程中选取候选进程,具体为:终端分别获取每一个进程的评分等级;其中,任意一进程的评分等级根据该任意一进程的优先级以及该任意一进程所占用内存空间的大小确定,如为优先级和占用内存空间的大小分别赋予相应的权重值,通过如下公式“优先级X优先级权重值+占用内存空间的大小X内存空间权重值”确定任意一进程的综合评分,并查找终端本地保存的综合评分和评分等级对照表,以确定该综合评分对应的评分等级,综合评分和评分等级对照表用于保存综合评分和评分等级之间的对应关系,每一个评分等级可以对应一个综合评分段,且该综合评分和评分等级对照表可以根据具体应用场景预先设置;此外,上述评分等级由操作系统中的特定部件确定,例如,在Android系统中,该评分等级可以由Android低内存管理器(LowMemory Killer,简称LMK)确定;根据评分等级,从内存中的所有进程中选定候选进程。
[0039]可选的,终端根据评分等级,从内存中的所有进程中选定候选进程的过程,具体为:从所有进程中依次选取评分等级从高到低的进程,直至选择至运行所有应用程序时所申请的内存空间小于或等于上述预设阈值位置为止,将选取出的所有进程确定为候选进程。本发明实施例中,以当任意一进程的优先级越低,且占用内存空间越大时,该任意一进程的评分等级越高,当该任意一进程的优先级越高,且占用内存空间越小时,该任意一进程的评分等级越低为例,介绍候选进程的获取过程;此外,移动终端还可以设置当任意一进程的优先级越高,且占用内存空间越小时,该任意一进程的评分等级越高,当该任意一进程的优先级越低,且占用内存空间越大时,该任意一进程的评分等级越低,此时,移动终端需要从所有进程中依次选取评分等级最低的进程,直至运行所有应用程序时所申请的内存空间小于或等于上述预设阈值位置,将选取的上述进程确定为候选进程。
[0040]本发明实施例中,终端安装的操作系统可以包含多种类型,如Android操作系统,1S操作系统,微软操作系统等。例如,参阅图2所示,当终端安装的操作系统为Android操作系统时,终端中所安装的软件层级为:最顶层为应用程序;在应用程序之下为Android系统的Dalvik虚拟机以及运行库;Android系统的Dalvik之下为Linux kernel,Linuxkernel中包含了内存管理,进程管理,设备驱动程序等;最下层为具体的硬件,包括内存(如DRAM)、交换分区(如NVM以及闪存Flash)等。
[0041]步骤110:从选取的候选进程中获取代码页面;其中,该代码页面用于存放进程的二进制代码,或者共享库文件。
[0042]本发明实施例中,内存中的每一个进程均由多个页面(以下称为内存页面)组成,每一个内存页面均占用一定的存储空间,一个进程所占用内存空间的大小即为该进程中所包含的所有内存页面所占用的存储空间的总和;内存中的页面包含两种类型,即为代码页面(Code Page)和数据页面(Data Page),其中,代码页面用于存放进程的二进制代码(Binary Code),或者共享库文件(Shared Library),且该代码页面拥有只读特性,而数据页面用于存放应用程序的数据和变量等,该数据页面不具备只读特性。
[0043]可选的,针对每一个候选进程,均执行如下操作:扫描候选进程对应的进程虚地址空间,其中,每一个候选进程对应的进程虚拟地址空间即为终端为每一个进程分配的内存空间;由于每一个虚拟地址空间中包含多个虚地址区域,且该虚地址区域通过页表项映射到物理存储空间,用于保存应用程序运行时的数据,因此,终端根据候选进程的进程描述符,获取该进程虚地址空间中所有的虚地址区域;遍历上述获取的进程虚地址空间中所有的虚地址区域;并获取遍历到的每一个虚地址区域的标志位,当存在任意一虚地址区域的标志位为可执行区域标志位时,确定该任意一虚地址区域为可执行区域,将该任意一虚地址区域中包含的页面确定为代码页面。
[0044]在上述过程中,候选进程的进程描述符和虚地址区域的标志位根据操作系统而确定,即终端安装的操作系统不同时,候选进程的进程描述符不同,且虚地址区域的标志位也不同。例如,参阅图3所示,为Android系统中一个进程的虚拟地址空间,在该进程的虚拟地址空间中,包含多个虚地址区域,每一个虚地址区域都使用vm_area_struct表示,且每一个虚地址区域之间用vm_next连接,当虚地址区域之后不存在vm_next时,表示该虚地址区域为该该虚地址区域所属的虚拟地址空间的结束位置;在Android系统中,虚地址区域的标志位为VM_READ和VM_EXEC,在图3中方框内所示部分(第一个方框内所示部分为共享库文件/etc/ld.so区域,第二个方框所示部分为二进制代码/bin/gcc区域),为由VM_READ和VM_EXEC共同确定的标志位,该VM_READ和VM_EXEC所指向的页面即为代码页面,即为图 3 中的“Memory mapping” 和 “Text (file backed),,。
[0045]采用上述技术方案,根据代码页面的特性,以及进程描述符和标志位,从内存中所保存的候选进程的所有页面中,选取代码页面,能够更为快速并准确地获取每一个候选进程的代码页面,提高了系统处理效率。
[0046]步骤120:将代码页面写入交换分区中,并释放内存中该代码页面所占用的存储空间。
[0047]本发明实施例中,终端将获取到的代码页面写入交换分区中,当代码页面全部写入到交换分区之后,终端释放内存中代码页面所占用的存储空间,以减少对内存的占用;其中,参阅图4a所示交换分区可以通过闪存实现,内存和闪存之间的数据传输由1/0驱动程序负责,即内存和闪存之间的数据传输需要1/0调度,参阅图4b所示,交换分区还可以通过NVM实现,内存和NVM均连接至内存控制器(Memory Controller),由内存控制器控制内存和NVM之间的数据交换,且终端安装的操作系统将内存和NVM视为没有任何区别,操作系统可以和通过虚拟地址访问内存和交换分区中保存的数据,且交换分区和之间的数据交换通过内存接口,NVM上的数据可以通过内存复制到内存中,反之亦可,此外,内存和NVM统一编码;当交换分区通过闪存实现时,由于内存和闪存之间的数据传输需要1/0调度,且1/0调度速度相对较慢,从而存在读写延迟时间长的问题;当交换分区通过NVM实现时,由于内存和NVM之间的数据传输由内存控制器直接调度,数据通过内存总线传输即可,无须通过1/0调度,相较于通过闪存实现交换分区的方案,采用NVM实现交换分区,读写延迟时间短。
[0048]可选的,终端针对每一个代码页面,均执行如下操作:由于交换分区的基本单位为页槽,每一个代码页面所占用存储空间的大小与一个页槽所占用的存储空间的大小相等,因此,当终端确定需要释放内存空间时,在交换分区中为代码页面申请一个页槽;终端直接将代码页面通过内存控制器存储至申请得到的页槽中。
[0049]采用上述技术方案,终端将获取的代码页面存储至交换分区中,进而释放内存中替换出的代码页面所占用的存储空间,为其他进程运行提供更多的内存资源,有效解决了内存资源不足的问题。
[0050]步骤130:获取页表项中保存的上述代码页面的物理地址,并将该代码页面的物理地址更新为交换分区中存储该代码页面的物理地址;其中,页表项用于存储代码页面的虚拟地址与该代码页面的物理地址之间的对应关系。
[0051]本发明实施例中,终端本地保存有页表项,该页表项中保存有代码页面的虚拟地址与该代码页面的物理地址之间的对应关系,其中,代码页面的虚拟地址不可更改。在将代码页面存储至申请得到的页槽之后,终端将页表项中该代码页面的物理地址更新为交换分区中存储该代码页面的物理地址。基于上述过程,终端将上述代码页面存储至交换分区中的相应页槽中,因此,将代码页面的物理地址更新为交换分区中存储该代码页面的物理地址,即为将该代码页面的物理地址,更新为上述页槽的物理地址。参阅图5所示,为本发明实施例中在交换分区中写入代码页面时页表项、内存和交换分区之间数据交换示意图。
[0052]采用上述技术方案,在终端将代码页面存储至申请得到的页槽之后,更新页表项中上述代码页面的物理地址,避免了后续在交换分区中执行上述代码页面中包含的数据时,根据原有的物理地址无法获取代码页面的问题,保证了代码页面执行的可行性。
[0053]步骤140:当运行代码页面所属的候选进程时,根据页表项中保存的更新后的该代码页面的虚拟地址和物理地址的对应关系,在交换分区中执行该代码页面。
[0054]本发明实施例中,当终端确定运行代码页面所属的候选进程时,若确定需要执行任意一代码页面,且该任意一代码页面位于交换分区中,则获取页表项中更新后的上述任意一代码页面的虚拟地址;从该页表项中确定与获取的虚拟地址存在对应关系的物理地址;并根据该物理地址,在交换区域中获取上述任意一代码页面;以及执行该任意一代码页面中包含的数据。
[0055]基于上述技术方案,将本发明技术方案和现有技术中选择不经常使用的内存页面替换至交换分区的方法相比较,设定应用环境为Google Nexus 5智能手机。在比较过程中,选取不同类型的应用程序,并将这些应用程序归为六类:Browser,Social networking,Multimedia, Gaming, Online Shopping和News。对于每一类应用程序,分别采用本发明提供的技术方案,以及采用现有技术运行20分钟。参阅图6所示,为交换(Swap)分区的写操作随时间变化曲线,该图中横坐标表示时间,纵坐标表示对交换分区写操作的总次数;第一曲线表示采用本发明技术方案运行应用程序时的运行结果,第二曲线表示采用现有技术运行应用程序时的运行结果。由图6可知,采用本发明提供的技术方案运行应用程序时相较于采用现有技术运行应用程序时,减少了 14%?51%的写操作。并且,采用本发明技术方案对交换分区执行写操作时,若终端不存在新的应用程序运行,在一段时间后对于交换分区的写操作数量将不再增加,而采用现有技术运行应用程序时,对交换分区的写操作会持续增加。
[0056]由此可见,相较于现有技术在交换分区中执行写操作的方式,代码页面替换至交换分区后,当需要该代码页面时,对交换分区的写操作会持续的增加。采用本发明技术方案,仅将候选进程中的代码页面替换至交换分区中,当需要执行交换分区中的任意一代码页面时,无须将该任意一代码页面重新调用至内存中,而直接在交换分区中执行该任意一代码页面即可,随着代码页面的不断换出,可用内存空间也越来越大,最后可用内存空间趋于稳定,不再需要代码页由内存替换至交换分区,使交换分区的写操作会趋于稳定,在一定时间之后不再增加,从而减少了对交换分区的写操作数量,有效延长了交换分区的使用寿命O
[0057]基于上述技术方案,将采用本发明技术方案时,应用程序的切换时间在使用交换分区的场景下与没有使用交换分区的场景下进行对比。在本次对比过程中,在上述两种场景中,均设定在终端中共运行了 30个应用程序,并在该30个应用程序之间不停切换。比较结果参阅图7所示,图中横坐标表示应用程序,纵坐标表示该应用程序的平均切换时间,第一柱体表示采用交换分区的应用场景,第二柱体表示没有采用交换分区的应用场景。由图7可知,采用本发明技术方案使用交换分区的场景,相较于没有采用交换分区的场景,应用程序的切换时间减少了 19%?41%。
[0058]由此可见,在现有技术中,当不存在交换分区时,若内存空间不足,终端所采用的机制为强制停止该页面对应的应用程序,当内存空间充足后,终端需要重新加载上述应用程序,导致应用程序执行时间较长;采用本发明技术方案,当内存空间不足时,将候选进程中的代码页面存储至交换分区中,并当需要执行交换分区中的任意一代码页面时,无须将该任意一代码页面重新调用至内存中,而仅需要根据该任意一代码页面的物理地址,获取该任意一代码页面,进而直接执行该任意一代码页面即可,无须将应用程序强制停止,进而提高了应用程序的执行速度。
[0059]基于上述技术方案,参阅图8所示,本发明实施例还提供一种运行进程的装置,包括扫描单元80,候选进程选取单元81,代码页面获取单元82,写入单元83,存储空间释放单元84,物理地址获取单元85,更新单元86,以及执行单元87,其中:
[0060]扫描单元80,用于扫描内存中的进程;
[0061]候选进程选取单元81,用于根据所述扫描单元80对内存中进程的扫描结果,从所有进程中选取候选进程;
[0062]代码页面获取单元82,用于从所述候选进程选取单元81选取的所述候选进程中获取代码页面;其中,所述代码页面用于存放进程的二进制代码或者共享库文件;
[0063]写入单元83,用于将所述代码页面获取单元82获取的代码页面写入交换分区中;
[0064]存储空间释放单元84,用于释放所述内存中所述代码页面获取单元82获取的代码页面所占用的存储空间;
[0065]物理地址获取单元85,用于获取页表项中保存的所述代码页面的物理地址;
[0066]更新单元86,用于将所述物理地址获取单元85获取的代码页面的物理地址更新为所述交换分区中存储所述代码页面的物理地址;其中,所述页表项用于存储代码页面的虚拟地址与所述代码页面的物理地址之间的对应关系;
[0067]执行单元87,用于当运行所述代码页面所属的候选进程时,根据页表项中保存的所述更新单元86更新后的所述代码页面的虚拟地址和物理地址的对应关系,在所述交换分区中执行所述代码页面。
[0068]进一步的,上述装置还包括确定单元88,用于:扫描内存中的进程之前,确定所述内存中包含的可用存储空间的容量值小于预设阈值。
[0069]可选的,所述候选进程选取单元81,具体用于:分别获取每一个进程的评分等级;其中,任意一进程的评分等级根据所述任意一进程的优先级以及所述任意一进程所占用内存空间的大小确定,当所述任意一进程的优先级越低,且所述占用内存空间越大时,所述任意一进程的评分等级越高,当所述任意一进程的优先级越高,且所述占用内存空间越小时,所述任意一进程的评分等级越低;从所有进程中依次选取评分等级从高到低的进程,直至选择至内存中包含的可用存储空间大于或等于预设阈值为止后,将选取出的各个进程确定为候选进程。
[0070]可选的,所述代码页面获取单元82,具体用于:针对每一个所述候选进程,均执行如下操作:扫描所述候选进程对应的进程虚地址空间,并根据所述候选进程的进程描述符,获取所述进程虚地址空间中所有的虚地址区域;遍历所述进程虚地址空间中所有的虚地址区域;并对遍历到的每一个所述虚地址区域,根据该虚地址区域的标志位,判断该虚地址区域是否为可执行区域;当判定任意一虚地址区域为可执行区域时,将所述任意一虚地址区域中包含的页面确定为代码页面。
[0071]可选的,所述写入单元83,具体用于:针对每一个所述代码页面,均执行如下操作:在所述交换分区中申请一个页槽;将所述代码页面存储至申请得到的所述页槽中;所述更新单元86,具体用于:将所述代码页面的物理地址,更新为所述页槽的物理地址。
[0072]可选的,所述写入单元83,具体用于:将所述代码页面通过所述内存控制器存储至申请得到的所述页槽中;所述交换分区为非易失性存储器NVM交换分区,且所述NVM交换分区直接与内存的内存控制器连接。
[0073]可选的,所述执行单元87,具体用于:当运行所述代码页面所属的候选进程时,若确定需要执行所述代码页面,则获取所述页表项中保存的更新后的所述代码页面的虚拟地址;从所述页表项中确定与获取的所述虚拟地址存在对应关系的物理地址;并根据所述物理地址,在所述交换区域中获取所述代码页面;以及执行所述代码页面。
[0074]基于上述技术方案,参阅图9所示,本发明实施例还提供一种进程运行设备,包括存储器90,处理器91,其中:
[0075]存储器90,用于存储应用程序以及页表项,包含交换分区以及内存;
[0076]处理器91,用于运行存储器90中的应用程序,执行如下操作:
[0077]扫描内存中的进程;根据所述扫描单元对内存中进程的扫描结果,从所有进程中选取候选进程;从所述候选进程选取单元选取的所述候选进程中获取代码页面;其中,所述代码页面用于存放进程的二进制代码或者共享库文件;将所述代码页面获取单元获取的代码页面写入交换分区中;释放所述内存中所述代码页面获取单元获取的代码页面所占用的存储空间;获取页表项中保存的所述代码页面的物理地址;将所述物理地址获取单元获取的代码页面的物理地址更新为所述交换分区中存储所述代码页面的物理地址;其中,所述页表项用于存储代码页面的虚拟地址与所述代码页面的物理地址之间的对应关系;当运行所述代码页面所属的候选进程时,根据页表项中保存的所述更新单元更新后的所述代码页面的虚拟地址和物理地址的对应关系,在所述交换分区中执行所述代码页面。
[0078]进一步的,所述处理器91,还用于:扫描内存中的进程之前,确定所述内存中包含的可用存储空间的容量值小于预设阈值。
[0079]可选的,所述处理器91,具体用于:分别获取每一个进程的评分等级;其中,任意一进程的评分等级根据所述任意一进程的优先级以及所述任意一进程所占用内存空间的大小确定,当所述任意一进程的优先级越低,且所述占用内存空间越大时,所述任意一进程的评分等级越高,当所述任意一进程的优先级越高,且所述占用内存空间越小时,所述任意一进程的评分等级越低;从所有进程中依次选取评分等级从高到低的进程,直至选择至内存中包含的可用存储空间大于或等于预设阈值为止后,将选取出的各个进程确定为候选进程。
[0080]可选的,所述处理器91,具体用于:针对每一个所述候选进程,均执行如下操作:扫描所述候选进程对应的进程虚地址空间,并根据所述候选进程的进程描述符,获取所述进程虚地址空间中所有的虚地址区域;遍历所述进程虚地址空间中所有的虚地址区域;并对遍历到的每一个所述虚地址区域,根据该虚地址区域的标志位,判断该虚地址区域是否为可执行区域;当判定任意一虚地址区域为可执行区域时,将所述任意一虚地址区域中包含的页面确定为代码页面。
[0081]可选的,所述处理器91,具体用于:针对每一个所述代码页面,均执行如下操作:在所述交换分区中申请一个页槽;将所述代码页面存储至申请得到的所述页槽中;将所述代码页面的物理地址,更新为所述页槽的物理地址。
[0082]进一步的,所述进程运行设备还包括内存控制器92,用于连接内存和交换分区;可选的,所述处理器91,具体用于:将所述代码页面通过所述内存控制器92存储至申请得到的所述页槽中;所述交换分区为NVM交换分区。
[0083]可选的,所述处理器91,具体用于:当运行所述代码页面所属的候选进程时,若确定需要执行所述代码页面,则获取所述页表项中保存的更新后的所述代码页面的虚拟地址;从所述页表项中确定与获取的所述虚拟地址存在对应关系的物理地址;并根据所述物理地址,在所述交换区域中获取所述代码页面;以及执行所述代码页面。
[0084]综上所述,本发明实施例中,扫描内存中的进程,从所有进程中选取候选进程;从选取的候选进程中获取代码页面;其中,该代码页面用于存放进程的二进制代码,或者共享库文件;将代码页面写入交换分区中,并释放内存中该代码页面所占用的存储空间;获取页表项中保存的上述代码页面的物理地址,并将该代码页面的物理地址更新为交换分区中存储该代码页面的物理地址;其中,页表项用于存储代码页面的虚拟地址与该代码页面的物理地址之间的对应关系;当运行代码页面所属的候选进程时,根据页表项中保存的更新后的该代码页面的虚拟地址和物理地址的对应关系,在交换分区中执行该代码页面。采用本发明技术方案,仅将具有只读特性的代码页面存储至交换分区中,当需要执行该代码页面时,直接在交换分区中执行该代码页面,无须将代码页面替换至内存中执行,在提高进程运行速度的同时,有效避免了数据的频繁交换,减少了数据频繁交换造成的写操作次数;并且,无须在本地保存每一个页槽的年龄,节约了系统空间,减少了系统负担,提高了系统性會K。
[0085]本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0086]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0087]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0088]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0089]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0090]显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【主权项】
1.一种运行进程的方法,其特征在于,包括: 扫描内存中的进程,从所有进程中选取候选进程;并 从选取的所述候选进程中获取代码页面;其中,所述代码页面用于存放进程的二进制代码或者共享库文件; 将所述代码页面写入交换分区中,并释放所述内存中所述代码页面所占用的存储空间;以及 获取页表项中保存的所述代码页面的物理地址,并将所述代码页面的物理地址更新为所述交换分区中存储所述代码页面的物理地址;其中,所述页表项用于存储代码页面的虚拟地址与所述代码页面的物理地址之间的对应关系; 当运行所述代码页面所属的候选进程时,根据页表项中保存的更新后的所述代码页面的虚拟地址和物理地址的对应关系,在所述交换分区中执行所述代码页面。2.如权利要求1所述的方法,其特征在于,扫描内存中的进程之前,还包括: 确定所述内存中包含的可用存储空间的容量值小于预设阈值。3.如权利要求1或2所述的方法,其特征在于,从所有进程中选取候选进程,具体包括: 分别获取每一个进程的评分等级;其中,任意一进程的评分等级根据所述任意一进程的优先级以及所述任意一进程所占用内存空间的大小确定,当所述任意一进程的优先级越低,且所述占用内存空间越大时,所述任意一进程的评分等级越高,当所述任意一进程的优先级越高,且所述占用内存空间越小时,所述任意一进程的评分等级越低; 从所有进程中依次选取评分等级从高到低的进程,直至选择至内存中包含的可用存储空间大于或等于预设阈值为止后,将选取出的各个进程确定为候选进程。4.如权利要求1-3任一项所述的方法,其特征在于,从选取的所述候选进程中获取代码页面,具体包括: 针对每一个所述候选进程,均执行如下操作: 扫描所述候选进程对应的进程虚地址空间,并根据所述候选进程的进程描述符,获取所述进程虚地址空间中所有的虚地址区域; 遍历所述进程虚地址空间中所有的虚地址区域;并 对遍历到的每一个所述虚地址区域,根据该虚地址区域的标志位,判断该虚地址区域是否为可执行区域; 当判定任意一虚地址区域为可执行区域时,将所述任意一虚地址区域中包含的页面确定为代码页面。5.如权利要求1-4任一项所述的方法,其特征在于,将所述代码页面写入交换分区中,具体包括: 针对每一个所述代码页面,均执行如下操作: 在所述交换分区中申请一个页槽; 将所述代码页面存储至申请得到的所述页槽中; 将所述代码页面的物理地址更新为所述交换分区中存储所述代码页面的物理地址,具体包括: 将所述代码页面的物理地址,更新为所述页槽的物理地址。6.如权利要求5所述的方法,其特征在于,所述交换分区为非易失性存储器NVM交换分区,且所述NVM交换分区直接与内存的内存控制器连接; 将所述代码页面存储至申请得到的所述页槽中,具体包括: 将所述代码页面通过所述内存控制器存储至申请得到的所述页槽中。7.如权利要求1-6任一项所述的方法,其特征在于,当运行所述代码页面所属的候选进程时,根据页表项中保存的更新后的所述代码页面的虚拟地址和物理地址的对应关系,在所述交换分区中执行所述代码页面,具体包括: 当运行所述代码页面所属的候选进程时,若确定需要执行所述代码页面,则获取所述页表项中保存的更新后的所述代码页面的虚拟地址; 从所述页表项中确定与获取的所述虚拟地址存在对应关系的物理地址;并 根据所述物理地址,在所述交换区域中获取所述代码页面;以及 执行所述代码页面。8.—种运行进程的装置,其特征在于,包括: 扫描单元,用于扫描内存中的进程; 候选进程选取单元,用于根据所述扫描单元对内存中进程的扫描结果,从所有进程中选取候选进程; 代码页面获取单元,用于从所述候选进程选取单元选取的所述候选进程中获取代码页面;其中,所述代码页面用于存放进程的二进制代码或者共享库文件; 写入单元,用于将所述代码页面获取单元获取的代码页面写入交换分区中; 存储空间释放单元,用于释放所述内存中所述代码页面获取单元获取的代码页面所占用的存储空间; 物理地址获取单元,用于获取页表项中保存的所述代码页面的物理地址; 更新单元,用于将所述物理地址获取单元获取的代码页面的物理地址更新为所述交换分区中存储所述代码页面的物理地址;其中,所述页表项用于存储代码页面的虚拟地址与所述代码页面的物理地址之间的对应关系; 执行单元,用于当运行所述代码页面所属的候选进程时,根据页表项中保存的所述更新单元更新后的所述代码页面的虚拟地址和物理地址的对应关系,在所述交换分区中执行所述代码页面。9.如权利要求8所述的装置,其特征在于,还包括确定单元,用于: 扫描内存中的进程之前,确定所述内存中包含的可用存储空间的容量值小于预设阈值。10.如权利要求8或9所述的装置,其特征在于,所述候选进程选取单元,具体用于: 分别获取每一个进程的评分等级;其中,任意一进程的评分等级根据所述任意一进程的优先级以及所述任意一进程所占用内存空间的大小确定,当所述任意一进程的优先级越低,且所述占用内存空间越大时,所述任意一进程的评分等级越高,当所述任意一进程的优先级越高,且所述占用内存空间越小时,所述任意一进程的评分等级越低;从所有进程中依次选取评分等级从高到低的进程,直至选择至内存中包含的可用存储空间大于或等于预设阈值为止后,将选取出的各个进程确定为候选进程。11.如权利要求8-10任一项所述的装置,其特征在于,所述代码页面获取单元,具体用于: 针对每一个所述候选进程,均执行如下操作:扫描所述候选进程对应的进程虚地址空间,并根据所述候选进程的进程描述符,获取所述进程虚地址空间中所有的虚地址区域;遍历所述进程虚地址空间中所有的虚地址区域;并对遍历到的每一个所述虚地址区域,根据该虚地址区域的标志位,判断该虚地址区域是否为可执行区域;当判定任意一虚地址区域为可执行区域时,将所述任意一虚地址区域中包含的页面确定为代码页面。12.如权利要求8-11任一项所述的装置,其特征在于,所述写入单元,具体用于: 针对每一个所述代码页面,均执行如下操作:在所述交换分区中申请一个页槽;将所述代码页面存储至申请得到的所述页槽中; 所述更新单元,具体用于: 将所述代码页面的物理地址,更新为所述页槽的物理地址。13.如权利要求12所述的装置,其特征在于,所述写入单元,具体用于: 将所述代码页面通过所述内存控制器存储至申请得到的所述页槽中;所述交换分区为非易失性存储器NVM交换分区,且所述NVM交换分区直接与内存的内存控制器连接。14.如权利要求8-13任一项所述的装置,其特征在于,所述执行单元,具体用于: 当运行所述代码页面所属的候选进程时,若确定需要执行所述代码页面,则获取所述页表项中保存的更新后的所述代码页面的虚拟地址;从所述页表项中确定与获取的所述虚拟地址存在对应关系的物理地址;并根据所述物理地址,在所述交换区域中获取所述代码页面;以及执行所述代码页面。
【文档编号】G06F12/08GK105988875SQ201510097009
【公开日】2016年10月5日
【申请日】2015年3月4日
【发明人】刘铎, 王雅坤, 钟刊
【申请人】华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1