CN115629875A - 内存页面处理方法、装置以及电子设备 - Google Patents
内存页面处理方法、装置以及电子设备 Download PDFInfo
- Publication number
- CN115629875A CN115629875A CN202211275420.1A CN202211275420A CN115629875A CN 115629875 A CN115629875 A CN 115629875A CN 202211275420 A CN202211275420 A CN 202211275420A CN 115629875 A CN115629875 A CN 115629875A
- Authority
- CN
- China
- Prior art keywords
- memory page
- memory
- page
- starting
- information
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例公开了一种内存页面处理方法、装置以及电子设备。方法包括:响应于触发进程进行启动,获取进程对应的启动信息,启动信息中记录有进程在历史启动过程中访问过的内存页面;将启动信息中所记录的内存页面加载到内存中的交换缓存中;若在启动的过程中触发缺页中断,从交换缓存中获取缺页中断对应的内存页面。从而通过上述方式使得在进程的启动的过程中有触发缺页中断的情况下,可以直接从内存中的交换缓存中获取缺页中断对应的内存页面,而不用在触发缺页中断时再从交换缓存以外的存储区域先读取缺页中断对应的内存页面到交换缓存中,进而提升了触发缺页中断时获取到对应内存页面的效率,进而也就提升了进程进行启动的效率。
Description
技术领域
本申请涉及计算机技术领域,更具体地,涉及一种内存页面处理方法、装置以及电子设备。
背景技术
进程(应用程序)在启动过程中,会获取对应的内存页面,以便在启动过程中或者在启动之后进行使用。但是,在相关的启动过程中获取内存页面的效率还有待提升,进而造成进程的启动效率有待提升。
发明内容
鉴于上述问题,本申请提出了一种内存页面处理方法、装置以及电子设备,以改善上述问题。
第一方面,本申请提供了一种内存页面处理方法,所述方法包括:响应于触发进程进行启动,获取所述进程对应的启动信息,所述启动信息中记录有所述进程在历史启动过程中访问过的内存页面;将所述启动信息中所记录的内存页面加载到内存中的交换缓存中;若在所述启动的过程中触发缺页中断,从所述交换缓存中获取所述缺页中断对应的内存页面。
第二方面,本申请提供了一种内存页面处理装置,所述装置包括:信息获取单元,用于响应于触发进程进行启动,获取所述进程对应的启动信息,所述启动信息中记录有所述进程在历史启动过程中访问过的内存页面;页面加载单元,用于将所述启动信息中所记录的内存页面加载到内存中的交换缓存中;缺页处理单元,用于若在所述启动的过程中触发缺页中断,从所述交换缓存中获取所述缺页中断对应的内存页面。
第三方面,本申请提供了一种电子设备,包括一个或多个处理器以及存储器;一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行以实现上述的方法。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码被处理器运行时执行上述的方法。
本申请提供的一种内存页面处理方法、装置以及电子设备,响应于触发进程进行启动,获取记录有该进程在历史启动过程中访问过的内存页面的启动信息,将启动信息中所记录的内存页面加载到内存中的交换缓存中,若在启动的过程中触发缺页中断,从所述交换缓存中获取所述缺页中断对应的内存页面。从而通过上述方式使得在进程的启动的过程中有触发缺页中断的情况下,可以直接从内存中的交换缓存中获取缺页中断对应的内存页面,而不用在触发缺页中断时再从交换缓存以外的存储区域先读取缺页中断对应的内存页面到交换缓存中,进而提升了触发缺页中断时获取到对应内存页面的效率,进而也就提升了进程进行启动的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提出的一种内存页面处理方法的流程图;
图2示出了本申请实施例中的进程处于前台运行时所访问的内存页面的放置位置的示意图;
图3示出了本申请实施例中的进程处于后台运行时所访问的内存页面的放置位置的示意图;
图4示出了本申请实施例中的交换缓存的示意图;
图5示出了本申请实施例中缺页中断对应的内存页面的示意图;
图6示出了本申请另一实施例提出的一种内存页面处理方法的流程图;
图7示出了本申请再一实施例提出的一种内存页面处理方法的流程图;
图8示出了本申请又一实施例提出的一种内存页面处理方法的流程图;
图9示出了本申请实施例提出的一种内存页面处理装置的结构框图;
图10示出了本申请实时中的用于执行根据本申请实施例的内存页面处理方法的电子设备的结构框图;
图11示出了本申请实时中的用于保存或者携带实现根据本申请实施例的内存页面处理方法的程序代码的存储单元。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
内存又称主存,是CPU能直接寻址的存储空间,由半导体器件制成。电子设备中的进程(应用程序)在运行过程中通常都需要借助内存来完成数据处理。例如,进程(应用程序)在启动过程中,会获取对应的内存页面,以便在启动过程中或者在启动之后进行使用。
其中,发明人在研究中发现,在进程在启动之后若又切换到后台运行或者被关闭,那么之前所获取的内存页面可能会移动到磁盘中,从而会造成进程后续再启动时的启动效率受到影响。
具体地,若进程所要访问的内存页面(例如,在启动过程中所要访问的内存页面)不在内存中,或者进程所访问的虚拟地址并未映射物理页面,则会触发缺页中断。在触发缺页中断的情况下,则会触发去获取虚拟地址所对应的物理页面到内存中,并建立虚拟地址与物理页面之间的关联。但是,如前文所示,在进程在启动之后,若又切换到后台运行或者被关闭,那么之前所获取的内存页面可能会移动到磁盘中,进而就会使得在触发缺页中断时需要从磁盘中去读取对应的内存内面,就造成了读取内存页面的过程的效率不佳(相比于直接从内存中读取)。再者,在另外一种情况下,在进程在切换到后台运行或者被关闭的情况下,之前所获取的内存页面会被进行压缩后进行存储,而在获取内存页面时所实时进行的解压缩过程也会造成获取内存页面的效率受到影响。
因此,发明人提出了本申请中的内存页面处理方法、装置以及电子设备,在响应于触发进程进行启动时,则会获取记录有该进程在历史启动过程中访问过的内存页面的启动信息,并将启动信息中所记录的内存页面加载到内存中的交换缓存中,若在启动的过程中触发缺页中断,从交换缓存中获取所述缺页中断对应的内存页面。从而通过上述方式使得在进程的启动的过程中有触发缺页中断的情况下,可以直接从内存中的交换缓存中获取缺页中断对应的内存页面,而不用在触发缺页中断时再从交换缓存以外的存储区域先读取缺页中断对应的内存页面到交换缓存中,进而提升了触发缺页中断时获取到对应内存页面的效率,进而也就提升了进程进行启动的效率。
下面将结合附图具体描述本申请的各实施例。
请参阅图1,本申请实施例提供的一种内存页面处理方法,所述方法包括:
S110:响应于触发进程进行启动,获取进程对应的启动信息,启动信息中记录有进程在历史启动过程中访问过的内存页面。
其中,触发进本申请实施例中,进程可以理程进行启动可以理解为接收到触发进程进行启动的指令而开始控制进程进行启动。其中,在接收到触发进程进行启动的指令时,进程为才开始启动且还未完成启动。在解为应用程序对应的进程。在这种方式下,若检测到有作用于应用程序的图标的触控操作,则确定为触发应用程序的进程进行启动。
进程在启动的过程中以及在启动之后会访问内存页面以完成对应的数据处理任务。在这种情况下,可以将进程在启动过程中所访问过的内存页面进行记录以生成启动信息,继而使得在进程启动过程中所获取到的启动信息可以包括有进程在历史启动过程中访问过的内存页面。作为一种方式,为了提升获取启动信息的效率,可以通过异步线程来获取启动信息。
另外,在本申请实施例中,进程启动可以理解为进程进行热启动,也可以理解为进程进行冷启动。其中,进程进行热启动可以理解为进程由后台运行切换为前台进行运行。作为一种方式,在为进行热启动的情况下,电子设备可以响应于进程进行热启动,获取进程对应的启动信息。如前述内容所示,进程可以理解为应用程序的进程,在这种情况下,进程由后台运行切换为前台运行则也可以理解为进程对应的应用程序由后台运行切换到前台进行运行。再者,进程进行冷启动则可以理解为进程由关闭状态切换到运行状态。对应的,进程进行冷启动则可以理解为进程对应的应用程序由关闭状态切换到运行状态。
S120:将启动信息中所记录的内存页面加载到内存中的交换缓存中。
需要说明的是,在本申请实施例中,在电子设备中配置有交换分区(swap)。该交换分区可以用于放置进程被关闭或者被切换到后台运行后未再访问的内存页面。例如,进程A在运行过程中所访问的内存页面包括有内存页面P1、内存页面P2、内存页面P3以及内存页面P4。如图2所示,在进程A处于前台运行的阶段,内存页面P1、内存页面P2、内存页面P3以及内存页面P4可以均在内存(进程A所分配到的内存区域)中。如图3所示,在进程A切换到处于后台运行时,其中的内存页面P1以及内存页面P2可以继续保持在内存中,而内存页面P3以及内存页面P4则可能会移动到交换分区中。
其中,对于被移动到交换分区的内存页面可能会被再次加载到内存中。在再次加载到内存的过程中,如图4所示,交换分区中的内存页面会先加载到交换缓存(swap cache)中,之后进程再从交换缓存中读取内存页面。其中,交换缓存配置在电子设备的内存中。那么,在将启动信息中所记录的内存页面加载到内存中的交换缓存中的情况下,若后续需要访问该内存页面,则可以直接从交换缓存中进行内存页面的读取。
在本申请实施例中,交换分区可以有多种实施方式。
作为一种方式,交换分区可以配置在电子设备的磁盘中,例如,交换分区可以为flash swap。在这种方式下,在从交换分区中获取内存页面时,则相当于从磁盘中读取数据,进而会产生I/O操作。作为另外一种方式,交换分区可以配置在电子设备的内存中,例如,交换分区可以为zram swap。在这种方式下,放置到交换分区的内存页面会先进行压缩,让后将压缩后的内存页面放置到交换分区中。
S130:若在启动的过程中触发缺页中断,从交换缓存中获取缺页中断对应的内存页面。
如前述内容所示,进程在启动的过程中会访问内存页面。并且,需要说明的是,进程在访问内存页面的过程中是通过内存页面对应的虚拟地址来实现对内存页面进行访问。在这种情况下,进程可以先获取到虚拟地址,然后再通过该虚拟地址来访问对应的内存页面。但是,虚拟地址所对应的内存页面可能已经被移动到交换分区而不再内存中,进而就会触发缺页中断。
在触发缺页中断的情况下,电子设备会将缺页中断所对应的内存页面再读取到进程所分配的内存区域中。那么在本申请实施例中,因为在触发进程启动时,就已经同步将进程历史启动过程中所访问的内存页面加载到了交换缓存中,进而使得在因为触发缺页中断而需要去获取对应的内存页面时,可以直接从交换缓存中进行获取,而不用再从交换分区中进行获取,提升了获取到内存页面的效率,也有利于进程更加快速的进行启动。其中,缺页中断对应的内存页面可以理解为触发缺页中断时所访问的虚拟地址对应的内存页面。示例性的,如图5所示,若进程在启动过程中在访问虚拟地址D3时触发了缺页中断,并且在该缺页中断中所要获取的内存页面为内存页面P3,那么该缺页中断所对应的内存页面为内存页面P3。
作为一种实施方式,启动信息可以为启动表,启动表中记录有进程在历史启动过程中访问过的内存页面的虚拟地址。在这种方式下,在获取到进程对应的启动表之后,可以根据启动表中所对应的虚拟地址从交换分区中加载该虚拟地址所对应的内存页面到交换缓存中。再者,在本申请实施例中还可以对启动表中的虚拟地址进行管理。可选的,本实施例提供的方法还可以包括:从启动表中获取目标虚拟地址,目标虚拟地址对应的内存页面在指定时长内未被使用过,将目标虚拟地址从启动表中移除。需要说明的是,进程在每次启动过程中所访问的虚拟地址可能并不一致,进而也就使得历史所访问过的虚拟地址,在后续的启动过程中就可能不会被再次访问,或者在最近一段时间都不会进行访问,在这种情况下,为了进一步的降低启动表所占用的存储空间(启动表可以存储在内存中),则可以从启动表中获取在指定时长内未被使用过的目标虚拟地址,以将目标虚拟地址从启动表中移除。
可选的,启动表的样式可以如下所示;
如上表所示,在启动表中设置有地址项和优先级。其中,地址项用于记录虚拟地址。例如,虚拟地址D1对应的优先级为5,虚拟地址D5对应的优先级为0。其中,优先级越高,那么对应的虚拟地址所对应的内存页面被访问的频率也就越高。对应的,优先级越低那么对应的虚拟地址所对应的内存页面被访问的频率也就越低。在这种情况下,可以在优先级满足移除条件时,将满足移除条件的优先级对应的虚拟地址作为目标虚拟地址。其中,移除条件可以为优先级为0。
作为一种方式,本实施例提供的方法还可以包括:获取进程在启动过程中进行参数配置时所使用的内存页面,若在启动过程中进行参数配置时所使用的内存页面中,存在内页面在指定时长内未被进程访问,将在指定时长内未被进程访问的内存页面移动到磁盘中。需要说明的是,将内存页面移动到磁盘的情况下,则可以使得内存中有更多的可用空间。
可选的,在本申请实施例中,也可以通过表的方式记录进程在启动过程中进行参数配置时,所使用的内存页面的虚拟地址。例如,该表可以取名为老化表。其中,当进程在启动过程中进行参数配置时,所使用的内存页面被移动到交换分区或者又被加载到内存的情况下,都可以对该老化表的内容进行更新。
本实施例提供的一种内存页面处理方法,响应于触发进程进行启动,获取记录有该进程在历史启动过程中访问过的内存页面的启动信息,将启动信息中所记录的内存页面加载到内存中的交换缓存中,若在启动的过程中触发缺页中断,从交换缓存中获取缺页中断对应的内存页面。从而通过上述方式使得在进程的启动的过程中有触发缺页中断的情况下,可以直接从内存中的交换缓存中获取缺页中断对应的内存页面,而不用在触发缺页中断时再从交换缓存以外的存储区域先读取缺页中断对应的内存页面到交换缓存中,进而提升了触发缺页中断时获取到对应内存页面的效率,进而也就提升了进程进行启动的效率。
请参阅图6,本申请实施例提供的一种内存页面处理方法,方法包括:
S210:响应于触发进程进行启动,获取进程对应的启动信息,启动信息中记录有进程在历史启动过程中访问过的内存页面。
如前述内容所示,进程在有的时候会在后台进行运行。例如,在用户操作电子设备将应用程序的界面进行关闭时,则电子设备可以将该应用程序对应的进程切换到后台运行。在进程处于后台运行的情况下,进程依然可以执行数据处理任务。例如,在进程处于后台运行的情况下,依然可以通过网络请求数据,以及根据网络返回的数据执行对应的数据处理任务。再例如,在进程处于后台运行的情况下,还可以与其他应用程序进行通信以进行数据交换,以便根据其他应用程序返回的数据执行对应的数据处理任务。
其中,在进行在后台执行数据处理任务的过程中,进程依然需要访问内存页面。作为一种方式,在本申请实施例中,可以获取进程在后台运行阶段所使用的内存页面,保持在后台运行阶段所使用的内存页面,在进程处于后台运行阶段不进行内存回收。需要说明的是,在保持在后台运行阶段所使用的内存页面不进行回收的情况下,可以使得后台运行的进程需要访问内存页面时不再用实时的进行内存页面的申请,进而提升了后台进行的运行效率,也使得进程在后台运行的时候可以更加快速对指令进行响应。
其中,保持在后台运行阶段所使用的内存页面,在进程处于后台运行阶段不进行内存回收,可以理解为电子设备在进行内存回收时,不将进程在后台运行阶段所使用的内存页面确定为需要进行回收的内存页面。在本申请实施例中,可以有多种方式来保持在后台运行阶段所使用的内存页面不进行内存回收。
作为一种方式,可以保持进程在后台运行阶段所访问的内存页面一直在活跃链表中。需要说明的是,在电子设备中可以通过链表来对内存页面进行维护。例如,该链表可以为lru(Least Recently Used)链表。其中,根据链表的用途可以将链表划分为活跃链表和非活跃链表。其中,活跃链表用于存放最近被访问过的内存页面,非活跃链表用于存放最近未被访问过的内存页面。其中,若活跃链表中的内存页面最近未被访问过,则会被移动到非活跃链表中,之后,电子设备可以从非活跃链表中进行内存回收,或者再将内存页面再移动到交换分区中。在这种方式下,对于进程在后台运行过程中所访问过的内存页面则可以一直保持在活跃链表中,而不移动到非活跃链表中,从而保持在后台运行的进程所访问的内存页面不会被回收或者被移动到交换分区中。
可选的,在确定需要从活跃链表中移动到非活跃链表中的待转移内存页面后,可以从待转移内存页面中进一步的筛选出后台运行的进程所访问的内存页面,然后将后台运行的进程所访问的内存页面以外的内存页面移动到非活跃链表中,而保持后台运行的进程所访问的内存页面继续保留在活跃链表中。
示例性的,在活跃链表中存放有内存页面P1、内存页面P2、内存页面P3、内存页面P4、内存页面P5以及内存页面P6。其中,所确定的待转移内存页面包括内存页面P3、内存页面P4、内存页面P5以及内存页面P6,其中,若内存页面P3以及内存页面P4为进程在后台运行时所访问的内存页面,那么则会将内存页面P3以及内存页面P4继续保留在活跃链表中,而将内存页面P5以及内存页面P6移动到非活跃链表中,以便进行回收或者移动到交换分区中。
作为另一种方式,可以在活跃链表和非活跃链表之外新建一个保留链表。在这种方式下,在确定需要从活跃链表中移动到非活跃链表中的待转移内存页面后,可以从待转移内存页面中进一步的筛选出后台运行的进程所访问的内存页面。其中,将后台运行的进程所访问的内存页面以外的内存页面移动到非活跃链表中,而将后台运行的进程所访问的内存页面移动到保留链表中。其中,保留链表中的内存页面在对应的进程被关闭之前都不会进行回收或者被移动到交换分区。
示例性的,在活跃链表中存放有内存页面P1、内存页面P2、内存页面P3、内存页面P4、内存页面P5以及内存页面P6。其中,所确定的待转移内存页面包括内存页面P3、内存页面P4、内存页面P5以及内存页面P6,其中,若内存页面P3以及内存页面P4为进程在后台运行时所访问的内存页面,那么则会将内存页面P3以及内存页面P4移动到保留链表中,而将内存页面P5以及内存页面P6移动到非活跃链表中,以便进行回收或者移动到交换分区中。其中,在内存页面P3以及内存页面P4对应的进程被关闭后,内存页面P3以及内存页面P4则会被移动到非活跃链表中。
需要说明的是,在本申请实施例中,也可以通过表的方式来存储进程在后台运行阶段所访问的内存页面。其中,存储进程在后台运行阶段所访问的内存页面的表可以为后台表。在后台表中,可以记录有进程在后台运行阶段所访问的内存页面的虚拟地址。示例性的,后台表的样式可以如下所示:
地址项 | 优先级 |
虚拟地址D6 | 5 |
虚拟地址D7 | 4 |
虚拟地址D8 | 0 |
如上表所示,在后台表中设置有地址项和优先级。例如,虚拟地址D6对应的优先级为5,虚拟地址D7对应的优先级为4,虚拟地址D8对应的优先级为0。其中,优先级越高那么对应的虚拟地址所对应的内存页面被访问的频率也就越高。对应的,优先级越低那么对应的虚拟地址所对应的内存页面被访问的频率也就越低。在这种情况下,可以在优先级满足移除条件时,则可以将满足移除条件的优先级对应的虚拟地址从后台表中移除。可以理解为,对于被移除的虚拟地址所对应的内存页面则会被回收或者移动到交换分区。
S220:对启动信息中所记录的内存页面进行解压,将解压后的内存页面加载到内存中的交换缓存中。
需要说明的是,在本实施例中启动信息中所记录的内存页面所移动到的交换分区可以为zram swap。在这种情况下,内存页面在被移动到交换缓存之前会被压缩后存放到zram swap。在这种情况下,在获取到启动信息中所记录的内存页面后,会先进行解压,将解压后的内存页面加载到内存中的交换缓存中。
其中,如前述实施例所示,在本申请实施例中交换分区除了可以为zram swap外,还可以为flash swap。在这种情况下,将内存分页移动到交换分区时,可以选择将内存页面选择移动到zram swap,也可以选择将内存页面移动到flash swap。对应的,在需要将移动到交换分区的内存页面加载到交换缓存时,则可以先检测所要加载的内存页面是被移动到哪个分区,进而对应有不同的加载方式。作为一种方式,电子设备可以检测启动信息中所记录的内存页面的存储方式,若启动信息中所记录的内存页面为压缩后进行存储(例如,检测到启动信息中所记录的内存页面为移动到zram swap),则执行对启动信息中所记录的内存页面进行解压,将解压后的内存页面加载到内存中的交换缓存中。
S230:若在启动的过程中触发缺页中断,从交换缓存中获取缺页中断对应的内存页面。
本实施例提供的一种内存页面处理方法,从而通过上述方式使得在进程的启动的过程中有触发缺页中断的情况下,可以直接从内存中的交换缓存中获取缺页中断对应的内存页面,而不用在触发缺页中断时再从交换缓存以外的存储区域先读取缺页中断对应的内存页面到交换缓存中,进而提升了触发缺页中断时获取到对应内存页面的效率,进而也就提升了进程进行启动的效率。再者,在本实施例中,在缺页中断对应的内存页面会被压缩后进行存储的情况下,可以在获取启动信息后预先对被压缩后的内存页面进行解压后,再加载到内存中的交换缓存中,进而进一步的提升了的获取得到内存页面的效率。
请参阅图7,本申请实施例提供的一种内存页面处理方法,方法包括:
S310:响应于触发进程进行启动,获取进程对应的启动信息,启动信息中记录有进程在历史启动过程中访问过的内存页面。
S320:将启动信息中所记录的内存页面从磁盘中加载到内存中的交换缓存中。
需要说明的是,在本实施例中启动信息中所记录的内存页面所移动到的交换分区可以为设置在磁盘中的flash swap。在这种情况下,在获取到启动信息后,则会从磁盘中的flash swap中获取启动信息所记录的内存页面,并将获取的内存页面加载到内存中的交换缓存中。
其中,如前述实施例所示,在本申请实施例中交换分区除了可以为zram swap外,还可以为flash swap。在这种情况下,将内存分页移动到交换分区时,可以选择将内存页面选择移动到zram swap,也可以选择将内存页面移动到flash swap。对应的,在需要将移动到交换分区的内存页面加载到交换缓存时,则可以先检测所要加载的内存页面是被移动到哪个分区,进而对应有不同的加载方式。作为一种方式,电子设备可以检测启动信息中所记录的内存页面的存储方式;若启动信息中所记录的内存页面存储在磁盘中,执行将启动信息中所记录的内存页面从磁盘中加载到内存中的交换缓存中。
S330:若在启动的过程中触发缺页中断,从交换缓存中获取缺页中断对应的内存页面。
需要说明的是,如前述内容所示,在将内存页面移动到交换分区的时候,可以选择将内存页面移动到zram swap中,也可以选择将内存页面移动到flash swap中。在这种情况下,在本申请实施例中,可以有多种方式来确定内存页面所移动到的位置。
作为一种方式,可以检测电子设备中所配置的交换分区的类别。需要说明的是,不同的电子设备所支持的配置的交换分区的类别可能会有所不同。例如,对于,对于部分电子设备中可以同时配置有zram swap和flash swap。而对于部分电子设备可能仅配置有zramswap或者flash swap。
可选的,可以在检测到电子设备中仅配置有zram swap的情况下,将确定移动到交换分区的内存页面移动到zram swap中。可以在检测到电子设备中仅配置有flash swap的情况下,将确定移动到交换分区的内存页面移动到flash swap中。
可选的,可以在检测到电子设备中配置有zram swap和flash swap的情况下,根据所配置的选择逻辑从zram swap和flash swap中选择一个区域来转移内存页面。例如,作为一种方式,可以根据zram swap和flash swap各自的剩余存储空间来进行选择。例如,在确定zram swap的剩余存储空间大于flash swap的剩余存储空间的情况下,则可以选择将需要转移的内存页面移动到zram swap。再例如,在确定zram swap的剩余存储空间小于flashswap的剩余存储空间的情况下,则可以选择将需要转移的内存页面移动到flash swap。
再者,在电子设备中同时配置有zram swap和flash swap的情况下,可以根据当前所运行的应用程序来确定内存页面的转移目的位置。可选的,可以根据当前在运行的应用程序的数量来确定内存页面的转移目的位置。具体地,可以在当前在运行的应用程序的数量大于数量阈值的情况下,将需要移动到交换分区的内存页面优先移动到flash swap,对应的,在当前在运行的应用程序的数量不大于数量阈值的情况下,将需要移动到交换分区的内存页面优先移动到zram swap。
需要说明的是,在当前正在运行的应用程序的数量较多的情况下,那么则需要占用较多的内存,在这种情况下,多个应用程序可能都会对应有需要移动到交换分区的内存页面。因此,在当前在运行的应用程序的数量大于数量阈值的情况下,将需要移动到交换分区的内存页面优先移动到flash swap中可以使得内存空间更多的用于应用程序的运行,以便避免因为设立交换分区而降低电子设备的运行流畅度。在当前在运行的应用程序的数量不大于数量阈值的情况下,将需要移动到交换分区的内存页面优先移动到zram swap中可以使得后续再需要将内存页面从交换分区再加载到进程对应的内存区域时,可以更加高效。其中,需要说明的是,优先移动到flash swap可以理解为在flash swap有剩余存储空间的情况下,则先移动到flash swap,在flash swap中无剩余存储空间的情况下,则将内存页面直接移动到zram swap。对应的,优先移动到zram swap可以理解为在zram swap有剩余存储空间的情况下,则先移动到zram swap,在zram swap中无剩余存储空间的情况下,则将内存页面直接移动到flash swap。
再者,对于电子设备而言,可能会包括有多个处理器。在这种情况下,在将启动信息中所记录的内存页面加载到交换缓存的过程中,可以通过多个处理器并行运行以将启动信息中所记录的内存页面加载到交换缓存中。通过这种方式,可以有效提升内存页面的加载效率。
本实施例提供的一种内存页面处理方法,从而通过上述方式使得在进程的启动的过程中有触发缺页中断的情况下,可以直接从内存中的交换缓存中获取缺页中断对应的内存页面,而不用在触发缺页中断时再从交换缓存以外的存储区域先读取缺页中断对应的内存页面到交换缓存中,进而提升了触发缺页中断时获取到对应内存页面的效率,进而也就提升了进程进行启动的效率。并且,在本实施例中,在缺页中断所对应的内存页面在进程不使用时被移动到磁盘的情况下,可以通过获取的启动信息在进程被触发启动时,就提前将磁盘中的内存页面移动到内存的交换缓存中,进而避免在触发缺页中断时再实时从磁盘中读取缺页中断对应的内存页面,以提升完成缺页中断的效率。
下面再通过图8对本申请实施例提供的内存页面处理方法进行下说明。
在通过点击应用程序的图标而触发应用程序(进程)开始进行热启动时,还会同步的读取启动表。通过启动表获取应用程序热启动所需要的内存页面,然后将应用程序热启动所需要的内存页面加载到交换缓存中。在应用程序的热启动的过程中,若触发了缺页中断则可以直接从交换缓存中读取热启动所需要的内存页面,直到完成应用的热启动。
请参阅图9,本申请实施例提供的一种内存页面处理装置400,装置400包括:
信息获取单元410,用于响应于触发进程进行启动,获取进程对应的启动信息,启动信息中记录有进程在历史启动过程中访问过的内存页面。
页面加载单元420,用于将启动信息中所记录的内存页面加载到内存中的交换缓存中。
缺页处理单元430,用于若在启动的过程中触发缺页中断,从交换缓存中获取缺页中断对应的内存页面。
作为一种方式,页面加载单元420,具体用于对启动信息中所记录的内存页面进行解压,将解压后的内存页面加载到内存中的交换缓存中。可选的,页面加载单元420,具体用于检测启动信息中所记录的内存页面的存储方式;若启动信息中所记录的内存页面为压缩后进行存储,执行对启动信息中所记录的内存页面进行解压,将解压后的内存页面加载到内存中的交换缓存中。
作为一种方式,页面加载单元420,具体用于将启动信息中所记录的内存页面从磁盘中加载到内存中的交换缓存中。可选的,页面加载单元420,具体用于检测启动信息中所记录的内存页面的存储方式;若启动信息中所记录的内存页面存储在磁盘中,执行将启动信息中所记录的内存页面从磁盘中加载到内存中的交换缓存中。
作为一种方式,启动信息为启动表,启动表中记录有进程在历史启动过程中访问过的内存页面的虚拟地址,信息获取单元410,还用于从启动表中获取目标虚拟地址,目标虚拟地址对应的内存页面在指定时长内未被使用过;将目标虚拟地址从启动表中移除。
作为一种方式,信息获取单元410,还用于响应于进程进行热启动,获取进程对应的启动信息,热启动表征进程从后台切换到前台进行运行。可选的,信息获取单元410,还具体用于获取进程在后台运行阶段所使用的内存页面;保持在后台运行阶段所使用的内存页面,在进程处于后台运行阶段不进行内存回收。
作为一种方式,信息获取单元410,还用于获取进程在启动过程中进行参数配置时所使用的内存页面;若在启动过程中进行参数配置时所使用的内存页面中,存在内页面在指定时长内未被进程访问,将在指定时长内未被进程访问的内存页面移动到磁盘中。
本实施例提供的一种内存页面处理装置,响应于触发进程进行启动,获取记录有该进程在历史启动过程中访问过的内存页面的启动信息,将启动信息中所记录的内存页面加载到内存中的交换缓存中,若在启动的过程中触发缺页中断,从所述交换缓存中获取所述缺页中断对应的内存页面。从而通过上述方式使得在进程的启动的过程中有触发缺页中断的情况下,可以直接从内存中的交换缓存中获取缺页中断对应的内存页面,而不用在触发缺页中断时再从交换缓存以外的存储区域先读取缺页中断对应的内存页面到交换缓存中,进而提升了触发缺页中断时获取到对应内存页面的效率,进而也就提升了进程进行启动的效率。
需要说明的是,本申请中装置实施例与前述方法实施例是相互对应的,装置实施例中具体的原理可以参见前述方法实施例中的内容,此处不再赘述。
下面将结合图10对本申请提供的一种电子设备进行说明。
请参阅图10,基于上述的音频处理方法、装置,本申请实施例还提供的另一种可以执行前述音频处理方法的电子设备200。电子设备200包括相互耦合的一个或多个(图中仅示出一个)处理器202、存储器204、网络模块206、传感器模块208以及音频采集装置210。其中,该存储器204中存储有可以执行前述实施例中内容的程序,而处理器202可以执行该存储器204中存储的程序。
其中,处理器202可以包括一个或者多个处理核。处理器202利用各种接口和线路连接整个电子设备200内的各个部分,通过运行或执行存储在存储器204内的指令、程序、代码集或指令集,以及调用存储在存储器204内的数据,执行电子设备200的各种功能和处理数据。可选地,处理器202可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。处理器202可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器202中,单独通过一块通信芯片进行实现。
存储器204可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器204可用于存储指令、程序、代码、代码集或指令集。存储器204可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。
所述网络模块206用于实现电子设备200与其他设备之间的信息交互,例如,传输设备控制指令、操纵请求指令以及状态信息获取指令等。而当电子设备200具体为不同的设备时,其对应的网络模块206可能会有不同。
传感器模块208可以包括至少一种传感器。具体地,传感器模块208可包括但并不限于:光传感器、运动传感器、压力传感器、红外热传感器、距离传感器、加速度传感器、以及其他传感器。
其中,压力传感器可以检测由按压在电子设备200产生的压力的传感器。即,压力传感器检测由用户和电子设备之间的接触或按压产生的压力,例如由用户的耳朵与移动终端之间的接触或按压产生的压力。因此,压力传感器可以用来确定在用户与电子设备200之间是否发生了接触或者按压,以及压力的大小。
其中,加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备200姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等。另外,电子设备200还可配置陀螺仪、气压计、湿度计、温度计等其他传感器,在此不再赘述。
音频采集装置210,用于进行音频信号采集。可选的,音频采集装置210包括有多个音频采集器件。该音频采集器件可以为麦克风。例如,在一种方式中,音频采集装置210可以包括两个麦克风,在这种方式中,其中一个麦克风可以对应有一个模数转换器,另一个麦克风可以对应有两个不同模拟增益的模数转换器。在另一种方式中,音频采集装置210可以包括有三个麦克风。在这种方式下,其中两个麦克风(例如,主麦克风和副麦克风)可以各自对应有一个模数转换器,另一个麦克风(例如,摄像头麦克风)可以对应有两个不同模拟增益的模数转换器。
作为一种方式,电子设备200的网络模块为射频模块,该射频模块用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯。所述射频模块可包括各种现有的用于执行这些功能的电路元件,例如,天线、射频收发器、数字信号处理器、加密/解密芯片、用户身份模块(SIM)卡、存储器等等。例如,该射频模块可以通过发送或者接收的电磁波与外部设备进行信息交互,进而接收外部设备所发送的音频信号。
再者,电子设备200还可以包括有图像采集器件以进行图像采集。例如,可以通过该图像采集器件拍摄视频、静态图片或者动态图片。
请参考图11,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质800中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质800可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质800包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质800具有执行上述方法中的任何方法步骤的程序代码810的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码810可以例如以适当形式进行压缩。
本申请提供的一种内存页面处理方法、装置以及电子设备,响应于触发进程进行启动,获取记录有该进程在历史启动过程中访问过的内存页面的启动信息,将启动信息中所记录的内存页面加载到内存中的交换缓存中,若在启动的过程中触发缺页中断,从所述交换缓存中获取所述缺页中断对应的内存页面。从而通过上述方式使得在进程的启动的过程中有触发缺页中断的情况下,可以直接从内存中的交换缓存中获取缺页中断对应的内存页面,而不用在触发缺页中断时再从交换缓存以外的存储区域先读取缺页中断对应的内存页面到交换缓存中,进而提升了触发缺页中断时获取到对应内存页面的效率,进而也就提升了进程进行启动的效率。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (12)
1.一种内存页面处理方法,其特征在于,所述方法包括:
响应于触发进程进行启动,获取所述进程对应的启动信息,所述启动信息中记录有所述进程在历史启动过程中访问过的内存页面;
将所述启动信息中所记录的内存页面加载到内存中的交换缓存中;
若在所述启动的过程中触发缺页中断,从所述交换缓存中获取所述缺页中断对应的内存页面。
2.根据权利要求1所述的方法,其特征在于,所述将所述启动信息中所记录的内存页面加载到内存中的交换缓存中,包括:
对所述启动信息中所记录的内存页面进行解压,将解压后的内存页面加载到内存中的交换缓存中。
3.根据权利要求2所述的方法,其特征在于,所述对所述启动信息中所记录的内存页面进行解压,将解压后的内存页面加载到内存中的交换缓存中之前还包括:
检测所述启动信息中所记录的内存页面的存储方式;
若所述启动信息中所记录的内存页面为压缩后进行存储,执行所述对所述启动信息中所记录的内存页面进行解压,将解压后的内存页面加载到内存中的交换缓存中。
4.根据权利要求1所述的方法,其特征在于,所述将所述启动信息中所记录的内存页面加载到内存中的交换缓存中,包括:
将所述启动信息中所记录的内存页面从磁盘中加载到内存中的交换缓存中。
5.根据权利要求4所述的方法,其特征在于,所述将所述启动信息中所记录的内存页面从磁盘中加载到内存中的交换缓存中之前还包括:
检测所述启动信息中所记录的内存页面的存储方式;
若所述启动信息中所记录的内存页面存储在磁盘中,执行所述将所述启动信息中所记录的内存页面从磁盘中加载到内存中的交换缓存中。
6.根据权利要求1所述的方法,其特征在于,所述启动信息为启动表,所述启动表中记录有所述进程在历史启动过程中访问过的内存页面的虚拟地址,所述方法还包括:
从所述启动表中获取目标虚拟地址,所述目标虚拟地址对应的内存页面在指定时长内未被使用过;
将所述目标虚拟地址从启动表中移除。
7.根据权利要求1所述的方法,其特征在于,响应于触发进程进行启动,获取所述进程对应的启动信息,包括:
响应于进程进行热启动,获取所述进程对应的启动信息,所述热启动表征所述进程从后台切换到前台进行运行。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
获取所述进程在后台运行阶段所使用的内存页面;
保持所述在后台运行阶段所使用的内存页面,在所述进程处于后台运行阶段不进行内存回收。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述进程在启动过程中进行参数配置时所使用的内存页面;
若所述在启动过程中进行参数配置时所使用的内存页面中,存在内页面在指定时长内未被所述进程访问,将所述在指定时长内未被所述进程访问的内存页面移动到磁盘中。
10.一种内存页面处理装置,其特征在于,所述装置包括:
信息获取单元,用于响应于触发进程进行启动,获取所述进程对应的启动信息,所述启动信息中记录有所述进程在历史启动过程中访问过的内存页面;
页面加载单元,用于将所述启动信息中所记录的内存页面加载到内存中的交换缓存中;
缺页处理单元,用于若在所述启动的过程中触发缺页中断,从所述交换缓存中获取所述缺页中断对应的内存页面。
11.一种电子设备,其特征在于,包括一个或多个处理器以及存储器;一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行权利要求1-9任一所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码被处理器运行时执行权利要求1-9任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211275420.1A CN115629875A (zh) | 2022-10-18 | 2022-10-18 | 内存页面处理方法、装置以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211275420.1A CN115629875A (zh) | 2022-10-18 | 2022-10-18 | 内存页面处理方法、装置以及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115629875A true CN115629875A (zh) | 2023-01-20 |
Family
ID=84906533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211275420.1A Pending CN115629875A (zh) | 2022-10-18 | 2022-10-18 | 内存页面处理方法、装置以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115629875A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115858046A (zh) * | 2023-02-28 | 2023-03-28 | 荣耀终端有限公司 | 一种预加载内存页的方法、电子设备及芯片系统 |
-
2022
- 2022-10-18 CN CN202211275420.1A patent/CN115629875A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115858046A (zh) * | 2023-02-28 | 2023-03-28 | 荣耀终端有限公司 | 一种预加载内存页的方法、电子设备及芯片系统 |
CN115858046B (zh) * | 2023-02-28 | 2023-07-21 | 荣耀终端有限公司 | 一种预加载内存页的方法、电子设备及芯片系统 |
WO2024179104A1 (zh) * | 2023-02-28 | 2024-09-06 | 荣耀终端有限公司 | 一种预加载内存页的方法、电子设备及芯片系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9116631B2 (en) | Mobile device and method of managing data using swap thereof | |
US20230135295A1 (en) | Electronic device which prefetches application and method therefor | |
CN109033247B (zh) | 一种应用程序的管理方法、装置、存储介质及终端 | |
CN105138376A (zh) | 混合模式应用、其网页资源升级方法、移动终端以及系统 | |
US20090100242A1 (en) | Data Processing Method for Use in Embedded System | |
CN115629875A (zh) | 内存页面处理方法、装置以及电子设备 | |
WO2024179104A1 (zh) | 一种预加载内存页的方法、电子设备及芯片系统 | |
CN113590509A (zh) | 一种页交换的方法、存储系统和电子设备 | |
CN113885787B (zh) | 一种存储器管理方法及电子设备 | |
CN108762838B (zh) | 应用程序预加载方法、装置、存储介质及终端 | |
CN113900519A (zh) | 注视点获取方法、装置以及电子设备 | |
CN112925654B (zh) | 图片解码方法、装置、计算机设备及存储介质 | |
CN113138852A (zh) | 资源加载方法、装置、芯片以及电子设备 | |
CN113163255A (zh) | 视频播放方法、装置、终端及存储介质 | |
CN115858047A (zh) | 一种预加载文件页的方法、电子设备及芯片系统 | |
US11720624B2 (en) | Storage device, electronic system including storage device, and control program for storage device | |
KR100532417B1 (ko) | 디지털 신호 처리장치의 저전력 소비형 캐시 메모리 장치및 이에 대한 제어방법 | |
CN114637946A (zh) | 资源数据的处理方法、装置及电子设备 | |
US11237741B2 (en) | Electronic device and control method for controlling memory | |
CN115421908A (zh) | 内存分配方法、装置以及电子设备 | |
CN112292660B (zh) | 一种调度存储器中数据的方法、数据调度设备及系统 | |
CN115422097A (zh) | 信息处理方法、装置以及电子设备 | |
CN115640237A (zh) | 内存回收方法、装置以及电子设备 | |
CN109978914B (zh) | 人脸追踪方法及装置 | |
CN115543937B (zh) | 文件碎片整理方法及电子设备 |
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 |