CN114489469B - 一种数据读取方法、电子设备及存储介质 - Google Patents
一种数据读取方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114489469B CN114489469B CN202110820222.8A CN202110820222A CN114489469B CN 114489469 B CN114489469 B CN 114489469B CN 202110820222 A CN202110820222 A CN 202110820222A CN 114489469 B CN114489469 B CN 114489469B
- Authority
- CN
- China
- Prior art keywords
- read
- page
- reading
- window
- request
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请属于数据传输领域,提供了一种数据读取方法、电子设备及存储介质。数据读取方法包括:获取应用程序的访问请求,根据访问请求确定第一请求页的页标识,第一请求页为需要从内存储器中读取的页,根据访问请求所在的第一场景,确定第一请求页的预读窗口是低效预读窗口或高效预读窗口,根据第一请求页的页标识以及预读数量,从外存储器中确定第一数据,第一请求页的预读窗口为低效预读窗口时,预读数量为低效预读窗口对应的预读页的数量,预读窗口为高效预读窗口时,预读数量为高效预读窗口对应的预读页的数量,将第一数据读取至内存储器,从而可以根据第一场景进行合理预读,避免由于预读不合理造成的系统性能恶化的问题。
Description
技术领域
本申请涉及数据传输领域,尤其涉及一种数据读取方法、电子设备及存储介质。
背景技术
在电子设备中,从外存储器中读取数据的速度相对于从内存储器中读取数据的速度要慢很多,而读取数据的速度是影响系统性能的关键瓶颈。为此,现有的操作系统会将应用程序当前需要使用的数据,从外存储器中读取到内存储器中,使得后续应用程序可以直接从内存储器中读取数据,以提高应用程序的响应速度。在将当前需要使用的数据读取至内存储器时,操作系统还会预读一部分当前并不需要,但是后续可能使用的数据至内存储器中,供应用程序后续使用。预读的数据在后续可能会被应用程序使用,也可能不会被应用程序使用。
内存储器的内存空间有限,当内存储器的内存空间过小或者被较多应用程序占用而出现剩余内存空间不足时,操作系统会清理内存储器中较早存储的数据,以释放内存空间。该清理过程会触发内存整理,从而占用计算资源。同时,该清理过程还会触发内存储器将数据回写至外存储器的动作,导致系统性能恶化。而预读的数据占用内存储器空间,如果预读的数据在后续没有被使用,在清理过程中又会占用计算资源,会导致内存储器空间以及计算资源的严重浪费,加剧系统性能的恶化。
发明内容
本申请提供一种数据读取方法、电子设备及存储介质,可以合理进行预读,从而优化系统性能。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种数据读取方法,应用于电子设备,电子设备包括内存储器和外存储器,该方法包括:
获取应用程序的访问请求,根据访问请求确定第一请求页的页标识,第一请求页为需要从内存储器中读取的页;根据访问请求所在的第一场景,确定第一请求页的预读窗口是低效预读窗口或高效预读窗口,高效预读窗口对应的预读页的数量和低效预读窗口对应的预读页的数量不同;根据第一请求页的页标识以及预读数量,从外存储器中确定第一数据;当第一请求页的预读窗口为低效预读窗口时,预读数量为低效预读窗口对应的预读页的数量,当预读窗口为高效预读窗口时,预读数量为高效预读窗口对应的预读页的数量;将第一数据读取至内存储器。
上述实施例中,在获取应用程序的访问请求时,根据访问请求所在的第一场景,确定第一请求页的预读窗口的类型,根据预读窗口的类型确定预读数量,根据预读数量以及第一请求页的页标识确定从外存储器读取至内存储器的第一数据,从而可以根据第一场景进行合理预读,避免由于预读不合理造成的系统性能恶化的问题。
在一种可能的实现方式中,高效预读窗口对应的预读页的数量高于低效预读窗口对应的预读页的数量,电子设备可以根据不同的预读窗口类型预读不同数量的预读页,从而使得读取的预读页的数量与第一场景相适配,提高预读的合理性。
在一种可能的实现方式中,低效预读窗口对应的预读页的数量为0,即在预读窗口为低效预读窗口时,不进行预读,从而避免由于预读页后续不被使用所造成的浪费内存空间的问题。
在一种可能的实现方式中,根据访问请求所在的第一场景,确定第一请求页的预读窗口是低效预读窗口或高效预读窗口,包括:
若确定在第一场景中,第一请求页具有第一标识,则确定第一请求页的预读窗口是低效预读窗口;若确定在第一场景中,第一请求页具有第二标识,则确定第一请求页是高效预读窗口,从而可以根据第一请求页的标识确定对应的预读窗口的类型,进而提高了计算速度。
在一种可能的实现方式中,在根据所述访问请求所在的第一场景,确定第一请求页的预读窗口是低效预读窗口或高效预读窗口之前,还包括:根据访问请求对应的操作指令以及电子设备当前显示的界面确定访问请求所在的场景是第一场景。
在一种可能的实现方式中,在根据访问请求所在的第一场景,确定第一请求页的预读窗口是低效预读窗口或高效预读窗口之前,还包括:在第一预设时段确定所述第一场景,记录第一场景中第一请求页的预读窗口中的预读页的命中信息;若命中信息满足预设条件,将第一请求页的预读窗口标记为低效预读窗口;若命中信息不满足预设条件,将第一请求页的预读窗口标记为高效预读窗口。
由于在相同场景下,需要读取的数据是固定不变的,因此,通过对第一场景中第一请求页对应的预读页的命中信息进行记录,根据记录结果确定预读窗口的类型,在相同场景下,再根据预读窗口的类型进行预读,提高了预读的合理性,避免产生低效预读的情况。
在一种可能的实现方式中,所述命中信息满足预设条件,包括:根据命中信息得到的命中率小于预设值,命中率是第一请求页的预读窗口中的预读页中,被命中的预读页的数量与预读页的总数的比值。根据命中率确定命中信息,使得命中信息可以真实反映预读页的使用情况。
在一种可能的实现方式中,在记录第一场景中第一请求页的预读窗口中的预读页的命中信息之后,还包括:若检测到第一场景的结束信息,判断命中信息是否满足预设条件,从而使得命中信息与场景一一对应,提高了确定的命中信息的准确度。
在一种可能的实现方式中,记录第一场景中第一请求页对应的预读页的命中信息,包括:为第一请求页对应的预读页添加第一标签,第一标签表示对应的预读页是否被命中。通过第一标签可以快速确定被命中的预读页,提高了命中信息的计算速度。
在一种可能的实现方式中,在将第一请求页的预读窗口标记为低效预读窗口之后,还包括:在第二预设时段确定第一场景,根据第一请求页对应的预读页的命中信息重新标记所述第一请求页的预读窗口,从而可以提高确定出的预读窗口类型的准确度,以便于后续进行合理预读。
在一种可能的实现方式中,电子设备包括内存管理模块,内存管理模块根据访问请求所在的第一场景,确定第一请求页的预读窗口是低效预读窗口或高效预读窗口。
在一种可能的实现方式中,电子设备包括场景感知模块,场景感知模块确定访问请求所在的场景是第一场景,将第一场景发送至内存管理模块。
在一种可能的实现方式中,内存管理模块根据第一请求页的页标识以及预读数量,从外存储器中确定第一数据。
第二方面,提供一种数据读取装置,应用于电子设备,电子设备包括内存储器和外存储器,所述装置包括存储模块和处理模块;
所述处理模块用于获取应用程序的访问请求,所述访问请求包括第一请求页的页标识,所述第一请求页为需要从所述内存储器中读取的页;根据所述访问请求所在的第一场景,确定所述第一请求页的预读窗口是低效预读窗口或高效预读窗口,所述高效预读窗口对应的预读页的数量和所述低效预读窗口对应的预读页的数量不同;
所述存储模块用于根据所述第一请求页的页标识以及预读数量,从所述外存储器中确定第一数据;所述第一请求页的预读窗口为所述低效预读窗口时,所述预读数量为所述低效预读窗口对应的预读页的数量,所述预读窗口为所述高效预读窗口时,所述预读数量为所述高效预读窗口对应的预读页的数量;将所述第一数据读取至所述内存储器。
在一种可能的实现方式中,所述高效预读窗口对应的预读页的数量高于所述低效预读窗口对应的预读页的数量。
在一种可能的实现方式中,所述低效预读窗口对应的预读页的数量为0。
在一种可能的实现方式中,所述处理模块具体用于:若确定在所述第一场景中,所述第一请求页具有第一标识,则确定所述第一请求页的预读窗口是低效预读窗口;若确定在所述第一场景中,所述第一请求页具有第二标识,则确定所述第一请求页是高效预读窗口。
在一种可能的实现方式中,所述处理模块还用于:根据所述访问请求对应的操作指令以及所述电子设备当前显示的界面确定所述访问请求所在的场景是第一场景。
在一种可能的实现方式中,所述存储模块还用于:若在第一预设时段检测到所述第一场景,记录所述第一场景中所述第一请求页的预读窗口中的预读页的命中信息;若所述命中信息满足预设条件,将所述第一请求页的预读窗口标记为低效预读窗口;若所述命中信息不满足预设条件,将所述第一请求页的预读窗口标记为高效预读窗口。
在一种可能的实现方式中,所述存储模块还用于:根据所述命中信息得到的命中率小于预设值,所述命中率是所述第一请求页的预读窗口中的预读页中,被命中的预读页的数量与预读页的总数的比值。
在一种可能的实现方式中,所述存储模块还用于:若检测到所述第一场景的结束信息,判断所述命中信息是否满足预设条件。
在一种可能的实现方式中,所述存储模块还用于:为所述第一请求页对应的预读页添加第一标签,所述第一标签表示对应的预读页是否被命中。
在一种可能的实现方式中,所述存储模块还用于:若在第二预设时段检测到第一场景,根据所述第一请求页对应的预读页的命中信息更新所述第一标识。
第三方面,提供一种电子设备,包括处理器和存储器,所述存储器包括内存储器和外存储器,所述处理器用于执行存储在内存储器或者外存储器中的计算机程序,以实现如上述第一方面所述的数据读取方法。
第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的数据读取方法。
第五方面,提供一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述第一方面所述的数据读取方法。
附图说明
图1为本申请实施例提供的电子设备的硬件架构图;
图2是本申请实施例提供的电子设备的软件架构图;
图3为本申请一实施例提供数据读取方法的流程图;
图4是本申请一实施例提供的文件对应的页的示意图;
图5为本申请另一实施例提供数据读取方法的流程图;
图6为本申请一实施例提供的数据读取方法的流程示意图;
图7为本申请一实施例提供的预读页的命中信息的学习流程图;
图8为本申请实施例提供的记录预读页的命中信息的流程图;
图9为一种场景中预读页的命中信息的学习方法流程图;
图10为一种场景中数据读取方法的流程示意图;
图11为一种数据读取的场景中电子设备的显示界面的示意图;
图12为本申请一实施例提供的电子设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
如图1所示,电子设备的存储器包括内存储器和外存储器。内存储器可以是随机存取存储器(Random Access Memory,RAM),外存储器可以是只读存储器(Read-Only Memory,ROM)。外存储器可以是通用闪存存储(Universal Flash Storage,UFS)、嵌入式多媒体卡(Embedded Multi Media Card,eMMC)、NAND闪存、固态硬盘(Solid State Disk或SolidState Drive,SSD)、机械硬盘等器件。
在电子设备在使用过程中,电子设备从内存储器读取数据的速度比从外存储器读取数据的速度要快,而数据的读取速度是影响系统性能的关键因素。应用程序安装后,运行应用程序所需的数据通常存储于外存储器。为了提高数据读取速度,在应用程序的运行过程中,一般采用内存映射文件的方式读取数据。即从外存储器读取的运行应用程序所需的数据并保存在内存储器中。后续,应用程序便可以从内存储器中读取数据,而不用访问外存储器,从而提高数据读取速度,进而提高系统性能。
以安装Android系统的电子设备为例,如图2所示,电子设备的分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图2所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层(即framework)为应用程序层的应用程序提供应用编程接口(application programming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图2所示,应用程序框架层可以包括通知管理器、内容提供器、资源管理器、场景感知模块、输入管理器(Input Manager Service,IMS)、组件管理器(Activity ManagerService,AMS)、窗口管理器(Window Manager Service,WMS)。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
IMS用于感知用户操作,AMS用于管理和调度应用程序,WMS可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕、打开应用程序的界面等。
场景感知模块用于根据用户操作以及应用程序的界面确定当前场景。
应用程序框架层还可以包括视图系统、电话管理器等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动、内存管理模块、存储管理模块。内存管理模块用于管理内存储器,存储管理模块用于管理外存储器。
下面结合图1所示的电子设备的硬件架构以及图2所示的电子设备的软件架构,对数据读取的流程进行说明。
如图3所示,电子设备在检测到用户的操作指令时,将操作指令发送给第一应用程序,第一应用程序根据操作指令确定访问请求,向Framework发送访问请求对应的数据标识,Framework根据访问请求对应的数据标识对第二应用程序的界面进行管理,以显示对应的第二应用程序的界面。其中,对第二应用程序的界面的管理包括启动第二应用程序的界面、切换第二应用程序的界面、更新第二应用程序的界面等。访问请求对应的数据标识可以是应用程序的包名、activity名等。例如,若第一应用程序接收到用户打开第二应用程序的操作,则确定访问请求是启动第二应用程序,向Framework中的AMS发送第二应用程序的包名以及activity名。AMS和WMS根据第二应用程序的包名以及activity名显示第二应用程序的启动界面。
在Framework显示对应的第二应用程序的界面的过程中,第二应用程序向内存管理模块请求显示界面所需的数据。显示界面所需的数据可以是一个或多个文件,也可以是一个文件的一部分。若内存储器中存在显示界面所需的数据,应用程序通过内存管理模块从内存储器中读取显示界面所需的数据。其中,显示界面所需的数据,可以是界面上需要展示的文字、图片、音频、视频等。
若电子设备由于刚启动或者刚进行过内存清理,而导致内存储器中不存在显示界面所需的数据,内存管理模块首先向存储管理模块请求显示界面所需的数据。存储管理模块在接收到数据请求后,从外存储器中读取显示界面所需的数据。存储管理模块在读取显示界面所需的数据后,将显示界面所需的数据通过内存管理模块映射到内存储器中。内存管理模块再将映射到内存储器中的数据发送至第二应用程序。在将显示界面所需的数据映射到内存储器时,不是直接从外存储器读取显示界面所需的全部数据,而是将显示界面所需的数据分割为至少一个页,以“页”的形式从外存储器读取数据。“页”是Linux读取数据的最小单位,一页的大小可以为4096KB,每一页均对应一个页标识。具体地,以显示界面所需的数据是文件F为例,应用程序向内存管理模块请求文件F,内存管理模块根据文件F确定文件F对应的页,分一次或者多次向存储管理模块发送读取页的请求。存储管理模块根据内存管理模块的请求,从外存储器读取与请求对应的页,再通过内存管理模块将与请求对应的页读取至内存储器中。若文件F对应的页未全部读取至内存储器,则内存管理模块继续向存储管理模块发送读取页的请求,直到文件F对应的页全部读取至内存储器,内存管理模块将文件F发送至应用程序。需要说明的是,若显示应用程序界面所需的数据是一个文件的一部分,则在确定显示界面所需的数据全部读取至内存储器时,内存管理模块根据显示界面所需的数据,将文件的对应部分发送至应用程序。
内存管理模块向存储管理模块发送读取页的请求时,除了请求第一请求页之外,还会根据预读信息请求一部分与第一请求页临近的页,该临近的页即为预读页,第一请求页是与显示界面所需的数据对应的页中的其中一个页。例如,如图4所示,显示界面所需的数据是文件F,文件F对应的页为依次相邻的id101、id102和id103。内存管理模块根据文件F,确定首先需要读取id101,则id101为第一请求页,若第一请求页对应的预读信息为向后预读4页,则内存管理模块向存储管理模块发送读取id101、id102、id103、id104、id105的请求。id102、id103、id104和id105即为预读页。存储管理模块根据内存管理模块的请求,从外存储器读取第一请求页以及预读页上的数据,将读取的数据通过内存管理模块读取至内存储器,供应用程序后续使用。
读取至内存储器中的预读页上的数据会存在不被应用程序读取的可能。例如,若应用程序向内存管理模块请求文件F,文件F对应的页为id101、id102和id103,而读取至内存储器中的页为id101、id102、id103、id104、id105。若应用程序读取文件F后没有继续发送读取请求,则读取至内存储器的页中,id101、id102、id103会被应用程序读取,id104和id105不会被应用程序读取。
由于预读页会占用内存储器的空间,如果预读页在后续没有被应用程序读取,内存储器在清理较早读取的数据时,还会清理未被读取的预读页,该清理过程会触发如图1所示的内存储器的数据回写至外存储器的动作,进一步浪费计算资源,导致系统性能的恶化。
为此,本申请提供一种数据读取方法,如图5所示,电子设备在检测到用户的操作指令时,将操作指令发送至Framework,Framework将操作指令发送至第一应用程序,第一应用程序根据操作指令确定访问请求,向Framework发送访问请求对应的数据标识,Framework根据访问请求对应的数据标识对第二应用程序的界面进行管理,以显示对应的第二应用程序的界面。同时,Framework根据接收到的操作指令以及当前显示的应用程序的界面,确定访问请求所在的场景是第一场景,将第一场景的标识发送至内存管理模块。例如,Framework中的IMS在检测到用户的点击操作后,将点击操作对应的操作指令发送至第一应用程序。第一应用程序根据操作指令,确定该操作指令用于打开第二应用程序,则确定访问请求是启动第二应用程序,向Framework中的AMS发送第二应用程序的标识。AMS和WMS根据第二应用程序的标识显示第二应用程序的启动界面。Framework中的场景感知模块根据IMS接收到的点击操作以及第二应用程序的启动界面,确定当前的场景是第一场景,将第一场景的标识发送至内存管理模块。
在Framework显示对应的第二应用程序的界面的过程中,应用程序向内存管理模块请求显示界面所需的数据。内存管理模块根据预先设定的各场景的预读信息,确定第一场景对应的预读信息,再根据显示界面所需的数据确定需要从内存储器中读取的页,根据需要从内存储器中读取的页以及预读信息,向存储管理模块发送读取页的请求,存储管理模块在接收到读取页的请求后,从外存储器读取相应的页上的数据。存储管理模块在读取数据后,将读取的数据通过内存管理模块映射到内存储器中,内存管理模块在确定显示界面所需的数据均存储于内存储器后,将显示界面所需的数据发送至应用程序。
其中,预读信息用于指示需要从内存储器中读取的页中,每个第一请求页的预读窗口的类型。其中,第一请求页可以是每次需要读取的第一个页。第一请求页的预读窗口的类型包括高效预读窗口和低效预读窗口。高效预读窗口是指在读取第一请求页时,同时读取的预读页后续被应用程序读取的概率较高,低效预读窗口是指在读取第一请求页时,同时读取的预读页后续被应用程序读取的概率较低。高效预读窗口对应的预读页的数量大于低效预读窗口对应的预读页的数量。
内存管理模块根据第一请求页的预读窗口的类型可以确定出预读页的数量。再根据预读页的数量即可确定出每次需要从存储管理模块预读的页。例如,若原请求页的预读窗口是低效预读窗口,则在读取第一请求页时,预读较少的预读页。若第一请求页的预读窗口是高效预读窗口,则在读取第一请求页时,预读较多的预读页。
由于不同场景下的预读信息不同,因此,根据访问请求所在的第一场景确定预读信息,再根据预读信息进行预读,可以根据不同场景预读不同数量的预读页,使得读取的预读页与场景相适配,提高预读页在后续被应用程序使用的概率,降低由于预读过多导致的系统恶化的概率。
下面对本申请实施例提供的数据读取方法进行示例性说明。
如图6所示,本申请一实施例提供的数据读取方法,该方法可以由电子设备来执行,该方法包括:
S101:获取应用程序的访问请求,根据所述访问请求确定第一请求页的页标识,所述第一请求页为需要从所述内存储器中读取的页。
具体地,电子设备上的应用程序根据接收到的用户的操作指令,确定访问请求。例如,电子设备在检测到点击当前的应用程序的图标的操作指令时,将该操作指令发送至桌面,桌面根据操作指令确定访问请求是启动当前的应用程序。又例如,在当前的应用程序界面,电子设备在检测到点击另一应用程序的链接的操作指令时,将该操作指令发送至当前的应用程序,当前的应用程序确定访问请求是启动另一应用程序。又例如,在应用程序的列表显示界面,电子设备检测到向上滑动的操作指令,将该操作指令发送至应用程序,应用程序确定访问请求是滑动列表。
应用程序在确定访问请求后,将访问请求对应的数据标识发送至Framework,Framework根据访问请求对应的数据标识显示对应的界面。内存管理模块根据显示界面所需的数据确定需要从内存储器中读取的页,再从需要从内存储器中读取的页中确定第一请求页的页标识。
例如,访问请求是启动应用程序,Framework在显示应用程序的启动界面的过程中,应用程序向内存管理模块请求显示启动界面所需的文件F,内存管理模块确定文件F对应的页,文件F对应的页也即需要从内存储器读取的页。若内存储器中不存在文件F对应的页,则内存管理模块分一次或者多次向存储管理模块发送读取文件F对应的页的请求。内存管理模块每次向存储管理模块发送的读取请求对应的页中,第一个页的页标识为第一请求页的页标识,第一个页也即第一请求页。
在一实施例中,内存管理模块在确定需要从内存储器读取的页后,首先确定当前需要从内存储器读取的页,判断内存储器中是否存在该页,若存在该页,则直接读取,不进行预读。若不存在该页,则将该页作为第一请求页。例如,若内存管理模块确定需要从内存储器读取的页为依次排列的id101~id104。当前需要从内存储器读取id101,若内存储器中不存在id101,则将id101作为第一请求页进行预读。在读取id101后,确定当前需要从内存储器读取id102,若内存储器中存在id102,则直接读取id102,不进行预读。在读取id102之后,确定当前需要从内存储器读取id103,若内存储器中不存在id103,则将id103作为第一请求页进行预读。
在另一实施例中,内存管理模块在确定需要从内存储器读取的页后,依次从内存储器读取对应的页,每次读取时均进行预读,则需要从内存储器读取的每个页均为第一请求页。例如,内存管理模块确定需要从内存储器读取的页为依次排列的id101~id104。内存管理模块第一次将id101作为第一请求页进行预读,在从内存储器读取id101之后,将id102作为第一请求页进行预读,以此类推。
S102:根据所述访问请求所在的第一场景,确定所述第一请求页的预读窗口为低效预读窗口或高效预读窗口。
在一实施例中,Framework根据访问请求对应的操作指令以及电子设备当前显示的界面确定访问请求所在的场景是第一场景。例如,预先设定打开应用程序界面的场景中,应用程序在接收到访问请求时,场景开始,在应用程序的启动界面全部显示后,场景结束。Framework中的IMS在检测到用户打开应用程序的操作指令时,记录操作指令,Framework中的场景感知模块根据电子设备当前显示的界面确定应用程序的启动界面的显示情况,根据应用程序的启动界面的显示情况以及操作指令确定访问请求所在的场景是否是第一场景。
在另一实施例中,Framework根据访问请求对应的操作指令以及电子设备当前显示的界面所对应的系统控件确定访问请求所在的场景是第一场景。系统控件可以是列表或者按钮等。例如,预先设定滑动列表的场景中,应用程序在检测到用户的第一次滑动操作时,场景开始,在检测到列表停止滚动时,场景结束。Framework中的IMS在检测到用户滑动列表的操作指令时,记录操作指令,Framework中的场景感知模块根据电子设备当前显示的界面所对应的系统控件确定列表的滑动情况,根据列表的滑动情况以及操作指令确定访问请求所在的场景是否是第一场景。
在一实施例中,在内存管理模块中预先设定第一场景下各请求页的预读窗口的类型。其中,第一场景下各请求页的预读窗口的类型可以是根据经验设定的,也可以是对第一场景下应用程序读取的预读页的情况进行学习得到的。内存管理模块在接收到Framework发送的第一场景后,即可根据预先设定的第一场景下各请求页对应的预读窗口的类型,确定第一请求页的预读窗口的类型。第一请求页在不同场景下的预读窗口的类型是不同的。例如,预先设定的信息中,第一场景下,第一请求页的预读窗口的类型为低效预读窗口。第二场景下,第一请求页的预读窗口的类型为高效预读窗口。
优选的,可以根据预先设定的标识确定第一请求页的预读窗口的类型。例如,若检测到第一请求页存在第一标识,则确定第一请求页的预读窗口是低效预读窗口,若检测到第一请求页不存在第一标识,则确定第一请求页的预读窗口是高效预读窗口,从而可以提高请求页的类型的判定效率。第一标识可以是预设的数字或者字母,例如是数字1。又例如,若检测到第一请求页存在第一标识,则确定第一请求页的预读窗口是低效预读窗口,若检测到第一请求页存在第二标识,则确定第一请求页是高效预读窗口。
在另一实施例中,也可以在确定访问请求所在的场景是第一场景后,查询第一场景的历史记录中,第一请求页以及对应的预读页的读取记录,根据读取记录确定第一请求页的预读窗口的类型,例如,若在历史记录中,将第一请求页读取至内存储器时,同时读取的预读页不存在被应用程序读取的记录,则确定第一请求页的预读窗口是低效预读窗口。若在历史记录中,将第一请求页读取至内存储器时,同时读取的预读页存在被应用程序读取的记录,则确定第一请求页是高效预读窗口。
低效预读窗口是指将第一请求页读取至内存储器时,同时读取的预读页后续被应用程序读取的概率低于或等于第一概率阈值,高效预读窗口是指将第一请求页读取至内存储器时,同时读取的预读页后续被应用程序读取的概率大于或等于第二概率阈值。其中,第一概率阈值和第二概率阈值可以相等,也可以不相等,在实际需要时可以根据需求设定。
高效预读窗口对应的预读页的数量和低效预读窗口对应的预读页的数量不同。比如,高效预读窗口对应的预读页的数量大于低效预读窗口对应的预读页的数量。即若第一请求页的预读窗口是低效预读窗口,则在从外存储器中读取第一请求页时,预读较少的预读页,若第一请求页的预读窗口是高效预读窗口,则从外存储器中读取第一请求页时,预读较多的预读页。
S103:根据所述第一请求页的页标识以及预读数量,从所述外存储器中确定第一数据;其中,当所述第一请求页的预读窗口为所述低效预读窗口时,所述预读数量为所述低效预读窗口对应的预读页的数量,当所述预读窗口为所述高效预读窗口时,所述预读数量为所述高效预读窗口对应的预读页的数量。
其中,第一场景下,低效预读窗口对应的预读页的数量以及高效预读窗口对应的预读页的数量是预先设定的,预读的方向也是预先设定的。内存管理模块根据第一请求页的页标识以及预读窗口的类型即可确定预读页的标识,根据第一请求页的标识以及预读页的标识即可确定第一数据。
在一实施例中,内存储器中不存在第一请求页,则第一请求页以及预读页上的数据即为第一数据。例如,若第一请求页的页标识是id101,内存储器中不存在id101,预先设定的预读的方向是向后,根据低效预读窗口确定预读数量为2,确定需要读取的页为id101~id103,则预读页的页标识为id102和id103,第一数据为id101、id102和id103上的数据。
在另一实施例中,内存储器中存在第一请求页,则根据第一请求页的标识以及内存储器中存储的页确定第一数据。例如,若第一请求页的页标识是id101,内存储器中存在id101和id102,预先设定的预读的方向是向后,根据低效预读窗口确定预读数量为2,确定需要读取的页为id101~id103,由于id101和id102已经存储于内存储器中,仅需要读取id103,则第一数据为id103上的数据。
在一实施例中,低效预读窗口对应的预读页的数量为0,即若第一请求页的预读窗口是低效预读窗口,则不进行预读。
S104:将所述第一数据读取至所述内存储器。
具体地,存储管理模块从外存储器读取第一数据,将第一数据通过内存管理模块映射到内存储器中,使得应用程序可以通过内存管理模块从内存储器读取第一数据。
上述实施例中,根据访问请求所在的第一场景,确定第一请求页的预读窗口是低效预读窗口或高效预读窗口,根据第一请求页的页标识以及预读窗口对应的预读数量确定第一数据,将第一数据读取至内存储器,供应用程序使用。由于预读数量是根据第一请求页是高效预读窗口或低效预读窗口确定的,而高效预读窗口以及低效预读窗口是根据第一场景确定的,因此可以根据访问请求所在的第一场景确定出合适的预读数量,减少由于预读页的数量较多而导致的预读页使用率较低的问题,进而减少由于清理未被读取的预读页造成的占用计算资源的情况发生。
在一实施例中,第一请求页的预读窗口的类型是通过对各场景下的预读页的命中信息进行学习得到的。命中信息是预读页被应用程序读取的信息,若某一预读页后续被应用程序读取,则该预读页的命中信息为被命中,若某一预读页后续未被应用程序读取,则该预读页的命中信息为未被命中。由于在相同场景下,需要读取的数据是固定不变的,因此,通过对各场景下的预读页的命中信息进行学习得到预读窗口的类型,在相同场景下,再根据预读窗口的类型进行预读,提高了预读的合理性,避免产生低效预读的情况。
对预读页的命中信息的学习流程如图7所示,电子设备在检测到用户的操作指令时,将操作指令发送至第一应用程序,第一应用程序根据操作指令确定访问请求,向Framework发送访问请求对应的数据标识,Framework根据访问请求对应的数据标识对第二应用程序的界面进行管理,以显示对应的第二应用程序的界面。同时,Framework根据接收到的操作指令以及电子设备当前显示的界面确定场景信息,将场景信息发送至内存管理模块,场景信息包括场景开始的信息以及场景结束的信息。在显示对应的第二应用程序界面的过程中,第二应用程序向内存管理模块请求显示界面所需的数据。
内存管理模块根据显示界面所需的数据以及原始预读信息,向存储管理模块发送读取页的请求,原始预读信息是预先设定的信息。存储管理模块在接收到读取页的请求后,从外存储器读取文件相应的页。存储管理模块在读取相应的页后,将读取的页通过内存管理模块映射到内存储器中,内存管理模块在确定显示界面所需的数据均存储于内存储器时,将显示界面所需的数据发送至应用程序。内存管理模块在接收到场景结束信息时,对预读至内存中的预读页以及被应用程序读取的预读页进行统计,确定与场景对应的预读页的命中信息。
在确定与场景对应的预读页的命中信息后,内存管理模块根据预读页的命中信息即可确定该场景下每个原请求页的预读窗口的类型。原请求页是指内存管理模块当前需要从内存储器读取的页。第一场景是场景信息中的任一种场景,第一请求页是原请求页中的任一页。示例性地,对第一场景中,第一请求页对应的预读页的命中信息进行统计,若第一请求页对应的预读页的命中信息满足预设条件,则说明第一请求页的预读窗口是低效预读窗口。若第一请求页对应的预读页的命中信息不满足预设条件,则说明第一请求页的预读窗口是高效预读窗口。
在一实施例中,根据命中信息计算命中率,若命中率小于预设值,说明命中信息满足预设条件,若命中率大于或等于预设值,说明命中信息不满足预设条件。其中,命中率是原请求页对应的预读页中,被命中的预读页的数量与预读页的总数的比值,预设值可以是50%。即若命中率大于或者等于50%,则说明对应的原请求页的预读窗口是高效预读窗口,若命中率小于50%,则说明对应的原请求页的预读窗口是低效预读窗口。通过命中率确定命中信息,提高了后续确定出的预读窗口类型的准确度。
例如,在第一场景中,访问请求为打开应用程序的界面,打开应用程序的界面需要图片P1和P3,内存管理模块根据访问请求确定图片P1对应的页是id101和id102,图片P3对应的页是id104和id105。内存管理模块确定首先需要从内存储器读取id101,将id101作为第一请求页,若预读信息是向后预读4页,则内存管理模块向存储管理模块请求id101~id105,存储管理模块从外存储器读取id101~id105,通过内存管理模块映射的内存储器中。此时,内存储器中的页为第一请求页id101,以及预读页id102、id103、id104、id105。内存管理模块根据图片P1将id101和id102发送至应用程序,根据图片P3将id104和id105发送至应用程序。因此,在第一场景下,id101对应的预读页中,id102、id104、id105均被命中,id103未被命中,则命中率为75%,大于50%,则在第一场景下,第一请求页id101的预读窗口为高效预读窗口。
又例如,在第一场景中,访问请求为打开应用程序的界面,打开应用程序的界面仅需要请求图片P1,图片P1对应的页是id101和id102,内存管理模块确定首先需要向内存储器读取id101,将id101作为第一请求页,若预读信息是向后预读4页,则内存管理模块向存储管理模块请求id101~id105,存储管理模块从外存储器读取id101~id105,通过内存管理模块映射的内存中。此时,内存储器中的页为第一请求页id101,以及预读页id102、id103、id104、id105。内存管理模块根据图片P1将id101和id102发送至应用程序。第一场景下,id101对应的预读页中,只有id102被命中,则命中率为25%,小于50%,则在第一场景下,第一请求页id101的预读窗口为低效预读窗口。
在另一实施例中,根据第一请求页对应的预读页的命中信息,确定是否存在被命中的预读页,若不存在被命中的预读页,即命中率为0,则判定第一请求页的预读窗口为低效预读窗口,若存在被命中的预读页,则判定第一请求页的预读窗口为高效预读窗口。
在又一实施例中,在每次确定当前场景是第一场景时,记录第一请求页对应的预读页的命中率。在确定当前场景是第一场景的次数达到预设次数时,计算所有命中率的平均值。若平均值小于预设值,说明命中信息满足预设条件,第一请求页的预读窗口是低效预读窗口,若平均值大于预设值,说明命中信息不满足预设条件,第一请求页的预读窗口是高效预读窗口。通过命中率的平均值确定命中信息,提高了确定的命中信息的准确度。
例如,预设次数是3,在连续3次检测到第一场景后,对每次检测到第一场景时,第一请求页对应的预读页的命中信息进行统计,得到3次命中率分别为50%、25%、25%。对3个命中率求平均值,得到平均值为33%,小于预设值50%,则判断命中信息满足预设条件,第一请求页的预读窗口是低效预读窗口。
在一种可能的实现方式中,若确定当前场景是第一场景,且当前时段是第一预设时段,则记录第一请求页对应的预读页的命中信息。
在一实施例中,第一预设时段是应用程序安装、更新、开机、重启或清理内存之后到第一次出现第一场景的时间。例如,在检测到电子设备开机、重启或者清理内存之后开始记录,若检测到第一次出现第一场景,对第一请求页对应的预读页的命中信息进行记录,若记录的命中信息满足预设条件,则确定访问请求所在的第一场景中,第一请求页的预读窗口为低效预读窗口,若记录的命中信息不满足预设条件,则确定访问请求所在的第一场景中,第一请求页的预读窗口为高效预读窗口。通过在第一预设时段记录第一请求页对应的预读页的命中信息,可以在应用程序的读取数据出现变化时及时更新对应的预读窗口的类型,从而提高了后续根据预读窗口类型进行预读的合理性。
例如,在一种应用场景中,电子设备安装应用程序后,若检测到出现第一场景,对第一请求页对应的预读页的命中信息进行记录,根据命中信息确定第一请求页的预读窗口的类型。在后续应用程序的使用过程中,若应用程序接收到的访问请求包括第一请求页的标识,则根据第一请求页的预读窗口的类型确定预读数量。若检测到更新应用程序、清理内存或者电子设备开机、重启,则再次记录第一请求页对应的预读页的命中信息,根据记录的命中信息更新第一请求页的预读窗口的类型,从而可以提高确定出的预读窗口类型的准确度,以确定出更准确的预读数量。
在另一实施例中,第一预设时段是应用程序安装、更新、开机、重启或清理内存之后,第一场景的出现次数达到预设数量的时段,例如,预设数量是3,在检测到电子设备开机、重启或者清理内存之后开始记录,若检测到第一次出现第一场景,设置次数为1,每次检测到第一场景,对第一请求页对应的预读页的命中信息进行记录,并将次数累加1,直到次数为3。对每一次出现第一场景时的命中信息进行统计,根据统计结果确定命中信息是否满足预设条件。通过多次记录的命中信息确定第一请求页的预读窗口的类型,提高了确定出的预读窗口类型的准确度。
优选的,若确定第一请求页的预读窗口是低效预读窗口,为第一请求页添加第一标识,若确定第一请求页的预读窗口是高效预读窗口,为第一请求页添加第二标识,以便在后续数据读取过程中快速识别出第一请求页的预读窗口的类型。
在一实施例中,内存管理模块记录预读页的命中信息的流程如图8所示,内存管理模块在获取应用程序的访问请求后,根据应用程序的访问请求确定应用程序需要请求文件F,再确定与文件F对应的页。在确定与文件F对应的页后,对于每个页,首先判断内存储器中是否存在该页。若内存储器中存在该页,则判断该页是否是预读页,若是预读页,将该页标记为命中,再将该页作为原请求页,根据预读信息进行预读;若不是预读页,则不标记该页,开始记录下一个页。若内存储器中不存在该页,确定需要从存储管理模块读取该页,将该页作为原请求页,根据预读信息进行预读,并开始记录下一个页。
在一种可能的实现方式中,通过为预读页添加第一标签的方式记录预读页的命中信息。示例性地,第一标签包括真(true)和假(false)两种,true用于标记被命中的预读页,false用于标记未被命中的预读页。例如,在检测到场景开始后,若检测到被读取的预读页,为该预读页添加标签true,在检测到场景结束时,为未被读取的预读页添加标签false,从而可以根据第一请求页对应的预读页的第一标签计算命中率。
在另一种可能的实现方式中,通过对预读页的数据结构中的数据进行刷新的方式记录命中信息。其中,数据结构包括页标识、原请求页、预读窗口以及命中信息,预读窗口是指原请求页对应的原始预读信息。示例性地,内存管理模块通过存储管理模块将外存储器中的页读取至内存储器后,在内存储器中建立与每个页对应的数据结构。在应用程序从内存储器读取数据时,刷新每个页的数据结构。根据每个页的数据结构即可确定出对应的命中信息。
例如,应用程序在检测到用户打开应用程序界面的请求时,初始化数据结构,例如将数据结构中的值均设为0。初始化完成后,向内存管理模块请求图片P1和P3,内存管理模块根据访问请求确定图片P1对应的页是id101和id102,图片P3对应的页是id104和id105。内存管理模块确定首先需要从内存储器读取id101,若内存储器中不存在id101,将id101作为原请求页。若原始预读信息是向后预读4页,则内存管理模块向存储管理模块请求id101~id105。存储管理模块从外存储器读取id101~id105,通过内存管理模块映射的内存储器中,同时在内存储器中建立与id101~id105对应的数据结构。内存管理模块在从内存储器读取id101后,确定需要再读取id102。内存管理模块在确定内存储器中已经存在id102后,确定id102是预读页,且被命中,则更新id102的数据结构为{页标识:id102,原请求页:id101,预读窗口:向后预读4页,命中信息:true}。在读取id102后,内存管理模块将图片P1发送至应用程序,再根据图片P3读取确定需要从内存储器读取id104,在确定内存储器中存在id104,且id104是预读页后,更新id104的数据结构为{页标识:id104,原请求页:id101,预读窗口:向后预读4页,命中信息:true}。在读取id104后,再读取id105,更新id105的数据结构为{页标识:id105,原请求页:id101,预读窗口:向后预读4页,命中信息:true}。在读取id105后,内存管理模块将图片P3发送至应用程序。若检测到场景结束,记录id103的数据结构为{页标识:id103,原请求页:id101,预读窗口:向后预读4页,命中信息:false}。对于同一个原请求页id101,被命中的预读页的数量为3个,未被命中的预读页的数量为1个,得到id101的预读页的命中率为75%。
在一实施例中,在得到原请求页对应的预读页的命中信息后,更新原请求页的数据结构,并添加原请求页所在的场景。例如,在场景S中,id101为原请求页,在向外存储器请求id101时,对应的预读窗口为向后预读4页,计算出的命中率为75%,则将id101的数据结构更新为{页标识:id101,场景:S,预读窗口:向后预读4页,命中率:75%}。在得到数据结构后,即可根据数据结构确定原请求页的类型。
下面结合具体场景,对本申请实施例提供的命中信息的学习方法进行详细说明。
如图9所示,应用程序根据接收到的操作指令确定对应的访问请求是启动应用程序的访问请求后,向Framework发送访问请求对应的数据标识,该数据标识即为应用程序的标识,Framework在获取到应用程序的标识后,确定启动应用程序的场景S开始,将场景S的开始信息发送内存管理模块,内存管理模块记录当前场景为场景S,初始化页的数据结构。Framework根据应用程序的标识显示应用程序界面。在显示应用程序界面的过程中,应用程序确定显示应用程序界面需要图片P1和图片P2。
在确定显示应用程序界面所需要的图片后,应用程序向内存管理模块请求图片P1,内存管理模块根据图片P1确定图片P1对应的页为id101和id102。确定需要从内存管理模块读取id101,将id101作为原请求页,再确定原始预读信息为向后预读4页。内存管理模块根据原请求页以及原始预读信息,向存储管理模块发送读取id101~id105的请求,存储管理模块从外存储器读取id101~id105,将读取的页通过内存管理模块映射到内存储器中,同时在内存储器中建立与id101~id105对应的数据结构。内存管理模块从内存储器中读取id101,再将id102作为原请求页,在确定内存储器中存在id102,且是预读页后,更新id102的数据结构。之后根据原请求页id102以及原始预读信息,确定需要从存储管理模块读取id102~id106。由于id102~id105已经存储于内存储器中,则向存储管理模块发送读取id106的请求。存储管理模块从外存储器读取id106,将id106通过内存管理模块映射到内存储器中,同时在内存储器中建立与id106对应的数据结构。内存管理模块再从内存储器读取id102,根据id101和id102将图片P1发送至应用程序。
应用程序继续向内存管理模块请求图片P2,内存管理模块根据图片P2确定图片P2对应的页为id104和id105。内存管理模块首先确定原请求页为id104,在确定内存储器中存在id104,且id104是预读页后,更新id104的数据结构,再根据原请求页id104以及原始预读信息确定需要从存储管理模块读取id104~id108,由于id104~id106已经存储于内存储器中,则向存储管理模块发送读取id107~id108的请求。存储管理模块从外存储器读取id107~id108,将id107~id108通过内存管理模块映射到内存储器中,同时在内存储器中建立与id107~id108对应的数据结构。内存管理模块从内存储器中读取id104后,将id105作为原请求页。在确定内存储器中存在id105,且id105是预读页后,更新id105的数据结构,再根据原请求页id105以及原始预读信息,确定需要从存储管理模块读取id105~id109。由于id105~id108已经存储于内存储器中,则向存储管理模块发送读取id109的请求,存储管理模块从外存储器读取id109,将id109通过内存管理模块映射到内存储器中,同时在内存储器中建立与id109对应的数据结构。内存管理模块再从内存储器读取id105,根据id104和id105将图片P2发送至应用程序。
应用程序接收到图片P1和图片P2后,显示界面完全显示,则Framework确定场景S结束,将场景S的结束信息发送内存管理模块,内存管理模块更新未被读取的预读页的数据结构,并统计更新后的数据结构。
更新后的数据结构中,原请求页id101对应的预读页的数据结构为:
{页标识:id102,原请求页:id101,预读窗口:向后预读4页,命中信息:true};
{页标识:id103,原请求页:id101,预读窗口:向后预读4页,命中信息:false};
{页标识:id104,原请求页:id101,预读窗口:向后预读4页,命中信息:true};
{页标识:id105,原请求页:id101,预读窗口:向后预读4页,命中信息:true}。
原请求页id102对应的预读页的数据结构为:
{页标识:id106,原请求页:id102,预读窗口:向后预读4页,命中信息:false}。
原请求页id104对应的预读页的数据结构为:
{页标识:id107,原请求页:id104,预读窗口:向后预读4页,命中信息:false};
{页标识:id108,原请求页:id104,预读窗口:向后预读4页,命中信息:false}。
原请求页id105对应的预读页的数据结构为:
{页标识:id109,原请求页:id105,预读窗口:向后预读4页,命中信息:false}。
根据各原请求页对应的预读页的数据结构计算各原请求页对应的命中率,得到id101对应的命中率为75%,id102对应的命中率为0,id104对应的命中率为0,id105对应的命中率为0。
最后根据各命中率得到各原请求页的数据结构为:
{页标识:id101,场景:S,预读窗口:向后预读4页,命中率:75%};
{页标识:id102,场景:S,预读窗口:向后预读4页,命中率:0};
{页标识:id104,场景:S,预读窗口:向后预读4页,命中率:0};
{页标识:id105,场景:S,预读窗口:向后预读4页,命中率:0}。
各原请求页对应的数据结构即为命中信息,若设定预设值为50%,命中率大于或者等于50%的原请求页的预读窗口为高效预读窗口,命中率小于50%的原请求页的预读窗口为低效预读窗口。则在场景S中,id101的预读窗口为高效预读窗口,id102、id104、id105的预读窗口均为低效预读窗口。
设定高效预读窗口对应的预读页的数量为4,低效预读窗口对应的预读页的数量为0,在下一次检测到相同场景时,即可根据上述命中信息确定预读窗口类型,再根据预读窗口类型以及对应的预读页的数量确定预读信息。
下面结合上述记录的命中信息,对本申请实施例提供的数据读取方法进行说明。
如图10所示,应用程序根据接收到的操作指令确定访问请求是启动应用程序的访问请求后,向Framework发送访问请求对应的数据标识,该数据标识为应用程序的标识。Framework在获取到应用程序的标识后,确定启动应用程序的场景S开始,将场景S的开始信息发送至内存管理模块。Framework根据应用程序的标识显示应用程序界面。例如,如图11中的(A)所示,电子设备在检测到用户点击“相机”图标的操作指令时,将该操作指令发送至Framework中的IMS,IMS将操作指令发送至桌面,桌面根据操作指令确定访问请求是启动相机应用程序。将相机应用程序的包名和activity名发送至Framework中的AMS,AMS和WMS打开相机应用程序的界面,显示如图11中的(B)所示的界面。
在显示应用程序界面的过程中,应用程序确定显示应用程序界面需要图片P1和图片P2。应用程序首先向内存管理模块请求图片P1,内存管理模块根据图片P1确定图片P1对应的页为id101和id102。内存管理模块确定首先需要从内存储器读取id101,将id101作为原请求页,之后根据预先记录的命中信息确定场景S中id101的预读窗口为高效预读窗口,高效预读窗口对应的预读页的数量为4。内存管理模块根据原请求页以及预读页的数量,向存储管理模块发送读取id101~id105的请求,存储管理模块从外存储器读取id101~id105,将读取的页通过内存管理模块映射到内存储器中。内存管理模块从内存储器中读取id101,之后将id102作为原请求页,根据预先记录的命中信息确定场景S中id102的预读窗口为低效预读窗口,对应的预读页的数量为0,则不进行预读。内存管理模块在确定内存储器中存在id102后,从内存储器读取id102,再根据id101和id102将图片P1发送至应用程序。
应用程序继续向内存管理模块请求图片P2,内存管理模块根据图片P2确定图片P2对应的页为id104和id105。内存管理模块确定首先需要从内存储器读取id104,将id104作为原请求页,根据预先记录的命中信息确定场景S中id104的预读窗口为低效预读窗口,对应的预读页的数量为0,则不进行预读。内存管理模块在确定内存储器在存在id104后,从内存储器中读取id104。之后再将id105作为原请求页,根据预先记录的命中信息确定场景S中id105的预读窗口为低效预读窗口,对应的预读页的数量为0,则不进行预读。内存管理模块确定内存储器中存在id105后,从内存储器读取id105,根据id104和id105将图片P2发送至应用程序。
应用程序接收到图片P1和图片P2后,显示界面完全显示,则Framework确定场景S结束,向内存管理模块发送场景S的结束信息。
在一种可能的实现方式中,为了防止命中信息记录错误的情况,若在第二预设时段确定当前场景是第一场景,根据第一请求页对应的预读页的命中信息更新第一请求页的预读窗口的类型,根据更新后的预读窗口的类型重新标记第一请求页的预读窗口。其中,第二预设时段可以是按照预设周期设定的,例如上次对命中信息进行学习的一个月后,若确定当前场景是第一场景,则重新记录第一请求页对应的预读页的命中信息。第二预设时段也可以是设定时段,例如在内存资源充足时,若检测到第一场景,则重新记录第一请求页对应的预读页的命中信息。第一请求页对应的预读页是指按照原始预读信息进行预读时,需要从外存储器读取的预读页。
例如,若在上一次命中信息的记录中,在第一场景下,第一请求页的预读窗口是低效预读窗口,经过预设周期后,再次记录第一请求页对应的预读页的命中信息,若根据命中信息确定命中率大于预设值,则确定第一请求页的预读窗口是高效预读窗口。例如,在第一请求页的预读窗口被确定为低效预读窗口时,为第一请求页添加第一标识,若后续重新确定第一请求页的预读窗口是高效预读窗口,则删除第一标识。
在一实施例中,可以为同一个场景的不同阶段设定不同的预读信息,例如,在应用程序的启动阶段,需要连续加载文件,则在命中信息的学习过程中,不记录该阶段各原始请求页对应的命中信息,在后续相同场景中,按照原始预读信息进行预读,从而可以提高启动阶段的数据读取速度。在启动阶段之外的其他阶段,不同的场景对应不同的需求,则在命中信息的学习过程中,对其他阶段的命中信息进行学习,在后续相同场景中,根据命中信息确定原始请求页的类型,根据原始请求页的类型确定预读页。
在一实施例中,若内存管理模块根据需要发送至应用程序的文件,确定文件对应的页为连续页,则确定会从外存储器读取连续页,则在读取过程中,可以逐步扩大预读页的数量,从而提高数据读取速度。
需要说明的是,本申请实施例是以根据原请求页向后预读的方式进行预读为例进行说明的,在其他实施例中,也可以根据原请求页向前进行预读,例如,原请求页是id105,预读页为id103和id104。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图12示出了电子设备100的结构示意图。
电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备100的各种功能应用以及数据处理。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180G检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
最后应说明的是:以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种数据读取方法,应用于电子设备,所述电子设备包括内存储器和外存储器,其特征在于,所述方法包括:
获取应用程序的访问请求,根据所述访问请求确定第一请求页的页标识,所述第一请求页为需要从所述内存储器中读取的页;
根据所述访问请求所在的第一场景,确定所述第一请求页的预读窗口是低效预读窗口或高效预读窗口,所述低效预读窗口是指将所述第一请求页读取至所述内存储器时,与所述第一请求页临近的页后续被所述应用程序读取的概率低于或等于第一概率阈值;所述高效预读窗口是指将所述第一请求页读取至所述内存储器时,与所述第一请求页临近的页后续被所述应用程序读取的概率大于或等于第二概率阈值;所述高效预读窗口对应的预读页的数量高于所述低效预读窗口对应的预读页的数量;
根据所述第一请求页的页标识以及预读数量,从所述外存储器中确定第一数据;其中,当所述第一请求页的预读窗口为所述低效预读窗口时,所述预读数量为所述低效预读窗口对应的预读页的数量,当所述预读窗口为所述高效预读窗口时,所述预读数量为所述高效预读窗口对应的预读页的数量;
将所述第一数据读取至所述内存储器。
2.根据权利要求1所述的方法,其特征在于,所述低效预读窗口对应的预读页的数量为0。
3.根据权利要求1~2任一项所述的方法,其特征在于,所述根据所述访问请求所在的第一场景,确定所述第一请求页的预读窗口是低效预读窗口或高效预读窗口,包括:
若确定在所述第一场景中,所述第一请求页具有第一标识,则确定所述第一请求页的预读窗口是低效预读窗口;
若确定在所述第一场景中,所述第一请求页具有第二标识,则确定所述第一请求页是高效预读窗口。
4.根据权利要求1~2任一项所述的方法,其特征在于,在所述根据所述访问请求所在的第一场景,确定所述第一请求页的预读窗口是低效预读窗口或高效预读窗口之前,所述方法还包括:
根据所述访问请求对应的操作指令以及所述电子设备当前显示的界面确定所述访问请求所在的场景是第一场景。
5.根据权利要求1~2任一项所述的方法,其特征在于,在根据所述访问请求所在的第一场景,确定所述第一请求页的预读窗口是低效预读窗口或高效预读窗口之前,所述方法还包括:
在第一预设时段确定所述第一场景,记录所述第一场景中所述第一请求页的预读窗口中的预读页的命中信息;
若所述命中信息满足预设条件,将所述第一请求页的预读窗口标记为低效预读窗口;
若所述命中信息不满足预设条件,将所述第一请求页的预读窗口标记为高效预读窗口。
6.根据权利要求5所述的方法,其特征在于,所述命中信息满足预设条件,包括:
根据所述命中信息得到的命中率小于预设值,所述命中率是所述第一请求页的预读窗口中的预读页中,被命中的预读页的数量与预读页的总数的比值。
7.根据权利要求6所述的方法,其特征在于,在所述记录所述第一场景中所述第一请求页的预读窗口中的预读页的命中信息之后,所述方法还包括:
若检测到所述第一场景的结束信息,判断所述命中信息是否满足预设条件。
8.根据权利要求6~7任一项所述的方法,其特征在于,所述记录所述第一场景中所述第一请求页对应的预读页的命中信息,包括:
为所述第一请求页对应的预读页添加第一标签,所述第一标签表示对应的预读页是否被命中。
9.根据权利要求6~7任一项所述的方法,其特征在于,在将所述第一请求页的预读窗口标记为低效预读窗口之后,所述方法还包括:
在第二预设时段确定所述第一场景,根据所述第一请求页对应的预读页的命中信息重新标记所述第一请求页的预读窗口。
10.根据权利要求1~2任一项所述的方法,其特征在于,所述电子设备包括内存管理模块,所述根据所述访问请求所在的第一场景,确定所述第一请求页的预读窗口是低效预读窗口或高效预读窗口,包括:
所述内存管理模块根据所述访问请求所在的第一场景,确定所述第一请求页的预读窗口是低效预读窗口或高效预读窗口。
11.根据权利要求10所述的方法,其特征在于,所述电子设备还包括场景感知模块,在所述内存管理模块根据所述访问请求所在的第一场景,确定所述第一请求页的预读窗口是低效预读窗口或高效预读窗口之前,所述方法还包括:
所述场景感知模块确定所述访问请求所在的场景是第一场景,将所述第一场景发送至所述内存管理模块。
12.根据权利要求10所述的方法,其特征在于,所述根据所述第一请求页的页标识以及预读数量,从所述外存储器中确定第一数据,包括:
所述内存管理模块根据所述第一请求页的页标识以及预读数量,从所述外存储器中确定第一数据。
13.一种电子设备,其特征在于,包括处理器和存储器,所述存储器包括内存储器和外存储器,所述处理器用于执行存储在内存储器或者外存储器中的计算机程序,以实现如权利要求1~12任一项所述的方法。
14.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1~12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110820222.8A CN114489469B (zh) | 2021-07-20 | 2021-07-20 | 一种数据读取方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110820222.8A CN114489469B (zh) | 2021-07-20 | 2021-07-20 | 一种数据读取方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114489469A CN114489469A (zh) | 2022-05-13 |
CN114489469B true CN114489469B (zh) | 2022-12-23 |
Family
ID=81491545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110820222.8A Active CN114489469B (zh) | 2021-07-20 | 2021-07-20 | 一种数据读取方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114489469B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461588B (zh) * | 2021-08-20 | 2023-01-24 | 荣耀终端有限公司 | 调节预读窗口的方法及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020987A (zh) * | 2016-05-31 | 2016-10-12 | 广东欧珀移动通信有限公司 | 处理器中内核运行配置的确定方法以及装置 |
CN109542361A (zh) * | 2018-12-04 | 2019-03-29 | 郑州云海信息技术有限公司 | 一种分布式存储系统文件读取方法、系统及相关装置 |
CN111818122A (zh) * | 2020-05-28 | 2020-10-23 | 北京航空航天大学 | 基于流量公平的广域网数据预取方法 |
CN112181916A (zh) * | 2020-09-14 | 2021-01-05 | 星辰天合(北京)数据科技有限公司 | 基于用户空间文件系统fuse的文件预读方法及装置、电子设备 |
CN112445725A (zh) * | 2019-08-27 | 2021-03-05 | 华为技术有限公司 | 预读取文件页的方法、装置和终端设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110609796B (zh) * | 2018-06-15 | 2023-07-21 | 伊姆西Ip控股有限责任公司 | 用于存储系统中预取的方法、设备和计算机程序产品 |
CN110737388A (zh) * | 2018-07-18 | 2020-01-31 | 中兴通讯股份有限公司 | 数据预读方法、客户端、服务器以及文件系统 |
CN112783564B (zh) * | 2019-11-01 | 2023-03-03 | 华为技术有限公司 | 一种加速应用程序启动的方法及电子设备 |
CN112328185B (zh) * | 2020-12-28 | 2021-03-23 | 烽火通信科技股份有限公司 | 一种基于分布式存储的智能预读方法 |
-
2021
- 2021-07-20 CN CN202110820222.8A patent/CN114489469B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020987A (zh) * | 2016-05-31 | 2016-10-12 | 广东欧珀移动通信有限公司 | 处理器中内核运行配置的确定方法以及装置 |
CN109542361A (zh) * | 2018-12-04 | 2019-03-29 | 郑州云海信息技术有限公司 | 一种分布式存储系统文件读取方法、系统及相关装置 |
CN112445725A (zh) * | 2019-08-27 | 2021-03-05 | 华为技术有限公司 | 预读取文件页的方法、装置和终端设备 |
CN111818122A (zh) * | 2020-05-28 | 2020-10-23 | 北京航空航天大学 | 基于流量公平的广域网数据预取方法 |
CN112181916A (zh) * | 2020-09-14 | 2021-01-05 | 星辰天合(北京)数据科技有限公司 | 基于用户空间文件系统fuse的文件预读方法及装置、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114489469A (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112130742B (zh) | 一种移动终端的全屏显示方法及设备 | |
CN113704014B (zh) | 日志获取系统、方法、电子设备及存储介质 | |
CN109766036B (zh) | 消息处理方法及电子设备 | |
CN114650363B (zh) | 一种图像显示的方法及电子设备 | |
CN113254409B (zh) | 文件共享方法、系统及相关设备 | |
CN111913750B (zh) | 一种应用程序管理方法、装置及设备 | |
CN114115512B (zh) | 信息显示方法、终端设备及计算机可读存储介质 | |
CN113688019B (zh) | 响应时长检测方法及装置 | |
CN113641271A (zh) | 应用窗口的管理方法、终端设备及计算机可读存储介质 | |
CN114461588A (zh) | 调节预读窗口的方法及电子设备 | |
CN113542580A (zh) | 去除眼镜光斑的方法、装置及电子设备 | |
CN115705241B (zh) | 应用的调度方法及电子设备 | |
CN113495744A (zh) | 一种版本升级方法及相关装置 | |
CN113438366A (zh) | 信息通知的交互方法、电子设备和存储介质 | |
CN112835610A (zh) | 一种构建应用程序资源包的方法、构建装置及终端设备 | |
CN116828100A (zh) | 蓝牙音频播放方法、电子设备及存储介质 | |
CN114489469B (zh) | 一种数据读取方法、电子设备及存储介质 | |
CN112783418B (zh) | 一种存储应用程序数据的方法及移动终端 | |
CN114911400A (zh) | 分享图片的方法和电子设备 | |
CN116048831B (zh) | 一种目标信号处理方法和电子设备 | |
CN114079642A (zh) | 一种邮件处理方法及电子设备 | |
WO2022242412A1 (zh) | 杀应用的方法及相关设备 | |
CN115482143B (zh) | 应用的图像数据调用方法、系统、电子设备及存储介质 | |
CN113590346B (zh) | 处理业务请求的方法和电子设备 | |
CN114816028A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |