CN114490442A - 文件片段调整方法及电子设备 - Google Patents
文件片段调整方法及电子设备 Download PDFInfo
- Publication number
- CN114490442A CN114490442A CN202111000048.9A CN202111000048A CN114490442A CN 114490442 A CN114490442 A CN 114490442A CN 202111000048 A CN202111000048 A CN 202111000048A CN 114490442 A CN114490442 A CN 114490442A
- Authority
- CN
- China
- Prior art keywords
- file
- file segment
- electronic device
- application
- segments
- 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.)
- Granted
Links
Images
Classifications
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
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)
- Computer Networks & Wireless Communication (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了文件片段调整方法及电子设备,涉及电子技术领域。本申请公开的文件片段调整方法包括:首先,记录多个应用程序启动过程中的对公共资源的I/O操作;其次,基于记录的信息确定文件片段,并确定文件片段的相关性;最后,基于文件片段的相关性,调整文件片段的位置,使得相关性强的文件片段在物理地址上连续。该方法可以减少多个应用程序启动过程中的I/O操作次数,进而提高多个应用程序的平均启动速度。
Description
技术领域
本申请涉及电子技术领域,尤其涉及文件片段调整方法及电子设备。
背景技术
随着电子技术的发展,智能手机、平板电脑、可穿戴电子设备给用户的日常生活带来极大的便利。例如,用户使用智能手机上的不同应用程序完成电子支付、阅读新闻、进行社交等。很显然的,应用程序的启动速度的快慢影响用户的体验。例如,当用户在商场中购物时,启动支付应用时,若是该支付应用的启动需要花费四五秒或者更长的时间,将极大的降低用户使用该应用程序的意愿。
为了提高应用程序的启动速度,电子设备可以提高该应用程序启动时CPU的工作频率,或者由应用程序开发厂商去优化该应用程序的启动逻辑,减少应用程序在启动过程中执行耗时的操作,如在应用程序启动过程中减少系统调用、减少应用程序启动过程中虚拟机的垃圾回收(Garbage Collector)等。
但是,受限于散热和半导体技术的发展,电子设备的CPU的工作频率总是有上限的。并且,由于用户是基于使用需求而非基于应用程序的启动速度去确定是否在电子设备安装并使用该程序,所以电子设备上总是存在有启动速度较慢的应用程序。
发明内容
本申请实施例提供一种文件片段调整方法及电子设备。该方法包括:首先,记录多个应用程序启动过程中的对公共资源的I/O操作;其次,基于记录的信息确定文件片段,并确定文件片段的相关性;最后,基于文件片段的相关性,调整文件片段的位置,使得相关性强的文件片段在物理地址上连续。该方法可以减少多个应用程序启动过程中的I/O操作次数,进而提高多个应用程序的平均启动速度。
第一方面,本申请提供一种文件片段调整方法,应用于电子设备,该电子设备上安装有多个应用程序,该多个应用程序包括第一应用程序,包括:
该电子设备确定该多个应用程序的记录信息,该记录信息包括该多个应用程序启动过程中的对多个文件片段的I/O操作;其中,该第一应用程序的记录信息中包括对第一文件片段的I/O操作和对第二文件片段的I/O操作;该多个文件片段属于该电子设备向应用程序提供的库文件,其中,一个文件片段为该电子设备上一段连续物理地址上的数据;该电子设备基于该记录信息确定该多个文件片段的位置并作为第一位置集合,其中包括物理地址不连续的第一文件片段的位置和第二文件片段的位置;该电子设备将该多个文件片段的位置从该第一位置集合调整到第二位置集合,其中包括物理地址连续的调整后的第一文件片段的位置和调整后的第二文件片段的位置;在该第一应用程序的启动过程中,若该多个文件片段的位置为该第一位置集合,则该电子设备通过N次物理I/O操作访问该多个文件片段;若该多个文件片段的位置为该第二位置集合,则该电子设备通过小于N次的物理I/O操作访问该多个文件片段。
在上述实施例中,首先电子设备记录多个应用程序的I/O操作,进而确定多个文件片段,其次,电子设备调整文件片段的位置为第二位置,使得应用程序在启动时通过更少的物理I/O操作次数读取文件片段。
结合第一方面的一些实施例,在一些实施例中,该电子设备将该多个文件片段的位置从该第一位置集合调整到第二位置集合前,该电子设备确定该多个应用程序的记录信息后,还包括:该电子设备确定该多个文件片段的排序为第一排序,该第一排序用于确定任意两个文件片段的物理地址是否连续;该电子设备基于该第一排序确定该第二位置集合。
在上述实施例中,电子设备在确定多个文件片段中个任意多个文件片段在物理地址上是否连续,进而确定多个文件片段的位置。
结合第一方面的一些实施例,在一些实施例中,该电子设备确定该多个文件片段的排序为第一排序,具体包括:该电子设备遍历该多个文件片段的排序,并计算每一种排序的优化指标;该电子设备确定优化指标最高的排序为该第一排序;该优化指标包括该多个应用程序启动时间的和、对该多个文件片段的物理I/O操作次数中的至少一种。
在上述实施例中,电子设备通过遍历的方式确定每一种排序的优化指标,电子设备通过优化指标确定文件片段的排序,进而确定了文件片段的第二位置。
结合第一方面的一些实施例,在一些实施例中,该电子设备确定该多个文件片段的排序为第一排序,具体包括:该电子设备确定该多个文件片段中任意两个文件片段的相关性;该电子设备基于该任意两个文件片段的相关性确定该第一排序。
在上述实施例中,电子设备确定任意两个文件片段之间的相关性,进而确定文件片段的第一排序。
结合第一方面的一些实施例,在一些实施例中,该电子设备确定该多个文件片段中任意两个文件片段的相关性,具体包括:该电子设备基于该多个应用程序的记录信息确定该多个文件片段中任意两个文件片段的共访度,该任意两个文件片段的共访度与该多个应用程序启动过程中通过I/O操作访问该任意两个文件片段的次数正相关;该电子设备基于该任意两个文件片段的共访度确定该任意两个文件片段的相关性。
在上述实施例中,电子设备基于不同应用程序访问文件片段的次数确定任意两个文件片段之间的共访度,进而确定任意两个文件片段之间的相关性。
结合第一方面的一些实施例,在一些实施例中,该第一文件片段与该第二文件片段的共访度与该多个应用程序顺序访问第一文件片段和第二文件片段的次数有关。
在上述实施例中,确定多个文件片段之间的共访度时考虑到I/O操作的顺序,则根据共访度计算出的第二位置可以进一步降低了多个应用程序启动时I/O操作的时间开销。
结合第一方面的一些实施例,在一些实施例中,该第一排序还用于确定该多个文件片段中位于连续物理地址上的文件片段的内部的相对前后顺序。
在上述实施例中,确定多个文件片段的排序时考虑到I/O操作的顺序,则根据排序计算出的第二位置可以进一步降低了多个应用程序启动时I/O操作的时间开销。
结合第一方面的一些实施例,在一些实施例中,该第一应用程序的记录信息中还包括对第三文件片段的I/O操作,在对该第三文件片段的I/O操作与对该第一文件片段的I/O操作有依赖性的情况下,该第三文件片段与该第一文件片段的共访度为0。
在上述实施例中,在确定共访度时进一步考虑到I/O操作的依赖性,则根据共访度计算出的第二位置可以进一步降低了多个应用程序启动时I/O操作的时间开销。
第二方面,本申请实施例提供了一种电子设备,电子设备上安装有多个应用程序,多个应用程序包括第一应用程序,该电子设备包括:一个或多个处理器和存储器;该存储器与该一个或多个处理器耦合,该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令,该一个或多个处理器调用该计算机指令以使得该电子设备执行:确定该多个应用程序的记录信息,该记录信息包括该多个应用程序启动过程中的对多个文件片段的I/O操作;其中,该第一应用程序的记录信息中包括对第一文件片段的I/O操作和对第二文件片段的I/O操作;该多个文件片段属于该电子设备向应用程序提供的库文件,其中,一个文件片段为该电子设备上一段连续物理地址上的数据;基于该记录信息确定该多个文件片段的位置并作为第一位置集合,其中包括物理地址不连续的第一文件片段的位置和第二文件片段的位置;将该多个文件片段的位置从该第一位置集合调整到第二位置集合,其中包括物理地址连续的调整后的第一文件片段的位置和调整后的第二文件片段的位置;在该第一应用程序的启动过程中,若该多个文件片段的位置为该第一位置集合,则通过N次物理I/O操作访问该多个文件片段;若该多个文件片段的位置为该第二位置集合,则通过小于N次的物理I/O操作访问该多个文件片段。
结合第二方面的一些实施例,在一些实施例中,该一个或多个处理器,还用于调用该计算机指令以使得该电子设备执行:将该多个文件片段的位置从该第一位置集合调整到第二位置集合前,该电子设备确定该多个应用程序的记录信息后,还包括:确定该多个文件片段的排序为第一排序,该第一排序用于确定任意两个文件片段的物理地址是否连续;基于该第一排序确定该第二位置集合。
结合第二方面的一些实施例,在一些实施例中,该一个或多个处理器,具体用于调用该计算机指令以使得该电子设备执行:遍历该多个文件片段的排序,并计算每一种排序的优化指标;确定优化指标最高的排序为该第一排序;该优化指标包括该多个应用程序启动时间的和、对该多个文件片段的物理I/O操作次数中的至少一种。
结合第二方面的一些实施例,在一些实施例中,该一个或多个处理器,具体用于调用该计算机指令以使得该电子设备执行:确定该多个文件片段中任意两个文件片段的相关性;基于该任意两个文件片段的相关性确定该第一排序。
结合第二方面的一些实施例,在一些实施例中,该一个或多个处理器,具体用于调用该计算机指令以使得该电子设备执行:基于该多个应用程序的记录信息确定该多个文件片段中任意两个文件片段的共访度,该任意两个文件片段的共访度与该多个应用程序启动过程中通过I/O操作访问该任意两个文件片段的次数正相关;基于该任意两个文件片段的共访度确定该任意两个文件片段的相关性。
结合第二方面的一些实施例,在一些实施例中,该第一文件片段与该第二文件片段的共访度与该多个应用程序顺序访问第一文件片段和第二文件片段的次数有关。
结合第二方面的一些实施例,在一些实施例中,该第一排序还用于确定该多个文件片段中位于连续物理地址上的文件片段的内部的相对前后顺序。
结合第二方面的一些实施例,在一些实施例中,该第一应用程序的记录信息中还包括对第三文件片段的I/O操作,在对该第三文件片段的I/O操作与对该第一文件片段的I/O操作有依赖性的情况下,该第三文件片段与该第一文件片段的共访度为0。
第三方面,本申请实施例提供了一种芯片系统,该芯片系统应用于电子设备,该芯片系统包括一个或多个处理器,该处理器用于调用计算机指令以使得该电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
第四方面,本申请实施例提供一种包含指令的计算机程序产品,当上述计算机程序产品在电子设备上运行时,使得上述电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
第五方面,本申请实施例提供一种计算机可读存储介质,包括指令,当上述指令在电子设备上运行时,使得上述电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
可以理解地,上述第二方面提供的电子设备、第三方面提供的芯片系统、第四方面提供的计算机程序产品和第五方面提供的计算机存储介质均用于执行本申请实施例所提供的方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
图1A为本申请实施例提供的电子设备的主菜单界面的一个示例性示意图;
图1B为本申请实施例提供的应用程序的启动界面的一个示例性示意图;
图1C为本申请实施例提供的应用程序的主界面的一个示例性示意图;
图2为本申请实施例涉及的活动的生命周期的一个示例性示意图;
图3为本申请实施例提供的电子设备启动应用程序过程中的性能分析的一个示例性示意图;
图4A为本申请实施例提供的I/O操作过程的一个示例性示意图;
图4B为本申请实施例提供的I/O操作的分类的一个示例性示意图;
图5为本申请实施例提供的目标程序启动过程中访问文件片段的一个示例性示意图;
图6A为图5所示场景下实施本申请实施例提供的文件片段调整方法后的文件片段的存储方式的一个示例性示意图;
图6B、图6C、图6D为图5所示场景下实施本申请实施例提供的文件片段调整方法后的文件片段的存储的另一个示例性示意图;
图6E、图6F、图6G为图5所示场景下实施本申请实施例提供的文件片段调整方法后的文件片段的存储的另一个示例性示意图;
图7为本申请实施例提供的文件片段调整方法的一个示例性示意图;
图8为本申请实施例提供的确定文件片段的一个示例性示意图;
图9为本申请实施例提供的文件片段排序的一个示例性示意图;
图10为本申请实施例提供的文件片段排序的另一个示例性示意图;
图11为本申请实施例提供的实施文件调整方法的一个示例性示意图;
图12为本申请实施例提供的电子设备的软件架构的一个示例性示意图;
图13A、图13B为本申请实施例提供的电子设备的软件架构的另一个示例性示意图;
图14为本申请实施例提供的电子设备的硬件架构的一个示例性示意图。
具体实施方式
本申请以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。单数表达形式“一个”、“一种”、“该”、“上述”、“该”和“这一”旨在也包括复数表达形式,除非其上下文中明确地有相反指示。还应当理解,本申请中使用的术语“和/或”是指并包含一个或多个所列出项目的任何或所有可能组合。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本申请以下实施例中的术语“用户界面(user interface,UI)”,是应用程序或操作系统与用户之间进行交互和信息交换的介质接口,它实现信息的内部形式与用户可以接受形式之间的转换。用户界面是通过java、可扩展标记语言(extensible markuplanguage,XML)等特定计算机语言编写的源代码,界面源代码在电子设备上经过解析,渲染,最终呈现为用户可以识别的内容。用户界面常用的表现形式是图形用户界面(graphicuser interface,GUI),是指采用图形方式显示的与计算机操作相关的用户界面。它可以是在电子设备的显示屏中显示的文本、图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、Widget等可视的界面元素。
为了便于理解,下面先对本申请实施例涉及的相关术语及相关概念进行介绍。本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。
(1)应用程序的启动、应用程序的启动时间
(1.1)应用程序的启动界面
电子设备在获取应用程序的安装包后,可以安装该应用程序。在安装该应用程序后,该应用程序的图标可以出现在电子设备的主菜单上。
响应于用户点击主菜单上该应用程序对应的图标,电子设备开始启动该应用程序。
图1A为本申请实施例提供的电子设备的主菜单界面的一个示例性示意图。
如图1A所示,电子设备的主菜单界面1A01上显示有多个应用程序对应的控件,控件上可以显示有该应用程序的名称和图标。例如,电子设备的主菜单界面上显示的多个应用程序中包括新闻应用程序。该新闻应用程序对应的控件为控件1A02。控件1A02上显示有该新闻应用程度对应的文字和图标。
响应于用户对控件1A02的交互,如点击,电子设备开始启动该新闻应用程序。
其中,该新闻应用程序的启动界面如图1B所示。
图1B为本申请实施例提供的应用程序的启动界面的一个示例性示意图。
如图1B所示,电子设备在开始启动该新闻应用程序过程中,会显示一个启动界面。在大多数情况下,该启动界面不包括可以交互的控件,并且会持续一段时间。
在启动界面显示的这一段时间内,电子设备会为该新闻应用程序的启动加载资源,分配内存等。
在启动界面显示的一段时间后,电子设备已经为该应用程序加载资源、分配内存后,电子设备显示该应用程序的主界面(mainactivity)。
其中,该应用程序的主界面如图1C所示。
图1C为本申请实施例提供的应用程序的主界面的一个示例性示意图。
如图1C所示,并且很明显的与图1B所示内容不同的是,应用程序的主界面上包括多个可交互的控件,并显示有该应用程序向用户展示的内容。
很显然的,电子设备在开始启动应用程序后,至少需要加载资源,绘制、渲染应用程序的主界面等后,才能显示应用程序的主界面。即,在响应于用户的操作后,电子设备在显示应用程序的主界面前,电子设备需要花费一定的时间完成应用程序的启动。
下面以操作系统为Android系统为例,在术语解释(1.2)应用程序的启动过程中示例性的介绍应用程序的启动过程。
(1.2)应用程序的启动过程
在不同的操作系统的电子设备上,电子设备在启动应用程序后,均会花费一段时间进行资源的加载,并完成应用程序主界面的绘制。在该段时间中,电子设备可以在启动界面上显示静态的图像或者本地的视频,以降低用户对应用程序启动时间的感知。
下面以Android系统为例,示例性的介绍应用程序的启动过程。
(1.2.1)应用程序的启动的一般步骤
电子设备的主界面实际上可以是一个系统级别的应用程序的主界面,其中,该系统级别的应用程序也可以称为桌面启动器(Launcher)。
电子设备从桌面启动器启动应用程序的步骤包括:
(a)响应于用户的操作,电子设备确定用户交互的应用程序为应用程序A。
(b)Launcher通知活动管理服务(Activity Manager Service,AMS)启动应用程序A的MainActivity。
(c)响应于Launcher发送的通知,活动管理服务创建对应于应用程序A的进程以及应用程序A的主线程(UI线程,UI Thread)。
(d)在应用程序A的主线程执行中启动应用程序A的MainActivity,进入MainActivity的生命周期中的onCreate方法,在onCreate回调方法中绘制MainActivity的显示界面。
其中,在(1.2.1)的(b)中,电子设备会暂停Launcher,并显示一个空白的StartingWindow,即显示一个空白的页面。其中,该Starting Window是可以被编辑的。在图1B所示的内容中,该Starting Window为新闻应用程序的启动界面。在电子设备执行新闻应用程序的onCreate()回调方法以及进行View相关的初始化工作后,MainActivity的界面会替换掉Starting Window,进而显示如图1C中展示的应用程序的主界面。
值得说明的是,不同应用程序开发厂商可以优化自己的应用程序,改变应用程序启动的逻辑,即改变电子设备从桌面启动器启动应用程序的步骤和步骤之间的顺序。
在应用程序的启动过程中,尤其是在应用程序A的进程和线程被创建后,电子设备需要为应用程序A的启动读取公共资源。例如,在图1B、图1C所示的内容中,新闻应用程序A需要调用虚拟机提供的应用程序框架层提供的媒体库、网络库等。具体的,新闻应用程序A需要调用网络库从服务器获取不同新闻的文字和图片,并通过调用媒体库来组织图片的展现形式等。
其中,该公共资源为电子设备上操作系统提供的,向应用程序开放的功能库(如JAVA提供的jar包、C++库提供的so文件等)等。
应用程序启动后,还可能被销毁(onDestroy)后重新启动,下面结合图2所示的内容示例性的介绍应用程序启动的一种场景。
图2为本申请实施例涉及的活动的生命周期的一个示例性示意图。
活动是Android操作系统的基本组件之一,可以用于在应用程序中为用户提供可交互的界面或视图。其中,一个应用程序可以有多个活动,应用通过任务栈装载活动,其中任务栈顶端的活动为用户可以直接交互的活动。
如图2所示,应用程序的开发人员在开发应用程序的活动时,需要实现至少七个回调方法(Method)。其中,回调方法又可以称为回调函数,可以被调用去实现特定的功能。其中,七个回调方法分别为:onCreate回调方法、onStart回调方法、onResume回调方法、onPaused回调方法、onStop回调方法、onDestroy回调方法、onRestart回调方法。活动通过调用上述七个回调方法,可以实现活动的生命周期。
具体的,当活动第一次被创建的时候,活动会调用onCreate回调方法以完成活动的初始化;当活动从不可见变为可见时,活动会调用onStart回调方法;当活动准备好和用户进行交互的时候,活动会调用onResume回调方法;当活动离开任务栈顶时,活动会调用onPause回调方法以保存一些关键数据和释放一些资源;当活动变为完全不可见时,活动会调用onStop回调方法;当电子设备销毁该活动前,活动会调用onDestroy回调方法以释放资源;当活动从停止状态变为运行状态时,活动会调用onRestart回调方法。
值得说明的,在本申请实施例中,当应用程序的停止状态变为运行状态时或者应用程序从后台变为前台时,应用程序通过调用onResume回调方法重新打开应用程序也是本申请实施例中的应用程序的启动。
(1.2.2)应用程序的启动中的耗时操作
电子设备开始启动应用程序后,在启动应用程序完成前,应用程序需要访问公共资源中的功能库和/或资源文件,完成初始化。
具体的,开发人员可以使用Systrace、TraceView等其他工具,监控电子设备启动应用程序时的系统性能。
图3为本申请实施例提供的电子设备启动应用程序过程中的性能分析的一个示例性示意图。
如图3所示,电子设备在开始启动应用程序后,会执行大量的I/O操作。并且,由于I/O操作默认由应用程序的主线程执行,即I/O操作一定程度上阻塞了主线程。
例如,在(1.2.1)中应用的启动步骤中涉及的AMS和其他组件的协作,会依赖于Binder提供的接口,调用Binder会涉及到的对公共资源库中函数的调用,进而产生I/O操作。
可以理解的是,由于I/O操作涉及用户态和内核态的切换以及磁盘上寻址、读/写数据,I/O操作的时间开销较大,所以在启动时执行的大量的I/O操作会增加电子设备启动应用程序的时间。
其中,有关I/O操作的具体介绍可以参考下文中术语解释(2)I/O操作中的文字描述,此处不再赘述。
(1.3)应用程序的启动时间
应用程序的启动时间为电子设备从开始启动应用程序到电子设备结束启动应用程序的时间间隔。
其中,有很多种方法从不同的角度界定应用程序的启动时间,在此不作限定。
例如,可以从使用电子设备的用户的角度界定应用程序的启动时间。具体的,例如,在图1A至图1C所示的场景中,响应于用户对控件1A02的交互至电子设备显示应用程序的主界面的时间间隔为新闻应用程序的启动时间。
又例如,可以从电子设备执行应用程序的代码的角度界定应用程序的启动时间。具体的,例如,应用程序从Launcher通知活动管理服务启动应用程序时起至电子设备执行应用程序的onCreate回调方法时或至电子设备执行完该应用程序的onCreate回调方法时的时间间隔为应用程序的启动时间。
(2)I/O操作
(2.1)I/O操作定义
在本申请实施例中,若无特殊说明,I/O操作由一次物理I/O操作和一次逻辑I/O操作组成。
其中,I/O操作包括:读read、写write、打开文件open、关闭文件close等。例如,读操作read的具体伪代码形式可以为:read(int fd,void*buf,size_t count)。其中,read的输入参数可以包括将要读取数据的文件描述词fd,缓冲区buf和读取的数据的长度count。
其中,应用程序执行I/O操作时,如读数据时,首先会判断该数据是否在页缓存(pagecache)中。如果该数据在页缓存中,则直从页缓存中读取数据;如果不在页缓存中,则需要发起物理I/O从磁盘上读取数据。
下面结合图4A示例性的介绍I/O操作的具体过程。
图4A为本申请实施例提供的I/O操作过程的一个示例性示意图。
如图4A所示,一次I/O操作包括:
首先,应用程序通过虚拟文件系统提供的接口发起逻辑I/O;
其次,虚拟文件系统(vittual file system,VFS)通过文件系统如F2FS/ext4发起物理I/O,进而从磁盘如ROM/flashmemory中读/写数据。
其中,应用程序在发起逻辑I/O后,电子设备从用户态切换到内核态,进而由内核态的文件系统完成物理I/O。其中,电子设备从用户态切换到内核态依赖于系统中断/系统调用以及磁盘的寻址、读/写数据导致一次完整的I/O操作花费的时间较长。
值得说明的是,为了防止恶意的应用程序修改或删除其他应用程序、操作系统的数据,通过内核态和用户态的切换,由内核态的文件系统帮助用户态的应用程序完成I/O操作,保证了应用程序之间的数据安全隔离,以及应用程序与操作系统之间的数据安全隔离。
(2.2)I/O操作分类
更具体的,根据I/O操作是否有页缓存的参与,可以将I/O操作分为三类:标准I/O,直接I/O和mmap。
下面结合图4B所示的内容示例性的介绍I/O操作的分类。
图4B为本申请实施例提供的I/O操作的分类的一个示例性示意图。
如图4B所示,标准I/O和mmap的过程需要页缓存的参与,直接I/O无需页缓存的参与。
其中,标准I/O,也称为缓存I/O,包括:当应用程序读数据时,若该数据在页缓存中,可以直接将该数据返回给应用程序,若该数据不在页缓存中,则需要文件系统通过物理I/O访问磁盘获取该数据并返回给应用程序;当应用程序写数据时,数据回先写到页缓存中,页缓存中的数据写回到磁盘上的时机与同步的机制有关。其中,页缓存与磁盘的数据的同步也称为缓存一致性。
其中,直接I/O包括:当应用程序读数据时,通过文件系统从磁盘上读数据;当应用程序写数据时,应用程序通过文件系统直接在磁盘上写数据。
其中,mmap包括:在开始启动应用程序后,将应用程序的数据以及应用程序可能使用的数据映射到该应用的进程的虚拟地址空间(进程的虚拟内存);当应用程序读/写数据时,若进程的内存中并无应用程序读/写的数据,则通过缺页异常切换到内核态,进而将磁盘上的数据拷贝到内存中;若进程的虚拟内存中存在应用程序读/写的数据,其不用通过读写操作而是使用指针的方式读写页缓存中的数据,即用内存读写操作代替了I/O读写操作。
值得说明的是,标准I/O、直接I/O、mmap都涉及物理I/O操作,至少需要负担磁盘的寻址、读/写数据的时间开销。其中,mmap虽然可以减少用户态和内核态的切换,但是需要占据较多的内存,容易引起GC。
值得说明的是,可以根据不同的角度,将I/O操作分为不同类型的I/O。
很显然的,不同类型的I/O操作都不可避免的需要系统中断/系统调用,完成用户态和内核态的切换,进而完成物理I/O;并且,不同类型的I/O操作都需要负担物理I/O时磁盘寻址、读/写数据的时间开销。
其次,在对本申请实施例涉及的相关术语及相关概念进行介绍后,示例性的介绍本申请实施例提供的文件片段调整方法的实施场景。
图5为本申请实施例提供的目标程序启动过程中访问文件片段的一个示例性示意图。
如图5所示,应用程序1、应用程序2、应用程序3为电子设备确定的目标程序。
应用程序1、应用程序2、应用程序3在启动过程中,会分别的访问操作系统提供的系统资源。其中,应用程序1启动过程中会按照顺序访问文件片段1、文件片段5、文件片段6和文件片段8;应用程序2启动过程中会按照顺序访问文件片段1、文件片段5、文件片段6、文件片段7和文件片段9;应用程序3启动过程中会按照顺序访问文件片段1、文件片段3、文件片段4、文件片段5、文件片段7和文件片段9。
由于文件片段1、文件片段3、文件片段4、文件片段5、文件片段6、文件片段7、文件片段8、文件片段9的物理地址不连续,所以电子设备在启动应用程序1的过程中,至少需要为应用程序1的启动发起四次I/O操作。类似的,应用程序2的启动需要五次I/O操作;应用程序3的启动需要六次I/O操作。其中,每次I/O操作至少包括一次物理I/O操作。
其中,值得说明的时,上述任意两个文件片段可以在同一个文件内,即上述两个文件可以属于同一个so库文件或jar包文件。
图6A为图5所示场景下实施本申请实施例提供的文件片段调整方法后的文件片段的存储的一个示例性示意图。
如图6A所示,在实施本申请实施例提供的文件片段调整方法后,会将文件片段按照特定的顺序放置在电子设备的存储介质的连续物理地址上。其中,顺序为:文件片段8、文件片段6、文件片段1、文件片段5、文件片段7、文件片段9、文件片段3、文件片段4。其中,文件片段1和文件片段5的顺序可以互换、文件片段7和文件片段9的顺序可以互换、文件片段3和文件片段4的顺序可以互换。
由于电子设备已知应用程序1启动时需要通过I/O操作访问的文件的片段,所以,电子设备在启动应用程序1的时刻,或者电子设备在启动应用程序1的过程中,可以通过一次物理I/O操作访问文件片段8、文件片段6、文件片段1和文件片段5,将文件片段8、文件片段6、文件片段1和文件片段5装载入页缓存中。当应用程序发起逻辑I/O时,即可以通过内存读写,直接在页缓存中获取逻辑I/O对应的文件片段。
其中,文件片段8、文件片段6、文件片段1和文件片段5在页缓存内的相对顺序可以为任意的,故在此不作限定。
可以理解的是,由于应用程序发起逻辑I/O至页缓存中寻找数据是使用类似指针的方式,故逻辑I/O以及内存读/写的时间开销相比于物理I/O的时间开销较小,进而减少了应用程序的启动的时间。
类似的,电子设备在启动应用程序2的时刻,或者电子设备在启动应用程序2的过程中,可以通过一次物理I/O操作访问文件片段6、文件片段1、文件片段5、文件片段7和文件片段9,并将文件片段6、文件片段1、文件片段5、文件片段7和文件片段9装载入页缓存中。
类似的,电子设备在启动应用程序3的时刻,或者电子设备在启动应用程序3的过程中,可以通过一次物理I/O操作访问文件片段1、文件片段5、文件片段7、文件片段9、文件片段3和文件片段4,并将文件片段1、文件片段5、文件片段7、文件片段9、文件片段3和文件片段4装载入页缓存中。
可以理解的是,电子设备通过调整文件片段在存储介质上的存储位置,使得应用程序访问的文件片段在物理地址空间上连续排布,进而使得多个物理I/O操作可以合并为一个物理I/O操作,降低物理I/O操作涉及的寻址时间(seektime)的时间开销,有助于提升应用程序的启动速度。
图6B、图6C、图6D为图5所示场景下实施本申请实施例提供的文件片段调整方法后的文件片段的存储的另一个示例性示意图。
与图6A所示的内容不同的是,图6B、图6C、图6D为考虑到应用程序启动过程中I/O操作的顺序后文件片段的存储的示例性示意图。
其中,I/O操作的顺序是指:若应用程序启动过程中连续的先后通过I/O操作访问文件片段1和文件片段2,则文件片段1和文件片段2(文件片段1在前,文件片段2在后)在电子设备的存储介质的连续物理地址上排布的情况下,应用程序对文件片段1的I/O操作和对文件片段2的I/O操作可以合并。但是,若文件片段2和文件片段1(文件片段2在前,文件片段1在后)在电子设备的存储介质的连续物理地址上排布的情况下,应用程序对文件片段1的I/O操作和对文件片段2的物理I/O操作不可以合并。
如图6B、图6C、图6D所示,在实施本申请实施例提供的文件片段调整方法后,会将文件片段按照特定的顺序放置在电子设备的存储介质的连续物理地址上,其中,文件片段1、文件片段5、文件片段6、文件片段7、文件片段9在存储介质的连续物理地址上排布;文件片段3、4在存储介质的连续物理地址上排布,文件片段8单独排布。
其中,“文件片段1、文件片段5、文件片段6、文件片段7、文件片段9”作为一个整体和“文件片段3、文件片段4”以及和文件片段8中的任意组文件片段可以连续排布也可以不连续排布。
如图6B所示,应用程序1的启动过程需要两次I/O操作,其中第一次I/O操作为对文件片段1、文件片段5、文件片段6的I/O操作,第二次I/O操作为对文件片段8的I/O操作。
如图6C所示,应用程序2的启动过程需要一次I/O操作,其中该次I/O操作为对文件片段1、文件片段5、文件片段6、文件片段7、文件片段9的I/O操作。
如图6D所示,应用程序3的启动过程需要四次I/O操作,其中第一次I/O操作为对文件片段1的I/O操作,第二次I/O操作为对文件片段3、文件片段4的I/O操作,第三次I/O操作为对文件片段5的I/O操作,第四次I/O操作为对文件片段7、文件片段9的I/O操作。
其中I/O操作可以是标准I/O操作、直接I/O操作或者是mmap。
可以理解的是,对比于图5所示场景,应用程序1的启动过程减少了两次物理I/O操作,应用程序2的启动过程减少了四次物理I/O操作,应用程序3的启动过程减少了两次物理I/O操作,进而加快了应用程序的启动速度。
考虑到应用程序启动过程中的I/O操作的依赖性,进一步的,实施本申请实施例提供的本申请实施例提供的文件片段调整方法后的文件片段的存储如图6E、图6F、图6G所示。
其中,应用程序启动过程中I/O操作的依赖性是指,对于两个及两个以上的I/O操作,这些I/O操作的发生时间虽然连续,但是不能直接合并该I/O操作中的物理I/O操作。
例如,对于应用程序1的I/O操作:对文件片段5的I/O操作完成后,应用程序1才会对文件片段6请求I/O操作。故,即使文件片段5和文件片段6在电子设备的存储介质的连续物理地址上排布,对文件片段5和文件片段6的物理I/O操作仍然不能合并。
其中I/O操作的依赖性可以通过与应用程序开发厂商合作获知,或者可以通过测试确定。例如,当文件片段5的I/O操作和文件片段6的I/O操作发生时间接近,且文件片段5和文件片段6在物理地址上连续时,文件片段5的物理I/O操作和文件片段6的物理I/O操作不能合并,则文件片段5的I/O操作和文件片段6的I/O操作具有依赖性。又例如,当对文件片段5的I/O操作阻塞时,应用程序不会发起文件片段6的I/O操作,则文件片段5的物理I/O操作和文件片段6的物理I/O操作具有依赖性。故,I/O操作的依赖性的确定方法在此不作限定。
图6E、图6F、图6G为图5所示场景下实施本申请实施例提供的文件片段调整方法后的文件片段的存储的另一个示例性示意图。
其中,应用程序1的对文件片段5和文件片段6的I/O操作具有依赖性,不能合并;应用程序2的对文件片段5和文件片段6的I/O操作具有依赖性,不能合并;应用程序3的对文件片段1和文件片段3的I/O操作具有依赖性,不能合并。
如图6E、图6F、图6G所示,在实施本申请实施例提供的文件片段调整方法后,会将文件片段按照特定的顺序放置在电子设备的存储介质的连续物理地址上,其中,文件片段1、文件片段5、文件片段7、文件片段9在存储介质的连续物理地址上排布;文件片段3、文件片段4在存储介质的连续物理地址上排布、文件片段6和文件片段8在存储介质的连续物理地址上排布。
其中,“文件片段1、文件片段5、文件片段7和文件片段9”、“文件片段3、文件片段4”、“文件片段6、文件片段8”中的任意组文件片段可以连续排布也可以不连续排布。
如图6E所示,应用程序1的启动过程需要三次物理I/O操作,其中第一次物理I/O操作为对文件片段1、文件片段5的物理I/O操作,第二次物理I/O操作为对文件片段6的物理I/O操作,第三次物理I/O操作为对文件片段8的物理I/O操作。
如图6F所示,应用程序2的启动过程需要三次物理I/O操作,其中第一次物理I/O操作为对文件片段1、文件片段5的物理I/O操作,第二次物理I/O操作为对文件片段6的物理I/O操作,第三次物理I/O操作为对文件片段7、文件片段9的物理I/O操作。
如图6G所示,应用程序3的启动过程需要三次物理I/O操作,其中第一次物理I/O操作为对文件片段1的物理I/O操作,第二次物理I/O操作为对文件片段3、文件片段4的物理I/O操作,第三次物理I/O操作为对文件片段5、文件片段7、文件片段9的物理I/O操作。
可以理解的是,对比于图5所示场景,应用程序1的启动过程减少了一次物理I/O操作,应用程序2的启动过程减少了两次物理I/O操作,应用程序3的启动过程减少了三次物理I/O操作,进而加快了应用程序的启动速度。
值得说明的是,在图6A所示的文件片段的存储情况下,在应用程序启动时或启动过程中,电子设备的操作系统可以通过物理I/O操作将“文件片段8、文件片段6、文件片段1、文件片段5、文件片段7、文件片段9、文件片段3、文件片段4”读入页缓存中,进而使得应用程序在启动过程中不用等待物理I/O操作的耗时,进而提升应用程序的启动速度。
值得说明的是,在图6B、图6C、图6D所示的文件片段的存储情况下,在应用程序启动时或启动过程中,可以通过I/O操作连续的读/写“文件片段1、文件片段5、文件片段6、文件片段7、文件片段9”或“文件片段3、文件片段4”,减少I/O操作的次数,进而提升应用程序的启动速度。并且,类似图6A所示的情况,在应用程序启动前或启动过程中,电子设备的操作系统可以通过物理I/O操作将“文件片段1、文件片段5、文件片段6、文件片段7、文件片段9”或“文件片段3、文件片段4”读入页缓存,进而提升应用程序的启动速度。
值得说明的是,在图6E、图6F、图6G所示的文件片段的存储情况下,在应用程序启动时或启动过程中,可以通过I/O操作连续的读/写“文件片段1、文件片段5、文件片段7、文件片段9”或“文件片段3、文件片段4”或“文件片段6、文件片段8”,减少I/O操作的次数,进而提升应用程序的启动速度。并且,类似图6A所示的情况,在应用程序启动前或启动过程中,电子设备的操作系统可以通过物理I/O操作将“文件片段1、文件片段5、文件片段7、文件片段9”或“文件片段3、文件片段4”或“文件片段6、文件片段8”读入页缓存,进而提升应用程序的启动速度。
再次,在对本申请实施例提供的场景进行介绍后,下面介绍本申请实施例提供的文件片段调整方法。
如上文中图3所示,电子设备在启动应用程序时,发生了大量I/O操作。
为了提高应用程序的启动速度,应用程序开发厂商可以调整应用程序的逻辑,进而降低应用程序的启动过程中的I/O操作数量。
但是,若应用程序开发产生没有优化应用程序启动过程中的启动逻辑,则应用程序的启动时间较长,用户体验较差。
本申请实施例提供的文件片段调整方法通过降低应用程序访问公共资源中的物理I/O操作的时间开销去提高应用程序启动的速度。
本申请实施例提供的文件片段调整方法,首先,确定一个或多个目标程序,并记录所有目标程序的在启动过程中的针对公共资源的I/O操作,进而确定目标文件片段。
其次,确定目标文件片段之间的共访度,进而基于共访度确定各个目标文件片段之间的访问相关性。
最后,基于文件片段之间的访问相关性确定文件片段的排序,并按照排序将文件片段放置在物理空间连续的存储介质中。
可以理解的是,本申请实施例提供的文件片段调整方法,在应用程序启动前,电子设备可以将应用程序启动过程中的需要通过I/O操作访问的公共资源在存储介质上连续排布。在电子设备在启动应用程序时的或启动应用程序的过程中,应用程序可以通过较少的I/O操作读取公共资源。本申请实施例提供的文件片段调整方法通过降低I/O操作的数量,进而降低应用程序启动中所有I/O操作的时间开销,进而提升应用程序的启动速度。
下面结合图7所示的内容,示例性的介绍本申请实施例提供的文件片段调整方法。
图7为本申请实施例提供的文件片段调整方法的一个示例性示意图。
如图7所示,本申请实施例提供的文件片段调整方法包括:
S701:确定多个目标程序,记录目标程序的I/O操作,进而确定文件片段。
电子设备首先需要确定至少两个目标程序,并在目标程序的启动过程中记录目标程序对公共资源的I/O操作;基于记录的目标程序对公共资源的I/O操作,确定文件片段。
其中,目标程序的启动、公共资源、I/O操作等术语的定义,可以参考术语解释中(1)应用程序的启动、应用程序的启动时间、(2)I/O操作中的文字描述,此处不在赘述。
其中,确定目标程序的方法、以及确定文件片段的方法见下文(a)、(b)。
其中,由于公共资源为操作系统提供给目标程序的,并且I/O操作在执行时需要从用户态切换到内核态,由操作系统为应用程序执行I/O操作,故操作系统可以确定并记录目标程序的I/O操作。其中记录的内容可以包括:I/O操作发生在物理空间上的地址、I/O操作的时间等。
其中,文件片段为电子设备上存储介质,如磁盘上,一段物理地址对应的数据。
(a)确定目标程序的方法
电子设备可以有多种确定多个目标程序的方法,在此不做限定,下面示例性的介绍几种确定目标程序的方法。
其一,电子设备选择应用商店或者其他应用商店类型的平台上,热门/下载量/好评等参数靠前的前50/前100/前500的应用程序为目标程序。
其二,电子设备选择电子设备上已经安装的部分或全部的应用程序为目标程序。
其三,响应于用户的交互,电子设备的用户选择的应用程序为目标程序。
(b)确定文件片段
在确定目标程序后,记录目标程序启动过程中对公共资源的I/O操作后,电子设备可以基于记录的信息确定文件片段。其中,确定文件片段包括确定文件片段的物理地址。
其中,电子设备基于记录的信息确定文件片段的方法有很多种,在此不做限定,下面示例性的介绍几种:
图8为本申请实施例提供的确定文件片段的一个示例性示意图。
其一,电子设备可以选择目标程序启动过程中,目标程序对公共资源的I/O操作涉及的所有文件片段。
其二,电子设备可以选择目标程序启动过程中,目标程序对公共资源的I/O操作次数多和/或时间长的。
如图8所示,某一个目标程序启动过程中,I/O操作涉及的文件片段包括:文件片段1、文件片段2、文件片段3、文件片段4;文件片段1的物理地址为物理地址a至物理地址b、文件片2的物理地址为物理地址c至物理地址d、文件片段3的物理地址为物理地址e至物理地址f、文件片段4的物理地址为物理地址g至物理地址h;访问顺序依次为文件片段1、文件片段2、文件片段3、文件片段4、文件片段3。
在图7所示的情况下,可以基于I/O操作次数,选择I/O操作次数多的文件片段作为文件片段。
例如,从文件片段1、文件片段2、文件片段3、文件片段4中选择文件片段3作为文件片段。
可以理解的是,选择I/O操作次数多的文件片段作为文件片段,可以降低后续计算后续文件片段的计算量,其次,降低I/O操作次数多的文件片段的单次I/O操作的时间,更能够有效加快应用程序的启动。
在图7所示的情况下,或者,可以基于I/O操作的时间开销,选择I/O操作的时间开销大的文件片段作为文件片段。
例如,从文件片段1、文件片段2、文件片段3、文件片段4中选择文件片段4和文件片段2作为文件片段。
可以理解的是,选择I/O操作的时间开销大的文件片段作为文件片段,可以降低后续计算后续文件片段的计算量,其次,I/O操作的时间开销大的文件片段对应用程序启动速度的影响较大,更具有优化的潜力。
值得说明的是,还可以从其他参数、角度确定文件片段。
S702:确定文件片段之间的相关性。
其中,共同访问度为本申请实施例提供的,用于描述两个以及两个以上的文件片段之间的被不同的应用程序在启动时访问的相关性。为了方便描述,称共同访问度为共访度。
即,目标程序中越多的应用程序在启动时访问了文件片段1和文件片段2,则文件片段1和文件片段2的共同访问度越大;目标程序中越少的应用程序在启动时访问了文件片段1和文件片段2,则文件片段1和文件片段2的共同访问度越小。
在定性的介绍了共同访问度后,下面给出两种定量的确定文件片段之间的共同访问度的方式。
(a)第一种确定文件片段之间的共同访问度的方式:
文件片段的共同访问度的一种确定方式如下式(1)、式(2)、式(3)。
其中,segi为文件片段i、rn为n个文件片段的共同访问度、APPj为启动过程中访问文件片段j的目标程序的集合、|APPj|是集合APPj中目标程序的个数、即0范数。
(b)第二种确定文件片段之间的共同访问度的方式:
文件片段的共同访问度的另一种确定方式如下式(4)、式(5)、式(6)。
其中,segi为文件片段i、rn为n个文件片段的共同访问度、Li,j为所有目标程序启动过程中同时访问文件片段i和文件片段j的次数,Sp为所有目标程序启动过程中访问任意p个文件片段的次数。
值得说明的是,(a)、(b)中确定多个文件片段的共访度的方式,还可以如下式(7)。
r3(segi,segj,segk)=r2(segi,segj)*r2(segj,segk)# (7)
可选的,在本申请一些实施例中,确定文件共同访问度时,若目标程序启动过程中,访问文件片段1和文件片段2的I/O操作的发生时间的间隔均大于时间间隔阈值,则认为该目标程序启动过程中访问了文件片段1或文件片段2,但是没有访问文件片段1和文件片段2。即,在这种情况下,在确定共访度时,认为该应用程序并没有在启动过程中访问了文件片段1和文件片段2。
这是因为,若文件片段1和文件片段2的被访问时间间隔较大时,合并访问文件片段1和文件片段2的I/O操作的概率较小。
在确定目标程序在启动过程中访问的文件片段后,计算文件片段之间的共访度。
例如,文件片段1和文件片段2之间的共访度可以按照步骤S702中的(a)确定:
(1)在图6A所示的场景下,即不考虑I/O操作的顺序和依赖性的情况下,确定文件片段之间的共访度
其中,APP1为启动过程中访问文件片段1的应用程序,即APP1={应用程序1、应用程序2、应用程序3}、APP3={应用程序3}。则,|APP1∩APP3|=|{应用程序1}|=1、|APP1∪APP3|=|{应用程序1、应用程序2、应用程序3}|=3。则,
类似的,确定r2(seg1,seg4)=1/3、r2(seg1,seg5)=1、r2(seg1,seg6)=2/3、r2(seg1,seg7)=2/3、r2(seg1,seg8)=1/3、r2(seg1,seg9)=2/3、r2(seg3,seg4)=1、r2(seg3,seg5)=1/3、r2(seg3,seg6)=0、r2(seg3,seg7)=1/2、r2(seg3,seg8)=0、r2(seg3,seg9)=1/2、r2(seg4,seg5)=1/3、r2(seg4,seg6)=0、r2(seg4,seg7)=1/2、r2(seg4,seg8)=0、r2(seg4,seg9)=1/2、r2(seg5,seg6)=2/3、r2(seg5,seg7)=2/3、r2(seg5,seg8)=1/3、r2(seg5,seg9)=2/3、r2(seg6,seg7)=1/3、r2(seg6,seg8)=1/2、r2(seg6,seg9)=1/3、r2(seg7,seg8)=0、r2(seg7,seg9)=1、r2(seg8,seg9)=0。
类似的,还可以确定三个乃至更多个文件片段之间的共访度。
(2)在图6B、图6C、图6D所示的场景下,即考虑I/O操作的顺序的情况下,确定文件片段之间的共访度
在该情况下,APP1∩APP3为I/O操作顺序访问文件片段1和文件片段3的应用程序,即APP1∩APP3={应用程序3}。APP3∩APP1为I/O操作顺序访问文件片段3和文件片段1的应用程序。APP1∪APP3为I/O操作访问文件片段1的应用程序和I/O操作访问文件片段3的应用程序的并集。
即,r2(seg1,seg3)=1/3。
类似的,r2(seg1,seg5)=2/3、r2(seg3,seg4)=1、r2(seg4,seg5)=1/3、r2(seg5,seg6)=2/3、r2(seg5,seg7)=1/3、r2(seg6,seg7)=1/3、r2(seg6,seg8)=1/2、r2(seg7,seg9)=1。
其中,未列出的两个文件片段之间的共访度均为0。例如,r2(seg4,seg7)=0,因为没有应用程序通过I/O操作顺序访问文件片段4和文件片段7,其中,应用程序3通过I/O操作访问文件片段4后还会通过I/O操作访问文件片段5,故应用程序3没有通过I/O操作顺序访问文件片段4和文件片段7。
类似的,还可以确定三个乃至更多个文件片段之间的共访度。
(3)在图6E、图6F、图6G所示的场景下,即考虑I/O操作的依赖性和顺序的情况下,确定文件片段之间的共访度
在该情况下,APP1∩APP3为能够将对文件片段1和文件片段3的I/O操作合并的应用程序程序,即APP1∩APP3=0。APP1∪APP3为I/O操作访问文件片段1的应用程序和I/O操作访问文件片段3的应用程序的并集。
类似的,r2(seg1,seg5)=2/3、r2(seg3,seg4)=1、r2(seg4,seg5)=1/3、r2(seg5,seg7)=1/3、r2(seg6,seg7)=1/3、r2(seg6,seg8)=1/2、r2(seg7,seg9)=1。
类似的,还可以确定三个乃至更多个文件片段之间的共访度。
又例如,文件片段1和文件片段2之间的共访度可以按照步骤S702中的(b)确定:
(1)在图6A所示的场景下,不考虑I/O操作的顺序和依赖性
L1,3为所有目标程序启动过程中访问文件片段1和文件片段3的次数,即L1,3=1。S2=6+10+15=31。其中,则应用程序1启动过程中访问2个文件片段的次数为类似的,应用程序2启动过程中访问2个文件片段的次数为10,应用程序3启动过程中访问2个文件片段的次数为15。
故,r2(seg1,seg3)=1/31。
类似的,r2(seg1,seg4)=1/31、r2(seg1,seg5)=3/31,r2(seg1,seg6)=2/31,r2(seg1,seg7)=2/31、r2(seg1,seg8)=1/31、r2(seg1,seg9)=2/31、r2(seg3,seg4)=1/31、r2(seg3,seg5)=1/31、r2(seg3,seg7)=1/31、r2(seg3,seg9)=1/31、r2(seg4,seg5)=1/31、r2(seg4,seg7)=1/31、、r2(seg4,seg9)=1/31、r2(seg5,seg6)=2/31、r2(seg5,seg7)=2/31、r2(seg5,seg8)=1/31、r2(seg5,seg9)=2/31、r2(seg6,seg7)=1/31、r2(seg6,seg8)=1/31、r2(seg6,seg9)=1/31、r2(seg7,seg9)=2/31。
类似的,还可以确定三个乃至更多个文件片段之间的共访度。
(2)在图6B、图6C、图6D所示的场景下,即考虑I/O操作的顺序的情况下,确定文件片段之间的共访度
L1,3为所有目标程序启动过程中顺序访问文件片段1和文件片段3的次数,即L1,3=1。S2=3+4+5=12。其中,则应用程序1启动过程中顺序访问2个文件片段的次数为3。类似的,应用程序2启动过程中顺序访问2个文件片段的次数为4,应用程序3启动过程中顺序访问2个文件片段的次数为5。
故,r2(seg1,seg3)=1/12。
类似的,r2(seg1,seg5)=1/6、r2(seg3,seg4)=1/12、r2(seg4,seg5)=1/12、r2(seg5,seg6)=1/6、r2(seg5,seg7)=1/12、r2(seg6,seg7)=1/12、r2(seg6,seg8)=1/12、r2(seg7,seg9)=1/6。
类似的,还可以确定三个乃至更多个文件片段之间的共访度。
(3)在图6E、图6F、图6G所示的场景下,即考虑I/O操作的依赖性和顺序的情况下,确定文件片段之间的共访度
L1,3为所有目标程序启动过程中可以合并的对文件片段1和文件片段3的I/O操作的次数,即L1,3=0。
故,r2(seg1,seg3)=0。
类似的,r2(seg1,seg5)=1/6、r2(seg3,seg4)=1/12、r2(seg4,seg5)=1/12、r2(seg5,seg7)=1/12、r2(seg6,seg7)=1/12、r2(seg6,seg8)=1/12、r2(seg7,seg9)=1/6。
类似的,还可以确定三个乃至更多个文件片段之间的共访度。
在确定了文件片段之间的共访度后,可以确定文件片段之间的相关性。
电子设备有多种方式基于文件片段之间的共访度,确定文件片段之间的相关性,在此不作限定,下面示例性的介绍几种基于共访度确定相关性的方式。
其中,相关性Rn(segi,segj,...,segi+n-1)为n个文件片段的相关性。
(1)共访度等于相关性
很显然的,电子设备可以认为共访度即是相关性。
(2)基于共访度和I/O操作的时长确定相关性
例如,以在图6E、图6F、图6G所示的场景下,以步骤S702中的(b)确定共访度的情况下,并且考虑I/O操作的依赖性和顺序的情况下,r2(seg3,seg4)=1/12、r2(seg4,seg5)=1/12。
则,电子设备可以基于共访度和I/O操作的时长确定相关性。例如,Rn(segi,segj,...,segi+n-1)=k(segi,segj,...,segi+n-1)*rn(segi,segj,...,segi+n-1),其中k(segi,segj,...,segi+n-1)与segi,segj,...,segi+n-1文件片段的物理I/O操作的时长的和正相关。
当文件片段3和文件片段4对应的物理I/O操作的时间和较长,而文件片段4和文件片段5对应的I/O操作的时间和较短,即,k(seg3,seg4)>k(seg4,seg5),则R2(seg3,seg4)>R2(seg4,seg5)。
值得说明的是,还可以通过其他参数以及共访度确定文件片段之间的相关性。
S703:基于文件片段之间的相关性确定目标文件在存储介质上的排序。
电子设备确定文件片段之间的相关性,可以确定文件片段在存储介质上的排序。
其中,可以有多种方法确定文件片段在存储介质上的排序,在此不作限定。下面示例性的介绍几种确定目标文件片段在存储介质上的排序的方式:
若无特殊说明,则以在图6E、图6F、图6G所示的场景下,以步骤S702中的(b)确定共访度的情况下,并且考虑I/O操作的依赖性和顺序的情况下确定的文件片段之间的共访度作为文件片段之间的相关性进行排序。
(1)从相关性最强的多个文件片段开始排序
(1.1)从相关性最强的2个文件片段开始
图9为本申请实施例提供的文件片段排序的一个示例性示意图。
如图9所示,其一,确定相关性最强的两个文件片段为文件片段1和文件片段5、文件片段7和文件片段9。
其二,分别的确定文件片段1、文件片段5、文件片段7和文件片段9为相关性最强的文件片段。其中,由于I/O操作的依赖性和顺序,文件片段1、文件片段7需要确定向上的相关性,即文件片段1和文件片段7为两次连续的I/O操作中在后被访问的;对应的,文件片段5和文件片段9需要确定向下的相关性,即文件片段7和文件片段9为两次连续的I/O操作中在前访问的。
其中,若任意一个文件片段的相关性最强的文件片段已经被安排好在存储介质上的顺序,则寻找相关性次强的文件片段。
其中,若任意一个文件片段的相关性最强的文件片段为多个文件片段,则可以确定多种目标文件片段在存储介质上的排序方式。
其三,确定文件片段1没有向上相关性最强的文件片段不存在,确定文件片段5向下相关性最强的文件片段为文件片段7,确定文件片段7向上相关性最强的文件片段为文件片段5,确定文件片段9向下相关性最强的文件片段不存在。
其四,确定文件片段1、文件片段5、文件片段7、文件片段9顺序排序。
其五,确定剩余的文件片段中,相关性最强的文件片段为文件片段3和文件片段4、文件片段6、文件片段8。
其六,类似于其二,此处不再赘述。
其七,类似于其三,此处不再赘述。
最后确定的文件片段在存储介质上的排序与图6E、图6F、图6G所示的排序一致,文件片段1、文件片段5、文件片段7、文件片段9在存储介质的连续物理地址上排布;文件片段3、文件片段4在存储介质的连续物理地址上排布、文件片段6和文件片段8在存储介质的连续物理地址上排布。
其中,“文件片段1、文件片段5、文件片段7和文件片段9”、“文件片段3、文件片段4”、“文件片段6、文件片段8”中的任意组文件片段可以连续排布也可以不连续排布。
(1.2)相关性最强的三个、四个等多个文件片段开始排序。
例如,从相关性最强的三个文件片段开始排序。
图10为本申请实施例提供的文件片段排序的另一个示例性示意图。
如图10所示,其一,确定数量最多的具有相关性的文件片段为文件片段5、文件片段7和文件片段9。
其二,分别的确定文件片段5和文件片段9为相关性最强的文件片段。
其三,确定文件片段5的向上相关性最强的文件片段为文件片段1,文件片段9的向下相关性最强的文件片段为无。
其四,确定文件片段1、文件片段5、文件片段7、文件片段9顺序排序。
其五,确定剩余的文件片段中,数量最多具有相关性的文件片段为文件片段3和文件片段4、文件片段6、文件片段8。
其六,类似于其二,此处不再赘述。
其七,类似于其三,此处不再赘述。
最后确定的文件片段在存储介质上的排序与图6E、图6F、图6G所示的排序一致,文件片段1、文件片段5、文件片段7、文件片段9在存储介质的连续物理地址上排布;文件片段3、文件片段4在存储介质的连续物理地址上排布、文件片段6和文件片段8在存储介质的连续物理地址上排布。
其中,“文件片段1、文件片段5、文件片段7和文件片段9”、“文件片段3、文件片段4”、“文件片段6、文件片段8”中的任意组文件片段可以连续排布也可以不连续排布。
值得说明的是,不同的对文件片段的排序方式,可以排出不同的文件片段在电子设备上的存储介质上的排序。
(2)遍历穷举排序
对于N个文件片段,共有中排序方式。其中,可以认为,种排序方式中任一种对文件片段的排序方式,N个文件片段在电子设备的存储介质上连续的物理地址上排布。在确定了种排序方式后,计算每一种排序方式下的优化指标,进而确定优化指标最高的排序方式为最终的排序方式。
例如,对于文件片段1、文件片段2,文件片段3这三个文件片段有六种排序方式使得该三个文件在存储介质上连续的物理地址上排布,其中,每一种排序方式又有两种分割方式将三个文件片段不连续的方式。例如,对于排序方式为{文件片段1、文件片段2、文件片段3}(依次在存储介质上连续的物理地址上排布),其中,文件片段1和文件片段2物理地址连续,但文件片段2和文件片段3物理地址不连续是一种分割方式;类似的,文件片段1和文件片段2物理地址不连续,但文件片段2和文件片段3物理地址连续是另一种分割方式。
其中,优化指标可以有多种方式确定,在此不作限定。下面示例性的介绍几种优化指标的确定方式:
(2.1)优化指标为启动时间的和
电子设备可以计算所有目标程序在对文件片段不同排序方式下启动时间的和,启动时间的和最少的排序优化指标最高,即该排序为最终排序。
(2.2)优化指标为I/O操作的次数
电子设备可以计算所有目标程序在对文件片段不同排序方式下I/O次数的和,I/O次数的和最少的排序优化指标最高,即该排序为最终排序。
在确定文件片段的排序后,即可以将文件片段按照确定的排序将文件片段移动放置在电子设备的存储介质中一段连续的物理地址空间上。
其中,若在步骤S701中,电子设备选择应用商店或者其他应用商店类型的平台上,热门/下载量/好评等参数靠前的前50/前100/前500的应用程序为目标程序。
则电子设备确定文件片段的排序后,可以将该排序结果传递给其他电子设备,其他电子设备收到该排序结果后,可以更新目标文件片段在存储介质上的排序。
图11为本申请实施例提供的实施文件调整方法的一个示例性示意图。
如图11所示,电子设备1可以作为测试电子设备,安装有应用商店或者其他应用商店类型的平台上热门/下载量/好评等参数靠前的前50/前100/前500的应用程序。电子设备1计算出文件片段的相关性后,基于文件片段的相关性确定文件片段的排序结果。
电子设备1确定文件片段的排序结果,将排序结果发送到云服务器。云服务器将排序结果装载到系统更新补丁中,下发到多个电子设备2上,电子设备2在更新系统的过程中,依据排序结果重新调整文件片段在存储介质上的位置。
值得说明的是,上文中所有排序只代表文件片段之间的相对位置关系,不代表文件片段一定要在物理地址上连续。
下面结合电子设备的软件架构、硬件架构示例性的介绍本申请实施例提供的文件片段调整方法。
图12为本申请实施例提供的电子设备的软件架构的一个示例性示意图。
如图12所示,电子设备100包括记录模块、排序模块、存储驱动。
其中,记录模块用于记录电子设备100上的应用程序或目标程序的启动过程中的I/O操作。其中,记录的信息可以包括:I/O操作的文件片段、I/O操作的时长等。
即,记录模块可以执行步骤S701。
其中,排序模块用于接收记录模块发送的记录信息,计算文件片段之间的相关性,进而生成一个排序结果。
即,排序模块可以执行步骤S702、S703。
其中,存储驱动用于接收排序模块发送的排序结果,并依据排序结果移动文件片段在电子设备的存储介质上的位置。
其中,存储驱动可以在电子设备的存储介质上专门划分一部分区域,用于放置排序后的文件片段。
电子设备可以是搭载iOS、Android、Microsoft或者其它操作系统的便携式终端设备,例如手机、平板电脑、可穿戴设备等,还可以是具有触敏表面或触控面板的膝上型计算机(Laptop)、具有触敏表面或触控面板的台式计算机等非便携式终端设备。电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。
图13A、图13B为本申请实施例提供的电子设备的软件架构的另一个示例性示意图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图13A所示,应用程序包可以包括相机,图库,日历,电话,通讯录,导航,WLAN,音乐,设置,短信等应用程序。
在一些实施例中,在应用运行的过程中,应用可能需要执行受限操作或受限数据,例如系统状态和用户的联系信息,又例如,连接到已配对的其他电子设备并录制音频,这时,电子设备100可以显示授权窗口,提示用户请求授予应用访问其他应用程序的权限,该其他应用程序可以是相机、图库、日历等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图13A所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。其中,应用程序在访问这些数据之前,电子设备100可以先显示授权窗口,提示用户请求授予应用访问这些数据的权限。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
应用程序框架层还包括记录模块,应用程序层的应用程序会通过记录模块在启动过程中,记录启动过程中的I/O操作。记录模块在生成记录信息后,会将记录信息传递给记录服务。其中,记录模块可以是ftrace。
Android Runtime包括核心库和虚拟机。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绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
内核层还包括存储驱动,存储驱动可以接收记录服务传递的排序结果,可以在电子设备的存储介质上专门划分一部分区域,用于放置排序后的文件片段。
内核层还包括网卡驱动。
如图13B所示,位于应用程序的框架层的记录模块记录每一个应用程序的启动过程中的I/O操作,并将汇总的记录信息传递给Android Runtime中的记录服务,记录服务确定出排序结果。
记录服务确定出排序结果后,可以将排序结果发送网卡驱动,进而在排序结果上传云端。或者记录服务确定出排序结果后,可以将排序结果发送给存储驱动,使得存储介质按照排序结果放置文件片段。
图14为本申请实施例提供的电子设备的硬件架构的一个示例性示意图。
电子设备100可以是手机、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmentedreality,AR)设备、虚拟现实(virtual reality,VR)设备、人工智能(artificialintelligence,AI)设备、可穿戴式设备、车载设备、智能家居设备和/或智慧城市设备,本申请实施例对该电子设备的具体类型不作特殊限制。
电子设备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中的存储器为高速缓冲存储器。该存储器可以保存处理器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)接口等。
充电管理模块140用于从充电器接收充电输入。电源管理模块141用于连接电池142,充电管理模块140与处理器110。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。
无线通信模块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)等无线通信的解决方案。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
内部存储器121可以包括一个或多个随机存取存储器(random access memory,RAM)和一个或多个非易失性存储器(non-volatile memory,NVM)。
随机存取存储器可以包括静态随机存储器(static random-access memory,SRAM)、动态随机存储器(dynamic random access memory,DRAM)、同步动态随机存储器(synchronous dynamic random access memory,SDRAM)、双倍资料率同步动态随机存取存储器(double data rate synchronous dynamic random access memory,DDR SDRAM,例如第五代DDR SDRAM一般称为DDR5 SDRAM)等;
非易失性存储器可以包括磁盘存储器件、快闪存储器(flash memory)。
快闪存储器按照运作原理划分可以包括NOR FLASH、NAND FLASH、3D NAND FLASH等,按照存储单元电位阶数划分可以包括单阶存储单元(single-level cell,SLC)、多阶存储单元(multi-level cell,MLC)、三阶储存单元(triple-level cell,TLC)、四阶储存单元(quad-level cell,QLC)等,按照存储规范划分可以包括通用闪存存储(英文:universalflash storage,UFS)、嵌入式多媒体存储卡(embedded multi media Card,eMMC)等。
随机存取存储器可以由处理器110直接进行读写,可以用于存储操作系统或其他正在运行中的程序的可执行程序(例如机器指令),还可以用于存储用户及应用程序的数据等。
非易失性存储器也可以存储可执行程序和存储用户及应用程序的数据等,可以提前加载到随机存取存储器中,用于处理器110直接进行读写。
外部存储器接口120可以用于连接外部的非易失性存储器,实现扩展电子设备100的存储能力。外部的非易失性存储器通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部的非易失性存储器中。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。陀螺仪传感器180B可以用于确定电子设备100的运动姿态。气压传感器180C用于测量气压。传感器180D包括霍尔传感器。加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。距离传感器180F,用于测量距离。接近光传感器180G可以包括例如发光二极管(LED)和光检测器。环境光传感器180L用于感知环境光亮度。指纹传感器180H用于采集指纹。温度传感器180J用于检测温度。触摸传感器180K,也称“触控器件”。骨传导传感器180M可以获取振动信号。
按键190包括开机键,音量键等。马达191可以产生振动提示。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。
上述实施例中所用,根据上下文,术语“当…时”可以被解释为意思是“如果…”或“在…后”或“响应于确定…”或“响应于检测到…”。类似地,根据上下文,短语“在确定…时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定…”或“响应于确定…”或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
Claims (11)
1.一种文件片段调整方法,应用于电子设备,所述电子设备上安装有多个应用程序,所述多个应用程序包括第一应用程序,其特征在于,包括:
所述电子设备确定所述多个应用程序的记录信息,所述记录信息包括所述多个应用程序启动过程中的对多个文件片段的I/O操作;
其中,所述第一应用程序的记录信息中包括对第一文件片段的I/O操作和对第二文件片段的I/O操作;所述多个文件片段属于所述电子设备向应用程序提供的库文件,其中,一个文件片段为所述电子设备上一段连续物理地址上的数据;
所述电子设备基于所述记录信息确定所述多个文件片段的位置并作为第一位置集合,其中包括物理地址不连续的第一文件片段的位置和第二文件片段的位置;
所述电子设备将所述多个文件片段的位置从所述第一位置集合调整到第二位置集合,其中包括物理地址连续的调整后的第一文件片段的位置和调整后的第二文件片段的位置;
在所述第一应用程序的启动过程中,若所述多个文件片段的位置为所述第一位置集合,则所述电子设备通过N次物理I/O操作访问所述多个文件片段;若所述多个文件片段的位置为所述第二位置集合,则所述电子设备通过小于N次的物理I/O操作访问所述多个文件片段。
2.根据权利要求1所述的方法,其特征在于,所述电子设备将所述多个文件片段的位置从所述第一位置集合调整到第二位置集合前,所述电子设备确定所述多个应用程序的记录信息后,还包括:
所述电子设备确定所述多个文件片段的排序为第一排序,所述排序用于确定任意两个文件片段的物理地址是否连续;
所述电子设备基于所述第一排序确定所述第二位置集合。
3.根据权利要求2所述的方法,其特征在于,所述电子设备确定所述多个文件片段的排序为第一排序,具体包括:
所述电子设备遍历所述多个文件片段的排序,并计算每一种排序的优化指标;
所述电子设备确定优化指标最高的排序为所述第一排序;
所述优化指标包括所述多个应用程序启动时间的和、对所述多个文件片段的物理I/O操作次数中的至少一种。
4.根据权利要求2所述的方法,其特征在于,所述电子设备确定所述多个文件片段的排序为第一排序,具体包括:
所述电子设备确定所述多个文件片段中任意两个文件片段的相关性;
所述电子设备基于所述任意两个文件片段的相关性确定所述第一排序。
5.根据权利要求4所述的方法,其特征在于,所述电子设备确定所述多个文件片段中任意两个文件片段的相关性,具体包括:
所述电子设备基于所述多个应用程序的记录信息确定所述多个文件片段中任意两个文件片段的共访度,所述任意两个文件片段的共访度与所述多个应用程序启动过程中通过I/O操作访问所述任意两个文件片段的次数正相关;
所述电子设备基于所述任意两个文件片段的共访度确定所述任意两个文件片段的相关性。
6.根据权利要求5所述的方法,其特征在于,
所述第一文件片段与所述第二文件片段的共访度与所述多个应用程序顺序访问第一文件片段和第二文件片段的次数有关。
7.根据权利要求6所述的方法,其特征在于,
所述第一排序还用于确定所述多个文件片段中位于连续物理地址上的文件片段的内部的相对前后顺序。
8.根据权利要求1-7中任一项所述的方法,其特征在于,
所述第一应用程序的记录信息中还包括对第三文件片段的I/O操作,
在对所述第三文件片段的I/O操作与对所述第一文件片段的I/O操作有依赖性的情况下,所述第三文件片段与所述第一文件片段的共访度为0。
9.一种电子设备,其特征在于,所述电子设备包括:一个或多个处理器和存储器;
所述存储器与所述一个或多个处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述一个或多个处理器调用所述计算机指令以使得所述电子设备执行如权利要求1至8中任一项所述的方法。
10.一种芯片系统,所述芯片系统应用于电子设备,所述芯片系统包括一个或多个处理器,所述处理器用于调用计算机指令以使得所述电子设备执行如权利要求1至8中任一项所述的方法。
11.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111000048.9A CN114490442B (zh) | 2021-08-27 | 2021-08-27 | 文件片段调整方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111000048.9A CN114490442B (zh) | 2021-08-27 | 2021-08-27 | 文件片段调整方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114490442A true CN114490442A (zh) | 2022-05-13 |
CN114490442B CN114490442B (zh) | 2023-01-13 |
Family
ID=81491678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111000048.9A Active CN114490442B (zh) | 2021-08-27 | 2021-08-27 | 文件片段调整方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114490442B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140245292A1 (en) * | 2013-02-25 | 2014-08-28 | International Business Machines Corporation | Automated Application Reconfiguration |
CN104572139A (zh) * | 2013-10-10 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 一种加速应用程序启动的方法和装置 |
US9152638B1 (en) * | 2013-01-10 | 2015-10-06 | Symantec Corporation | Method and apparatus for file backup |
CN107122209A (zh) * | 2017-04-18 | 2017-09-01 | 努比亚技术有限公司 | 终端启动的加速装置及方法 |
CN108429856A (zh) * | 2018-02-28 | 2018-08-21 | 维沃移动通信有限公司 | 一种定位信息获取方法及移动终端 |
CN111078316A (zh) * | 2019-12-16 | 2020-04-28 | 惠州Tcl移动通信有限公司 | 布局文件加载方法、装置、存储介质及电子设备 |
CN112783564A (zh) * | 2019-11-01 | 2021-05-11 | 华为技术有限公司 | 一种加速应用程序启动的方法及电子设备 |
-
2021
- 2021-08-27 CN CN202111000048.9A patent/CN114490442B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9152638B1 (en) * | 2013-01-10 | 2015-10-06 | Symantec Corporation | Method and apparatus for file backup |
US20140245292A1 (en) * | 2013-02-25 | 2014-08-28 | International Business Machines Corporation | Automated Application Reconfiguration |
CN104572139A (zh) * | 2013-10-10 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 一种加速应用程序启动的方法和装置 |
CN107122209A (zh) * | 2017-04-18 | 2017-09-01 | 努比亚技术有限公司 | 终端启动的加速装置及方法 |
CN108429856A (zh) * | 2018-02-28 | 2018-08-21 | 维沃移动通信有限公司 | 一种定位信息获取方法及移动终端 |
CN112783564A (zh) * | 2019-11-01 | 2021-05-11 | 华为技术有限公司 | 一种加速应用程序启动的方法及电子设备 |
CN111078316A (zh) * | 2019-12-16 | 2020-04-28 | 惠州Tcl移动通信有限公司 | 布局文件加载方法、装置、存储介质及电子设备 |
Non-Patent Citations (2)
Title |
---|
SANG-DEOK YOON: "Improving HDFS performance using local caching system", 《SECOND INTERNATIONAL CONFERENCE ON FUTURE GENERATION COMMUNICATION TECHNOLOGIES (FGCT 2013)》 * |
李军虎: "磁盘碎片快速整理及其他", 《河南气象》 * |
Also Published As
Publication number | Publication date |
---|---|
CN114490442B (zh) | 2023-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11803451B2 (en) | Application exception recovery | |
US11853820B2 (en) | Cross-process communication method, apparatus, and device | |
US9858052B2 (en) | Decentralized operating system | |
CN113434288B (zh) | 内存管理的方法及电子设备 | |
US9058193B2 (en) | Methods and systems for providing compatibility of applications with multiple versions of an operating system | |
US11556348B2 (en) | Bootstrapping profile-guided compilation and verification | |
US20200167068A1 (en) | Data Processing Method and Electronic Device | |
CN113553130B (zh) | 应用执行绘制操作的方法及电子设备 | |
US11144173B2 (en) | Electronic device and method for providing object recommendation | |
KR20120128357A (ko) | 미디어 파일 스플리팅 방법 및 장치 | |
US20180196584A1 (en) | Execution of multiple applications on a device | |
CN114020652B (zh) | 一种应用程序的管理方法及电子设备 | |
KR20140142116A (ko) | 텍스트 변환 서비스를 제공하는 전자장치 및 방법 | |
CN114490442B (zh) | 文件片段调整方法及电子设备 | |
US20140258347A1 (en) | Grouping files for optimized file operations | |
US20230139886A1 (en) | Device control method and device | |
CN116662270B (zh) | 文件解析方法及相关装置 | |
CN114489471B (zh) | 一种输入输出处理方法和电子设备 | |
US20180060053A1 (en) | Evolving streaming installation of software applications | |
CN111459462A (zh) | 分散式重锁降级 | |
US20240212635A1 (en) | Method for adjusting display screen brightness, electronic device, and storage medium | |
CN117520113A (zh) | 用户行为回放的方法及电子设备 | |
CN114328401A (zh) | 文件扫描方法及终端设备 | |
CN118394242A (zh) | 一种悬浮窗的管理方法及相关装置 | |
CN116662222A (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 |