文件页面预读方法、装置、终端及存储介质
文献发布时间:2023-06-19 09:30:39
技术领域
本申请属于终端技术领域,具体而言,涉及一种文件页面预读方法、装置、终端及存储介质。
背景技术
随着终端技术的不断发展,终端支持的操作系统也迅速发展。当用户进行文件页面的写操作时,操作系统可以在对文件的一个页面完成写操作之后,需要等待下一个页面从操作系统的磁盘中读入到操作系统的内存系统资源中,操作系统才可以对下一个页面的进行写操作,直至对文件的所有页面完成写操作。
发明内容
本申请实施例提供一种文件页面预读方法、装置、终端及存储介质,可以提高目标文件的读写效率。本技术方案包括:
第一方面,本申请实施例提供一种文件页面预读方法,所述方法包括:
获取操作系统中目标文件的页面读写顺序,所述目标文件包括多个页面;
在所述页面读写顺序为顺序读写时,获取所述操作系统的系统资源信息;
在所述系统资源信息指示所述操作系统的系统资源满足资源阈值时,将所述多个页面预读至所述操作系统的内存系统资源中,在第一页面完成写操作时从所述内存系统资源中获取第二页面;
其中,所述第一页面和所述第二页面为所述多个页面中相邻的两个页面。
第二方面,本申请实施例提供一种文件页面预读装置,所述装置包括:
顺序获取单元,用于获取操作系统中目标文件的页面读写顺序,所述目标文件包括多个页面;
信息获取单元,用于在所述页面读写顺序为顺序读写时,获取所述操作系统的系统资源信息;
页面预读单元,用于在所述系统资源信息指示所述操作系统的系统资源满足资源阈值时,将所述多个页面预读至所述操作系统的内存系统资源中,在第一页面完成写操作时从所述内存系统资源中获取第二页面;
其中,所述第一页面和所述第二页面为所述多个页面中相邻的两个页面。
第三方面,本申请实施例提供一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一项所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,其中,上述计算机程序产品包括存储计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
在本申请一个或多个实施例中,在操作系统中目标文件的页面读写顺序为顺序读写时,可以获取操作系统的系统资源信息,在系统资源信息指示操作系统的系统资源满足资源阈值时,可以将目标文件的多个页面预读至操作系统的内存系统资源中。因此在第一页面完成写操作时,可以直接从内存系统资源中获取与第一页面相邻的第二页面,不需要在第一页面完成写操作时,等待操作系统将第二页面读取至操作系统的内存系统资源中,可以减少第二页面读取至内存系统资源的等待时间,减少页面的获取时间,可以提高目标文件的页面读写速度,进而可以提高目标文件的读写效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出应用于本申请实施例的文件页面预读方法或者文件页面预读装置的应用场景示意图;
图2示出本申请实施例的一种文件页面预读方法的流程示意图;
图3示出本申请实施例的一种页面读写顺序的举例示意图;
图4示出本申请实施例的一种文件页面预读方法的流程示意图;
图5示出本申请实施例的一种文件页面预读方法的流程示意图;
图6示出本申请实施例的一种文件页面预读方法的流程示意图;
图7示出本申请实施例的一种文件页面预读方法的流程示意图;
图8示出本申请实施例的一种文件页面预读方法的流程示意图;
图9示出本申请实施例的一种文件页面预读装置的结构示意图;
图10示出本申请实施例的一种终端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅为本申请实施例的一部分,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
在相关技术中,图1示出应用于本申请实施例的文件页面预读方法或者文件页面预读装置的应用场景示意图。在操作系统10写文件时,操作系统10可以将该文件从磁盘100中读入到内存系统资源200中,对内存系统资源200中的数据进行修改后,再将该数据写到磁盘100中,以便完成对一个文件的写操作。该文件读入内存系统资源200例如可以由多个页面组成。操作系统10在触发写操作时,只能针对一个页面进行写操作。因此当该文件包括多个页面时,操作系统10可以从磁盘100中读取一个页面至内存系统资源200中,在该页面完成写操作时,操作系统10需要将第二个页面从磁盘100读取至内存系统资源200时,才可以对第二个页面进行写操作。因此在文件页面读写顺序为顺序读写时,操作系统10也会在上一个页面完成写操作时,等到下一个页面从磁盘100读取至内存系统资源200中,才可以对下一个页面进行写操作,因此会增加页面的读取时间,降低文件的页面读写速度,降低了文件的读写效率。本申请实施例提供一种文件页面预读方法,可以提高目标文件的读写效率。
下面将结合附图2-附图8,对本申请实施例提供的文件页面预读方法进行详细介绍。附图2-附图8所示实施例的执行主体例如可以为终端。
请参见图2,为本申请实施例提供了一种文件页面预读方法的流程示意图。如图2所示,本申请实施例的所述方法可以包括以下步骤S101-步骤S103。
S101,获取操作系统中目标文件的页面读写顺序,目标文件包括多个页面。
根据一些实施例,本申请实施例的文件页面预读方法适用于目标文件的页面写操作是通过文件缓存机制完成的。操作系统(Operating System,OS)是指终端中可以用于执行管理与配置内存、确定系统资源供需的优先次序等功能的系统。该系统包括但不限于Linux操作系统、Windows操作系统等。本申请实施例的操作系统例如可以是Linux操作系统。Linux操作系统是基于UNIX操作系统发展而来的一种克隆系统,Linux操作系统采用文件缓存机制进行文件的写操作时。
易于理解的是,目标文件是指操作系统写的文件,并不特指某一固定文件。例如,当终端中的操作系统对A文件进行写操作时,A文件可以是目标文件。当终端中的操作系统对B文件进行写操作时,B文件可以是目标文件。该目标文件包括多个页面,即该目标文件包括至少两个页面。不同的目标文件可以包括不同数量的页面。例如该目标文件可以是A文件,该A文件例如可以包括A1页面、A2页面、A3页面、A4页面、A5页面、A6页面和A7页面。例如该目标文件可以是B文件,该A文件例如可以包括B1页面、B2页面、B3页面和B4页面。
根据一些实施例,当终端进行目标文件的写操作时,终端可以获取操作系统中目标文件的页面读写顺序。其中,页面读写顺序包括但不限于顺序读写、乱序读写,其中顺序读写包括但不限于从目标文件的第一个页面顺序读写至目标文件的最后一个页面的顺序、从目标文件的最后一个页面逆序读写至目标文件的第一个页面的顺序等。
易于理解的是,Linux操作系统中的文件包括A文件、B文件、C文件和D文件时,目标文件例如可以是A文件,该A文件例如可以包括A1页面、A2页面、A3页面、A4页面、A5页面、A6页面和A7页面。当终端对A文件进行写操作时,终端可以获取A文件的页面读写顺序。
S102,在页面读写顺序为顺序读写时,获取操作系统的系统资源信息。
根据一些实施例,顺序读写包括但不限于从目标文件的第一个页面顺序读写至目标文件的最后一个页面的顺序、从目标文件的最后一个页面逆序读写至目标文件的第一个页面的顺序等。如图3所示,目标文件例如可以是A文件,该A文件例如可以包括A1页面、A2页面、A3页面、A4页面、A5页面、A6页面和A7页面时,页面读写顺序为顺序读写包括但不限于从A1页面、A2页面、A3页面、A4页面、A5页面、A6页面读写至A7页面的页面读写顺序1和从A7页面、A6页面、A5页面、A4页面、A3页面、A2页面读取至A1页面的页面读写顺序2等。
易于理解的是,系统资源信息包括但不限于操作系统中的资源配置信息和操作系统运行的资源信息。例如系统资源信息包括但不限于操作系统的剩余空闲内存、操作系统的可用内存、操作系统的内存回收压力值和操作系统的IO压力值等。
根据一些实施例,当终端对目标文件进行写操作时,终端可以获取操作系统中目标文件的页面读写顺序。当终端获取到的页面读写顺序为顺序读写时,终端可以获取操作系统的系统资源信息。例如,当终端对A文件进行写操作时,终端可以获取A文件的页面读写顺序。例如终端获取到Linux操作系统当前写的A文件的第一页面为目标文件的最后一个页面时,终端可以确定A文件的页面读写顺序为顺序读写,终端可以获取Linux操作系统的系统资源信息。
S103,在系统资源信息指示操作系统的系统资源满足资源阈值时,将多个页面预读至操作系统的内存系统资源中,在第一页面完成写操作时从内存系统资源中获取第二页面;其中,第一页面和第二页面为多个页面中相邻的两个页面。
根据一些实施例,第一页面是指目标文件中的页面,该第一页面可以是目标文件中的任意页面。第一页面并不特指某一固定页面,例如目标文件发生变化时,第一页面也会相应变化。第二页面可以是目标文件中的页面,第二页面和第一页面为目标文件的多个页面中相邻的两个页面。例如目标文件为A文件时,第一页面可以是A1页面,第二页面可以是A2页面。第一页面还可以是A7页面,第二页面可以是A6页面。第一页面还可以是A3页面,第二页面可以是A4页面。
易于理解的是,当终端获取到操作系统的系统资源信息时,终端可以判断系统资源信息是否满足资源阈值。当系统资源信息指示操作系统的系统资源满足资源阈值时,终端可以将多个页面预读至操作系统的内存资源中。当终端将目标文件的多个页面预读至操作系统的内存资源中时,终端可以在第一页面完成写操作时从内存系统资源中直接获取第二页面。
根据一些实施例,例如终端获取到Linux操作系统当前写的A文件的第一页面为目标文件的最后一个页面A7页面时,终端可以确定A文件的页面读写顺序为顺序读写,终端可以获取Linux操作系统的系统资源信息。终端获取的Linux操作系统的系统资源信息包括Linux操作系统的剩余空闲内存和可用内存。当终端检测到剩余空闲内存小于第一内存阈值时,终端可以获取可用内存。当终端检测到可用内存大于或者等于第二内存阈值,即该可用内存指示Linux操作系统的系统资源满足资源阈值时,终端可以将A文件的A1页面、A2页面、A3页面、A4页面、A5页面、A6页面和A7页面预读至Linux操作系统的内存资源中。当终端对A文件的A7页面完成写操作时,终端可以直接从Linux系统的内存资源中获取到A6页面。
根据一些实施例,当终端将多个页面预读至操作系统的内存系统资源中时,终端可以将预设页面数量的页面预读至操作系统的内存系统资源中,还可以将目标文件对应的所有页面预读至操作系统的内存系统资源中。例如A文件包括A1页面、A2页面、A3页面、A4页面、A5页面、A6页面和A7页面时,终端当前写的页面为A7页面。终端将多个页面预读至操作系统的内存系统资源中时,终端可以将预设页面数量的页面预读至操作系统的内存系统资源中。例如中可以将A6页面、A5页面、A4页面预读至操作系统的内存系统资源中。在检测到终端当前写的页面为A4页面时,将将A3页面、A2页面、A1页面预读至操作系统的内存系统资源中
在本申请一个或多个实施例中,在操作系统中目标文件的页面读写顺序为顺序读写时,终端可以获取操作系统的系统资源信息,在系统资源信息指示操作系统的系统资源满足资源阈值时,可以将目标文件的多个页面预读至操作系统的内存系统资源中。因此在第一页面完成写操作时,可以直接从内存系统资源中获取与第一页面相邻的第二页面,不需要在第一页面完成写操作时,等待终端的操作系统将第二页面读取至操作系统的内存系统资源中,可以减少页面读取至内存系统资源的等待时间,减少页面的读取时间,提高目标文件的页面读写速度,进而可以提高目标文件的读写效率。
请参见图4,为本申请实施例提供了一种文件页面预读方法的流程示意图。如图4所示,本申请实施例的所述方法可以包括以下步骤S201-步骤S203。
S201,在操作系统当前写的目标文件的第一页面为目标文件的第一个页面时,确定目标文件的页面读写顺序为顺序读写,目标文件包括多个页面。
根据一些实施例,当终端中的操作系统对目标文件进行写操作时,操作系统可以获取操作系统当前写的目标文件的第一页面。其中,目标文件例如可以包括多个页面。其中,第一页面是指目标文件中的页面,并不特指某一固定页面。例如目标文件为A文件,该A文件包括A1页面、A2页面、A3页面、A4页面、A5页面、A6页面和A7页面时,第一页面可以是A7页面,第一页面还可以是A1页面。
易于理解的是,当终端获取到操作系统当前写的目标文件的第一页面时,终端可以判断操作系统当前写的目标文件的第一页面是否为目标文件的第一个页面。当终端判断到当前写的目标文件的第一页面为目标文件的第一个页面时,终端可以确定目标文件的页面读写顺序为顺序读写顺序。其中,终端根据操作系统当前写的目标文件的第一页面确定目标文件的页面读写顺序仅为终端确定目标文件的页面读写顺序的一种方式,本申请实施例的文件页面预读方法还包括其他可实现的确定方式。例如终端在操作系统当前写的目标文件的第一页面为目标文件的最后一个页面时,也可以确定目标文件的页面读写顺序为顺序读写。
根据一些实施例,当Linux操作系统中包括A文件、B文件、C文件和D文件时,目标文件例如可以是A文件。终端中的Linux操作系统获取到当前写的A文件的第一页面例如可以是A1页面。当终端检测到A1页面为A文件的第一个页面时,终端可以确定A文件的读写顺序为顺序读写。
易于理解的是,当终端在对目标文件进行写操作之前,终端可以对目标文件的多个页面进行排序。
根据一些实施例,请参见图5,为本申请实施例提供了一种文件页面预读方法的流程示意图。如图5所示,本申请实施例的所述方法在获取操作系统中目标文件的页面读写顺序还可以包括以下步骤S301-步骤S302。S301,获取操作系统当前写的目标文件的第一页面,并基于第一页面获取操作系统上一个写的第三页面;S302,在第一页面和第三页面在目标文件的多个页面中为相邻页面时,确定目标文件的页面读写顺序为顺序读写。
根据一些实施例,当终端对目标文件进行写操作时,终端可以获取操作系统当前写的目标文件的第一页面。其中,目标文件例如可以包括多个页面。其中,第一页面是指目标文件中的页面,并不特指某一固定页面。例如目标文件为A文件,该A文件包括A1页面、A2页面、A3页面、A4页面、A5页面、A6页面和A7页面时,第一页面可以是A1页面,第一页面还可以是A7页面。
易于理解的是,当终端获取到操作系统当前写的目标文件的第一页面时,终端可以基于第一页面,获取操作系统上一个写的第三页面。其中,第三页面为目标文件中的页面,是指操作系统在写第一页面时的上一个写的页面。例如目标文件为A文件,该A文件包括A1页面、A2页面、A3页面、A4页面、A5页面、A6页面和A7页面时,操作系统在写完A2页面,当前写的页面为A3页面时,操作系统获取到的第一页面例如可以是A3页面,第三页面例如可以是A2页面。
根据一些实施例,当终端获取到操作系统当前写的目标文件的第一页面,并基于第一页面获取操作系统上一个写的第三页面时,终端可以判断第一页面和第三页面在目标文件的多个页面中是否为相邻页面。当终端检测到第一页面和第三页面在目标文件的多个页面中为相邻页面时,终端可以确定目标文件的页面读写顺序为顺序读写。终端基于第一页面和第三页面确定页面读写顺序,可以提高页面读写顺序确定的准确性,可以提高文件页面预读的准确性,提高文件页面的读写效率。
易于理解的是,目标文件例如为A文件,该A文件包括A1页面、A2页面、A3页面、A4页面、A5页面、A6页面和A7页面,且A文件的页面顺序为A1页面到A7页面时,终端获取到的第一页面例如可以是A6页面,终端基于第一页面获取到的第三页面例如可以是A5页面。当终端检测到第一页面A6页面和第三页面A5页面在目标文件的多个页面中为相邻页面时,终端确定目标文件的页面读写顺序为顺序读写。
根据一些实施例,目标文件例如为A文件,该A文件包括A1页面、A2页面、A3页面、A4页面、A5页面、A6页面和A7页面,且A文件的页面顺序为A1页面到A7页面时,终端获取到的第一页面例如可以是A6页面,终端基于第一页面获取到的第三页面例如可以是A7页面。当终端检测到第一页面A6页面和第三页面A7页面在目标文件的多个页面中为相邻页面时,终端确定目标文件的页面读写顺序为顺序读写。
可选的,当终端获取到的第一页面例如可以是A2页面,终端基于第一页面获取到的第三页面例如可以是A5页面。当终端检测到第一页面A2页面和第三页面A5页面在目标文件的多个页面中不为相邻页面时,确定目标文件的页面读写顺序不为顺序读写。
S202,在页面读写顺序为顺序读写时,获取操作系统的剩余空闲内存和输入/输出IO压力值。
根据一些实施例,当终端确定页面读写顺序为顺序读写时,终端可以获取操作系统的系统资源信息。该系统资源信息例如可以是操作系统的剩余空闲内存和输入/输出(Input/Output,IO)压力值。剩余空闲内存是指操作系统中在内存分配结束之后处于空闲状态的内存。IO压力值是指操作系统当前的输入/输出压力值,该压力值可以表示操作系统当前的任务调度情况。
易于理解的是,当终端确定页面读写顺序为顺序读写时,终端获取的操作系统的剩余空闲内存例如可以是100M和IO压力值为30MB/s。
根据一些实施例,请参见图6,为本申请实施例提供了一种文件页面预读方法的流程示意图。如图6所示,本申请实施例的所述方法在获取操作系统的IO压力值可以包括以下步骤S401-步骤S403。S401,获取第二时长内操作系统的IO总量;S402,基于IO总量和第二时长,确定操作系统的IO负载;S403,基于IO负载,确定操作系统的IO压力值。
根据一些实施例,当终端获取操作系统的IO压力值时,终端可以获取第二时长内操作系统的IO总量。该第二时长可以是终端预设的操作时长,还可以是终端基于接收到的针对时长获取指令,确定的第二时长。例如,当终端接收到用户输入到针对操作系统的IO总量获取指令时,终端可以开始记录开始时间点。当终端再次接收到用户输入到针对操作系统的IO总量停止获取指令时,终端可以记录停止时间点。基于开始时间点和停止时间点,终端可以获取到第二时长以及第二时长内的IO总量。
易于理解的是,当终端获取到第二时长和第二时长内的IO总量时,终端可以基于第二时长和第二时长内的IO总量,确定操作系统的IO负载。例如终端可以采用公式(1)计算得到操作系统的IO负载。
IO负载=IO总量/第二时长 (1)
根据一些实施例,当终端基于IO总量和第二时长确定操作系统的IO负载时,终端可以基于IO负载,确定操作系统的IO压力值。其中,IO负载越大,表示操作系统的IO压力值越大。
S203,在剩余空闲内存大于或等于第一内存阈值,且IO压力值小于IO压力阈值时,将多个页面预读至操作系统的内存系统资源中,在第一页面完成写操作时从内存系统资源中获取第二页面;其中,第一页面和第二页面为多个页面中相邻的两个页面。
根据一些实施例,当终端获取到操作系统的剩余空闲内存和IO压力值时,终端可以判断操作系统的剩余空闲内存是否大于或者等于第一内存阈值和IO压力值是否小于IO压力值。其中,第一压力阈值是与剩余空闲内存对应的第一压力阈值,并不特指某一固定阈值,该第一压力阈值可以基于用户的压力阈值设置指令改变。该阈值设置指令包括但不限于语音阈值设置指令、点击阈值设置指令、文字阈值设置指令等。
易于理解的是,当终端判断到剩余空闲内存大于或等于第一内存阈值,且IO压力值小于IO压力阈值时,终端可以将多个页面预读至操作系统的内存系统资源中。当终端将目标文件的多个页面预读至操作系统的内存资源中时,终端可以在第一页面完成写操作时直接从内存系统资源中获取与第一页面相邻的第二页面,不需要等待操作系统将第二页面读取至内存系统资源。
根据一些实施例,当终端判断操作系统的剩余空闲内存是否大于或者等于第一内存阈值和IO压力值是否小于IO压力阈值时,终端可以先判断剩余空闲内存是否大于或等于第一内存阈值,在判断到剩余空闲内存大于或者等于第一内存阈值时再判断IO压力值是否小于压力阈值,因此在剩余空闲内存小于第一内存阈值时,可以不对IO压力值进行判断,可以减少操作系统对系统资源信息的判断步骤,减少页面预读时间。
易于理解的是,当终端判断操作系统的剩余空闲内存是否大于或者等于第一内存阈值和IO压力值是否小于IO压力阈值时,终端可以先判断IO压力值是否小于IO压力阈值,在判断到IO压力值小于IO压力阈值时再判断剩余空闲内存是否大于或等于第一内存阈值,因此在IO压力值小于IO压力阈值时,可以不对剩余空闲内存进行判断,可以减少操作系统对系统资源信息的判断步骤,减少页面预读时间。
可选的,当终端判断操作系统的剩余空闲内存是否大于或者等于第一内存阈值和IO压力值是否小于压力阈值时,终端可以同时直接判断剩余空闲内存是否大于或等于第一内存阈值和IO压力值是否小于压力阈值,可以提高操作系统进行页面预读的方便性。
易于理解的是,当终端判断操作系统的剩余空闲内存是否大于或者等于第一内存阈值和IO压力值是否小于IO压力值时,终端可以先判断剩余空闲内存是否大于或等于第一内存阈值,再判断IO压力值是否小于IO压力值。当终端判断到剩余空闲内存大于或等于第一内存阈值时,终端可以判断IO压力值是否小于IO压力值。当操作系统判断到IO压力值小于IO压力值时,终端可以将多个页面预读至操作系统的内存系统资源中。当终端将目标文件的多个页面预读至操作系统的内存资源中时,终端可以在第一页面完成写操作时直接从内存系统资源中获取第二页面,不需要等待操作系统将第二页面读取至内存系统资源。
在本申请一个或多个实施例中,终端可以在操作系统当前写的目标文件的第一页面为目标文件的第一个页面时,确定目标文件的页面读写顺序为顺序读写,终端直接基于第一页面确定页面读写顺序,可以减少页面读写顺序的确定步骤,可以减少页面预读的步骤,提高文件页面的预读效率。其次,终端在页面读写顺序为顺序读写时,可以获取操作系统的剩余空闲内存和输入/输出IO压力值,并在剩余空闲内存大于或等于第一内存阈值,且IO压力值小于IO压力阈值时,将多个页面预读至操作系统的内存系统资源中,可以减少剩余空闲内存不足或IO压力值过大导致页面预读效率较低的情况,可以提高页面预读的速度,进而可以提高文件页面的效率。
请参见图7,为本申请实施例提供了一种文件页面预读方法的流程示意图。如图7所示,本申请实施例的所述方法可以包括以下步骤S501-步骤S504。
S501,获取操作系统中目标文件的页面读写顺序,目标文件包括多个页面。
具体过程如上所述,此处不再赘述。
S502,在页面读写顺序为顺序读写时,获取操作系统的可用内存,可用内存包括剩余空闲内存和文件缓存内存。
根据一些实施例,当终端确定目标文件的页面读写顺序为顺序读写时,终端可以获取操作系统的可用内存。该可用内存包括剩余空闲内存和文件缓存内存。剩余空闲内存是指操作系统中在内存分配结束之后处于空闲状态的内存。文件缓存内存是指在文件缓存所占用的内存,且在内存紧张时,终端可以进行内存回收的内存。
易于理解的是,终端获取到操作系统当前写的目标文件的第一页面为目标文件的第一个页面时,终端可以确定目标文件的页面读写顺序为顺序读写。例如终端获取到操作系统当前写的目标文件T文件的第一页面T1为目标文件的第一个页面时,终端可以确定T文件的页面读写顺序为顺序读写。此时,终端可以获取操作系统的可用内存。
根据一些实施例,当终端确定目标文件的页面读写顺序为顺序读写时,终端可以先获取操作系统的剩余空闲内存。当终端获取到操作系统的剩余空闲内存时,终端可以判断操作系统的剩余空闲内存是否大于或者等于第一内存阈值。当终端确定操作系统的剩余空闲内存小于第一内存阈值时,终端可以获取操作系统的可用内存。
易于理解的是,当终端确定目标文件T文件的页面读写顺序为顺序读写时,终端可以先获取操作系统的剩余空闲内存,该剩余空闲内存例如可以是100M。当第一内存阈值为200M时,终端可以判断到操作系统的剩余空闲内存100M小于第一内存阈值200M,终端可以获取操作系统的可用内存。该可用内存包括剩余空闲内存和文件缓存内存。
S503,在可用内存大于或等于第二内存阈值时,对可用内存进行内存回收,并获取操作系统的内存回收压力值和操作系统的IO压力值。
根据一些实施例,当终端获取到可用内存时,终端可以判断可用内存是否大于或等于第二内存阈值。当终端判断到可用内存大于或等于第二内存阈值时,终端可以对可用内存进行内存回收,并获取操作系统的内存回收压力值和操作系统的IO压力值。内存回收压力值表示操作系统进行内存回收时的压力值。其中,获取操作系统的IO压力值的方法如上所述,此处不再赘述。
易于理解的是,第二内存阈值是终端针对可用内存设置的内存阈值,并不特指某一固定内存阈值。终端可以基于阈值设置指令设置该第二内存阈值。该第二内存阈值还可以基于目标文件的页面数量进行设置,可以是不同页面数量对应相同的第二内存阈值,还可以是不同页面数量对应不同的第二内存阈值。例如当目标文件的页面数量为50页时,第二内存阈值可以是200M。当目标文件的页面数量为100页时,第二内存阈值可以是300M。
根据一些实施例,第二内存阈值例如可以是300M。当终端获取到可用内存为400M时,终端判断到可用内存400M大于第二内存阈值300M时,终端可以对可用内存进行内存回收,终端可以获取操作系统的内存压力回收值和操作系统的IO压力值。
S504,在内存回收压力值小于回收压力阈值,且IO压力值小于IO压力阈值时,将多个页面预读至操作系统的内存系统资源中,在第一页面完成写操作时从内存系统资源中获取第二页面;其中,第一页面和第二页面为多个页面中相邻的两个页面。
根据一些实施例,当终端获取到操作系统的内存回收压力值和IO压力值时,终端可以判断内存回收压力值是否小于回收压力阈值,且IO压力值是否小于IO压力阈值。在终端判断到内存回收压力值小于回收压力阈值,且IO压力值小于IO压力阈值时,终端可以将多个页面预读至操作系统的内存系统资源中,在第一页面完成写操作时从内存系统资源中获取第二页面;其中,第一页面和第二页面为多个页面中相邻的两个页面。其中,回收压力阈值和IO压力阈值可以基于用户的阈值设置指令设置,还可以操作系统出厂设置的。
易于理解的时,第二内存阈值例如可以是300M。当终端获取到可用内存为400M时,终端判断到可用内存400M大于第二内存阈值300M时,终端可以对可用内存进行内存回收,终端可以获取操作系统的内存压力回收值和操作系统的IO压力值。在终端判断到内存回收压力值小于回收压力阈值,且IO压力值小于IO压力阈值时,终端可以将目标文件T文件的多个页面预读至操作系统的内存系统资源中。
根据一些实施例,当终端判断内存回收压力值是否小于回收压力阈值,且IO压力值是否小于IO压力阈值时,终端可以先判断内存回收压力值是否小于回收压力阈值,在内存回收压力值小于回收压力阈值再判断IO压力值是否小于IO压力阈值,因此在内存回收压力值不小于回收压力阈值时,可以不对IO压力值进行判断,可以减少对系统资源信息的判断步骤,减少页面预读时间。
易于理解的是,当终端判断内存回收压力值是否小于回收压力阈值,且IO压力值是否小于IO压力阈值时,终端可以先判断IO压力值是否小于IO压力阈值,在IO压力值小于IO压力阈值时再判断内存回收压力值是否小于回收压力阈值,因此在IO压力值不小于IO压力阈值时,可以不对内存回收压力值进行判断,可以减少对系统资源信息的判断步骤,减少页面预读时间。
可选的,当终端判断内存回收压力值是否小于回收压力阈值,且IO压力值是否小于IO压力阈值时,终端可以同时直接判断内存回收压力值是否小于回收压力阈值和IO压力值是否小于IO压力阈值,可以提高操作系统进行页面预读的方便性。
根据一些实施例,请参见图8,为本申请实施例提供了一种文件页面预读方法的流程示意图。如图8所示,本申请实施例的所述方法还可以包括以下步骤S601-步骤S603。S601,获取操作系统进行内存回收时的第一时间点和第二时间点,第一时间点为内存回收开始时间点,第二时间点为内存回收开始后每隔第一时长后获取的时间点;S602,基于第一时间点和第二时间点,计算内存回收持续时长;S603,基于内存回收持续时长,确定操作系统的内存回收压力值。
根据一些实施例,当终端获取内存回收压力值时,终端可以在进行内存回收时,获取操作系统进行内存回收时的第一时间点和第二时间点。第一时间点为终端中的操作系统开始进行内存回收的开始时间点,第二时间点为内存回收开始后每隔第一时长后获取的时间点。其中第一时长可以是终端基于用户的时长设置指令设置的,还可以是终端出厂时设置的。
易于理解的是,第一时长例如可以是3秒。当操作系统在12:00:00开始进行内存回收时,第一时间点即为12:00:00。当隔一个第一时长后,终端还在进行内存回收时,第二时间点即为12:00:03。当隔两个第一时长后,终端还在进行内存回收时,第二时间点即为12:00:06。
根据一些实施例,当终端获取到第一时间点和第二时间点时,终端可以计算得到内存回收持续时长。该内存回收持续时长可以是每隔第一时长计算一次,还可以是在内存回收结束时只计算一次内存回收持续时长。例如在内存回收结束时,第二时间点为12:00:06时,终端计算的内存回收持续时长为6秒。
根据一些实施例,当终端计算得到内存回收持续时长时,终端可以基于内存回收持续时长,确定操作系统的内存回收压力值。其中内存回收持续时长越长表示内存回收压力值越大。
根据一些实施例,在操作系统的内存回收完成时,终端可以将内存回收时长重置为预设值。该预设值例如可以是0。操作系统对内存回收时长的重置,可以在获取内存回收时长时,不受上一次计算得到的内存回收时长的影响,因此可以减少预读过程中出现的误判断,提高文件页面的预读效率。
在本申请一个或多个实施例中,终端在页面读写顺序为顺序读写时,可以获取操作系统的可用内存,可用内存包括剩余空闲内存和文件缓存内存,在可用内存大于或等于第二内存阈值时,对可用内存进行内存回收,可以为文件页面预读提供足够的内存系统资源,可以提高文件页面的预读效率。其次,终端在内存回收压力值小于回收压力阈值,且IO压力值小于IO压力阈值时,可以将多个页面预读至操作系统的内存系统资源中,在第一页面完成写操作时可以直接从内存系统资源中获取第二页面,可以减少内存回收压力值过大或IO压力值过大导致页面预读效率较低的情况,可以提高页面预读的速度,进而可以提高文件页面的效率。
下面将结合附图9,对本申请实施例提供的文件页面预读装置进行详细介绍。需要说明的是,附图9所示的文件页面预读装置,用于执行本申请图2-图8所示实施例的方法,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请图2-图8所示的实施例。
请参见图9,其示出本申请实施例的文件页面预读装置的结构示意图。该文件页面预读装置900可以通过软件、硬件或者两者的结合实现成为用户终端的全部或一部分。根据一些实施例,该文件页面预读装置900包括顺序获取单元901、信息获取单元902和页面预读单元903,具体用于:
顺序获取单元901,用于获取操作系统中目标文件的页面读写顺序,目标文件包括多个页面;
信息获取单元902,用于在页面读写顺序为顺序读写时,获取操作系统的系统资源信息;
页面预读单元903,用于在系统资源信息指示操作系统的系统资源满足资源阈值时,将多个页面预读至操作系统的内存系统资源中,在第一页面完成写操作时从内存系统资源中获取第二页面;
其中,第一页面和第二页面为多个页面中相邻的两个页面。
根据一些实施例,信息获取单元902,用于获取操作系统的系统资源信息时,具体用于:
获取操作系统的剩余空闲内存和输入/输出IO压力值;
在系统资源信息指示操作系统的系统资源满足资源阈值时,将多个页面预读至操作系统的内存系统资源中,包括:
在剩余空闲内存大于或等于第一内存阈值,且IO压力值小于IO压力阈值时,将多个页面预读至操作系统的内存系统资源中。
根据一些实施例,信息获取单元902,用于获取操作系统的系统资源信息时,具体用于:
获取操作系统的可用内存,可用内存包括剩余空闲内存和文件缓存内存;
在可用内存大于或等于第二内存阈值时,对可用内存进行内存回收,并获取操作系统的内存回收压力值和操作系统的IO压力值;
在系统资源信息指示操作系统的系统资源满足资源阈值时,将多个页面预读至操作系统的内存系统资源中,包括:
在内存回收压力值小于回收压力阈值,且IO压力值小于IO压力阈值时,将多个页面预读至操作系统的内存系统资源中。
根据一些实施例,信息获取单元902,用于获取操作系统的内存回收压力值时,具体用于:
获取操作系统进行内存回收时的第一时间点和第二时间点,第一时间点为内存回收开始时间点,第二时间点为内存回收开始后每隔第一时长后获取的时间点;
基于第一时间点和第二时间点,计算内存回收持续时长;
基于内存回收持续时长,确定操作系统的内存回收压力值。
根据一些实施例,该文件页面预读装置900还包括预设值重置单元904,用于在操作系统的内存回收完成时,将内存回收时长重置为预设值。
根据一些实施例,信息获取单元902,用于获取操作系统的IO压力值时,具体用于:
获取第二时长内操作系统的IO总量;
基于IO总量和第二时长,确定操作系统的IO负载;
基于IO负载,确定操作系统的IO压力值。
根据一些实施例,顺序获取单元901,用于获取操作系统中目标文件的页面读写顺序时,具体用于:
在操作系统当前写的目标文件的第一页面为目标文件的第一个页面时,确定目标文件的页面读写顺序为顺序读写;或
获取操作系统当前写的目标文件的第一页面,并基于第一页面获取操作系统上一个写的第三页面;
在第一页面和第三页面在目标文件的多个页面中为相邻页面时,确定目标文件的页面读写顺序为顺序读写。
在本申请一个或多个实施例中,在操作系统中目标文件的页面读写顺序为顺序读写时,文件页面预读装置可以获取操作系统的系统资源信息,在系统资源信息指示操作系统的系统资源满足资源阈值时,可以将目标文件的多个页面预读至操作系统的内存系统资源中。因此在第一页面完成写操作时,文件页面预读装置可以直接从内存系统资源中获取与第一页面相邻的第二页面,不需要在第一页面完成写操作时,等待文件页面预读装置的操作系统将第二页面读取至操作系统的内存系统资源中,可以减少页面读取至内存系统资源的等待时间,减少页面的读取时间,提高目标文件的页面读写速度,进而可以提高目标文件的读写效率。
请参见图10,为本申请实施例提供的一种终端的结构示意图。如图10所示,所述终端1000可以包括:至少一个处理器1001,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。
其中,通信总线1002用于实现这些组件之间的连接通信。
其中,用户接口1003可以包括显示屏(Display)和GPS,可选用户接口1003还可以包括标准的有线接口、无线接口。
其中,网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,处理器1001可以包括一个或者多个处理核心。处理器1001利用各种借口和线路连接整个终端1000内的各个部分,通过运行或执行存储在存储器1005内的指令、程序、代码集或指令集,以及调用存储在存储器1005内的数据,执行终端1000的各种功能和处理数据。可选的,处理器1001可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1001可集成中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1001中,单独通过一块芯片进行实现。
其中,存储器1005可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器1005包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1005可用于存储指令、程序、代码、代码集或指令集。存储器1005可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及用于文件页面预读的应用程序。
在图10所示的终端1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的文件页面预读的应用程序,并具体执行以下操作:
获取操作系统中目标文件的页面读写顺序,目标文件包括多个页面;
在页面读写顺序为顺序读写时,获取操作系统的系统资源信息;
在系统资源信息指示操作系统的系统资源满足资源阈值时,将多个页面预读至操作系统的内存系统资源中,在第一页面完成写操作时从内存系统资源中获取第二页面;
其中,第一页面和第二页面为多个页面中相邻的两个页面。
根据一些实施例,处理器1001用于执行获取操作系统的系统资源信息时,具体用于执行以下步骤:
获取操作系统的剩余空闲内存和输入/输出IO压力值;
在系统资源信息指示操作系统的系统资源满足资源阈值时,将多个页面预读至操作系统的内存系统资源中,包括:
在剩余空闲内存大于或等于第一内存阈值,且IO压力值小于IO压力阈值时,将多个页面预读至操作系统的内存系统资源中。
根据一些实施例,处理器1001用于执行获取操作系统的系统资源信息时,具体用于执行以下步骤:
获取操作系统的可用内存,可用内存包括剩余空闲内存和文件缓存内存;
在可用内存大于或等于第二内存阈值时,对可用内存进行内存回收,并获取操作系统的内存回收压力值和操作系统的IO压力值;
在系统资源信息指示操作系统的系统资源满足资源阈值时,将多个页面预读至操作系统的内存系统资源中,包括:
在内存回收压力值小于回收压力阈值,且IO压力值小于IO压力阈值时,将多个页面预读至操作系统的内存系统资源中。
根据一些实施例,处理器1001用于执行获取操作系统的内存回收压力值时,具体用于执行以下步骤:
获取操作系统进行内存回收时的第一时间点和第二时间点,第一时间点为内存回收开始时间点,第二时间点为内存回收开始后每隔第一时长后获取的时间点;
基于第一时间点和第二时间点,计算内存回收持续时长;
基于内存回收持续时长,确定操作系统的内存回收压力值。
根据一些实施例,处理器1001还具体用于执行以下步骤:
在操作系统的内存回收完成时,将内存回收时长重置为预设值。
根据一些实施例,处理器1001用于执行获取操作系统的IO压力值时,具体用于执行以下步骤:
获取第二时长内操作系统的IO总量;
基于IO总量和第二时长,确定操作系统的IO负载;
基于IO负载,确定操作系统的IO压力值。
根据一些实施例,处理器1001用于执行获取操作系统中目标文件的页面读写顺序时,具体用于执行以下步骤:
在操作系统当前写的目标文件的第一页面为目标文件的第一个页面时,确定目标文件的页面读写顺序为顺序读写;或
获取操作系统当前写的目标文件的第一页面,并基于第一页面获取操作系统上一个写的第三页面;
在第一页面和第三页面在目标文件的多个页面中为相邻页面时,确定目标文件的页面读写顺序为顺序读写。
在本申请一个或多个实施例中,在操作系统中目标文件的页面读写顺序为顺序读写时,终端可以获取操作系统的系统资源信息,在系统资源信息指示操作系统的系统资源满足资源阈值时,可以将目标文件的多个页面预读至操作系统的内存系统资源中。因此在第一页面完成写操作时,可以直接从内存系统资源中获取与第一页面相邻的第二页面,不需要在第一页面完成写操作时,等待终端的操作系统将第二页面读取至操作系统的内存系统资源中,可以减少页面读取至内存系统资源的等待时间,减少页面的读取时间,提高目标文件的页面读写速度,进而可以提高目标文件的读写效率。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器IC),或适合于存储指令和/或数据的任何类型的媒介或设备。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括存储计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种文件页面预读方法的部分或全部步骤。
本领域的技术人员可以清楚地了解到本申请的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列(Field-ProgrammaBLE GateArray,FPGA)、集成电路(Integrated Circuit,IC)等。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通进程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上所述者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。
- 文件页面预读方法、装置、终端及存储介质
- 一种网页页面的预读取方法、装置及智能终端设备