CN112445725A - 预读取文件页的方法、装置和终端设备 - Google Patents

预读取文件页的方法、装置和终端设备 Download PDF

Info

Publication number
CN112445725A
CN112445725A CN201910798611.8A CN201910798611A CN112445725A CN 112445725 A CN112445725 A CN 112445725A CN 201910798611 A CN201910798611 A CN 201910798611A CN 112445725 A CN112445725 A CN 112445725A
Authority
CN
China
Prior art keywords
file
reading
memory
page
window
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
Application number
CN201910798611.8A
Other languages
English (en)
Inventor
孙秋阳
缪勰
童甜根
赵鸿江
方炜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910798611.8A priority Critical patent/CN112445725A/zh
Priority to PCT/CN2020/092247 priority patent/WO2021036370A1/zh
Publication of CN112445725A publication Critical patent/CN112445725A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种预读取文件页的方法、装置和终端设备。本申请的预读取文件页的方法,包括:获取状态参数信息,该状态参数信息用于表示内存使用状态或I/O处理状态中至少一项,根据状态参数信息确定文件预读窗口的大小,根据文件预读窗口从外部存储设备读取相应的文件页至内存中。本申请可以提升终端设备的使用性能。

Description

预读取文件页的方法、装置和终端设备
技术领域
本申请涉及计算机技术,尤其涉及一种预读取文件页的方法、装置和终端设备。
背景技术
操作***位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作***的用户界面,输入指令。操作***对指令进行解析,驱动硬件设备,实现用户要求。操作***可以提供如下的功能:进程管理、内存管理、文件***、网络通信、安全机制、用户界面、以及驱动程序等。其中,文件***是操作***中用于明确存储设备(磁盘、固态硬盘等)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。
终端设备的应用程序在启动、运行过程中,可以通过操作***提供的文件预读的方式从外部存储器(例如,磁盘)读取一些文件页至内存中,供应用程序使用。该文件预读的方式,可以根据文件访问模式(顺序读或随机读)按一定规则调整预读窗口大小,例如,顺序读则增大预读窗口,随机读则减小,将预读窗口中所有文件页读入内存,以便应用程序可以从内存中快速访问文件页。
然而,上述文件预读的方式会存在预读过多无效文件页的问题,即过多近期不会被访问的文件页预读至内存中,过多占用内存空间,挤占终端设备的应用程序可使用的内存空间,从而导致终端设备出现应用程序启动响应慢、卡顿等现象,影响终端设备的使用性能。
发明内容
本申请提供一种预读取文件页的方法、装置和终端设备,以提升终端设备的使用性能。
第一方面,本申请提供一种预读取文件页的方法,该方法可以包括:获取状态参数信息,该状态参数信息用于表示内存使用状态或输入输出IO处理状态中至少一项;根据该状态参数信息确定文件预读窗口的大小;根据该文件预读窗口从外部存储设备读取相应的文件页至内存中。文件页被读取到内存中之后,可以被应用程序访问。
本实现方式,可以基于状态参数信息自适应的调节文件预读窗口的大小,进而根据文件预读窗口的大小进行预读操作,基于不同的文件预读窗口的大小进行预读操作的文件页的个数不同,预读操作的文件页对内存资源的占用不同,从而实现自适应调节预读操作对内存资源的占用。例如,可以基于状态参数信息确定内存使用压力较大和/或I/O处理压力较大,在内存使用压力较大和/或I/O处理压力较大时,减少预读窗口的大小,从而减少预读操作所述读取的文件页,从而可以缓解应用程序启动响应慢、卡顿等现象,从而提升终端设备的使用性能。
在一种可能的设计中,根据该状态参数信息确定文件预读窗口的大小的可实现方式包括:当该状态参数信息指示内存使用压力或IO处理压力中至少一项处于第一级别时,减小该文件预读窗口的大小;当该状态参数信息指示该内存使用压力或IO处理压力中至少一项处于第二级别时,增大该文件预读窗口的大小;其中,该第一级别的内存使用压力或IO处理压力大于该第二级别的内存使用压力或IO处理压力。
本实现方式,当该状态参数信息指示内存使用压力或IO处理压力中至少一项处于第一级别时,表示内存使用压力较大和/或IO处理压力较大,通过减小文件预读窗口的大小,以减少预读取的文件页,从而减少预读取的文件页所占用的内存资源,以缓解应用程序启动响应慢、卡顿等现象,当该状态参数信息指示内存使用压力或IO处理压力中至少一项处于第一级别时,表示内存使用压力较小和/或IO处理压力较小,通过增大文件预读窗口的大小,以增加预读取的文件页,可以减少缺页现象提升终端设备文件访问速度,从而可以提升终端设备的使用性能。
在一种可能的设计中,该状态参数信息可以包括内存参数或IO参数中至少一项,该内存参数包括内存占用量、内存使用率、或缺页累计次数中至少一项,该IO参数包括IO队列长度。
本实现方式,可以根据内存参数和/或IO参数确定内存资源的使用状况,基于此自适应的调节预读操作对内存资源的占用,以提升终端设备的使用性能。
在一种可能的设计中,根据该状态参数信息确定文件预读窗口的大小的可实现方式包括:根据该内存参数和该IO参数中至少一项确定第一指标。根据该第一指标确定该文件预读窗口的大小。
在一种可能的设计中,根据该第一指标确定该文件预读窗口的大小的一种可实现方式包括:根据该第一指标确定该第一指标所属的数值区间。将该第一指标所属的数值区间对应的窗口大小作为该文件预读窗口的大小。
在一种可能的设计中,根据该文件预读窗口从外部存储设备读取相应的文件页至内存中的一种可实现方式包括:根据预读模型选取该文件预读窗口内的至少一个文件页,将该至少一个文件页从外部存储设备读取至内存中。其中,该预读模型为根据文件访问实时数据和文件访问历史数据中至少一项确定的内存中的数据结构,该预读模型与文件对应,该文件访问实时数据与该文件访问历史数据不同步,该文件访问历史数据为该外部存储设备中的数据。
本实现方式,由于该预读模型为根据文件访问实时数据和文件访问历史数据中至少一项确定的,所以该预读模型记录了文件页的被访问记录,可以使用预读模型增加预读命中率,提升从外部存储设备读取至内存中的文件页被应用层访问的机率,从而减少无效预读,减少内存资源浪费。
在一种可能的设计中,该预读模型包括N个比特位,每个比特位对应该文件的一个文件页,每个比特位用于表示该比特位对应的文件页是否被访问,N为大于或等于1的整数。
在一种可能的设计中,该方法还可以包括:判断该至少一个文件页所构成的片段的个数是否大于第一阈值。若该至少一个文件页所构成的片段的个数大于第一阈值,则将该文件预读窗口内的所有文件页从外部存储设备读取至内存中。若该至少一个文件页所构成的片段的个数小于或等于第一阈值,则执行将该至少一个文件页从外部存储设备读取至内存中的步骤。
本实现方式,通过比较预读取的至少一个文件页所构成的片段的个数与第一阈值的大小,在所构成的片段的个数大于第一阈值时,将文件预读窗口内的所有文件页从外部存储设备读取至内存中,可以避免由于较多的片段个数所导致的I/O碎片化,提升I/O处理效率。在所构成的片段的个数小于或等于第一阈值时,将预读取的至少一个文件页从外部存储设备读取至内存中,文件预读窗口内的除预读取的至少一个文件页之外的其余文件页不作预读操作,从而降低预读操作对内存的占用,减少无效预读。
在一种可能的设计中,将文件预读窗口内的所有文件页从外部存储设备读取至内存中,可以包括:判断文件预读窗口的最后一个文件页对应的比特位是否表示该最后一个文件页被访问。当该最后一个文件页对应的比特位表示该最后一个文件页被访问时,将该文件预读窗口内的所有文件页和该文件预读窗口之后的至少一个文件页从外部存储设备读取至内存中。当该最后一个文件页对应的比特位表示该最后一个文件页未被访问时,将该文件预读窗口内的所有文件页从外部存储设备读取至内存中;其中,该文件预读窗口之后的至少一个文件页与该文件预读窗口的最后一个文件页属于同一片段。
本实现方式,通过判断文件预读窗口的最后一个文件页是否被访问,在最后一个文件页被访问时,将与最后一个文件页属于同一个片段的文件页读入内存,避免因预读窗口边界的划分造成I/O碎片化(即同一片段中部分页被划分在窗口之外,下次被访问时还要再次读入,增加I/O次数),从而可以提升I/O处理效率。
在一种可能的设计中,将该至少一个文件页从外部存储设备读取至内存中,可以包括:判断文件预读窗口的最后一个文件页对应的比特位是否表示该最后一个文件页被访问。当该最后一个文件页对应的比特位表示该最后一个文件页被访问时,将该至少一个文件页和该文件预读窗口之后的至少一个文件页从外部存储设备读取至内存中。当该最后一个文件页对应的比特位表示该最后一个文件页未被访问时,将该至少一个文件页从外部存储设备读取至内存中。其中,该文件预读窗口之后的至少一个文件页与该文件预读窗口的最后一个文件页属于同一片段。
本实现方式,通过判断文件预读窗口的最后一个文件页是否被访问,在最后一个文件页被访问时,将与最后一个文件页属于同一个片段的文件页读入内存,避免因预读窗口边界的划分造成I/O碎片化(即同一片段中部分页被划分在窗口之外,下次被访问时还要再次读入,增加I/O次数),从而可以提升I/O处理效率。
在一种可能的设计中,该文件访问历史数据包括本次打开该文件之前的读访问请求的位置、长度、或时间中至少一项,该文件访问实时数据包括本次打开该文件之后的读访问请求的位置、长度、或时间中至少一项。
在一种可能的设计中,该方法还可以包括:根据该预读模型更新该外部存储设备中的该文件对应的文件访问历史数据。
在一种可能的设计中,该获取状态参数信息,可以包括:在触发预读取文件页时获取该状态参数信息;或者,以预设周期获取该状态参数信息。
第二方面,本申请实施例提供一种预读取文件页的装置,该装置可以包括:状态获取模块,用于获取状态参数信息,该状态参数信息用于表示内存使用状态或输入输出IO处理状态中至少一项。预读窗口确定模块,用于根据该状态参数信息确定文件预读窗口的大小;预读模块,用于根据该文件预读窗口从外部存储设备读取相应的文件页至内存中,以供应用层访问该文件页。
在一种可能的设计中,该预读窗口确定模块用于:当该状态参数信息指示内存使用压力或IO处理压力中至少一项处于第一级别时,减小该文件预读窗口的大小;当该状态参数信息指示所述内存使用压力或IO处理压力中至少一项处于第二级别时,增大该文件预读窗口的大小;其中,该第一级别的内存使用压力或IO处理压力大于该第二级别的内存使用压力或IO处理压力。
在一种可能的设计中,该预读窗口确定模块用于:根据该内存参数和该IO参数中至少一项确定第一指标。根据该第一指标确定该文件预读窗口的大小。
在一种可能的设计中,该预读窗口确定模块用于:根据该第一指标确定该第一指标所属的数值区间。将该第一指标所属的数值区间对应的窗口大小作为该文件预读窗口的大小。
在一种可能的设计中,该预读模块用于:根据预读模型选取该文件预读窗口内的至少一个文件页,将该至少一个文件页从外部存储设备读取至内存中。其中,该预读模型为根据文件访问实时数据和文件访问历史数据中至少一项确定的数据结构,该预读模型与文件对应,该文件访问实时数据与该文件访问历史数据不同步,该文件访问历史数据为该外部存储设备中的数据。
在一种可能的设计中,该预读模块还用于:判断该至少一个文件页所构成的片段的个数是否大于第一阈值。若该至少一个文件页所构成的片段的个数大于第一阈值,则将该文件预读窗口内的所有文件页从外部存储设备读取至内存中;若该至少一个文件页所构成的片段的个数小于或等于第一阈值,则执行将该至少一个文件页从外部存储设备读取至内存中的步骤。
在一种可能的设计中,该预读模块用于:判断该文件预读窗口的最后一个文件页对应的比特位是否表示该最后一个文件页被访问;当该最后一个文件页对应的比特位表示该最后一个文件页被访问时,将该文件预读窗口内的所有文件页和该文件预读窗口之后的至少一个文件页从外部存储设备读取至内存中;当该最后一个文件页对应的比特位表示该最后一个文件页未被访问时,将该文件预读窗口内的所有文件页从外部存储设备读取至内存中;其中,该文件预读窗口之后的至少一个文件页与该文件预读窗口的最后一个文件页属于同一片段。
在一种可能的设计中,该预读模块用于:判断该文件预读窗口的最后一个文件页对应的比特位是否表示该最后一个文件页被访问;当该最后一个文件页对应的比特位表示该最后一个文件页被访问时,将该至少一个文件页和该文件预读窗口之后的至少一个文件页从外部存储设备读取至内存中;当该最后一个文件页对应的比特位表示该最后一个文件页未被访问时,将该至少一个文件页从外部存储设备读取至内存中;其中,该文件预读窗口之后的至少一个文件页与所述文件预读窗口的最后一个文件页属于同一片段。
在一种可能的设计中,该预读模块还用于:根据该预读模型更新该外部存储设备中的该文件对应的文件访问历史数据。
在一种可能的设计中,该状态获取模块用于:在触发预读取文件页时获取该状态参数信息;或者,以预设周期获取该状态参数信息。
在一种可能的设计中,该预读取文件页的装置可以是终端设备或终端设备的内部芯片。
第三方面,本申请提供一种终端设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述第一方面中任一项所述的方法。
第四方面,本申请提供一种计算机可读存储介质,包括计算机程序,所述计算机程序在计算机上被执行时,使得所述计算机执行上述第一方面中任一项所述的方法。
第五方面,本申请提供一种计算机程序或包含计算机程序的计算机程序产品,当所述计算机程序被计算机执行时,用于执行上述第一方面中任一项所述的方法。
第六方面,本申请提供一种芯片,包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行如上述第一方面中任一项所述的方法。
本申请的预读取文件页的方法、装置和终端设备,获取状态参数信息,该状态参数信息可以用于表示内存使用状态或I/O处理状态中至少一项,根据状态参数信息确定文件预读窗口的大小,根据文件预读窗口从外部存储设备读取相应的文件页至内存中,以供应用层访问文件页,可以基于状态参数信息自适应的调节文件预读窗口的大小,进而根据文件预读窗口的大小进行预读操作,基于不同的文件预读窗口的大小进行预读操作的文件页的个数不同,预读操作的文件页对内存资源的占用不同,从而实现自适应调节预读操作对内存资源的占用。例如,可以基于状态参数信息确定内存使用压力较大和/或I/O处理压力较大,在内存使用压力较大和/或I/O处理压力较大时,减少预读窗口的大小,从而减少预读操作所述读取的文件页,从而可以缓解应用程序启动响应慢、卡顿等现象,从而提升终端设备的使用性能。
附图说明
图1为本申请实施例的一种电子设备的硬件结构示意图;
图2为本申请实施例的一种电子设备的软件结构示意图;
图3为本申请实施例的一种电子设备的软件结构示意图
图4A为本申请实施例的一种预读取文件页的方法流程图;
图4B为本申请实施例的一种文件预读窗口的示意图;
图5为本申请实施例的另一种预读取文件页的方法流程图;
图6A为本申请实施例的另一种预读取文件页的方法流程图;
图6B为本申请实施例的一种预读取文件页的示意图;
图7为本申请实施例的另一种预读取文件页的方法流程图;
图8为本申请实施例的另一种终端设备的结构示意图。
具体实施方式
本申请的说明书实施例和权利要求书及附图中的术语“第一”、“第二”等仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
本申请实施例提供的一种预读取文件页的方法可应用于手机、平板电脑、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、手持计算机、上网本、个人数字助理(personal digital assistant,PDA)、可穿戴电子设备、虚拟现实设备等终端设备中,本申请实施例对此不做任何限制。
示例性的,图1示出了终端设备100的结构示意图。
终端设备100可以包括:应用处理器101、微控制器单元(microcontroller unit,MCU)103、存储器105、调制解调器(modem)107、射频(radio frequency,RF)模块109、无线保真(Wireless-Fidelity,简称Wi-Fi)模块111、蓝牙模块113、传感器114、定位模块150、输入/输出(input/output,I/O)设备115等部件。这些部件可通过一根或多根通信总线或信号线进行通信。本领域技术人员可以理解,图1中示出的硬件结构并不构成对终端设备的限定,终端设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图1对终端设备100的各个部件进行具体的介绍:
应用处理器101是终端设备100的控制中心,利用各种接口和总线连接终端设备100的各个部件。在一些实施例中,应用处理器101可包括一个或多个处理单元。
存储器105中存储有计算机程序,诸如图1所示的操作***161和应用程序163。应用处理器101被配置用于执行存储器105中的计算机程序,从而实现该计算机程序定义的功能,例如应用处理器101执行操作***161从而在终端设备100上实现操作***的各种功能。存储器105还存储有除计算机程序之外的其他数据,诸如操作***161和应用程序163运行过程中产生的数据。存储器105为可以包括内存和外存。内存包括但不限于随机存取存储器(Random Access Memory,RAM),只读存储器(Read-Only Memory,ROM),或高速缓存(cache)等。外存包括但不限于闪存(flash memory)、硬盘、光盘、通用串行总线(universal serialbus,USB)盘等。计算机程序通常被存储在外存上,处理器在执行计算机程序前会将该程序从外存加载到内存。
存储器105可以是独立的,通过总线与应用处理器101相连接;存储器105也可以和应用处理器101集成到一个芯片子***。
MCU 103是用于获取并处理来自传感器114的数据的协处理器,MCU 103的处理能力和功耗小于应用处理器101,但具有“永久开启(always on)”的特点,可以在应用处理器101处于休眠模式时持续收集以及处理传感器数据,以极低的功耗保障传感器的正常运行。传感器114可以包括光传感器、运动传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。MCU 103和传感器114可以集成到同一块芯片上,也可以是分离的元件,通过总线连接。
Modem 107以及射频模块109构成了终端设备100通信子***,用于实现3GPP、ETSI等无线通信标准协议的主要功能。其中,Modem 107用于编解码、信号的调制解调、均衡等。射频模块109用于无线信号的接收和发送,射频模块109包括但不限于天线、至少一个放大器、耦合器、双工器等。射频模块109配合Modem 107实现无线通信功能。
终端设备100还可以使用Wi-Fi模块111,蓝牙模块113等来进行无线通信。Wi-Fi模块111用于为终端设备100提供遵循Wi-Fi相关标准协议的网络接入,终端设备100可以通过Wi-Fi模块111接入到Wi-Fi接入点,进而访问互联网。在其他一些实施例中,Wi-Fi模块111也可以作为Wi-Fi无线接入点,可以为其他终端设备提供Wi-Fi网络接入。蓝牙模块113用于实现终端设备100与其他终端设备(例如手机、智能手表等)之间的短距离通信。本申请实施例中的Wi-Fi模块111可以是集成电路或Wi-Fi芯片等,蓝牙模块113可以是集成电路或者蓝牙芯片等。
定位模块150用于确定终端设备100的地理位置。可以理解的是,定位模块150具体可以是全球定位***(global position system,GPS)、全球导航卫星***(globalnavigation satellite system,GLONASS)、或北斗卫星导航***(beidounavigationsatellite system,BDS)等定位***的接收器。
Wi-Fi模块111,蓝牙模块113和定位模块150分别可以是单独的芯片或集成电路,也可以集成到一起。例如,在一个实施例中,Wi-Fi模块111,蓝牙模块113和定位模块150可以集成到同一芯片上。在另一个实施例中,Wi-Fi模块111,蓝牙模块113、定位模块150以及MCU 103也可以集成到同一芯片中。
输入/输出设备115包括但不限于:显示器151、触摸屏153,以及音频电路155等等。
其中,触摸屏153可采集终端设备100的用户在其上或附近的触摸事件(比如用户使用手指、触控笔等任何适合的物体在触摸屏153上或在触控屏触摸屏153附近的操作),并将采集到的触摸事件发送给其他器件(例如应用处理器101)。
显示器(也称为显示屏)151用于显示用户输入的信息或展示给用户的信息。可以采用液晶显示屏、有机发光二极管等形式来配置显示器。
音频电路1155、扬声器116、麦克风117可提供用户与终端设备100之间的音频接口。音频电路109可将接收到的音频数据转换后的电信号,传输到扬声器113,由扬声器113转换为声音信号输出;另一方面,麦克风114将收集的声音信号转换为电信号,由音频电路109接收后转换为音频数据,再通过Modem 107和射频模块109将音频数据发送给比如另一终端设备,或者将音频数据输出至存储器105以便进一步处理。
另外,终端设备100还可以具有指纹识别功能。例如,可以在终端设备100的背面(例如后置摄像头的下方)配置指纹采集器件,或者在终端设备100的正面(例如触摸屏153的下方)配置指纹采集器件。
进一步地,终端设备100搭载的操作***161可以为
Figure BDA0002181665660000071
或者其它操作***,本申请实施例对此不作任何限制。
以搭载
Figure BDA0002181665660000072
操作***的终端设备100为例,如图2所示,终端设备100从逻辑上可划分为硬件层21、操作***161,以及应用层31。硬件层21包括如上所述的应用处理器101、微控制器单元103、存储器105、Modem 107、Wi-Fi模块111、传感器114、定位模块150等硬件资源。应用层31包括一个或多个应用程序,比如应用程序163,应用程序163可以为社交类应用、电子商务类应用、浏览器等任意类型的应用程序。操作***161作为硬件层21和应用层31之间的软件中间件,是管理和控制硬件与软件资源的计算机程序。
在一个实施例中,操作***161包括内核23,硬件抽象层(hardware abstractionlayer,HAL)25、库和运行时(libraries and runtime)27以及框架(framework)29。其中,内核23用于提供底层***组件和服务,例如:电源管理、内存管理、文件***管理、线程管理、硬件驱动程序等;硬件驱动程序包括Wi-Fi驱动、传感器驱动、定位模块驱动等。硬件抽象层25是对内核驱动程序的封装,向框架29提供接口,屏蔽低层的实现细节。硬件抽象层25运行在用户空间,而内核驱动程序运行在内核空间。
库和运行时27也叫做运行时库,它为可执行程序在运行时提供所需要的库文件和执行环境。
框架29用于为应用层31中的应用程序提供各种基础的公共组件和服务,比如窗口管理、位置管理等等。
以上描述的操作***161的各个组件的功能均可以由应用处理器101执行存储器105中存储的程序来实现。
以存储器105包括内存和外存为例,对上述操作***161中的内核23所具有的内存管理和文件***管理进行解释说明,如图3所示,硬件层21可以包括内存1051和外存1052,内核23可以包括内存管理231和文件***管理232,本申请实施例的应用处理器101可以被配置用于执行存储器105中的计算机程序,从而实现本申请实施例的预读取文件页的方法,以使得内存管理231可以根据状态参数信息动态调整文件预读窗口的大小,内存管理231基于该文件预读窗口的大小向文件***管理232下发预读请求,文件***管理232将对应的文件页从外存1052读取至内存1051中,进而提升终端设备100的使用性能。
需要说明的是,上述外存也可以称之为外部存储器。
所属领域的技术人员可以理解终端100可包括比图1所示的更少或更多的部件,图1所示的该终端设备仅包括与本申请实施例所公开的多个实现方式更加相关的部件。
本申请所述涉及的“文件”,指以存储器为载体存储在终端设备上的信息集合。文件可以是文本文档、图片、音视频、可执行程序等等。
本申请所述涉及的“文件页”,指文件的组成单元,操作***可以以文件页为单位执行对文件的I/O,以便于内存管理。如上所述的文件可以包括一个或多个文件页,每个文件页的大小相等,例如,可以是4千字节(KB)。每个文件页对应不同的序号。
为了便于理解,本申请以下实施例将以具有图1至图3所示结构的终端设备为例,结合附图对本申请实施例提供的预读取文件页的方法进行解释说明。
图4A为本申请实施例的一种预读取文件页的方法流程图,如图4A所示,本实施例的方法可以由终端设备或终端设备的处理器执行,该处理器可以是应用处理器。该方法可以包括:
步骤101、获取状态参数信息。
该状态参数信息可以用于表示内存使用状态或I/O处理状态中至少一项。该内存使用状态可以理解为计算机程序、计算机程序运行过程中所产生的数据、缓存数据(例如,缓存文件页)等对内存的占用情况,也可以理解为内存可供使用的情况。I/O处理状态可以理解为对I/O请求的处理情况,例如,需要处理的I/O请求个数。
示例性的,该状态参数信息可以包括内存参数或I/O参数中至少一项。该内存参数可以包括内存占用量、内存使用率、或缺页累计次数中至少一项。该I/O参数可以包括I/O队列长度、或I/O请求数据量中至少一项。
在一些实施例中,可以在触发预读取文件页时获取上述状态参数信息;或者,以预设周期获取上述状态参数信息。示例性的,触发预读取文件页的方式可以是在处理用户态发出的文件页读请求时,判断是否缺页,该缺页指的是需要读取的文件页不在内存中,若发生缺页,则触发预读取文件页,该预读取文件页的方式也可以称为同步预读,即文件预读窗口包括了当前访问的文件页。触发预读取文件页的另一种方式可以是在顺序读场景下对当前访问文件页之后的一部分文件页提前进行预读,该预读取文件页的方式也可以称为异步预读,即在不发生缺页时也可以对当前访问文件页之后的一部分页提前进行预读。
一种举例说明,应用层31可以通过read()、mmap()等***调用读取文件页,操作***161可以通过如上所述的方式确定是否触发预读取文件页,在触发预读取文件时,上述图3所示的内存管理231可以获取该状态参数信息。
步骤102、根据状态参数信息确定文件预读窗口的大小。
该文件预读窗口用于表示一个文件中的一个或多个文件页的集合,例如,该文件预读窗口的一种具体形式可以是一组连续的文件页序号,该文件预读窗口的另一种具体形式可以是起始文件页序号和结束文件页序号,该文件预读窗口的再一种具体形式可以是起始文件页序号和窗口长度,该窗口长度的单位为文件页,需要说明的是,该文件预读窗口还可以是其他具体形式,例如,窗口长度和结束文件页序号等,本申请实施例不一一举例说明。以图4B对文件预读窗口进行示意性说明,如图4B所示,该文件预读窗口1从第1个文件页开始到第4个文件页结束,该文件预读窗口2从第1个文件页开始到第6个文件页结束。
本申请实施例可以根据该状态参数信息确定文件预读窗口的大小,即窗口长度,该窗口长度可以是该文件预读窗口所包括的文件页的个数,例如,如图4B所示的文件预读窗口1的窗口长度为4。例如,根据该状态参数信息确定内存占用量大于预设阈值时,可以确定文件预读窗口的大小为一个较小的数值,例如如图4B所示的文件预读窗口1,从而在内存使用压力较大时,减少预读取的文件页。根据该状态参数信息确定内存占用量小于预设阈值时,可以确定文件预读窗口的大小为一个较大的数值,例如如图4B所示的文件预读窗口2,从而在内存空间空闲时,增加预读取的文件页。
在一些实施例中,当状态参数信息指示内存使用压力或IO处理压力中至少一项处于第一级别时,减小该文件预读窗口的大小;当该状态参数信息指示该内存使用压力或IO处理压力中至少一项处于第二级别时,增大该文件预读窗口的大小;其中,该第一级别的内存使用压力或IO处理压力大于该第二级别的内存使用压力或IO处理压力。例如,该第一级别可以是指内存使用压力和/或IO处理压力较大的级别,该第二级别可以是指内存使用压力和/或IO处理压力较大的级别。例如,上述内存占用量大于预设阈值,则内存使用压力处于第一级别,内存占用量小于预设阈值,则内存使用压力处于第二级别。
上述减小该文件预读窗口的大小的一种可实现方式可以为将该文件预读窗口的大小重新设置为一个数值,该数值小于原有的大小,另一种可实现方式可以为将该文件预读窗口的大小在原有基础上减小一个数值。
对于文件预读窗口的位置,可以根据触发预读取文件页的位置确定,例如,可以根据缺页位置确定,本申请实施例不以此作为限制。
一种举例说明,上述图3所示的内存管理231获取该状态参数信息后,可以根据该状态参数信息确定文件预读窗口的大小。
步骤103、根据文件预读窗口从外部存储设备读取相应的文件页至内存中,以供应用层访问文件页。
示例性的,上述图3所示的内存管理231确定文件预读窗口的大小后,可以基于该文件预读窗口的大小向文件***管理232下发预读请求,文件***管理232将对应的文件页从外存1052读取至内存1051中。
本申请实施例基于文件预读窗口预读取相应的文件页,可以在内存使用压力较大和/或I/O处理压力较大时,减少预读取的文件页。在内存使用压力较小和/或I/O处理压力较小时,增加预读取的文件页。即可以基于文件预读窗口自适应的调节预读操作对内存资源的占用,以提升终端设备的使用性能。
本实施例,通过获取状态参数信息,该状态参数信息可以用于表示内存使用状态或I/O处理状态中至少一项,根据状态参数信息确定文件预读窗口的大小,根据文件预读窗口从外部存储设备读取相应的文件页至内存中,以供应用层访问文件页,可以基于状态参数信息自适应的调节文件预读窗口的大小,进而根据文件预读窗口的大小进行预读操作,基于不同的文件预读窗口的大小进行预读操作的文件页的个数不同,预读操作的文件页对内存资源的占用不同,从而实现自适应调节预读操作对内存资源的占用。例如,可以基于状态参数信息确定内存使用压力较大和/或I/O处理压力较大,在内存使用压力较大和/或I/O处理压力较大时,减少预读窗口的大小,从而减少预读操作所述读取的文件页,从而可以缓解应用程序启动响应慢、卡顿等现象,从而提升终端设备的使用性能。
下面采用几个具体的实施例,对图4A所示方法实施例的技术方案进行详细说明。
图5为本申请实施例的另一种预读取文件页的方法流程图,如图5所示,本实施例的方法可以由终端设备或终端设备的处理器执行,本实施例以状态参数信息包括内存参数和I/O参数为例进行举例说明,该方法可以包括:
步骤201、获取内存参数和I/O参数。
该内存参数和I/O参数的具体解释说明可以参见图4A所示实施例的步骤101的解释说明,此处不再赘述。
步骤202、根据内存参数和I/O参数确定第一指标。
本申请实施例可以对内存参数和I/O参数采用求和、加权求和等方式确定第一指标,该第一指标也可以称之为综合压力指标。本申请实施例用X表示该第一指标的取值,X的取值越大,表示内存使用压力和/或I/O处理压力越大,即内存使用率越高和/或I/O队列长度越大。当然可以理解的,也可以设置X的取值越小,表示内存使用压力和/或I/O处理压力越大,即内存使用率越高和/或I/O队列长度越大。本申请实施例以X的取值越大,表示内存使用压力和/或I/O处理压力越大为例进行举例说明。
步骤203、根据第一指标确定文件预读窗口的大小。
例如,上述图3所示的内存管理231可以根据该第一指标确定文件预读窗口的大小。
一种可实现方式,可以设定n个阈值,X1<X2<…<Xn,该n个阈值可以将X的取值范围划分为(n+1)个数值区间,该(n+1)个数值区间可以为:[0,X1],(X1,X2],……,(Xn,∞),设置每一个数值区间对应一个窗口大小,上述(n+1)个数值区间对应的窗口大小依次减小。上述步骤203的一种可实现方式为:根据第一指标确定第一指标所属的数值区间,将第一指标所属的数值区间对应的窗口大小作为文件预读窗口的大小。
步骤204、根据文件预读窗口从外部存储设备读取相应的文件页至内存中,以供应用层访问文件页。
其中,步骤204的解释说明可以参见图4A所示实施例的步骤103,此处不再赘述。
本实施例,通过获取内存参数和I/O参数,根据内存参数和I/O参数确定第一指标,根据第一指标确定文件预读窗口的大小,根据文件预读窗口从外部存储设备读取相应的文件页至内存中,以供应用层访问文件页,实现基于内存参数和I/O参数自适应的调节预读操作对内存资源的占用,在内存使用压力较大和/或I/O处理压力较大时,减少预读窗口的大小,从而减少预读操作所述读取的文件页,从而可以缓解应用程序启动响应慢、卡顿等现象,从而提升终端设备的使用性能。
在上述任一实施例的基础上,本申请实施例还可以使用预读模型增加预读命中率,即提升从外部存储设备读取至内存中的文件页被应用层访问的机率,从而减少无效预读。其具体实施方式可以参见下述实施例的解释说明。
上述步骤103或上述步骤204的一种可实现方式为:根据预读模型选取文件预读窗口内的至少一个文件页,作为预读取页,将预读取页从外部存储设备读取至内存中,其中,该预读模型为根据文件访问实时数据和文件访问历史数据确定的内存中的数据结构,该预读模型与文件对应,该文件访问实时数据与该文件访问历史数据不同步,该文件访问历史数据为该外部存储设备中的数据。
该文件访问历史数据可以包括本次打开文件之前的读访问请求的位置、长度、或时间中至少一项。该文件访问历史数据可以来源于外部存储设备,例如,该文件访问历史数据可以包括本次打开文件之前应用层所访问的该文件的文件页序号,举例而言,该文件访问历史数据可以包括2、3和10,即表示本次打开文件之前应用层访问了该文件的序号为2、3和10的文件页。该文件访问实时数据可以包括本次打开文件之后的读访问请求的位置、长度、或时间中至少一项,例如,该文件访问实时数据可以包括本次打开文件之后至本次关闭文件之前的读访问请求的位置、长度、或时间中至少一项,即该文件访问实时数据即为应用层对文件进行访问过程中所产生的数据,例如,该文件访问实时数据可以包括应用层所访问的该文件的文件页序号,举例而言,该文件访问实时数据可以包括1、2和10,即表示应用层访问了该文件的序号为1、2和10的文件页。当然可以理解的,上述文件访问历史数据和上述文件访问实时数据也可以是比特位图,例如,该文件访问历史数据可以包括2、3和10,假设该文件访问历史数据对应的文件有11个文件页,则该文件访问历史数据可以是01100000010。
该预读模型为根据文件访问实时数据和文件访问历史数据中至少一项确定的内存中的数据结构,一种可实现方式,该预读模型可以是比特位图(bitmap),例如,该预读模型可以包括N个比特位,每个比特位对应文件的一个文件页,每个比特位用于表示比特位对应的文件页是否被访问,N为大于或等于1的整数。比特位取0时表示对应的文件页未被访问过,比特位取1时表示对应的文件页被访问过,当然可以理解的,也可以使用比特位取1时表示对应的文件页未被访问过,比特位取0时表示对应的文件页被访问过。本申请实施例以比特位取0时表示对应的文件页未被访问过,比特位取1时表示对应的文件页被访问过为例进行举例说明。被访问过或未被访问过指在应用程序启动过程中或运行过程中被访问过或未被访问过。以文件A包括15个文件页,第1、2、3和10个文件页被访问过(包括历史和实时)为例,该文件A的预读模型可以是111000000100000。
本申请实施例在基于状态参数信息确定文件预读窗口后,可以基于预读模型,在该文件预读窗口内选取一个或多个文件页作为预读取页,将该预读取页从外部存储设备读取至内存中。以文件A的预读模型是111000000100000为例做进一步举例说明,通过上述实施例确定的文件预读窗口为从第1个文件页起始,窗口长度11,根据该文件A的预读模型可以选取文件预读窗口内的第1、2、3和10个文件页作为预读取页,将第1、2、3和10个文件页从外部存储设备读取至内存中,而对文件A的文件预读窗口内的其余文件页不作预读操作,从而降低预读操作对内存的占用,减少无效预读。
图6A为本申请实施例的另一种预读取文件页的方法流程图,如图6A所示,本实施例的方法可以由终端设备或终端设备的处理器执行,本实施例的方法可以包括:
步骤301、获取状态参数信息。
步骤302、根据状态参数信息确定文件预读窗口的大小。
其中,步骤301和步骤302的解释说明可以参见图4A所示实施例的步骤101和步骤102,此处不再赘述。
步骤303、根据预读模型选取文件预读窗口内的至少一个文件页,作为预读取页。
其中,该预读模型以及根据预读模型选取预读取页的解释说明可以参见上述实施例,此处不再赘述。
步骤304、判断预读取页所构成的片段的个数是否大于第一阈值,若是,则执行步骤305,若否,则执行步骤306。
本申请所述涉及的“片段”,指一个文件中若干个序号连续的文件页。
如上所述一个文件中若干个序号连续的文件页可以构成一个片段,本申请实施例可以基于预读取页所构成的片段的个数确定最终预读取的文件页,以上述选取文件A的第1、2、3和10个文件页作为预读取页为例做进一步举例说明,其中,第1、2和3个文件页可以构成一个片段,第10页为一个片段,所以,该预读取页所构成的片段的个数为2个,将该预读取页所构成的片段的个数(2个)与该第一阈值比较,若大于,则通过下述步骤305读取文件预读窗口内的所有页,例如,读取文件A的第1个至第11个文件页,若小于或等于,则通过下述步骤306读取预读取的文件页,例如,读取文件A的第1、2、3、10个文件页。该第一阈值的取值可以是3、4、5等,其可以根据需求进行灵活设置。该第一阈值也可以根据当前内存使用状态和/或I/O处理状态进行动态调整。
步骤305、将文件预读窗口内的所有文件页从外部存储设备读取至内存中。
在预读取页所构成的片段的个数大于第一阈值时,即片段个数较多,由于较多的片段个数会导致I/O碎片化,影响I/O处理效率,所以本申请实施例在片段个数较多时,将文件预读窗口内的所有文件页从外部存储设备读取至内存中,以避免I/O碎片化。
步骤306、将预读取页从外部存储设备读取至内存中。
在预读取页所构成的片段的个数小于或等于第一阈值时,可以将预读取页从外部存储设备读取至内存中,文件预读窗口内的除预读取页之外的其余文件页不作预读操作,从而降低预读操作对内存的占用,减少无效预读。
在一些实施例中,在执行步骤305或步骤306时,本申请实施例的方法还可以根据文件预读窗口中的最后一个文件页对应的比特位确定是否将文件预读窗口外的文件页读取至内存中。举例而言,按照预读模型,文件预读窗口中的最后一个文件页对应的比特值为1,则可以越过文件预读窗口的范围,继续向后依次检查每个文件页对应的比特位值,直到确定出一个完整的片段(即找到预读窗口之后第一个值为0的比特,或者检查到文件的最后一个页),并将其中的文件页全部读取至内存中。也可以设置一个第二阈值,当本次预读选中的文件页总数(步骤305或步骤306中需要读取至内存中的文件页的个数和文件预读窗口外需要读取至内存中的文件页的个数)大于或等于该第二阈值时,则停止向后检查。
以文件A的预读模型是[1110 0001]1111 1100为例作进一步举例说明,其中[]之内为文件预读窗口。若不设第二阈值,则将文件A的第1~3和第8~14个页选为预读取页;若第二阈值设为8,即本次预读最多选8个文件页,则将第1~3和第8~12个页选为预读取页。
示例性的,上述步骤305的一种可实现方式为,判断文件预读窗口的最后一个文件页对应的比特位是否表示最后一个文件页被访问。当最后一个文件页对应的比特位表示最后一个文件页被访问时,将文件预读窗口内的所有文件页和文件预读窗口之后的至少一个文件页从外部存储设备读取至内存中。当最后一个文件页对应的比特位表示最后一个文件页未被访问时,将文件预读窗口内的所有文件页从外部存储设备读取至内存中。其中,文件预读窗口之后的至少一个文件页与文件预读窗口的最后一个文件页属于同一片段。
可选的,将文件预读窗口内的所有文件页和文件预读窗口之后的至少一个文件页从外部存储设备读取至内存中的一种可实现方式为,将文件预读窗口内的所有文件页和文件预读窗口之后的至少一个文件页中的M个文件页从外部存储设备读取至内存中。该M可以表示第二阈值。
示例性的,上述步骤306的一种可实现方式,判断文件预读窗口的最后一个文件页对应的比特位是否表示该最后一个文件页被访问。当该最后一个文件页对应的比特位表示最后一个文件页被访问时,将预读取页和文件预读窗口之后的至少一个文件页从外部存储设备读取至内存中。当该最后一个文件页对应的比特位表示该最后一个文件页未被访问时,将该预读取页从外部存储设备读取至内存中。其中,该文件预读窗口之后的至少一个文件页与该文件预读窗口的最后一个文件页属于同一片段。
可选的,将预读取页和文件预读窗口之后的至少一个文件页从外部存储设备读取至内存中的一种可实现方式为,将预读取页和文件预读窗口之后的至少一个文件页中的M个文件页从外部存储设备读取至内存中。
以图6B做举例说明,如图6B所示,文件B的预读模型是10101100,文件预读窗口为第1~第5个文件页,其中,黑色方块表示预读模型的对应比特位为1,白色方块表示预读模型的对应比特位为0。通过上述步骤305上述可实现方式,可以确定该文件预读窗口的最后一个文件页(第5个文件页)对应的比特位表示被访问,则可以将文件预读窗口内的所有文件页(第1~第5个文件页)和文件预读窗口之后的至少一个文件页(例如第6个文件页)从外部存储设备读取至内存中。或者,通过上述步骤306上述可实现方式,可以确定该文件预读窗口的最后一个文件页(第5个文件页)对应的比特位表示被访问,则可以将文件预读窗口内的预读取页(第1、第3和第5个文件页)和文件预读窗口之后的至少一个文件页(例如第6个文件页)从外部存储设备读取至内存中。
本实施例,通过获取状态参数信息,根据状态参数信息确定文件预读窗口的大小,根据预读模型选取文件预读窗口内的至少一个文件页,作为预读取页,判断预读取页所构成的片段的个数是否大于第一阈值,若是,则将文件预读窗口内的所有文件页从外部存储设备读取至内存中,若否,则将预读取页从外部存储设备读取至内存中,实现基于状态参数信息自适应的调节预读操作对内存资源的占用,可以缓解应用程序启动响应慢、卡顿等现象,从而提升终端设备的使用性能。
并且通过比较预读取页所构成的片段的个数与第一阈值的大小,在所构成的片段的个数大于第一阈值时,将文件预读窗口内的所有文件页从外部存储设备读取至内存中,可以避免由于较多的片段个数所导致的I/O碎片化,提升I/O处理效率。在所构成的片段的个数小于或等于第一阈值时,将预读取页从外部存储设备读取至内存中,文件预读窗口内的除预读取页之外的其余文件页不作预读操作,从而降低预读操作对内存的占用,减少无效预读。
通过判断文件预读窗口的最后一个文件页是否被访问,在最后一个文件页被访问时,将与最后一个文件页属于同一个片段的文件页读入内存,避免因预读窗口边界的划分造成I/O碎片化(即同一片段中部分页被划分在窗口之外,下次被访问时还要再次读入,增加I/O次数),从而可以提升I/O处理效率。
在上述任一实施例的基础上,本申请的预读取文件页的方法还可以根据上述预读模型更新外部存储设备中文件对应的文件访问历史数据。需要说明的是,在使用预读模型更新之前,文件对应的文件访问历史数据可以为空。
一种可实现方式,通过内核线程周期性的根据预读模型更新外部存储设备中文件对应的文件访问历史数据。
外部存储设备可以为不同的文件分配不同的读写路径,该读写路径对应的存储空间存储有与一个文件对应的文件访问历史数据。例如,在需要选取预读取页时,文件***管理232可以从文件的读写路径对应的存储空间读取文件访问历史数据至内存中,以基于文件访问历史数据和文件访问实时数据确定预读模型。在预读取操作之后,文件***管理232可以将预读模型按照与文件访问历史数据相同的格式,写入该文件的读写路径对应的存储空间,即更新存储空间所存储的文件访问历史数据。
图7为本申请实施例的另一种预读取文件页的方法流程图,如图7所示,本实施例以应用层31和操作***161为例对本申请实施例的方法进行解释说明,本实施例的方法可以包括:
步骤401、应用层触发打开一个文件。
例如,应用层的一个应用程序启动时,触发打开一个文件。
步骤402、创建初始化的预读模型。
例如,创建初始化的预读模型可以是生成一个包含N个比特位的比特位图,该N个比特位的初始值均为0。
步骤403、判断文件对应的读写路径对应的存储空间内是否有文件访问历史数据,若是,则执行步骤404,若否,则结束。
步骤404、将文件访问历史数据读入至内存中,并将文件访问历史数据解析后填充至初始化的预读模型中。
例如,该文件访问历史数据表示第1、2、3和10个文件页被访问过,则可以将上述N个比特位中的第1、2、3和10个比特位的取值更新为1。
步骤405、应用层触发访问文件的一个文件页。
例如,应用层可以通过read()、mmap()等***调用读取一个文件页。
步骤406、将访问该文件页的信息记录至预读模型中。
例如,应用程触发访问文件的第4个文件页,则根据将上述N个比特位中的第4个比特位的取值更新为1,更新后的预读模型为11110000010000…...。
步骤407、判断是否发生缺页,若是,则执行步骤408,若否,则结束。
判断该文件的第4个文件页是否在内存中,若没有在内存中,则可以确定发生缺页。
步骤408、获取状态参数信息。
步骤409、根据状态参数信息确定文件预读窗口的大小。
其中,步骤408和步骤409的解释说明可以参见图4A所示实施例的步骤101和步骤102,此处不再赘述。
步骤410、根据预读模型选取文件预读窗口内的至少一个文件页,作为预读取页,下发I/O请求。
通过该I/O请求将预读取页从外部存储设备读取至内存中,以供应用层访问。
本实施例,可以实现基于状态参数信息自适应的调节预读操作对内存资源的占用,可以缓解应用程序启动响应慢、卡顿等现象,从而提升终端设备的使用性能。并且可以使用预读模型增加预读命中率,提升从外部存储设备读取至内存中的文件页被应用层访问的机率,从而减少无效预读。
可以理解的是,终端设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本实施例可以根据上述方法示例对终端设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图8示出了上述实施例中涉及的终端设备800的一种可能的组成示意图,如图8所示,该终端设备800可以包括:状态获取模块801、预读窗口确定模块802和预读模块803。
其中,状态获取模块801可以用于支持终端设备800执行上述步骤101、步骤201等,和/或用于本文所描述的技术的其他过程。
预读窗口确定模块802可以用于支持终端设备800执行上述步骤102、步骤202、步骤203等,和/或用于本文所描述的技术的其他过程。
预读模块803可以用于支持终端设备800执行上述步骤103、步骤204、步骤303、步骤304等,和/或用于本文所描述的技术的其他过程。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本实施例提供的终端设备,用于执行上述预读取文件页的方法,因此可以达到与上述实现方法相同的效果。
在采用集成的单元的情况下,终端设备可以包括处理模块、存储模块和通信模块。其中,处理模块可以用于对终端设备的动作进行控制管理,例如,可以用于支持终端设备执行上述状态获取模块801、预读窗口确定模块802和预读模块803执行的步骤。存储模块可以用于支持终端设备执行存储程序代码和数据等。通信模块,可以用于支持终端设备与其他设备的通信。
其中,处理模块可以是处理器或控制器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理(digital signal processing,DSP)和微处理器的组合等等。存储模块可以是存储器。通信模块具体可以为射频电路、蓝牙芯片、Wi-Fi芯片等与其他设备交互的设备。
在一个实施例中,当处理模块为处理器,存储模块为存储器时,本实施例所涉及的终端设备可以为具有图1所示结构的设备。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得终端设备执行上述相关方法步骤实现上述实施例中的预读取文件页的方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的预读取文件页的方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的预读取文件页的方法。
其中,本实施例提供的终端设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (30)

1.一种预读取文件页的方法,其特征在于,包括:
获取状态参数信息,所述状态参数信息用于表示内存使用状态或输入输出IO处理状态中至少一项;
根据所述状态参数信息确定文件预读窗口的大小;
根据所述文件预读窗口从外部存储设备读取相应的文件页至内存中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述状态参数信息确定文件预读窗口的大小,包括:当所述状态参数信息指示内存使用压力或IO处理压力中至少一项处于第一级别时,减小所述文件预读窗口的大小;当所述状态参数信息指示所述内存使用压力或IO处理压力中至少一项处于第二级别时,增大所述文件预读窗口的大小;
其中,所述第一级别的内存使用压力或IO处理压力大于所述第二级别的内存使用压力或IO处理压力。
3.根据权利要求1或2所述的方法,其特征在于,所述状态参数信息包括内存参数或IO参数中至少一项,所述内存参数包括内存占用量、内存使用率、或缺页累计次数中至少一项,所述IO参数包括IO队列长度。
4.根据权利要求3所述的方法,其特征在于,所述根据所述状态参数信息确定文件预读窗口的大小,包括:
根据所述内存参数和所述IO参数中至少一项确定第一指标;
根据所述第一指标确定所述文件预读窗口的大小。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一指标确定所述文件预读窗口的大小,包括:
根据所述第一指标确定所述第一指标所属的数值区间;
将所述第一指标所属的数值区间对应的窗口大小作为所述文件预读窗口的大小。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述根据所述文件预读窗口从外部存储设备读取相应的文件页至内存中,包括:
根据预读模型选取所述文件预读窗口内的至少一个文件页,将所述至少一个文件页从外部存储设备读取至内存中;
其中,所述预读模型为根据文件访问实时数据和文件访问历史数据中至少一项确定的内存中的数据结构,所述预读模型与文件对应,所述文件访问实时数据与所述文件访问历史数据不同步,所述文件访问历史数据为所述外部存储设备中的数据。
7.根据权利要求6所述的方法,其特征在于,所述预读模型包括N个比特位,每个比特位对应所述文件的一个文件页,每个比特位用于表示所述比特位对应的文件页是否被访问,N为大于或等于1的整数。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
判断所述至少一个文件页所构成的片段的个数是否大于第一阈值;
若所述至少一个文件页所构成的片段的个数大于第一阈值,则将所述文件预读窗口内的所有文件页从外部存储设备读取至内存中;
若所述至少一个文件页所构成的片段的个数小于或等于第一阈值,则执行将所述至少一个文件页从外部存储设备读取至内存中的步骤。
9.根据权利要求8所述的方法,其特征在于,所述将所述文件预读窗口内的所有文件页从外部存储设备读取至内存中,包括:
判断所述文件预读窗口的最后一个文件页对应的比特位是否表示所述最后一个文件页被访问;
当所述最后一个文件页对应的比特位表示所述最后一个文件页被访问时,将所述文件预读窗口内的所有文件页和所述文件预读窗口之后的至少一个文件页从外部存储设备读取至内存中;
当所述最后一个文件页对应的比特位表示所述最后一个文件页未被访问时,将所述文件预读窗口内的所有文件页从外部存储设备读取至内存中;
其中,所述文件预读窗口之后的至少一个文件页与所述文件预读窗口的最后一个文件页属于同一片段。
10.根据权利要求8所述的方法,其特征在于,所述将所述至少一个文件页从外部存储设备读取至内存中,包括:
判断所述文件预读窗口的最后一个文件页对应的比特位是否表示所述最后一个文件页被访问;
当所述最后一个文件页对应的比特位表示所述最后一个文件页被访问时,将所述至少一个文件页和所述文件预读窗口之后的至少一个文件页从外部存储设备读取至内存中;
当所述最后一个文件页对应的比特位表示所述最后一个文件页未被访问时,将所述至少一个文件页从外部存储设备读取至内存中;
其中,所述文件预读窗口之后的至少一个文件页与所述文件预读窗口的最后一个文件页属于同一片段。
11.根据权利要求6至10任一项所述的方法,其特征在于,所述文件访问历史数据包括本次打开所述文件之前的读访问请求的位置、长度、或时间中至少一项,所述文件访问实时数据包括本次打开所述文件之后的读访问请求的位置、长度、或时间中至少一项。
12.根据权利要求6至11任一项所述的方法,其特征在于,所述方法还包括:
根据所述预读模型更新所述外部存储设备中的所述文件对应的文件访问历史数据。
13.根据权利要求1至12任一项所述的方法,其特征在于,所述获取状态参数信息,包括:
在触发预读取文件页时获取所述状态参数信息;或者,
以预设周期获取所述状态参数信息。
14.一种预读取文件页的装置,其特征在于,包括:
状态获取模块,用于获取状态参数信息,所述状态参数信息用于表示内存使用状态或输入输出IO处理状态中至少一项;
预读窗口确定模块,用于根据所述状态参数信息确定文件预读窗口的大小;
预读模块,用于根据所述文件预读窗口从外部存储设备读取相应的文件页至内存中。
15.根据权利要求14所述的装置,其特征在于,所述预读窗口确定模块用于:当所述状态参数信息指示内存使用压力或IO处理压力中至少一项处于第一级别时,减小所述文件预读窗口的大小;当所述状态参数信息指示所述内存使用压力或IO处理压力中至少一项处于第二级别时,增大所述文件预读窗口的大小;
其中,所述第一级别的内存使用压力或IO处理压力大于所述第二级别的内存使用压力或IO处理压力。
16.根据权利要求14或15所述的装置,其特征在于,所述状态参数信息包括内存参数或IO参数中至少一项,所述内存参数包括内存占用量、内存使用率、或缺页累计次数中至少一项,所述IO参数包括IO队列长度。
17.根据权利要求16所述的装置,其特征在于,所述预读窗口确定模块用于:根据所述内存参数和所述IO参数中至少一项确定第一指标;根据所述第一指标确定所述文件预读窗口的大小。
18.根据权利要求17所述的装置,其特征在于,所述预读窗口确定模块用于:根据所述第一指标确定所述第一指标所属的数值区间;将所述第一指标所属的数值区间对应的窗口大小作为所述文件预读窗口的大小。
19.根据权利要求14至18任一项所述的装置,其特征在于,所述预读模块用于:根据预读模型选取所述文件预读窗口内的至少一个文件页,将所述至少一个文件页从外部存储设备读取至内存中;其中,所述预读模型为根据文件访问实时数据和文件访问历史数据中至少一项确定的内存中的数据结构,所述预读模型与文件对应,所述文件访问实时数据与所述文件访问历史数据不同步,所述文件访问历史数据为所述外部存储设备中的数据。
20.根据权利要求19所述的装置,其特征在于,所述预读模型包括N个比特位,每个比特位对应所述文件的一个文件页,每个比特位用于表示所述比特位对应的文件页是否被访问,N为大于或等于1的整数。
21.根据权利要求20所述的装置,其特征在于,所述预读模块还用于:判断所述至少一个文件页所构成的片段的个数是否大于第一阈值;若所述至少一个文件页所构成的片段的个数大于第一阈值,则将所述文件预读窗口内的所有文件页从外部存储设备读取至内存中;若所述至少一个文件页所构成的片段的个数小于或等于第一阈值,则执行将所述至少一个文件页从外部存储设备读取至内存中的步骤。
22.根据权利要求21所述的装置,其特征在于,所述预读模块用于:
判断所述文件预读窗口的最后一个文件页对应的比特位是否表示所述最后一个文件页被访问;
当所述最后一个文件页对应的比特位表示所述最后一个文件页被访问时,将所述文件预读窗口内的所有文件页和所述文件预读窗口之后的至少一个文件页从外部存储设备读取至内存中;
当所述最后一个文件页对应的比特位表示所述最后一个文件页未被访问时,将所述文件预读窗口内的所有文件页从外部存储设备读取至内存中;
其中,所述文件预读窗口之后的至少一个文件页与所述文件预读窗口的最后一个文件页属于同一片段。
23.根据权利要求21所述的装置,其特征在于,所述预读模块用于:
判断所述文件预读窗口的最后一个文件页对应的比特位是否表示所述最后一个文件页被访问;
当所述最后一个文件页对应的比特位表示所述最后一个文件页被访问时,将所述至少一个文件页和所述文件预读窗口之后的至少一个文件页从外部存储设备读取至内存中;
当所述最后一个文件页对应的比特位表示所述最后一个文件页未被访问时,将所述至少一个文件页从外部存储设备读取至内存中;
其中,所述文件预读窗口之后的至少一个文件页与所述文件预读窗口的最后一个文件页属于同一片段。
24.根据权利要求19至23任一项所述的装置,其特征在于,所述文件访问历史数据包括本次打开所述文件之前的读访问请求的位置、长度、或时间中至少一项,所述文件访问实时数据包括本次打开所述文件之后的读访问请求的位置、长度、或时间中至少一项。
25.根据权利要求19至24任一项所述的装置,其特征在于,所述预读模块还用于:根据所述预读模型更新所述外部存储设备中的所述文件对应的文件访问历史数据。
26.根据权利要求14至25任一项所述的装置,其特征在于,所述状态获取模块用于:在触发预读取文件页时获取所述状态参数信息;或者,以预设周期获取所述状态参数信息。
27.一种终端设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-13中任一项所述的方法。
28.一种计算机可读存储介质,其特征在于,包括计算机程序,所述计算机程序在计算机上被执行时,使得所述计算机执行权利要求1-13中任一项所述的方法。
29.一种计算机程序,其特征在于,当所述计算机程序被计算机执行时,用于执行权利要求1-13中任一项所述的方法。
30.一种芯片,其特征在于,包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行如权利要求1-13中任一项所述的方法。
CN201910798611.8A 2019-08-27 2019-08-27 预读取文件页的方法、装置和终端设备 Pending CN112445725A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910798611.8A CN112445725A (zh) 2019-08-27 2019-08-27 预读取文件页的方法、装置和终端设备
PCT/CN2020/092247 WO2021036370A1 (zh) 2019-08-27 2020-05-26 预读取文件页的方法、装置和终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910798611.8A CN112445725A (zh) 2019-08-27 2019-08-27 预读取文件页的方法、装置和终端设备

Publications (1)

Publication Number Publication Date
CN112445725A true CN112445725A (zh) 2021-03-05

Family

ID=74683545

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910798611.8A Pending CN112445725A (zh) 2019-08-27 2019-08-27 预读取文件页的方法、装置和终端设备

Country Status (2)

Country Link
CN (1) CN112445725A (zh)
WO (1) WO2021036370A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113760191A (zh) * 2021-08-31 2021-12-07 荣耀终端有限公司 数据读取方法、装置、存储介质和程序产品
CN113760192A (zh) * 2021-08-31 2021-12-07 荣耀终端有限公司 数据读取方法、装置、存储介质和程序产品
CN114461588A (zh) * 2021-08-20 2022-05-10 荣耀终端有限公司 调节预读窗口的方法及电子设备
CN114461589A (zh) * 2021-08-24 2022-05-10 荣耀终端有限公司 读取压缩文件的方法、文件***及电子设备
CN114489469A (zh) * 2021-07-20 2022-05-13 荣耀终端有限公司 一种数据读取方法、电子设备及存储介质
CN116680142A (zh) * 2022-11-15 2023-09-01 荣耀终端有限公司 内存资源监测方法、电子设备、程序产品及介质
CN117130952A (zh) * 2023-01-10 2023-11-28 荣耀终端有限公司 预读方法和预读装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508638A (zh) * 2011-09-27 2012-06-20 华为技术有限公司 用于非一致性内存访问的数据预取方法和装置
CN106250064A (zh) * 2016-08-19 2016-12-21 深圳大普微电子科技有限公司 固态硬盘控制装置和基于学习的固态硬盘数据存取方法
CN108763104A (zh) * 2018-05-23 2018-11-06 北京小米移动软件有限公司 预读取文件页的方法、装置及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080091921A1 (en) * 2006-10-12 2008-04-17 Diab Abuaiadh Data prefetching in a microprocessing environment
CN101388824B (zh) * 2008-10-15 2011-02-16 中国科学院计算技术研究所 一种机群***中分片存储模式下文件读取的方法及***
CN104715048B (zh) * 2015-03-26 2018-06-05 浪潮集团有限公司 一种文件***缓存预读取方法
CN106951181A (zh) * 2017-02-21 2017-07-14 深圳大普微电子科技有限公司 一种数据存储***的控制装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508638A (zh) * 2011-09-27 2012-06-20 华为技术有限公司 用于非一致性内存访问的数据预取方法和装置
CN106250064A (zh) * 2016-08-19 2016-12-21 深圳大普微电子科技有限公司 固态硬盘控制装置和基于学习的固态硬盘数据存取方法
CN108763104A (zh) * 2018-05-23 2018-11-06 北京小米移动软件有限公司 预读取文件页的方法、装置及存储介质

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114489469B (zh) * 2021-07-20 2022-12-23 荣耀终端有限公司 一种数据读取方法、电子设备及存储介质
CN114489469A (zh) * 2021-07-20 2022-05-13 荣耀终端有限公司 一种数据读取方法、电子设备及存储介质
CN114461588A (zh) * 2021-08-20 2022-05-10 荣耀终端有限公司 调节预读窗口的方法及电子设备
CN114461589B (zh) * 2021-08-24 2023-04-11 荣耀终端有限公司 读取压缩文件的方法、文件***及电子设备
CN114461589A (zh) * 2021-08-24 2022-05-10 荣耀终端有限公司 读取压缩文件的方法、文件***及电子设备
CN113760191B (zh) * 2021-08-31 2022-09-23 荣耀终端有限公司 数据读取方法、装置、存储介质和程序产品
CN113760191A (zh) * 2021-08-31 2021-12-07 荣耀终端有限公司 数据读取方法、装置、存储介质和程序产品
CN113760192B (zh) * 2021-08-31 2022-09-02 荣耀终端有限公司 数据读取方法、装置、存储介质和程序产品
CN113760192A (zh) * 2021-08-31 2021-12-07 荣耀终端有限公司 数据读取方法、装置、存储介质和程序产品
CN116680142A (zh) * 2022-11-15 2023-09-01 荣耀终端有限公司 内存资源监测方法、电子设备、程序产品及介质
CN116680142B (zh) * 2022-11-15 2024-05-07 荣耀终端有限公司 内存资源监测方法、电子设备、程序产品及介质
CN117130952A (zh) * 2023-01-10 2023-11-28 荣耀终端有限公司 预读方法和预读装置
CN117130952B (zh) * 2023-01-10 2024-06-21 荣耀终端有限公司 预读方法和预读装置

Also Published As

Publication number Publication date
WO2021036370A1 (zh) 2021-03-04

Similar Documents

Publication Publication Date Title
CN112445725A (zh) 预读取文件页的方法、装置和终端设备
CN109756230B (zh) 数据压缩存储方法、数据压缩方法、装置、设备及介质
US20240231890A1 (en) Memory management method and electronic device
CN107925749B (zh) 用于调整电子设备的分辨率的方法和设备
EP3451193B1 (en) Electronic device and file data journaling method of electronic device
EP2869181A1 (en) Method for executing functions in response to touch input and electronic device implementing the same
WO2019137252A1 (zh) 内存处理方法、电子设备、计算机可读存储介质
WO2019137258A1 (zh) 内存处理方法、电子设备及计算机可读存储介质
CN111177025B (zh) 数据存储方法、装置及终端设备
US10198174B2 (en) Electronic device and method of managing memory of electronic device
US20190370009A1 (en) Intelligent swap for fatigable storage mediums
US20170083261A1 (en) Electronic device and method of analyzing fragmentation of electronic device
CN110837480A (zh) 缓存数据的处理方法及装置、计算机存储介质、电子设备
EP3340155A1 (en) Electronic device and method for displaying web page using the same
CN110837343B (zh) 处理快照的方法、装置及终端
CN115016706B (zh) 一种线程的调度方法及电子设备
CN112445766A (zh) 一种终端碎片整理方法、装置以及终端
CN116048648B (zh) 应用预加载方法、应用的启动方法及电子设备
WO2019128542A1 (zh) 应用处理方法、电子设备、计算机可读存储介质
CN111338745A (zh) 一种虚拟机的部署方法、装置及智能设备
CN112765084A (zh) 计算机设备、虚拟化加速设备、数据传输方法及存储介质
CN113641634B (zh) 一种日志流量控制的方法以及电子设备
CN114416178A (zh) 数据访问方法、装置及非临时性计算机可读存储介质
CN114968546A (zh) 一种负载处理方法及相关装置
CN114077529B (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