CN115858046B - 一种预加载内存页的方法、电子设备及芯片*** - Google Patents
一种预加载内存页的方法、电子设备及芯片*** Download PDFInfo
- Publication number
- CN115858046B CN115858046B CN202310174653.0A CN202310174653A CN115858046B CN 115858046 B CN115858046 B CN 115858046B CN 202310174653 A CN202310174653 A CN 202310174653A CN 115858046 B CN115858046 B CN 115858046B
- Authority
- CN
- China
- Prior art keywords
- application
- pte
- page
- snapshot
- memory
- 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
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种预加载内存页的方法、电子设备及芯片***,涉及终端应用技术领域,该方法包括在应用热启动结束后,将应用热启动过程中访问的页对象为文件页(例如,active和referenced类型)和匿名页的PTE生成PTE快照,该PTE快照可以存储在磁盘或内存中;在应用下次热启动时,可以预先从磁盘或内存读取该应用的PTE快照,根据PTE快照在物理内存中加载该PTE快照对应的文件页数据和匿名页数据;并填充PTE;由于填充后的PTE中包括该应用的虚拟内存到物理内存的映射关系,因此,可以降低应用热启动过程中的缺页异常的情况,从而加快应用启动的速度。
Description
技术领域
本申请实施例涉及终端应用技术领域,尤其涉及一种预加载内存页的方法、电子设备及芯片***。
背景技术
随着电子设备的功能越来越强大,电子设备中安装的应用程序也越来越多,用户可以基于电子设备中安装的应用程序使用这些应用程序提供的功能。
应用热启动时,由于内存回收机制,当再次访问被换出或释放的内存页时,通常会发生缺页异常的现象。在发生缺页异常后,***会将启动过程中的应用的进程放入阻塞队列,直到缺页异常的问题解决。例如,在发生缺页异常后,为该应用分配物理内存,在分配的物理内存中加载相关的文件页数据和匿名页数据,并在用于存储虚拟内存到物理内存的映射关系的页表项(Page Table Entry,PTE)中填充该应用的虚拟内存到分配的物理内存的物理地址的映射关系,这就会导致应用热启动的时间较长,用户体验较差。
发明内容
本申请实施例提供一种预加载内存页的方法、电子设备及芯片***,可以加快应用热启动的速度,提高用户体验。
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请实施例提供一种预加载内存页的方法,包括:
内核接收到预读信息,预读信息包括第一应用的标识和热启动标识;
响应于预读信息,内核从第一存储空间读取与第一应用的标识对应的PTE快照,PTE快照基于第一应用历史热启动过程中访问的页对象为文件页和匿名页的PTE生成,第一存储空间位于物理内存或磁盘中;
内核将PTE快照在磁盘中对应的文件页数据和在swap分区中对应的匿名页数据加载到物理内存中;
内核在第一应用的PTE中写入文件页数据的虚拟内存到所述文件页数据的物理内存之间的映射关系,以及匿名页数据的虚拟内存到匿名页数据的物理内存的映射关系。
本申请中,将应用热启动过程中访问的页对象为文件页和匿名页的PTE生成PTE快照,该PTE快照存储在第一存储空间中;在应用后续热启动时,从第一存储空间读取同一应用的标识对应的PTE快照;然后将该PTE快照在磁盘中对应的文件页数据和在swap分区中的匿名页数据加载到物理内存,并在PTE中写入文件页数据的虚拟内存和物理内存之间的映射关系,以及匿名页数据的虚拟内存到物理内存之间的映射关系;由于已经提前预加载了文件页数据和匿名页数据,并且在PTE中写入文件页数据的虚拟内存到物理内存的映射关系,以及匿名页数据的虚拟内存到物理内存的映射关系,所以,降低了应用热启动过程中的缺页异常现象,加快应用热启动的速度。
作为本申请第一方面的另一实现方式,在内核接收到预读信息之前,该方法还包括:
内核接收到捕获信息,捕获信息包括第一应用的标识和热启动标识;
响应于捕获信息,内核根据第一应用的标识对应的页表中页对象为文件页和匿名页的PTE,生成第一应用的标识对应的PTE快照;
内核将第一应用的标识对应的PTE快照存储在第一存储空间中。
本申请中,可以将应用在历史热启动过程中对应的页表中页对象为文件页和匿名页的PTE生成该应用的PTE快照,以备后续热启动时根据该PTE快照预加载文件页数据和匿名页数据(文件页和匿名页均为内存页)。
作为本申请第一方面的另一实现方式,响应于捕获信息,内核根据第一应用的标识对应的页表中页对象为文件页和匿名页的PTE,生成第一应用的标识对应的PTE快照,包括:
响应于捕获信息,内核确定第一存储空间中不存在第一应用的标识对应的PTE快照;
内核根据第一应用的标识对应的页表中页对象为文件页和匿名页的PTE,生成第一应用的标识对应的PTE快照。
本申请中,无需在应用每一次热启动后根据本次热启动过程中写入的PTE生成PTE快照。在第一存储空间不存在该应用对应的PTE快照的情况下,需要根据该应用对应的页表中页对象为文件页和匿名页的PTE,生成该应用对应的PTE快照;在第一存储空间已经存在该应用对应的PTE快照的情况下,不需要根据该应用对应的页表中页对象为文件页和匿名页的PTE,生成该应用对应的PTE快照。
作为本申请第一方面的另一实现方式,内核根据第一应用的标识对应的页表中页对象为文件页和匿名页的PTE,生成第一应用的标识对应的PTE快照,包括:
内核将第一应用的标识对应的页表中状态位为预设字符,页对象为预设类型的PTE,生成第一应用的标识对应的PTE快照,预设字符用于表示PTE对应的虚拟内存已经映射到物理内存(例如,可以通过pte_present确定)、且被访问过(例如,可以通过查看pte_young确定),预设类型包括active、referenced和anon。
本申请中,可以根据PTE的数据结构中的状态位以及页对象(即page flag)确定生成PTE快照的PTE。匿名页的类型为anon,可以选择类型为active、referenced的文件页生成PTE快照。通过选择部分类型的文件页生成PTE快照可以平衡大量加载文件页导致的预读过程耗时和应用启动速度之间的平衡。
作为本申请第一方面的另一实现方式,内核接收到预读信息之前,该方法还包括:
监控模块监测到第一应用启动到预读节点,预读节点位于应用启动过程中的ActivityStart阶段之前;
监控模块向预读模块发送预读指令;
响应于预读指令,预读模块通过***调用向内核传输预读信息。
本申请中,通过内核空间的内核实现预读文件页和匿名页的过程;通过用户空间的监控模块检测预读的时间节点;用户空间和内核空间的信息交互通过***调用的方式实现;为了提高应用启动的速度,可以在大量发生缺页异常的ActivityStart阶段之前确定为预读的时间节点。
作为本申请第一方面的另一实现方式,内核接收到捕获信息之前,该方法还包括:
监控模块监测到第一应用启动到捕获节点,捕获节点位于应用启动过程中的DoFrame阶段结束时或之后的第一时间之内;
监控模块向预读模块发送捕获指令;
响应于捕获指令,预读模块通过***调用向内核传输捕获信息。
本申请中,通过内核空间的内核实现生成PTE快照的过程;通过用户空间的监控模块检测生成PTE快照的时间节点;用户空间和内核空间的信息交互通过***调用的方式实现;为了能够生成应用热启动过程中的缺页异常填充的部分类型的文件页以及匿名页,可以在应用启动过程中的DoFrame阶段结束时或之后的第一时间之内确定为捕获PTE信息的时间节点。
作为本申请第一方面的另一实现方式,内核接收到捕获信息之前,该方法还包括:
监控模块监测到第一应用启动到捕获节点,捕获节点位于应用启动过程中的ActivityStart阶段结束时或之后的第一时间之内;
监控模块向预读模块发送捕获指令;
响应于捕获指令,预读模块通过***调用向内核传输捕获信息。
本申请中,也可以根据实际情况在应用启动过程中发生大量缺页异常现象的ActivityStart阶段结束时或之后的第一时间之内,捕获PTE信息,这时捕获的PTE信息已经包含了应用热启动过程中需要的大部分文件页数据和匿名页数据。
作为本申请第一方面的另一实现方式,该方法还包括:
内核接收到删除信息,删除信息包括第一应用的标识;
响应于删除信息,内核删除第一存储空间中存储的第一应用的标识对应的PTE快照。
本申请中,为了节省存储空间,可以在应用被从电子设备上删除时,一并删除该应用的PTE快照。
作为本申请第一方面的另一实现方式,在内核接收到删除信息之前,该方法还包括:
监控模块接收到第一应用的卸载指令;
响应于卸载指令,监控模块通过***调用向内核传输删除信息。
作为本申请第一方面的另一实现方式,PTE包括虚拟内存到物理内存之间的映射关系,所述PTE快照包括所述PTE对应的文件页数据的文件名和所述文件页数据在所述磁盘中的存储地址,以及所述PTE对应的匿名页数据在swap分区中的存储地址。
第二方面,提供一种电子设备,包括处理器,处理器用于运行存储器中存储的计算机程序,实现本申请第一方面任一项的方法。
第三方面,提供一种芯片***,包括处理器,处理器与存储器耦合,处理器执行存储器中存储的计算机程序,以实现本申请第一方面任一项的方法。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被一个或多个处理器执行时实现本申请第一方面任一项的方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在设备上运行时,使得设备执行本申请第一方面任一项的方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1为本申请实施例提供的预加载内存页的方法所应用的电子设备的一种硬件结构示意图;
图2为本申请实施例提供的一种虚拟地址到物理地址的数据流向示意图;
图3为本申请实施例提供的一种应用冷启动时缺页异常现象的示意图;
图4为本申请实施例提供的一种应用热启动时缺页异常现象的示意图;
图5为本申请实施例提供的一种描述进程的虚拟空间的数据结构关系图;
图6为本申请实施例提供的一种PTE的数据结构示意图;
图7为本申请实施例提供的一种应用冷启动时捕获PTE快照和预加载PTE快照的时间节点示意图;
图8为本申请实施例提供的一种应用热启动时捕获PTE快照和预加载PTE快照的时间节点示意图;
图9为本申请实施例提供的一种预加载内存页的方法的技术架构示意图;
图10为本申请实施例提供的应用冷启动时捕获PTE快照时的时序图;
图11为本申请实施例提供的应用冷启动时预加载PTE快照时的时序图;
图12为本申请实施例提供的应用冷启动时内核执行的流程示意图;
图13为本申请实施例提供的应用被卸载时内核执行的流程示意图;
图14为本申请实施例提供的应用热启动时内核执行的流程示意图;
图15为本申请实施例提供的应用启动方法和原生流程的时延、IOwait对比示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请实施例中,“一个或多个”是指一个、两个或两个以上;“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”、“第四”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例提供的一种预加载内存页的方法,可以适用于电子设备中。该电子设备可以为平板电脑、手机、可穿戴设备、笔记本电脑、超级移动个人计算机(ultra-mobilepersonal computer,UMPC)、上网本、个人数字助理(personaldigital assistant,PDA)等电子设备。本申请实施例对电子设备的具体类型不作限定。
图1示出了一种电子设备的结构示意图。电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serialbus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,摄像头193,显示屏194,以及用户标识模块 (subscriberidentification module,SIM)卡接口195等。其中,传感器模块180可以包括压力传感器180A,触摸传感器180K,环境光传感器180L等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signalprocessor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),协处理器(sensor coprocessor,SCP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。例如,处理器110用于执行本申请实施例中的应用启动方法。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了***的效率。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与***设备之间传输数据。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)。
此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。
在其他一些实施例中,电源管理模块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转为电磁波辐射出去。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星***(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near fieldcommunication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备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,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。例如,麦克风170C可以用于采集本申请实施例涉及到的语音信息。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobileterminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellulartelecommunications industry association of the USA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organiclight-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flexlight-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
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分离。
本申请实施例并未特别限定一种预加载内存页的方法的执行主体的具体结构,只要可以通过运行记录有本申请实施例的一种预加载内存页的方法的代码,以根据本申请实施例提供的一种预加载内存页的方法进行通信即可。例如,本申请实施例提供的一种预加载内存页的方法的执行主体可以是电子设备中能够调用程序并执行程序的功能模块,或者为应用于电子设备中的通信装置,例如,芯片。
在页式内存管理中,操作***可以为进程分配虚拟内存,例如,32位操作***中,为每个进程分配的虚拟内存的最大空间为4GB。虚拟内存可以被划分为固定大小的页,每个页为一个Page,例如,可以将虚拟内存划分为4KB(也可以为8KB、16KB等)大小的页。同时,内核可以将电子设备的物理内存也划分为同样大小的页,物理内存中的页可以记为物理页。这样,无论是虚拟内存还是物理内存,页均为最小分配单位。
用户程序对应的数据(例如,代码段、数据段和栈段等)存储在物理内存中,用户程序并不能直接访问或查看物理内存,但是,用户程序可以直接访问或查看虚拟内存,所以,需要在虚拟内存和物理内存之间建立映射关系,即虚拟内存到物理内存的映射关系。
如前所述,虚拟内存和物理内存中最小的分配单位为页,每个虚拟内存中的页具有虚拟地址,每个物理内存中的页具有物理地址;所以,可以通过记录虚拟内存的虚拟地址到物理内存的物理地址的映射关系表示虚拟内存到物理内存的映射关系。
参照图2,为本申请实施例提供的一种从虚拟地址到物理地址的流向图。在中央处理器(central processing unit,CPU)需要访问数据、获取指令时,向内存管理单元(memory management unit,MMU)发送数据或指令对应的虚拟地址,内存管理单元负责根据上述映射关系查找该虚拟地址对应的物理地址。内存管理单元将查找到的物理地址发送给物理内存,物理内存按照该物理地址进行相应的访问后读出或写入相关数据或指令。
其中,内存管理单元为每个用户程序保存一个页表,该页表中存放的就是虚拟页面(该虚拟页面对应有虚拟地址)到物理页面(该物理页面对应有物理地址)的映射关系,当为一个虚拟页面分配一个物理页面后,就在页表里增加一个记录保存该虚拟页面和物理页面之间的映射关系。后续,可以基于该页表中保存的虚拟页面和物理页面的映射关系,将接收到的虚拟地址转换为物理地址。
当然,内存管理单元接收到一个虚拟地址后,首先需要判断该虚拟地址是否有效,是否在物理内存中,是否受到保护。
虚拟地址有效、且在物理内存中存在对应的物理地址,又没有被保护(即可访问),则可以将该虚拟地址作为索引,在页表中找到该虚拟地址对应的物理地址。
然而,还可能存在如下触发缺页异常的情况:虚拟地址有效,但是在物理内存中不存在该虚拟地址对应的物理地址。
这种情况可能是由于惰性分配机制,即在启动一个用户程序时,会为该用户程序分配虚拟内存,然而,此时并不会分配物理内存,自然就不存在虚拟内存和物理内存之间的映射关系,在用户程序运行时需要访问某个数据的情况下,才会根据该数据对应的虚拟地址在物理内存中寻找该虚拟地址对应的物理地址,然而,由于还未分配物理内存,所以,在物理内存中找不到该虚拟地址对应的物理地址,就会触发缺页异常。应用在冷启动的过程中较多发生这种缺页异常。
这种情况还可能是由于访问数据被从物理内存中换出,例如,用户程序切换到后台运行后,由于物理内存资源有限,操作***会启动内存页面置换将长时间未使用的物理页面(例如,匿名页)放到swap分区以将腾出来的物理内存资源给到其他用户程序使用,若该用户程序访问的数据位于swap分区,就会出现在物理内存中将找不到该虚拟地址对应的物理地址的情况,就会触发缺页异常。操作***也可能将长时间未使用的物理页面(例如,文件页)回收以将腾出来的物理内存资源给到其他用户程序使用,若该用户程序访问的数据已经被从物理内存中回收到磁盘中,也会出现在物理内存中将找不到该虚拟地址对应的物理地址的情况,就会触发缺页异常。应用热启动的过程中较多发生这种缺页异常。
无论哪种缺页异常,可能均需要从磁盘或者swap分区读数据(例如,从磁盘读取文件页数据,从swap分区读取匿名页数据)到物理内存,建立读取的内存页数据(包括文件页数据和匿名页数据)的虚拟地址和读取的数据当前所在的物理地址之间的映射关系,填充PTE,用户程序才能继续运行,这种情况对用户程序的运行阻塞较为严重。
当然,在实际应用中,还可能存在其他异常情况,本申请实施例重点不在于缺页异常的原因,所以不再一一列举。
在发生缺页异常后,操作***会将用户程序放入阻塞队列中,直到缺页异常问题解决,才会将该用户程序放入就绪队列,该用户程序才会继续运行。所以,在发生缺页异常后,用户程序的运行会受到阻塞。
在应用程序启动过程中,可能会较多的发生上述缺页异常的情况,导致应用启动的过程较慢,用户体验较差。
应用启动的方式可以包括冷启动和热启动,在应用启动时,若***中不存在该应用的进程,***需要为该应用创建进程,表示该应用本次启动为冷启动。
作为应用冷启动的示例,电子设备开机后,用户在***桌面上点击应用的图标以启动应用,应用本次启动过程为冷启动。
作为应用冷启动的另一示例,用户启动应用后,用户将该应用切换到后台运行,由于***回收资源,将该应用的进程杀掉。在用户再次启动该应用时,该应用的本次启动过程为冷启动。
参照图3,为本申请实施例提供的应用冷启动过程中的缺页异常的示意图。该图示中,横轴表示应用冷启动过程中的各个阶段,其中,重点列举了几个阶段:ApplicationStart、BindApplication、ActivityStart、Choreographer和DoFrame。这些阶段详细参照后续实施例的描述。黑色竖直线条表示发生了缺页异常,黑色竖直线条越粗表示短时间内发生的缺页异常的次数越多。通过图3可以理解,在应用冷启动过程中,在BindApplication阶段,发生了较多的缺页异常,在ActivityStart阶段,也发生了少量的缺页异常现象,这些缺页异常的现象会导致应用冷启动过程较慢。
在应用启动时,若***中已经存在该应用的进程,***不需要为该应用创建进程,而是使用***中本来存在的进程开始创建Activity以及后续操作,表示该应用本次启动为热启动。
作为应用热启动的一个示例,用户启动应用后,用户将该应用切换到后台运行,用户可以通过多种方式将该应用切换到前台运行。例如,该应用在后台运行时,点击***桌面上该应用的图标;该应用在后台运行时,从负一屏进入该应用;该应用在后台运行时,通过小程序的方式启动该应用等。该应用切换到前台运行之前,该应用的进程一直存在于***中,未被***杀掉。这种在该应用的进程未被杀掉的情况下,该应用从后台切换到前台运行的启动过程为热启动。
参照图4,为本申请实施例提供的应用热启动过程中的缺页异常的示意图。该图示中,横轴表示应用热启动过程,其中,重点列举了几个阶段:ActivityStart、ActivityResume、Choreographer和DoFrame。这些阶段详细参照后续实施例的描述。黑色竖直线条表示发生了缺页异常,黑色竖直线条越粗表示短时间内发生的缺页异常的次数越多。通过图4可以理解,在应用热启动过程中,在ActivityStart阶段、ActivityResume阶段、Choreographer阶段和DoFrame阶段,均发生了较多的缺页异常现象,这些缺页异常的现象会导致应用热启动过程较慢。
通过图3和图4可以理解,在应用程序启动过程中,会频繁出现缺页异常的现象,这将导致应用启动时的速度较慢,用户体验较差。
图3和图4中的缺页异常的次数仅用于各个阶段之间的比较,并不表示各个阶段发生缺页异常的绝对次数。
为解决上述问题,本申请实施例提供了一种预加载内存页的方法,在应用启动结束后,可以通过页表项(Page Table Entry,PTE)快照记录应用启动过程中缺页的信息以生成PTE快照,该PTE快照存储在磁盘中(热启动时也可以存储在物理内存中);在应用后续启动时,可以基于存储在磁盘(或物理内存)中的PTE快照,在物理内存中预加载记录的缺页的信息对应的内存页数据。
对于冷启动而言,生成的PTE快照包括本次启动时写入的PTE对应的文件页数据的文件名、在磁盘中的存储地址等,所以,预加载的为PTE快照对应的文件页数据;上述预加载的过程可能在进程创建完成之前,在物理内存预加载文件页数据后,后续在启动过程中,无需从磁盘加载文件页数据到物理内存,可以节省从磁盘加载文件页数据到物理内存的时间,提高应用冷启动的速度。
另外,冷启动过程中,在进程启动完成后,***会为该进程分配虚拟内存,根据加载的文件页数据在物理内存中的物理地址,建立虚拟地址和该物理地址之间的映射关系,并填充PTE(例如,填充虚拟地址和物理地址之间的映射关系)。在填充PTE后,可以降低缺页异常的情况发生,也提高了应用冷启动的速度。
对于热启动而言,生成的PTE快照包括本次启动时访问的PTE对应的文件页数据的文件名、在磁盘中的存储地址,以及本次启动时访问的PTE对应的匿名页数据在swap分区的存储地址等,所以,在物理内存加载的数据包括文件页数据(例如,被回收到磁盘的数据),还包括匿名页数据(例如,被交换到swap分区的数据);由于应用的进程本身存在于***中,该进程的虚拟空间早已分配,所以,在热启动过程中,根据PTE快照在物理内存中加载内存页数据后,可以直接根据加载的内存页数据在物理内存中的物理地址,建立虚拟地址和该物理地址之间的映射关系,并填充PTE(例如,填充虚拟地址和物理地址之间的映射关系)。从而降低缺页异常的情况发生,提高了应用热启动的速度。
为了便于后续描述,无论冷启动还是热启动统一采用内存页数据表示根据PTE快照在物理内存预加载的数据。
为了更清楚的理解本申请实施例提供的预加载内存页的方法,首先描述PTE快照的来源。
当应用程序冷启动时,***会为该应用程序创建一个进程,还会为该进程分配虚拟内存(例如,4GB大小)。当应用程序热启动时,***中该应用程序的进程未被杀死,该进程的虚拟内存也存在。
一个进程对应的虚拟空间由两个数据结构描写,一个是mm_struct,另一个是vm_area_struct。
参见图5,每个进程只有一个mm_struct结构,mm_struct结构描写了一个进程的全部虚拟空间,mm_struct结构包括进程的页目录指针(Page Global Directory,pgd)和指向vm_area_struct结构的多个指针mmap。
***在为进程分配虚拟空间时,按照区段进行分配,即可以为进程分配多段虚拟区间(virtual Memory Area,VMA),每个虚拟区间对应一个vm_area_struct。当为进程分配了n段虚拟区间的情况下,就会存在n个vm_area_struct, mm_struct结构中就存在n个分别指向不同vm_area_struct结构的指针mmap。
以一段虚拟区间对应的vm_area_struct为例,vm_start和vm_end分别表示该虚拟区间所指向区域的起始地址和结束地址。
vm_flags描述的是该段虚拟区间的属性,flags可以是VM_READ(即可读)、VM_WRITE(即可写)、VM_EXEC(即可执行)、VM_SHARED(即多个进程共享)。
vm_area_struct中的其他参数不再一一举例。
每段虚拟区间由许多个虚拟页面组成,每段虚拟区间中的虚拟页面通过页表(Page Table,PT)中的页表项(PTE)指向了物理页。
页目录指针pgd指向该进程的页表,页表中记录了虚拟页面和物理页面之间的映射关系,页表中包含多个页表项(Page Table Entry,PTE),每一个页表项指向一个页框,页框就是真正的物理内存中的物理页,该物理页中可以存储数据。
以4GB大小的虚拟内存为例,分割为大小为4KB的虚拟页面,则该虚拟内存中有1024*1024个虚拟页面,相应的,该进程的页表中包含1024*1024个页表项PTE。
当进程需要访问一个虚拟地址时,可以从mm_struct结构找到该虚拟地址所在的vm_area_struct,若vm_area_struct中记录的信息为该虚拟地址还未分配物理地址,就会触发缺页异常,为该虚拟地址分配物理地址,修改vm_area_struct中该虚拟地址的相关信息(例如,将还未分配物理内存修改为已分配物理内存),将该虚拟地址和物理地址之间的映射关系填充到该虚拟地址对应的PTE中。所以,vm_area_struct和PTE中可以记录应用启动过程中的所有缺页异常的相关信息。
本申请实施例需要遍历PTE查找到本次启动过程填充(或访问)的PTE,以生成PTE快照。然而,一个进程的页表中包含了1024*1024个页表项PTE,遍历过程是非常耗时的。
如前所述,访问虚拟地址时可以从vm_area_struct找到对应的PTE,同理,遍历PTE时,也可以从vm_area_struct快速确定是否遍历各个虚拟地址对应的PTE。作为一个示例,应用的进程对应的虚拟空间包含n(例如,3个,4个等)个虚拟区间,每个虚拟区间对应一个vm_area_struct,若第1个虚拟区间中均未映射到物理内存,则无需遍历该虚拟区间对应的vm_area_struct,直接跳到第2个虚拟区间对应的vm_area_struct,可以提高遍历PTE的速度;在跳到第2个虚拟区间对应的vm_area_struct后,根据第2个虚拟区间对应的vm_area_struct中每个虚拟地址的相关信息(例如,是否有效、是否有物理地址、是否可访问等),从页表中查找有效、有物理地址、可访问的虚拟地址对应的PTE,通过这种方式可以快速遍历PTE。
通过如前所述的遍历方式可以快速遍历PTE,将本次启动过程中填充(对于热启动而言,为访问)的内存页搜寻到,然后根据这些搜寻到的PTE生成PTE快照。该应用在后续启动时,就可以基于存储的PTE快照在物理内存中预加载内存页数据,节省了应用启动过程中在物理内存中加载内存页数据的过程;由于在物理内存加载内存页数据后,还可以在进程启动完成分配虚拟空间或本身存在进程已分配虚拟空间的情况下填充PTE,也可以降低缺页异常的现象发生,从而提高应用的启动速度。
本申请实施例,以一个五级映射的页表作为示例描述页表中的PTE。
参照图5,该页表包括页目录指针(Page GlobalDirectory,pgd)、页四级目录指针(pagefour directory,p4d)、页上级目录指针(PageUpper Directory,pud)、页中间目录指针(PageMiddle Directory,pmd)、页表项(Page TableEntry,PTE)。
每个进程对应的pgd是不同的,当创建一个新的进程时,都要为新进程创建一个新的页目录指针pgd。pgd中包含若干p4d的地址,p4d中包含若干pud的地址,pud中包含若干pmd的地址,pmd中又包含若干页表项PTE的地址。每一个页表项PTE指向一个页框,页框就是真正的物理内存中的物理页。
参照图6,为页表项PTE的结构示例。
PTE 中的第12位到第31位为地址位,存储着该虚拟页面对应的 4K 对齐的起始物理地址。通常,PTE的地址均为页对齐的,由于只有高20位是有效的地址位,那么作为指向物理地址的页表项只需要高20位表示物理地址,所以,可以将其余12位挪作他用,用来作为状态位使用。
作为示例,P(也可以记为present)位表示该页表项对应的虚拟页面是否已经映射到物理内存;如果该位为0,表示尚未对该虚拟页面建立映射,该虚拟页面对应的数据被从物理内存换出,或者该虚拟页面不再被使用,当该位为0时,表示该页表项对应的虚拟页面已经映射到物理内存中。
R/W位表示该页表项对应的虚拟页面指向的物理页面的读写属性,例如,0为只读,1为可读可写。PTE中的R/W位是由软件设置的,设置依据就是这个虚拟页面所属的虚拟区间,即一段虚拟区间设置的VM_READ/VM_WRITE属性会复制到这段虚拟区间所含虚拟页面的PTE中。
U/S 表示该页表项对应的虚拟页面指向的物理页面的访问权限,例如,0表示只能被内核访问。
其他位的具体含义不再一一解释。
另外,每个PTE对应一个pageflag(即页对象),该pageflag中记录了该PTE表示的物理页面属于文件页还是匿名页(anon),以及文件页的具体类型,例如,active,referenced。
对于一个应用程序而言,应用启动过程中可能仅使用了部分PTE页,例如,4GB的虚拟内存中可能存在1024*1024个PTE页,应用启动过程中可能仅使用了部分PTE页,因此,还需要筛选出有效的PTE页(本次启动过程中使用的PTE页)。在实际应用中,可以通过该状态位(例如,P位表示已经映射到物理内存)从PTE中识别出有效的PTE页;然后根据有效的PTE页生成快照信息,就可以得到该应用本次启动时的PTE快照。该PTE快照可以存储在磁盘(热启动可以存储在物理内存)中,待该应用下次启动时,预先从磁盘(或物理内存)中将该PTE快照中的信息对应的内存页数据加载到物理内存中,节省了启动过程中从磁盘或swap分区加载内存页数据到物理内存的过程;并且,在可以填充PTE的情况下,预先填充PTE,从而降低缺页异常的发生,提高了应用启动的速度。
需要说明,应用冷启动时,在应用的版本一致的情况下,读取的文件页也是固定的,所以,可以在应用冷启动结束后,将应用本次冷启动过程中的缺页信息中的文件页(例如,可以基于页对象确定是否为文件页)对应的有效PTE(例如,基于P位确定已经映射到物理内存)生成冷启动对应的PTE快照,并以文件的形式存储在磁盘中。因此,对于冷启动而言,可以根据将页对象为文件页的PTE生成PTE快照,在后续冷启动时预读的为文件页,所以,对于冷启动而言,本申请实施例提供的一种预加载内存页的方法也可以理解为一种预加载文件页的方法。
应用在热启动时,由于内存回收机制,可能还需要将缺页信息中的匿名页对应的PTE生成PTE快照,另外,应用热启动的过程本身时间较短,若预加载所有的文件页,可能还会影响应用的热启动的速度,所以,可以根据实际情况选择部分类型的文件页对应的PTE生成PTE快照。例如,可以选择active,referenced类型。
需要说明,在实际应用中,可以根据实际情况选择不同的状态位确定生成PTE快照的物理页,也可以选择不同类型的文件页对应的PTE生成PTE快照。
基于上述描述可以理解,可以在启动结束后,将应用本次热启动过程中的缺页信息中的部分类型的文件页(例如,active,referenced)和匿名页生成热启动对应的PTE快照,并以文件的形式存储在磁盘中,或者也可以缓存在内存中。
在应用后续冷启动时,从磁盘中读取冷启动对应的PTE快照;在应用后续热启动时,从磁盘中或者缓存中读取热启动对应的PTE快照。
下面将基于上述原理描述本申请实施例提供的预加载内存页的方法的具体实现方式。
以电子设备开机后,用户首次点击***桌面上的应用图标的启动方式为例。该启动方式为冷启动。冷启动的过程主要包括:
***开始加载并启动应用,为应用创建进程,该过程可以记为ApplicationStart。
***将创建的进程和该应用进行绑定,该过程可以记为BindApplication。
应用的进程创建并启动第一个Activity,该过程记为ActivityStart。
创建Choreographer对象以监听Vsync,从而能够根据屏幕刷新频率执行绘制任务,该过程记为Choreographer;
根据屏幕刷新频率处理绘制任务,例如,第一个Activity对应的窗口的测量、布局和绘制流程,该过程中的绘制阶段可以记为DoFrame。
通过图3可以理解,应用冷启动时,缺页异常主要发生在BindApplication阶段,少量缺页异常发生在ActivityStart阶段,在ActivityStart阶段结束之后,缺页异常的现象较少发生。
参照图7中的(a),可以在ActivityStart阶段结束之后,遍历页表中PTE的状态位以及PTE指向的pageflag,得到本次应用冷启动时使用的文件页,根据这些使用的文件页生成PTE快照。
作为本申请另一实施例,参照图7中的(b),在ActiviyStart阶段结束之后,并不是完全不会发生缺页异常,而是发生的几率较小,因此,为了降低应用后续冷启动时缺页异常的几率,可以在DoFrame阶段结束(DoFrame阶段结束后会显示第一个Activity的界面)时或之后的一定时长之内,遍历页表中PTE的状态位以及PTE指向的pageflag,得到本次应用冷启动时使用的文件页,根据这些使用的文件页中存储的文件页数据的文件名、在磁盘的存储地址等生成PTE快照。
该PTE快照可以在后续冷启动使用的原因包括:在本次冷启动时,会从磁盘读取文件页数据到物理内存,也会在PTE中填充该文件页数据的物理地址;为了下次冷启动时,能够预先从磁盘读取文件页数据到物理内存,可以将本次填充的PTE中的物理地址对应的物理页中的文件页数据的文件名、该文件页数据在磁盘中的存储地址生成PTE快照。这样,在后续冷启动时,根据PTE快照就可以得到应用冷启动过程中使用到的文件页数据在磁盘中的存储地址,就可以从磁盘读取这部分文件页数据到物理内存中,在应用的进程启动完成和分配虚拟空间后,就可以将这部分文件页数据在物理内存中的物理地址和虚拟地址之间建立映射关系,并继续填充PTE,这样,就会降低缺页异常的情况发生。
作为本申请另一实施例,在实际应用中,还可以在ActiviyStart阶段结束之后至DoFrame阶段结束时刻中间的任一时间点,遍历页表中PTE的状态位以及PTE指向的pageflag,得到本次应用冷启动时使用的文件页,根据这些使用的文件页生成PTE快照。
无论在上述列举的任一时间点生成的PTE快照均可以存储在电子设备的磁盘中,以备该应用在后续冷启动时使用。当然,将生成PTE快照存储在电子设备的磁盘的时机可以更晚,在下一次冷启动时能够存储成功即可。作为示例,生成后立即存储,或者在该应用切换到后台运行或结束运行时再存储均可。
参照图7中的(c),应用在后续冷启动过程中,由于缺页异常主要发生在BindApplication阶段以及之后,所以,需要在BindApplication阶段之前,从电子设备的磁盘读取该应用历史冷启动时存储的PTE快照,然后根据PTE快照中记录的信息在物理内存中加载该应用的进程所需要的文件页数据,节省了启动过程中加载文件页数据的过程。后续,在BindApplication之后(在BindApplication之后,进程已经完全启动且分配虚拟空间),可以填充PTE信息,降低了后续的启动过程中的缺页异常的几率,提高了应用启动的速度。
作为本申请另一实施例,在电子设备接收到***桌面上该应用的图标的点击操作之后,到BindApplication阶段开始之前,均可以从电子设备的磁盘读取该应用历史冷启动时存储的PTE快照,然后根据PTE快照中记录的信息在物理内存中加载该应用的进程所需要的文件页数据,节省了启动过程中加载文件页数据的过程。后续,在BindApplication之后,可以填充PTE信息,降低了后续缺页异常的几率,提高了应用启动的速度。
应用的热启动表示应用退回在后台后,应用的进程未被销毁,所以,在热启动中,从ActivityStart开始,应用的热启动的过程主要包括:
应用的进程创建并启动上一次退回到后台前的Activity,该过程记为ActivityStart。
上一次退回到后台前的Activity进入resume状态,该过程记为ActivityResume。
创建Choreographer对象以监听Vsync,从而能够根据屏幕刷新频率执行绘制任务,该过程记为Choreographer。
根据屏幕刷新频率处理绘制任务,例如,第一个Activity对应的窗口的测量、布局和绘制流程,该过程中的绘制阶段可以记为DoFrame。
通过图4可以理解,应用热启动时,缺页异常主要发生在ActivityStart阶段、ActivityResume阶段和Choreographer阶段。
参照图8中的(a),可以在DoFrame阶段结束时或之后,遍历页表中PTE,根据状态位以及PTE指向的pageflag,得到本次应用热启动时使用的部分文件页(例如,根据PTE对应的pageflag确定选择Active类型和referenced类型的文件页)和匿名页(例如,根据PTE对应的pageflag确定选择anon类型),根据这些使用的文件页和匿名页生成PTE快照。
在实际应用中,热启动的时长本身较短,若仍然获取热启动过程中的全部缺页异常的信息,则在后续热启动时从磁盘或内存中读取PTE快照并预加载的过程将变得较长,这无疑延长了热启动的时长,所以,可以在预加载的耗时和缺页异常导致的耗时中进行平衡,例如,选取热启动过程中比较重要的缺页异常的信息生成PTE快照,后续热启动时预加载的时长将变的较短,使得热启动的总体时长降低。
热启动过程中比较重要的缺页异常的信息大部分处于ActivityStart阶段,参照图8中的(b),可以在ActivityStart阶段结束时或之后较短的时间内,遍历页表中PTE的状态位以及PTE指向的pageflag,得到本次应用热启动时使用的部分文件页(例如,根据PTE对应的pageflag确定选择active类型和referenced类型的文件页)和匿名页(例如,根据PTE对应的pageflag确定选择anon类型的),根据这些使用的文件页和匿名页生成PTE快照。
作为本申请另一实施例,在ActivityStart阶段之后至DoFrame阶段结束时刻中间的任一时间点,均可以遍历页表中PTE的状态位以及PTE指向的pageflag,得到本次应用热启动时使用的部分文件页(例如,根据PTE对应的pageflag确定选择active类型和referenced类型的文件页)和匿名页(例如,根据PTE对应的pageflag确定选择anon类型的),根据这些使用的文件页和匿名页的信息(例如,文件页中存储的文件的文件名、在磁盘的存储地址等信息,匿名页中存储的数据在swap分区中的存储地址)生成PTE快照。
无论在上述列举的任一时间点生成的PTE快照均可以存储在电子设备的内存或磁盘中,以备该应用在后续热启动时使用。
参照图8中的(c),应用在后续热启动过程中,由于缺页异常在ActivityStart阶段就已经大量发生,所以,需要在ActivityStart阶段之前,从电子设备的内存或磁盘读取该应用历史热启动时存储的PTE快照,然后根据PTE快照中记录的信息加载该应用的进程所需要的文件页数据和匿名页数据,由于热启动时,进程本身存在于***中,该进程的虚拟空间也已经分配好,所以,可以预先填充PTE信息,降低了缺页异常的几率,提高了应用启动的速度。
作为本申请另一实施例,在电子设备检测到应用热启动之后,就可以从电子设备的内存或磁盘读取该应用历史热启动时存储的PTE快照,然后根据PTE快照中记录的信息加载该应用的进程所需要的文件页数据和匿名页数据,从而可以预先填充PTE信息,降低了缺页异常的几率,提高了应用启动的速度。
为了更清楚的理解本申请实施例提供的预加载内存页的方法,下面将详细描述获取PTE快照并存储的过程,以及预加载PTE快照的过程。
Linux将虚拟地址空间划分为两部分:用户空间和内核空间。用户空间不能直接访问内核空间,当用户进程必须访问内核或者使用内核函数时,就需要采用***调用。
内核空间提供了***调用的函数入口;为了使得用户空间能够使用这些***调用的入口,可以在用户空间封装这些***调用,得到用户空间的进程可以直接使用的封装接口。
当用户空间的进程需要***调用访问硬件设备或操作***上的某些资源时,用户空间的进程通过封装接口使用***调用,***调用在内核中通过内核函数实现硬件设备或***资源的访问。即***调用可以作为用户空间和内核空间的信息交互者。
参照图9所示的***架构图,在应用层存在多个应用,例如,应用A和应用B。
在应用框架层存在监控模块、预读模块和捕获模块,其中,预读模块和捕获模块可以作为一个模块,也可以作为两个独立的模块存在。
该监控模块可以为单独设置的一个用于监控应用启动过程的模块,也可以为***中本身可以监控应用启动过程的一些服务等。监控模块在监测到应用启动到某个时间节点(例如,需要预读的时间节点)后,可以向预读模块发送预读指令。监控模块在监测到应用启动到某个时间节点(例如,DoFrame阶段之后)后,可以向捕获模块发送捕获指令。
预读模块接收到预读指令(或者捕获模块接收到捕获指令)后,可以进行***调用,从而向被调用的内核函数传输当前正在启动的应用的唯一标识和启动方式。
内核层存在内核函数,内核函数用于实现不同的功能,例如,本申请实施例提供的预读功能,以及本申请实施例提供的遍历PTE生成PTE快照的功能。
硬件层存在磁盘和物理内存。其中,磁盘用于存储冷启动时生成的PTE快照和应用启动过程中需要的文件页数据;在后续启动时,内核首先从磁盘读取PTE快照,然后将PTE快照记录的信息对应的文件页数据从磁盘中预加载到该物理内存中。热启动时生成的PTE快照可以根据实际需要存储在磁盘或物理内存中。
为了更清楚理解各个模块之间的交互,参照图10所示的应用冷启动时生成并存储PTE快照的过程的时序图。监控模块和捕获模块位于用户空间,内核位于内核空间。
S101,监控模块监测到应用启动时运行到捕获节点。
本申请实施例中,若应用本次启动过程为冷启动,则捕获节点为预先设置的在图7中的(a)至图7中的(b)所示的节点中间的任一节点。
S102,监控模块在监测到应用启动时运行到捕获节点之后,向捕获模块发送捕获指令。
S103,捕获模块进行***调用,向被调用的内核函数传输当前正在启动的应用的唯一标识和启动方式标识。
本申请实施例中,每个应用均有唯一标识,用于区分不同的应用,以存储本应用对应的PTE快照时关联本应用的唯一标识从而和其他应用的PTE快照区分;启动方式用于确定生成的为热启动时的PTE快照还是冷启动时的PTE快照。
本申请实施例中,启动方式标识表示本次启动为冷启动。
S104,内核遍历PTE,得到本次启动过程中的有效的文件页的信息。
若启动方式标识表示本次启动为冷启动,则得到全部有效的文件页(例如,有效的文件页为:PTE状态位表示已经映射到物理地址,pageflag为文件页)的文件名、在磁盘空间的存储地址。
S105,内核根据遍历到的有效的文件页的信息,生成PTE快照。当然,PTE快照中还可以包含文件页数据的其他信息,本申请实施例对此不做限制。
S106,内核将该应用标识对应的冷启动的PTE快照存储在磁盘中。
通过这种方式就可以得到应用冷启动过程中的全部有效的文件页的信息,以备本应用后续冷启动时使用。
参照图11所示的应用冷启动时预读PTE快照的过程的时序图。监控模块和预读模块位于用户空间,内核位于内核空间。
S111,监控模块监测到应用启动时进行到预读节点。
本申请实施例中,若应用本次启动过程为冷启动,则预读节点为图7中的(c)所示的BindApplication开始之前的任一节点。
S112,监控模块在监测到应用启动时进行到预读节点之后,向预读模块发送预读指令。
S113,预读模块进行***调用,向被调用的内核函数传输当前正在启动的应用的唯一标识和启动方式。
本申请实施例中,每个应用均有唯一标识,用于区分不同的应用,以获取本应用对应的PTE快照;启动方式标识用于确定获取历史热启动时的PTE快照还是历史冷启动时的PTE快照。
本申请实施例中的启动方式标识表示本次启动为冷启动。
S114,内核被***调用后,可以基于接收到的应用标识从磁盘读取该应用标识对应的冷启动时的PTE快照。
S115,内核读取到PTE快照后,在物理内存加载从磁盘读取到的PTE快照对应的文件页数据。
在后续,应用的进程启动完成成功申请虚拟空间后,内核可以根据在物理内存加载的文件页数据当前所在的物理地址,在该应用标识对应的进程的页表中填充PTE信息(例如,填充虚拟地址和物理地址之间的映射关系)。
通过这种预加载的方式就可以预先在物理内存中加载应用冷启动过程中所需的文件页信息,节省启动过程中加载文件页数据的过程,并且,在该应用的进程启动完成申请虚拟内存后还可以填充PTE信息,降低了缺页异常的情况发生,提高了应用冷启动的速度。
需要说明,在具体实现时,还存在如下逻辑:若磁盘已经存储了同一应用历史冷启动时的PTE快照,则后续冷启动时无需再次存储同一应用冷启动时的PTE快照。相应的,在应用冷启动时,只有磁盘存储了该应用历史冷启动时的PTE快照,才会有预读的流程。
参照图12,为本申请实施例提供的应用冷启动时的逻辑流程图。
在冷启动开始后的某个时刻,内核会被动的接收到预读信息(该信息用于指示进行预读),该预读信息携带了应用标识和启动方式标识,内核会判断磁盘是否存在该应用标识和启动方式标识对应的PTE快照;若磁盘存在该应用标识和启动方式标识对应的PTE快照,则从磁盘读取PTE快照,在物理内存中加载PTE快照对应的文件页数据;当然,若磁盘不存在该应用标识和启动方式标识对应的PTE快照,则该流程结束。
在冷启动开始之后的某个时刻,内核会被动的接收到捕获信息(该信息用于指示进行捕获PTE快照),通常,捕获信息的接收时机晚于预读信息;捕获信息携带了应用标识和启动方式标识,内核会判断磁盘是否存在该应用标识和该启动方式对应的PTE快照;若磁盘不存在该应用标识和启动方式标识对应的PTE快照,则遍历PTE,根据有效的文件页生成PTE快照,将PTE快照和接收到的应用标识和启动方式标识关联存储在磁盘中;当然,若磁盘存在该应用标识和启动方式标识对应的PTE快照,则该流程结束。
在实际应用中,若应用被卸载时,需要从磁盘删除该应用的PTE快照。
参照图13,为本申请实施例提供的应用被卸载时的逻辑流程图。
内核接收到删除信息(该信息用于指示删除PTE快照),该删除信息携带应用标识。内核确定磁盘中是否存在该应用标识对应的PTE快照;若磁盘存在该应用标识对应的PTE快照,则从磁盘删除该应用表示对应的PTE快照;若磁盘不存在该应用标识对应的PTE快照,则结束流程。
上述实施例以应用冷启动为例描述各个模块之间的交互,下面以应用热启动为例描述各个模块之间的交互。应用热启动时和冷启动时的区别主要包括:
(1)预读的时机不同,然而,对于内核而言,都是被动接收表示预读的信息。
(2)捕获PTE快照的时机可以不同。同样,对于内核而言,都是被动接收表示捕获快照的信息。
(3)生成PTE快照的缺页信息不同,相应的,加载的内存页数据不同。冷启动时,内核可以根据该应用所有有效的文件页生成PTE快照,相应的,加载的为文件页数据;热启动时,内核可以根据该应用部分有效的文件页和有效的匿名页生成PTE快照,热启动时还可以参照PTE状态位中的pte_young将最近访问过的内存页生成PTE快照,相应的,加载的为文件页数据和匿名页数据。
(4)在物理内存中加载PTE快照对应的内存页数据后的操作不同,冷启动时,在物理内存加载PTE快照对应的文件页数据后,需要等待应用的进程启动完成申请虚拟内存后,才能继续执行填充PTE的操作;热启动时,应用的进程本来就存在,该进程已经申请到虚拟内存。因此,内核可以根据在物理内存中加载的文件页数据的物理地址,建立虚拟地址和物理地址之间的映射关系,并填充PTE。
(5)PTE快照的存储空间可能不同,冷启动对应的PTE快照需要存储在磁盘中。热启动对应的PTE快照可以存储在磁盘也可以存储在内存中。这是由于应用的进程被杀死时,内存中存储的该应用的相关信息将被清理掉。所以,即使将应用的冷启动对应的PTE快照存储在内存中,在该应用下次冷启动时,内存中的PTE快照已经被清理掉,则无法进行预读。
另外,热启动时,若将PTE快照存储在物理内存,则存储PTE快照的内存空间和存储页表的内存空间以及存储该应用的其他数据(例如,代码段等)的内存空间为物理内存中的不同存储空间。
当然,若预先设置了将PTE快照存储在物理内存,在预读时,从物理内存读取本应用热启动时的PTE快照。若预先设置了将PTE快照存储在磁盘,在预读时,从磁盘读取本应用热启动时的PTE快照。
应用热启动时各个模块之间的交互图可以参照图10和图11所示的应用冷启动时各个模块之间的交互图。
参照图14,为本申请实施提供的应用热启动时内核的处理逻辑图。
在热启动开始后的某个时刻,内核会被动的接收到预读信息(该信息用于指示进行预读),该预读信息携带了应用标识和启动方式标识,内核会判断物理内存(或磁盘)是否存在该应用标识和启动方式标识对应的PTE快照;若物理内存(或磁盘)存在该应用标识和启动方式标识对应的PTE快照,则在物理内存中加载PTE快照对应的内存页数据(包括文件页数据和匿名页数据),根据内存页数据所在的物理地址在页表中填充PTE信息(例如,填充虚拟地址和物理地址之间的映射关系);当然,若物理内存(或磁盘)不存在该应用标识和启动方式标识对应的PTE快照,则该流程结束。
在热启动开始之后的某个时刻,内核会被动的接收到捕获信息(该信息用于指示进行捕获PTE快照),通常,捕获信息的接收时机晚于预读信息;捕获信息携带了应用标识和启动方式标识,内核会判断物理内存(或磁盘)是否存在该应用标识和该启动方式对应的PTE快照;若物理内存(或磁盘)不存在该应用标识和启动方式标识对应的PTE快照,则遍历PTE,根据有效的部分类型的文件页和有效的匿名页生成PTE快照,将PTE快照和接收到的应用标识和启动方式标识关联存储在物理内存(或磁盘)中;当然,若物理内存(或磁盘)存在该应用标识和启动方式标识对应的PTE快照,则该流程结束。
在实际应用中,若应用被卸载时,也需要从物理内存(或磁盘)删除该应用的PTE快照。
作为本申请另一实施例,应用的启动方式还可以包括温启动,温启动和热启动可以合并为一种启动方式采用相同的启动流程。本申请实施例提供的应用启动方法可以应用在应用的多种启动方式中,本申请实施例以在多个应用上按照三种启动方式分别启动三次,整体时延减少了13%,UI线程的IO wait(即一个采样周期内有多少的时间属于CPU空闲且至少有一个未完成的磁盘IO请求)降低了47%。具体可以参照表1所示和图15所示。
表1 原生流程和本申请提供的应用启动方式的时延、IOwait和收益对比(单位:ms)
通过表1可以理解,采用本申请实施例提供的应用启动过程中通过预加载内存页的方法可以在总时延上提高约10%以上的收益;在IO wait上可以提高更多的收益。
为了更清晰的对比两种应用启动方式的时延,可以参照图15所示的时延对比示意图。采用本申请提供的应用启动方式的总时延和IO wait明显低于原生流程。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
本申请实施例还提供了一种计算机程序产品,当计算机程序产品在第一设备上运行时,使得电子设备可实现上述各个方法实施例中的步骤。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质至少可以包括:能够将计算机程序代码携带到第一设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U 盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
本申请实施例还提供了一种芯片***,芯片***包括处理器,处理器与存储器耦合,处理器执行存储器中存储的计算机程序,以实现本申请任一方法实施例的步骤。芯片***可以为单个芯片,或者多个芯片组成的芯片模组。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (12)
1.一种预加载内存页的方法,其特征在于,包括:
内核接收到预读信息,所述预读信息包括第一应用的标识和热启动标识;
响应于所述预读信息,所述内核从第一存储空间读取与所述第一应用的标识对应的PTE快照,所述PTE快照基于所述第一应用历史热启动过程中访问的页对象为文件页和匿名页的PTE生成,所述第一存储空间位于物理内存或磁盘中,所述PTE快照包括所述PTE对应的文件页数据在所述磁盘中的存储地址,以及所述PTE对应的匿名页数据在swap分区中的存储地址;
所述内核将所述PTE快照在所述磁盘中对应的文件页数据和在swap分区中对应的匿名页数据加载到物理内存中;
所述内核在所述第一应用的PTE中写入所述文件页数据的虚拟内存到所述文件页数据的物理内存的映射关系和所述匿名页数据的虚拟内存到所述匿名页数据的物理内存的映射关系。
2.如权利要求1所述的方法,其特征在于,在所述内核接收到预读信息之前,所述方法还包括:
所述内核接收到捕获信息,所述捕获信息包括所述第一应用的标识和热启动标识;
响应于所述捕获信息,所述内核根据所述第一应用的标识对应的页表中页对象为文件页和匿名页的PTE,生成所述第一应用的标识对应的PTE快照;
所述内核将所述第一应用的标识对应的PTE快照存储在所述第一存储空间中。
3.如权利要求2所述的方法,其特征在于,所述响应于所述捕获信息,所述内核根据所述第一应用的标识对应的页表中页对象为文件页和匿名页的PTE,生成所述第一应用的标识对应的PTE快照,包括:
响应于所述捕获信息,所述内核确定所述第一存储空间中不存在所述第一应用的标识对应的PTE快照;
所述内核根据所述第一应用的标识对应的页表中页对象为文件页和匿名页的PTE,生成所述第一应用的标识对应的PTE快照。
4.如权利要求2或3所述的方法,其特征在于,所述内核根据所述第一应用的标识对应的页表中页对象为文件页和匿名页的PTE,生成所述第一应用的标识对应的PTE快照,包括:
所述内核将所述第一应用的标识对应的页表中状态位为预设字符,页对象为预设类型的PTE,生成所述第一应用的标识对应的PTE快照,所述预设字符用于表示所述PTE对应的虚拟内存已经映射到物理内存、且被访问过,所述预设类型包括active、referenced和anon。
5.如权利要求1至3任一项所述的方法,其特征在于,所述内核接收到预读信息之前,所述方法还包括:
监控模块监测到所述第一应用启动到预读节点,所述预读节点位于应用启动过程中的ActivityStart阶段之前;
所述监控模块向预读模块发送预读指令;
响应于所述预读指令,所述预读模块通过***调用向所述内核传输所述预读信息。
6.如权利要求2至3任一项所述的方法,其特征在于,所述内核接收到捕获信息之前,所述方法还包括:
监控模块监测到所述第一应用启动到捕获节点,所述捕获节点位于应用启动过程中的DoFrame阶段结束时或之后的第一时间之内;
所述监控模块向预读模块发送捕获指令;
响应于所述捕获指令,所述预读模块通过***调用向所述内核传输所述捕获信息。
7.如权利要求2至3任一项所述的方法,其特征在于,所述内核接收到捕获信息之前,所述方法还包括:
监控模块监测到所述第一应用启动到捕获节点,所述捕获节点位于应用启动过程中的ActivityStart阶段结束时或之后的第一时间之内;
所述监控模块向预读模块发送捕获指令;
响应于所述捕获指令,所述预读模块通过***调用向所述内核传输所述捕获信息。
8.如权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:
所述内核接收到删除信息,所述删除信息包括第一应用的标识;
响应于所述删除信息,所述内核删除所述第一存储空间中存储的所述第一应用的标识对应的PTE快照。
9.如权利要求8所述的方法,其特征在于,在所述内核接收到删除信息之前,所述方法还包括:
监控模块接收到所述第一应用的卸载指令;
响应于所述卸载指令,所述监控模块通过***调用向所述内核传输所述删除信息。
10.如权利要求1至3任一项所述的方法,其特征在于,所述PTE包括虚拟内存到物理内存的映射关系,所述PTE快照包括所述PTE对应的文件页数据的文件名。
11.一种电子设备,其特征在于,所述电子设备包括处理器,所述处理器用于运行存储器中存储的计算机程序,以使得所述电子设备实现如权利要求1至10任一项所述的方法。
12.一种芯片***,其特征在于,包括处理器,所述处理器与存储器耦合,所述处理器执行存储器中存储的计算机程序,以实现如权利要求1至10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310174653.0A CN115858046B (zh) | 2023-02-28 | 2023-02-28 | 一种预加载内存页的方法、电子设备及芯片*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310174653.0A CN115858046B (zh) | 2023-02-28 | 2023-02-28 | 一种预加载内存页的方法、电子设备及芯片*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115858046A CN115858046A (zh) | 2023-03-28 |
CN115858046B true CN115858046B (zh) | 2023-07-21 |
Family
ID=85659293
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310174653.0A Active CN115858046B (zh) | 2023-02-28 | 2023-02-28 | 一种预加载内存页的方法、电子设备及芯片*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115858046B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112046B (zh) * | 2023-04-04 | 2024-05-10 | 荣耀终端有限公司 | 应用程序的启动方法及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108763104A (zh) * | 2018-05-23 | 2018-11-06 | 北京小米移动软件有限公司 | 预读取文件页的方法、装置及存储介质 |
CN112445767A (zh) * | 2020-11-30 | 2021-03-05 | 平安科技(深圳)有限公司 | 内存管理方法及装置、电子设备、存储介质 |
CN112783564A (zh) * | 2019-11-01 | 2021-05-11 | 华为技术有限公司 | 一种加速应用程序启动的方法及电子设备 |
CN115629875A (zh) * | 2022-10-18 | 2023-01-20 | Oppo广东移动通信有限公司 | 内存页面处理方法、装置以及电子设备 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3093773B1 (en) * | 2015-05-13 | 2019-07-10 | Huawei Technologies Co., Ltd. | System and method for creating selective snapshots of a database |
CN107885666B (zh) * | 2016-09-28 | 2021-07-20 | 华为技术有限公司 | 一种内存管理方法和装置 |
CN113590500A (zh) * | 2020-04-30 | 2021-11-02 | 华为技术有限公司 | 一种内存管理方法及终端设备 |
CN111982148B (zh) * | 2020-07-06 | 2022-12-06 | 杭州易现先进科技有限公司 | Vio初始化的处理方法、装置、***和计算机设备 |
CN113296880A (zh) * | 2020-10-30 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 基于容器的应用管理方法和装置 |
CN114443277A (zh) * | 2020-10-31 | 2022-05-06 | 华为终端有限公司 | 内存管理方法、装置、电子设备以及计算机可读存储介质 |
CN114546897A (zh) * | 2020-11-26 | 2022-05-27 | 龙芯中科技术股份有限公司 | 内存访问方法、装置、电子设备及存储介质 |
CN114116191B (zh) * | 2021-06-24 | 2023-09-01 | 荣耀终端有限公司 | 内存冷页的处理方法及电子设备 |
CN114461588B (zh) * | 2021-08-20 | 2023-01-24 | 荣耀终端有限公司 | 调节预读窗口的方法及电子设备 |
CN114416425A (zh) * | 2021-12-17 | 2022-04-29 | 阿里巴巴(中国)有限公司 | 进程拷贝方法以及装置 |
CN114185494B (zh) * | 2022-02-16 | 2022-07-19 | 荣耀终端有限公司 | 内存匿名页的处理方法、电子设备及可读存储介质 |
CN115543532A (zh) * | 2022-09-20 | 2022-12-30 | Oppo广东移动通信有限公司 | 缺页异常的处理方法、装置、电子设备以及存储介质 |
CN115509960A (zh) * | 2022-10-13 | 2022-12-23 | 哈尔滨理工大学 | 一种基于页表条目的shellcode注入检测方法 |
CN115509953A (zh) * | 2022-10-31 | 2022-12-23 | 维沃移动通信有限公司 | 内存回收方法及其装置 |
-
2023
- 2023-02-28 CN CN202310174653.0A patent/CN115858046B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108763104A (zh) * | 2018-05-23 | 2018-11-06 | 北京小米移动软件有限公司 | 预读取文件页的方法、装置及存储介质 |
CN112783564A (zh) * | 2019-11-01 | 2021-05-11 | 华为技术有限公司 | 一种加速应用程序启动的方法及电子设备 |
CN112445767A (zh) * | 2020-11-30 | 2021-03-05 | 平安科技(深圳)有限公司 | 内存管理方法及装置、电子设备、存储介质 |
CN115629875A (zh) * | 2022-10-18 | 2023-01-20 | Oppo广东移动通信有限公司 | 内存页面处理方法、装置以及电子设备 |
Non-Patent Citations (3)
Title |
---|
"Android启动优化研究及应用";缪汉威;《中国优秀硕士学位论文全文数据库( 信息科技辑)》;第I138-800页 * |
"UMap:Enabling application-driven optimizations for page management";Ivy Peng 等;《2019 IEEE/ACM Workshop on Memory Centric High Performance Computing》;第71-78页 * |
"基于自适应容器池的无服务器计算冷启动优化研究";王子轲;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;第I139-123页 * |
Also Published As
Publication number | Publication date |
---|---|
CN115858046A (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4239477A1 (en) | Virtual memory management method and electronic device | |
CN114443277A (zh) | 内存管理方法、装置、电子设备以及计算机可读存储介质 | |
CN114116191B (zh) | 内存冷页的处理方法及电子设备 | |
EP4030301B1 (en) | Memory management method and electronic device | |
CN114461375B (zh) | 内存资源管理方法及电子设备 | |
WO2021185352A1 (zh) | 一种版本升级方法及相关装置 | |
CN115858046B (zh) | 一种预加载内存页的方法、电子设备及芯片*** | |
CN113885787B (zh) | 一种存储器管理方法及电子设备 | |
CN111666227B (zh) | 操作***内存回收的页颠簸保护方法及装置 | |
WO2023051094A1 (zh) | 内存回收方法、装置、电子设备及可读存储介质 | |
CN114489469B (zh) | 一种数据读取方法、电子设备及存储介质 | |
CN112783418B (zh) | 一种存储应用程序数据的方法及移动终端 | |
CN113792179A (zh) | 录音波形处理方法、装置、电子终端设备和存储介质 | |
CN115858047A (zh) | 一种预加载文件页的方法、电子设备及芯片*** | |
CN114461589A (zh) | 读取压缩文件的方法、文件***及电子设备 | |
CN116414782B (zh) | 识别重复文件的方法及电子设备 | |
CN116266159B (zh) | 一种缺页异常处理方法和电子设备 | |
CN116795476B (zh) | 一种删除壁纸的方法及电子设备 | |
CN117312055B (zh) | 数据备份的方法及相关装置 | |
CN113704209B (zh) | 数据共享方法、电子设备及存储介质 | |
CN117407925A (zh) | 扩展内存隔离域的方法和电子设备 | |
CN116841455A (zh) | 一种数据存储方法、***、主机设备和存储设备 | |
CN116266159A (zh) | 一种缺页异常处理方法和电子设备 | |
CN117667369A (zh) | 内存管理方法、电子设备、芯片***及可读存储介质 | |
CN116627855A (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 |