CN113849339A - 恢复应用程序的运行状态的方法、装置及存储介质 - Google Patents

恢复应用程序的运行状态的方法、装置及存储介质 Download PDF

Info

Publication number
CN113849339A
CN113849339A CN202010598055.2A CN202010598055A CN113849339A CN 113849339 A CN113849339 A CN 113849339A CN 202010598055 A CN202010598055 A CN 202010598055A CN 113849339 A CN113849339 A CN 113849339A
Authority
CN
China
Prior art keywords
memory area
virtual memory
area
physical
application program
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
Application number
CN202010598055.2A
Other languages
English (en)
Other versions
CN113849339B (zh
Inventor
何静娴
栾建海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010598055.2A priority Critical patent/CN113849339B/zh
Priority to PCT/CN2021/095783 priority patent/WO2022001504A1/zh
Priority to EP21833916.6A priority patent/EP4170500A4/en
Publication of CN113849339A publication Critical patent/CN113849339A/zh
Priority to US18/146,614 priority patent/US20230136649A1/en
Application granted granted Critical
Publication of CN113849339B publication Critical patent/CN113849339B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

本申请实施例公开了一种恢复应用程序的运行状态的方法、装置及存储介质,属于软件技术领域。在本申请实施例中,在应用程序运行的过程中,存储了第一物理内存区域对应的第一虚拟内存区域的管理信息。在应用程序异常退出时,通过维持第一物理内存区域的物理页来保存该物理页,并避免该物理页被回收。当应用程序恢复启动时,通过第一虚拟内存区域的管理信息重新建立第一虚拟内存区域与第一物理内存区域之间的映射关系,这样,应用程序能够读取第一物理内存中存储的关键数据来恢复运行,相较于备份至磁盘文件的方法,本申请实施例无需进行数据备份,且从物理内存读取数据的速度比从磁盘文件读取数据的速度更快,加快了应用程序的恢复运行速度。

Description

恢复应用程序的运行状态的方法、装置及存储介质
技术领域
本申请涉及软件技术领域,特别涉及一种恢复应用程序的运行状态的方法、装置及存储介质。
背景技术
应用程序运行于终端的操作***之上,容易受到各种因素的影响而异常退出。应用程序异常退出之后,终端的操作***将会对存储该应用程序的关键数据的物理内存进行回收再利用,这将导致关键数据丢失,进而导致应用程序后续难以根据关键数据恢复至终止运行时的状态。
目前,为了避免物理内存中存储的应用程序的关键数据丢失,在应用程序正常运行的过程中,每隔一定时长,将物理内存中的关键数据写入至磁盘文件进行备份。当应用程序异常退出之后重新启动时,从该磁盘文件中读取之前备份的关键数据,从而恢复应用程序的运行状态。
然而,一方面,由于应用程序是周期性备份应用数据至磁盘文件,而无法实时备份,因此,数据完整性无法保证,另一方面,当备份到磁盘文件中的数据量较大时,应用程序重启时读取这些数据将会耗时很长。
发明内容
本申请实施例提供了一种恢复应用程序的运行状态的方法、装置及存储介质,能够在应用程序异常退出之后,无需依赖磁盘文件快速恢复应用程序的运行。所述技术方案如下:
第一方面,提供了一种恢复应用程序的运行状态的方法,所述方法包括:在应用程序正常运行过程中,存储第一物理内存区域对应的第一虚拟内存区域的管理信息,所述第一物理内存区域用于存储所述应用程序运行过程中的关键数据;当检测到所述应用程序异常退出时,维持所述第一物理内存区域的物理页;当检测到所述应用程序启动时,根据所述第一虚拟内存区域的管理信息,将所述第一物理内存区域的物理页重映射至所述第一虚拟内存区域,以恢复所述应用程序的运行状态。
由于在应用程序运行的过程中,已经存储了第一物理内存区域对应的第一虚拟内存区域的管理信息,并且,在应用程序异常退出时,通过维持第一物理内存区域的物理页来保存该物理页并避免该物理页被回收,因此,当应用程序恢复启动时,通过第一虚拟内存区域的管理信息能够重新建立第一虚拟内存区域与第一物理内存之间的映射关系,这样,应用程序就能够读取第一物理内存中存储的关键数据来恢复运行,相较于备份至磁盘文件的方法,本申请实施例无需进行数据备份,且恢复启动时,从物理内存读取数据的速度要快于从磁盘文件中读取数据的速度,加快了应用程序的恢复运行速度。
可选地,所述第一虚拟内存区域的管理信息包括所述第一虚拟内存区域的区域信息和所述应用程序的应用标识,所述存储第一物理内存区域对应的第一虚拟内存区域的管理信息的实现过程为:将所述第一虚拟内存区域的区域信息和所述应用程序的应用标识对应存储在第一映射关系中,所述第一映射关系包括多个区域信息和每个区域信息对应的应用程序的应用标识。
其中,第一映射关系用于管理存储应用程序的关键数据的虚拟内存区域的信息。在一些可能的情况中,第一映射关系中还包括每个虚拟区域的区域信息对应的应用程序的进程标识。
可选地,所述第一虚拟内存区域有多个,所述当检测到所述应用程序异常退出时,所述方法还包括:根据多个所述第一虚拟内存区域的区域信息,对多个所述第一虚拟内存区域进行页对齐处理;对页对齐后的多个所述第一虚拟内存区域进行合并处理,得到第一关键区域;将所述第一关键区域的区域信息存储至第二映射关系,所述第二映射关系包括多个映射项,每个映射项包括一个关键区域的区域信息。
当检测到应用程序异常退出时,操作***对多个第一虚拟内存区域进行页对齐处理。由于页对齐处理之后的虚拟内存区域可能存在重叠现象,因此,对页对齐之后的多个虚拟内存区域进行合并处理,这样,能够减少后续对这些虚拟内存区域对应的物理页进行管理的成本。
另外,对于合并后的虚拟内存区域的区域信息,将其存储至第二映射关系中,以便后续进行物理页的搜集。
可选地,所述维持所述第一物理内存区域对应的物理页的实现过程为:获取第二虚拟内存区域的区域信息,所述第二虚拟内存区域是指应用程序对应的当前正在解映射的虚拟内存区域;从存储的第二映射关系中,查找与所述第二虚拟内存区域的区域信息匹配的目标映射项,所述第二映射关系包括多个映射项,每个映射项包括一个关键区域的区域信息;如果所述第二映射关系中存在与所述第二虚拟内存区域的区域信息匹配的目标映射项,则获取所述第二虚拟内存区域对应的物理页,将所述第二虚拟内存区域对应的物理页作为所述第一物理内存区域的物理页;增加所述第一物理内存区域的物理页的引用计数;将所述第一物理内存区域的物理页添加至所述目标映射项中。
在应用程序频繁变更使用用于存储关键数据的内存区域的过程中不宜刷新物理页,因此,在本申请实施例中,在应用程序异常退出时,在应用程序的进程页表中虚拟内存区域的区域信息和物理页进行解映射的过程中来搜集物理页。通过将当前正在解映射的物理页与第二映射关系中存储的用于存储关键数据的虚拟内存区域的区域信息进行匹配,能够确定出当前正在解映射的虚拟内存区域是否为存储关键数据的内存区域,如果是,将当前正在解映射的虚拟内存区域对应的物理页的引用计数加1,以避免其被释放,同时,将该物理页添加至第二映射关系中匹配的映射项中,以完成物理页的搜集。这样,通过增加存储关键数据的物理内存区域的物理页的引用计数,避免了物理页被释放,也就避免了对应的物理内存区域被回收,从而避免了关键数据丢失,同时,通过将该物理页保存至第二映射关系中,为后续进行重映射提供了条件。如此,后续就能通过该物理页的重映射,使得应用程序能够重新读取该关键数据,以恢复异常退出前的运行状态。
可选地,在将所述第一物理内存区域的物理页添加至所述目标映射项之后,将所述目标映射项对应的状态标识设置为第一标识,所述第一标识用于指示禁止对相应映射项中的物理页进行重映射。
通过将目标映射项的状态标识设置为第一标识,能够避免在该应用程序异常退出之后再次启动之前,其他应用程序误用该目标映射项中的物理页。
可选地,所述根据所述第一虚拟内存区域的管理信息,将所述第一物理内存区域的物理页重映射至所述第一虚拟内存区域,以恢复所述应用程序的运行状态的实现过程为:根据所应用程序的应用标识,从所述第一映射关系中获取所述第一虚拟内存区域的区域信息;当通过所述第一虚拟内存区域的区域信息进行数据访问触发缺页处理流程时,根据所述第一虚拟内存区域的区域信息获取存储的第一物理内存区域的物理页;将所述第一物理内存区域的物理页重映射至所述第一虚拟内存区域,以根据所述第一物理内存区域内存储的所述关键数据恢复所述应用程序的运行状态。
由于在应用程序之前正常运行的过程中,将应用程序的应用标识和第一虚拟内存区域的区域信息存储在了第一映射关系中,因此,当应用程序再次启动时,根据应用程序的应用标识,能够从第一映射关系中获取到第一虚拟内存区域的区域信息。将该第一虚拟内存区域作为此次启动时操作***分配给其的用于存储关键数据的虚拟内存区域,但是,操作***不为其分配对应的物理内存区域,在这种情况下,当应用程序访问该第一虚拟内存区域时将会触发缺页处理流程。操作***在检测到缺页处理流程被触发时,根据第一虚拟内存区域的区域信息,从之前维持的物理页中获取第一虚拟内存区域对应的物理页,该物理页即为第一物理内存区域的物理页,将该物理页重映射至第一虚拟内存区域。这样,当应用程序再访问第一虚拟内存区域时,就能够从第一物理内存区域中读取存储的关键数据,以恢复应用程序的运行状态。
可选地,所述第一映射关系还包括每个区域信息对应的应用程序的进程标识,所述第二映射关系还包括每个关键区域对应的进程标识。在此基础上,所述方法还包括:根据所述应用程序的应用标识所在的第一映射项包括的进程标识,从所述第二映射关系中确定与所述第一映射项包含的进程标识相同的第二映射项;将所述第一映射项和所述第二映射项中包含的进程标识均更新为目标进程标识,所述目标进程标识是指应用程序恢复启动后的进程的标识。相应地,所述根据所述第一虚拟内存区域的区域信息获取存储的第一物理内存区域的物理页的实现过程为:根据所述第一虚拟内存区域的区域信息和所述目标进程标识,从所述第二映射关系中获取所述第一物理内存区域的物理页。
由于应用程序异常退出之后,应用程序的进程标识会被回收再利用,当再次启动时,操作***将会为该应用程序分配新的进程标识,也即目标进程标识。基于此,可以将第一映射关系和第二映射关系中存储的该应用程序的进程标识进行同步刷新,以避免复用了该应用程序之前的进程标识的其他应用程序误用存储该应用程序的关键数据的内存区域的信息。
可选地,在将所述第二映射项中的进程标识更新为所述目标进程标识之后,将所述第二映射项的状态标识修改为第二标识,所述第二标识用于指示允许对相应映射项中的物理页进行重映射。
可选地,所述将第一物理内存区域的物理页重映射至所述第一虚拟内存区域的实现过程为:对所述第一物理内存区域的物理页的引用计数、反向映射信息、状态信息、全局统计信息以及控制结构关联关系进行校正;将所述第一物理内存区域的物理页添加至所述目标进程页表中,所述目标进程页表是指所述应用程序的进程对应的进程页表。
通过对第一物理内存区域的物理页的引用计数、反向映射信息、状态信息、全局统计信息以及控制结构关联关系进行校正,使得该物理页的状态与新分配的等待映射的空白物理页的状态一样,也即,处于映射就绪状态,以便操作***将该物理页重映射至第一虚拟内存区域。
第二方面,提供了一种恢复应用程序的运行状态的装置,所述恢复应用程序的运行状态的装置具有实现上述第一方面中恢复应用程序的运行状态的方法行为的功能。所述恢复应用程序的运行状态的装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的恢复应用程序的运行状态的方法。
第三方面,提供了一种恢复应用程序的运行状态的装置,所述恢复应用程序的运行状态的装置的结构中包括处理器和存储器,所述存储器用于存储支持恢复应用程序的运行状态的装置执行上述第一方面所提供的恢复应用程序的运行状态的方法的程序,以及存储用于实现上述第一方面所提供的恢复应用程序的运行状态的方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的恢复应用程序的运行状态的方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的恢复应用程序的运行状态的方法。
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
本申请实施例提供的技术方案带来的有益效果至少包括:
在本申请实施例中,由于在应用程序运行的过程中,已经存储了第一物理内存区域对应的第一虚拟内存区域的管理信息,并且,在应用程序异常退出时,保存了第一物理内存区域对应的物理页,避免第一物理内存区域对应的物理页被回收,因此,当应用程序恢复启动时,通过第一虚拟内存区域的管理信息能够重新建立第一虚拟内存区域与第一物理内存之间的映射关系,这样,应用程序就能够读取第一物理内存中存储的关键数据来恢复运行状态,相较于备份至磁盘文件的方法,本申请实施例无需进行数据备份,且恢复启动时,从物理内存读取数据的速度要快于从磁盘文件中读取数据的速度,加快了应用程序的恢复运行速度。
附图说明
图1是本申请实施例提供的一种终端的***架构图;
图2是本申请实施例提供的一种恢复应用程序的运行状态的方法流程图;
图3是本申请实施例提供的一种合并虚拟内存区域的示意图;
图4是本申请实施例提供的一种当前解映射的虚拟内存区域与第二映射关系中的映射项进行匹配的示意图;
图5是本申请实施例提供的一种恢复应用程序的运行状态的装置结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例提供的恢复应用程序的运行状态的方法进行详细的解释说明之前,先对本申请实施例涉及的应用场景予以介绍。
应用程序运行于终端的操作***之上,容易受到各种因素的影响而异常退出。例如,应用程序可能由于自身故障而导致异常退出,或者,操作***在进行新老版本的更新时可能也会导致正在运行的应用程序异常退出等等。在应用程序正常运行的过程中,可能会产生一些与应用程序的当前运行状态相关联的关键数据,例如,可能下载了一些运行过程中所需的数据,或者,应用程序通过处理用户数据获得了一些处理结果等等。在应用程序异常退出之后,当再次启动应用程序时,应用程序通过重新读取这些关键数据,能够使得应用程序恢复至异常退出之前正常运行时的某种状态。本申请实施例提供的恢复应用程序的运行状态的方法即用于上述场景中,以便应用程序在异常退出之后重新启动时,能够通过读取之前存储的关键数据来使应用程序恢复至异常退出之前的运行状态。
图1是本申请实施例提供的一种终端100的结构示意图,本申请实施例中涉及到的终端的功能均能够通过该终端100来实现。其中,该终端100可以为智能手机、平板电脑、台式电脑等,本申请实施例对此不做限定。示例性地,该终端100可以包括一个或多个处理器101、通信总线102、存储器103以及一个或多个通信接口104。
处理器101可以是一个通用中央处理器(central processing unit,CPU)、网络处理器(network processor,NP)、微处理器、或者可以是一个或多个用于实现本申请方案的集成电路,例如,专用集成电路(application-specific integrated circuit,ASIC)、可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。
通信总线102用于在上述组件之间传送信息。通信总线102可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器103可以是只读存储器(read-only memory,ROM),也可以是随机存取存储器(random access memory,RAM),也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、光盘(包括只读光盘(compact discread-only memory,CD-ROM)、压缩光盘、激光盘、数字通用光盘、蓝光光盘等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器103可以是独立存在,并通过通信总线102与处理器101相连接。存储器103也可以和处理器101集成在一起。
通信接口104使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口104包括有线通信接口,还可以包括无线通信接口。其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为无线局域网(wireless local area networks,WLAN)接口,蜂窝网络通信接口或其组合等。
在一些实施例中,终端可以包括多个处理器,如图2中所示的处理器101和处理器105。这些处理器中的每一个可以是一个单核处理器,也可以是一个多核处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,终端还可以包括输出设备106和输入设备107。输出设备106和处理器101通信,可以以多种方式来显示信息。例如,输出设备106可以是液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备107和处理器101通信,可以以多种方式接收用户的输入。例如,输入设备107可以是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器103用于存储执行本申请方案的程序代码108,处理器101可以执行存储器103中存储的程序代码108。该程序代码中可以包括一个或多个软件模块,该终端可以通过处理器101以及存储器103中的程序代码108,来实现下文图2实施例提供的恢复应用程序的运行状态的方法。
接下来对本申请实施例提供的恢复应用程序的运行状态的方法进行介绍。
图2是本申请实施例提供的一种恢复应用程序的运行状态的方法的流程图。该方法可以应用于前述图1中所示的终端中,参见图2,该方法包括以下步骤:
步骤201:在应用程序正常运行过程中,存储第一物理内存区域对应的第一虚拟内存区域的管理信息,该第一物理内存区域用于存储应用程序运行过程中的关键数据。
应用程序在正常启动时,终端的操作***可以为该应用程序的进程分配用于存储该应用程序运行过程中的关键数据的第一虚拟内存区域、以及与该第一虚拟内存区域对应的第一物理内存区域,并建立第一虚拟内存区域的区域信息与第一物理内存区域对应的物理页之间的映射关系。这样,应用程序在正常运行过程中,通过第一虚拟内存区域的区域信息在上述的映射关系中能够获得第一物理内存区域的物理页,进而将关键数据存储在第一物理内存区域的物理页上。
其中,应用程序的关键数据是指应用程序运行过程中产生的一些关键状态数据,例如,应用程序在运行过程中下载的一些与运行状态有关的数据,或者是,在运行过程中,应用程序对某些数据进行加工处理后得到的一些能够使应用程序维持某种状态的结果数据等等。应用程序通过读取这些关键数据,能够呈现这些关键数据所对应的运行状态。另外,物理页是操作***管理物理内存空间的基本单位。
在本申请实施例中,可以在终端中指定一块共享内存,以管理各个应用程序对应的用于存储关键数据的虚拟内存区域的信息。基于此,在应用程序正常运行的过程中,操作***生成第一虚拟内存区域的管理信息,并将该管理信息存储至指定的共享内存中。其中,第一虚拟内存区域的管理信息包括第一虚拟内存区域的区域信息和应用程序的应用标识,除此之外,该管理信息中还包括应用程序的进程标识。其中,第一虚拟内存区域的区域信息包括第一虚拟内存区域的起始地址和大小。应用程序的应用标识用于唯一标识该应用程序。
操作***在存储第一虚拟内存区域的管理信息时,可以以映射项的形式,将应用程序的应用标识、进程标识和第一虚拟内存区域的区域信息对应存储至指定共享内存中的第一映射关系中。其中,该第一映射关系中包括多个区域信息和每个区域信息对应的应用程序的应用标识和进程标识。
可选地,操作***在将第一虚拟内存区域的管理信息存储至第一映射关系表中,根据第一虚拟内存区域的起始地址和第一虚拟内存区域对应的页表的页数,按照起始地址从小到大、页数从大到小的顺序,将第一虚拟内存区域的管理信息***至所述第一映射关系中。
可选地,第一映射关系中的每个映射项对应一个状态标志位,该状态标志位用于指示相应映射项是否为空。基于此,在将第一虚拟内存区域的管理信息***至第一映射关系中之后,可以将该映射项的状态标志位设置为使用状态。后续,如果将该映射项中的第一虚拟内存区域的管理信息进行了删除,则将该状态标志位设置为空闲状态,以便后续其他虚拟内存区域的管理信息可以复用该映射项。
步骤202:当检测到应用程序异常退出时,获取并存储第一物理内存区域对应的物理页。
当操作***检测到应用程序异常退出时,会释放应用程序的进程页表。其中,应用程序的进程页表中包括为该应用程序的进程分配的虚拟内存区域的区域信息和物理页之间的映射关系。在释放应用程序的进程页表之前,操作***需要对该应用程序的进程页表中包括的虚拟内存区域的区域信息和物理页之间的映射关系进行解映射。基于此,操作***在进行解映射的过程中,搜集第一虚拟内存区域对应的物理页,也即,第一物理内存区域的物理页,并通过维持第一物理内存区域的物理页来避免应用程序退出之后该物理页被释放,以便后续对该物理页进行重映射。
需要说明的是,在本申请实施例中,操作***为应用程序分配的第一虚拟内存区域可能有多个,在这种情况下,为了降低物理页管理成本,当检测到应用程序进入异常退出流程但还未开始解映射之前,操作***根据多个第一虚拟内存区域的区域信息,对多个第一虚拟内存区域进行页对齐处理;对页对齐后的多个第一虚拟内存区域进行合并处理,得到第一关键区域;将第一关键区域的区域信息作为一个映射项存储至第二映射关系,第二映射关系包括多个映射项,每个映射项包括一个关键区域的区域信息。
其中,操作***对虚拟内存区域进行页对齐处理的实现方法参考相关技术,本申请实施例对此不再赘述。在对多个第一虚拟内存区域进行页对齐处理之后,页对齐后的虚拟内存区域可能会出现区域重叠的现象,基于此,操作***对页对齐后的虚拟内存区域进行合并处理,以减少后续进行物理页管理的成本。
示例性地,操作***将页对齐之后的多个虚拟内存区域中起始地址相同的虚拟内存区域合并为一个虚拟内存区域,合并后的虚拟内存区域的页数为多个起始地址相同的虚拟内存区域中最大的那块区域的页数。将相邻的虚拟内存区域合并,合并后的虚拟内存区域的页数为相邻的虚拟内存区域的页数之和。除此之外,为了后续能够成功访问关键数据,在合并虚拟内存区域之后,操作***同步刷新记录的该虚拟内存区域中的关键数据变量首地址偏移值。
图3是本申请实施例示出的一种虚拟内存区域合并的示意图。如图3所示,页对齐处理后的虚拟内存区域分别为虚拟内存区域1、虚拟内存区域2和虚拟内存区域3。其中,虚拟内存区域1和虚拟内存区域2的起始地址相同,虚拟内存区域3与虚拟内存区域2相邻。操作***首先将虚拟内存区域2和虚拟内存区域3进行合并,得到第一次合并后的虚拟内存区域,该合并后的虚拟内存区域的页数为虚拟内存区域2和虚拟内存区域3的页数之和。之后,将第一次合并后的虚拟内存区域再与虚拟内存区域1合并,由于第一次合并后的虚拟内存区域的大小大于虚拟内存区域1,因此,再次合并之后得到的合并虚拟内存区域的页数为第一次合并后的虚拟内存区域的页数。最终,将虚拟内存区域1-3进行合并后得到的合并虚拟内存区域如图3所示,在本申请实施例中,将该合并虚拟内存区域称为第一关键区域。
可选地,在一些可能的情况中,为应用程序分配的第一虚拟内存区域可能只有一个,在这种情况下,操作***对该第一虚拟内存区域进行页对齐处理,之后,将页对齐处理之后的虚拟内存区域直接作为第一关键区域,而无需在进行合并。
在得到第一关键区域之后,操作***在内核态下将第一关键区域的区域信息存储至第二映射关系中一个映射项中。其中,第二映射关系是操作***在内核态下创建的用于管理关键区域对应的物理页的信息体,也即是用于管理存储有关键数据的物理内存区域的物理页的信息体。该第二映射关系包括多个映射项,每个映射项中包括一个关键区域的区域信息。除此之外,由于操作***在内核态下是通过进程标识来查找虚拟内存区域的区域信息和对应的物理页的,因此,第二映射关系中的每个映射项还包括该关键区域的区域信息对应的进程标识以及物理页。需要说明的是,对于未搜集到对应物理页的关键区域而言,该关键区域的区域信息所对应的物理页为空。综上所述,操作***在将第一关键区域的区域信息存储至第二映射关系中的映射项中时,同时存储第一关键区域的区域信息对应的应用程序的进程标识,由于当前还未搜集第一关键区域对应的物理页,因此,该映射项中的物理页为空。
在将第一关键区域的区域信息存储至第二映射关系中之后,当该应用程序异常退出开始进行解映射时,操作***获取第二虚拟内存区域的区域信息,第二虚拟内存区域是指该应用程序对应的当前正在解映射的虚拟内存区域;从存储的第二映射关系中,查找与第二虚拟内存区域的区域信息匹配的映射项,第二映射关系包括多个映射项,每个映射项包括一个关键区域的区域信息;如果第二映射关系中存在包含第二虚拟内存区域的区域信息的目标映射项,则获取第二虚拟内存区域对应的物理页,将第二虚拟内存区域对应的物理页作为第一物理内存区域的物理页;增加第一物理内存区域的物理页的引用计数;将第一物理内存区域的物理页添加至目标映射项中。
操作***将对该应用程序的进程页表中的每个虚拟内存区域的区域信息和对应的物理页之间的映射关系进行解映射。对于当前正在进行解映射的虚拟内存区域,操作***将该虚拟内存区域的区域信息与第二映射关系中存储的关键区域的区域信息进行匹配。由于第二映射关系中存储的是用于存储关键数据的虚拟内存区域以及对应的物理页的信息,因此,如果第二映射关系中存在与当前正在解映射的第二虚拟内存区域的区域信息相匹配的区域信息,则说明第二虚拟内存区域即为用于存储关键数据的虚拟内存区域。在这种情况下,操作***获取第二虚拟内存区域对应的物理页。在获取到该物理页之后,考虑到解映射之后,物理页的引用计数会减1,而当物理页的引用计数为0时,物理页将会被释放,因此,为了保证该物理页在后续不会被释放,操作***将该物理页的引用计数加1。之后,操作***将该物理页作为第一物理内存区域的物理页存储到匹配到的关键区域的区域信息所在的目标映射项中。这样,既能够保证应用程序在异常退出之后,存储关键数据的第一物理内存区域的物理页不会被释放,同时,又能搜集物理页用于后续的重映射。
需要说明的是,上文中的区域信息包括起始地址和大小,在此基础上,与第二虚拟内存区域的区域信息相匹配的关键区域的区域信息可以是指该关键区域的区域信息与第二虚拟内存区域的区域信息完全相同,或者,二者的起始地址相同,但是第二虚拟内存区域的大小小于关键区域的大小,或者,根据起始地址和大小确定关键区域的结束地址与第二虚拟内存区域的结束地址相同,且第二虚拟内存区域的大小小于关键区域的大小,或者,第二虚拟内存区域的起始地址和结束地址均位于该关键区域的地址范围之内。
另外,在本申请实施例中,由于第二映射项中的关键区域可能是通过对存储关键数据的虚拟内存区域进行页对齐处理以及合并后得到的,因此,在将解映射的虚拟内存区域与关键区域进行匹配时,可能会存在多个虚拟内存区域均与关键区域匹配的情况下,这样,一个关键区域将会对应多个物理页,也即,在一个包含有关键区域的区域信息的映射项中可能会被添加多个物理页。
另外,可选地,由于操作***在内核态下对虚拟内存区域的管理也是按照虚拟内存区域的起始地址从小到大的顺序进行管理的,也即,在解映射的过程中,是按照虚拟内存区域的起始地址从小到大的顺序来依次对进程页表中的各个虚拟内存区域进行解映射的,因此,在本申请实施例中,第二映射关系中的各个映射项也按照关键区域的起始地址从小到大的顺序排列。这样,就能够随着解映射的虚拟内存区域的地址步进的与第二映射关系中的映射项进行匹配,如此,能够降低物理页搜集的复杂度。
图4是本申请实施例示出的当前解映射的虚拟内存区域与第二映射关系中的映射项进行匹配的示意图。如图4所示,按照起始地址从小到大的顺序,依次需要进行解映射的虚拟内存区域分别为虚拟内存区域(virtual memory area,VMA)1、VMA2、VMA3、VMA4、VMA5和VMA6。第二映射关系中的映射项按照关键区域的起始地址从小到大的顺序排列,分别为A1、A2、A3和A4。操作***从VMA1开始解映射,将VMA1的区域信息依次与A1至A4中的区域信息进行匹配,如果均不匹配,则直接将其进行解映射。之后,开始对VMA2进行解映射,依然从A1开始,与VMA2的区域信息进行匹配,假设在与A1的区域信息进行匹配时发现二者相匹配,则将VMA2对应的物理页添加至A1中,并且,无需再和后续的A2至A4进行匹配。之后,对VMA3进行解映射,由于VMA2的区域信息与A1匹配,而VMA3的起始地址位于VMA2之后,所以从A2开始依次进行匹配,假设VMA3的区域信息与A2-A4中的所有区域信息均不匹配,直接对VAM3进行解映射。之后,开始对VMA4进行解映射,从A2开始依次进行匹配,假设VMA4的区域信息与A2中的关键区域的区域信息匹配,则将VMA4对应的物理页添加至A2中,后续,对于VMA5,则从A3开始依次进行匹配,以此类推。
可选地,在将解映射的虚拟内存区域对应的物理页添加至第二映射表中的目标映射项中之后,操作***将该目标映射项对应的状态标识设置为第一标识,该第一标识用于指示禁止对该目标映射项中的物理页进行重映射,这样,能够避免该应用程序退出之后,后续其他复用了该应用程序当前的进程标识的应用程序误用该目标映射项中的物理页。
当解映射完成之后,对物理页的搜集和存储也相应的完成,此时,操作***会释放该应用程序的进程页表,之后,该应用程序退出。
步骤203:当检测到应用程序启动时,根据第一虚拟内存区域的管理信息,将第一物理内存区域对应的物理页重映射至第一虚拟内存区域,以恢复该应用程序的运行。
在应用程序异常退出之后,当检测到该应用程序启动时,操作***根据该应用程序的应用标识,从第一映射关系中获取第一虚拟内存区域的区域信息;当通过第一虚拟内存区域的区域信息进行数据访问触发缺页处理流程时,根据第一虚拟内存区域的区域信息获取存储的第一物理内存区域的物理页;将第一物理内存区域的物理页重映射至第一虚拟内存区域,以根据第一物理内存区域内存储的关键数据恢复该应用程序的运行状态。
需要说明的是,当检测到该应用程序启动时,操作***将会为该应用程序的进程分配新的进程标识,但是,该应用程序的应用标识则不会发生变化。基于此,操作***根据该应用程序的应用标识,从第一映射关系中获取该应用标识对应的第一虚拟内存区域的区域信息,将该第一虚拟内存区域继续作为分配给该应用程序的用于存储关键数据的区域。但是,与正常运行过程中不同的是,操作***不会为该第一虚拟内存区域分配对应的物理内存区域。
由前述步骤201和202的介绍可知,第一映射关系和第二映射关系的映射项中均包括进程标识,而当应用程序异常退出之后,进程标识将会被回收再利用,在应用程序再次启动时,操作***将会为该应用程序的进程重新分配新的进程标识,也即目标进程标识。在这种情况下,在获取到第一虚拟内存区域的区域信息之后,操作***可以对第一映射关系和第二映射关系中的进程标识进行刷新。
其中,操作***在第一映射关系中查找到包含该应用程序的应用标识的第一映射项之后,根据第一映射项中包含的进程标识,从第二映射关系中确定与第一映射项包含的进程标识相同的第二映射项,之后,将第一映射项和第二映射项中包含的进程标识均更新为目标进程标识。
可选地,由前述步骤202中的介绍可知,在应用程序异常退出解映射的过程中,将搜集到的物理页添加至对应的映射项之后,可以将映射项的状态标识设置为第一标识,以禁止对该映射项中的物理页进行重映射。因此可知,第二映射项的状态标识此时为第一标识,在这种情况下,在将第二映射项中包含的进程标识同步刷新为目标进程标识之后,由于后续需要将第二映射项中的物理页重映射来恢复应用程序的运行,因此,操作***要将第二映射项的状态标识修改为第二标识,该第二标识用于指示允许对相应映射项中的物理页进行重映射。
由于在修改第二映射项的状态标识之前对第二映射关系中的进程标识进行了刷新,因此,在修改状态标识之后、物理页重映射之前,能够避免复用了该应用程序异常退出之前的进程标识的其他应用程序误用第二映射项中的物理页。
由于应用程序恢复启动时,操作***没有为应用程序分配第一虚拟内存区域对应的物理内存区域,也即,没有建立第一虚拟内存区域的区域信息与对应的物理内存区域的映射关系,因此,当通过第一虚拟内存区域的区域信息进行数据访问时,将会触发缺页处理流程。在触发缺页处理流程之后,操作***根据第一虚拟内存区域的区域信息,从第二映射关系中获取存储的第一虚拟内存区域对应的物理页。
其中,由于操作***在内核态下通常是通过进程标识来管理应用程序对应的内存区域信息,因此,操作***可以将目标进程标识和第一虚拟内存区域的区域信息与第二映射关系中存储的包括进程标识和区域信息的各个映射项进行匹配。由于在前述应用程序异常退出时,第一虚拟内存区域对应的物理页已经在解映射的过程中被添加至了第二映射关系中包含有第一虚拟内存区域的区域信息和进程标识的映射项,并且,在应用程序恢复启动之后,也已经将该映射项中的进程标识更新为了目标进程标识,因此,通过第一虚拟内存区域的区域信息和目标进程标识能够在第二映射关系中查找到匹配的映射项,获取该匹配映射项中的物理页,该物理页即为第一虚拟内存区域对应的物理页,也即,第一物理内存区域的物理页。
在获取到第一物理内存区域的物理页之后,操作***将该物理页重映射至第一虚拟内存区域,如此,应用程序就能够通过第一虚拟内存区域访问第一物理内存区域中的关键数据,进而恢复应用程序的运行状态。
其中,操作***首先对第一物理内存区域的物理页的引用计数、反向映射信息、状态信息、全局统计信息以及控制结构关联关系进行校正;之后,将第一物理内存区域的物理页添加至目标进程页表中,从而完成第一物理内存区域的物理页到第一虚拟内存区域的映射,其中,目标进程页表是指应用程序此次启动后的进程对应的进程页表。
需要说明的是,物理页的引用计数用于记录该物理页被使用的次数,在将该物理页重新映射至第一虚拟内存区域之后,将该物理页的引用计数加1。
反向映射信息包括反向映射计数和反向映射关系。其中,反向映射关系是指物理页与使用该物理页的进程的页表项之间的映射关系,通过该反向映射关系,能够反向查找物理页对应的进程。反向映射计数是指映射到该物理页的页表项的计数。在将物理页重映射之前,操作***可以清除包含有该物理页的反向映射关系,并校正对应的反向映射计数。
物理页的状态信息包括可映射状态、不可映射状态等。由于需要将物理页重映射,因此,要将物理页的状态信息修改为可映射状态。
全局统计信息是指终端中记录的对所有物理页的使用情况的统计信息,包括各个物理页的使用次数等。
控制结构关联关系是指该物理页与***物理页管理链表之间的关系。通常情况下,当物理页被释放时,***会将该物理页从各个管理链表中摘除,这样,后续该物理页才能进行再次映射。由于前述流程中,第一物理内存区域的物理页不会被释放,因此,该物理页并没有从管理链表中摘除。在这种情况下,为了能够对该物理页进行重映射,则要将该物理页从当前所在的管理链表中摘除出来,以此来实现对该物理页的控制结构关联关系的校正。
在对上述信息进行校正之后,物理页即处于映射就绪状态,之后,操作***将该物理页与第一虚拟内存区域的区域信息之间的映射关系添加至目标进程页表中,从而完成对该物理页的重映射。这样,当应用程序访问第一虚拟内存区域时,根据目标进程页表中的映射关系,将会获取到对应的物理页,进而能够读取该物理页上的关键数据,从而将应用程序恢复至异常退出之前该关键数据所对应的运行状态。
可选地,在一些可能的情况中,应用程序恢复运行之后,操作***将第一映射关系中存储的该应用程序的应用标识、进程标识和虚拟内存区域的区域信息进行删除。也就是说,本申请实施例支持在第一映射关系中动态创建或删除应用程序对应的管理信息。
在本申请实施例中,由于在应用程序运行的过程中,已经存储了第一物理内存区域对应的第一虚拟内存区域的管理信息,并且,在应用程序异常退出时,通过维持第一物理内存区域的物理页来保存该物理页并避免该物理页被回收,因此,当应用程序恢复启动时,通过第一虚拟内存区域的管理信息能够重新建立第一虚拟内存区域与第一物理内存之间的映射关系,这样,应用程序就能够读取第一物理内存中存储的关键数据来恢复运行状态,相较于备份至磁盘文件的方法,本申请实施例无需进行数据备份,能够保证关键数据的完整性,且在应用程序启动时,从物理内存读取数据的速度要快于从磁盘文件中读取数据的速度,加快了应用程序的恢复运行速度。
接下来对本申请实施例提供的恢复应用程序的运行状态的装置进行介绍。
参见图5,本申请实施例提供了一种恢复应用程序的运行状态的装置500,该装置500包括:
管理模块501,用于执行前述实施例中的步骤201;
维持模块502,用于执行前述实施例中的步骤202;
重映射模块503,用于执行前述实施例中的步骤203。
其中,管理模块501由前述图1所示的终端中的处理器在用户态和内核态下执行,维持模块502和重映射模块503由图1的终端中的处理器在内核态下执行。
可选地,第一虚拟内存区域的管理信息包括第一虚拟内存区域的区域信息和应用程序的应用标识,管理模块501主要用于:
将第一虚拟内存区域的区域信息和应用程序的应用标识对应存储在第一映射关系中,第一映射关系包括多个区域信息和每个区域信息对应的应用程序的应用标识。
可选地,第一虚拟内存区域有多个,当检测到应用程序异常退出时,维持模块502还用于:
根据多个第一虚拟内存区域的区域信息,对多个第一虚拟内存区域进行页对齐处理;
对页对齐后的多个第一虚拟内存区域进行合并处理,得到第一关键区域;
将第一关键区域的区域信息存储至第二映射关系,第二映射关系包括多个映射项,每个映射项包括一个关键区域的区域信息。
可选地,维持模块502主要用于:
获取第二虚拟内存区域的区域信息,第二虚拟内存区域是指应用程序对应的当前正在解映射的虚拟内存区域;
从存储的第二映射关系中,查找与第二虚拟内存区域的区域信息匹配的目标映射项,第二映射关系包括多个映射项,每个映射项包括一个关键区域的区域信息;
如果第二映射关系中存在与第二虚拟内存区域的区域信息匹配的目标映射项,则获取第二虚拟内存区域对应的物理页,将第二虚拟内存区域对应的物理页作为第一物理内存区域的物理页;
增加第一物理内存区域的物理页的引用计数;
将第一物理内存区域的物理页添加至目标映射项中。
可选地,维持模块502还用于:
将目标映射项对应的状态标识设置为第一标识,第一标识用于指示禁止对相应映射项中的物理页进行重映射。
可选地,重映射模块503主要用于:
根据所应用程序的应用标识,从第一映射关系中获取第一虚拟内存区域的区域信息;
当通过第一虚拟内存区域的区域信息进行数据访问触发缺页处理流程时,根据第一虚拟内存区域的区域信息获取存储的第一物理内存区域的物理页;
将第一物理内存区域的物理页重映射至第一虚拟内存区域,以根据第一物理内存区域内存储的关键数据恢复应用程序的运行状态。
可选地,第一映射关系还包括每个区域信息对应的应用程序的进程标识,第二映射关系还包括每个关键区域对应的进程标识,该装置500还用于:
根据应用程序的应用标识所在的第一映射项包括的进程标识,从第二映射关系中确定与第一映射项包含的进程标识相同的第二映射项;
将第一映射项和第二映射项中包含的进程标识均更新为目标进程标识,目标进程标识是指应用程序恢复启动后的进程的标识;
重映射模块503主要用于:
根据第一虚拟内存区域的区域信息和目标进程标识,从第二映射关系中获取第一物理内存区域的物理页。
可选地,该装置500还用于:
将第二映射项的状态标识修改为第二标识,第二标识用于指示允许对相应映射项中的物理页进行重映射。
可选地,重映射模块503主要用于:
对第一物理内存区域的物理页的引用计数、反向映射信息、状态信息、全局统计信息以及控制结构关联关系进行校正;
将第一物理内存区域的物理页添加至目标进程页表中,目标进程页表是指应用程序的进程对应的进程页表。
综上所述,在本申请实施例中,由于在应用程序运行的过程中,已经存储了第一物理内存区域对应的第一虚拟内存区域的管理信息,并且,在应用程序异常退出时,通过维持第一物理内存区域对应的物理页来保存该物理页并避免该物理页被回收,因此,当应用程序恢复启动时,通过第一虚拟内存区域的管理信息能够重新建立第一虚拟内存区域与第一物理内存之间的映射关系,这样,应用程序就能够读取第一物理内存中存储的关键数据来恢复运行状态,相较于备份至磁盘文件的方法,本申请实施例无需进行数据备份,能够保证关键数据的完整性,且在应用程序启动时,从物理内存读取数据的速度要快于从磁盘文件中读取数据的速度,加快了应用程序的恢复运行速度。
需要说明的是:上述实施例提供的恢复应用程序的运行状态的装置在恢复应用程序的运行状态时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的恢复应用程序的运行状态的装置与恢复应用程序的运行状态的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(Digital Versatile Disc,DVD))、或者半导体介质(例如:固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
应当理解的是,本文提及的“至少一个”是指一个或多个,“多个”是指两个或两个以上。在本文的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
以上所述为本申请实施例提供的实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。

Claims (19)

1.一种恢复应用程序的运行状态的方法,其特征在于,所述方法包括:
在应用程序正常运行过程中,存储第一物理内存区域对应的第一虚拟内存区域的管理信息,所述第一物理内存区域用于存储所述应用程序运行过程中的关键数据;
当检测到所述应用程序异常退出时,维持所述第一物理内存区域的物理页;
当检测到所述应用程序启动时,根据所述第一虚拟内存区域的管理信息,将所述第一物理内存区域的物理页重映射至所述第一虚拟内存区域,以恢复所述应用程序的运行状态。
2.根据权利要求1所述的方法,其特征在于,所述第一虚拟内存区域的管理信息包括所述第一虚拟内存区域的区域信息和所述应用程序的应用标识,所述存储第一物理内存区域对应的第一虚拟内存区域的管理信息,包括:
将所述第一虚拟内存区域的区域信息和所述应用程序的应用标识对应存储在第一映射关系中,所述第一映射关系包括多个区域信息和每个区域信息对应的应用程序的应用标识。
3.根据权利要求2所述的方法,其特征在于,所述第一虚拟内存区域有多个,所述当检测到所述应用程序异常退出时,所述方法还包括:
根据多个所述第一虚拟内存区域的区域信息,对多个所述第一虚拟内存区域进行页对齐处理;
对页对齐后的多个所述第一虚拟内存区域进行合并处理,得到第一关键区域;
将所述第一关键区域的区域信息存储至第二映射关系,所述第二映射关系包括多个映射项,每个映射项包括一个关键区域的区域信息。
4.根据权利要求2或3所述的方法,其特征在于,所述维持所述第一物理内存区域的物理页,包括:
获取第二虚拟内存区域的区域信息,所述第二虚拟内存区域是指所述应用程序对应的当前正在解映射的虚拟内存区域;
从存储的第二映射关系中,查找与所述第二虚拟内存区域的区域信息匹配的目标映射项,所述第二映射关系包括多个映射项,每个映射项包括一个关键区域的区域信息;
如果所述第二映射关系中存在与所述第二虚拟内存区域的区域信息匹配的目标映射项,则获取所述第二虚拟内存区域对应的物理页,将所述第二虚拟内存区域对应的物理页作为所述第一物理内存区域的物理页;
增加所述第一物理内存区域的物理页的引用计数;
将所述第一物理内存区域的物理页添加至所述目标映射项中。
5.根据权利要求4所述的方法,其特征在于,所述将所述第一物理内存区域的物理页添加至所述目标映射项之后,还包括:
将所述目标映射项对应的状态标识设置为第一标识,所述第一标识用于指示禁止对相应映射项中的物理页进行重映射。
6.根据权利要求4所述的方法,其特征在于,所述根据所述第一虚拟内存区域的管理信息,将所述第一物理内存区域对应的物理页重映射至所述第一虚拟内存区域,以恢复所述应用程序的运行状态,包括:
根据所述应用程序的应用标识,从所述第一映射关系中获取所述第一虚拟内存区域的区域信息;
当通过所述第一虚拟内存区域的区域信息进行数据访问触发缺页处理流程时,根据所述第一虚拟内存区域的区域信息获取存储的所述第一物理内存区域的物理页;
将所述第一物理内存区域的物理页重映射至所述第一虚拟内存区域,以根据所述第一物理内存区域内存储的所述关键数据恢复所述应用程序的运行状态。
7.根据权利要求6所述的方法,其特征在于,所述第一映射关系还包括每个区域信息对应的应用程序的进程标识,所述第二映射关系还包括每个关键区域对应的进程标识,所述方法还包括:
根据所述应用程序的应用标识所在的第一映射项包括的进程标识,从所述第二映射关系中确定与所述第一映射项包含的进程标识相同的第二映射项;
将所述第一映射项和所述第二映射项中包含的进程标识均更新为目标进程标识,所述目标进程标识是指应用程序恢复启动后的进程的标识;
所述根据所述第一虚拟内存区域的区域信息获取存储的所述第一物理内存区域的物理页,包括:
根据所述第一虚拟内存区域的区域信息和所述目标进程标识,从所述第二映射关系中获取所述第一物理内存区域的物理页。
8.根据权利要求7所述的方法,其特征在于,所述将所述第一映射项和所述第二映射项中包含的进程标识均更新为目标进程标识之后,还包括:
将所述第二映射项的状态标识修改为第二标识,所述第二标识用于指示允许对相应映射项中的物理页进行重映射。
9.根据权利要求6-8任一所述的方法,其特征在于,所述将第一物理内存区域的物理页重映射至所述第一虚拟内存区域,包括:
对所述第一物理内存区域的物理页的引用计数、反向映射信息、状态信息、全局统计信息以及控制结构关联关系进行校正;
将所述第一物理内存区域的物理页添加至所述目标进程页表中,所述目标进程页表是指所述应用程序的进程对应的进程页表。
10.一种恢复应用程序的运行状态的装置,其特征在于,所述装置包括:
管理模块,用于在应用程序正常运行过程中,存储第一物理内存区域对应的第一虚拟内存区域的管理信息,所述第一物理内存区域用于存储所述应用程序运行过程中的关键数据;
维持模块,用于当检测到所述应用程序异常退出时,维持所述第一物理内存区域的物理页;
重映射模块,用于当检测到所述应用程序启动时,根据所述第一虚拟内存区域的管理信息,将所述第一物理内存区域的物理页重映射至所述第一虚拟内存区域,以恢复所述应用程序的运行状态。
11.根据权利要求10所述的装置,其特征在于,所述第一虚拟内存区域的管理信息包括所述第一虚拟内存区域的区域信息和所述应用程序的应用标识,所述管理模块主要用于:
将所述第一虚拟内存区域的区域信息和所述应用程序的应用标识对应存储在第一映射关系中,所述第一映射关系包括多个区域信息和每个区域信息对应的应用程序的应用标识。
12.根据权利要求11所述的装置,其特征在于,所述第一虚拟内存区域有多个,所述当检测到所述应用程序异常退出时,所述维持模块还用于:
根据多个所述第一虚拟内存区域的区域信息,对多个所述第一虚拟内存区域进行页对齐处理;
对页对齐后的多个所述第一虚拟内存区域进行合并处理,得到第一关键区域;
将所述第一关键区域的区域信息存储至第二映射关系,所述第二映射关系包括多个映射项,每个映射项包括一个关键区域的区域信息。
13.根据权利要求11或12所述的装置,其特征在于,所述维持模块主要用于:
获取第二虚拟内存区域的区域信息,所述第二虚拟内存区域是指所述应用程序对应的当前正在解映射的虚拟内存区域;
从存储的第二映射关系中,查找与所述第二虚拟内存区域的区域信息匹配的目标映射项,所述第二映射关系包括多个映射项,每个映射项包括一个关键区域的区域信息;
如果所述第二映射关系中存在与所述第二虚拟内存区域的区域信息匹配的目标映射项,则获取所述第二虚拟内存区域对应的物理页,将所述第二虚拟内存区域对应的物理页作为所述第一物理内存区域的物理页;
增加所述第一物理内存区域的物理页的引用计数;
将所述第一物理内存区域的物理页添加至所述目标映射项中。
14.根据权利要求13所述的装置,其特征在于,所述维持模块还用于:
将所述目标映射项对应的状态标识设置为第一标识,所述第一标识用于指示禁止对相应映射项中的物理页进行重映射。
15.根据权利要求13所述的装置,其特征在于,所述重映射模块主要用于:
根据所述应用程序的应用标识,从所述第一映射关系中获取所述第一虚拟内存区域的区域信息;
当通过所述第一虚拟内存区域的区域信息进行数据访问触发缺页处理流程时,根据所述第一虚拟内存区域的区域信息获取存储的所述第一物理内存区域的物理页;
将所述第一物理内存区域的物理页重映射至所述第一虚拟内存区域,以根据所述第一物理内存区域内存储的所述关键数据恢复所述应用程序的运行状态。
16.根据权利要求15所述的装置,其特征在于,所述第一映射关系还包括每个区域信息对应的应用程序的进程标识,所述第二映射关系还包括每个关键区域对应的进程标识,所述装置还用于:
根据所述应用程序的应用标识所在的第一映射项包括的进程标识,从所述第二映射关系中确定与所述第一映射项包含的进程标识相同的第二映射项;
将所述第一映射项和所述第二映射项中包含的进程标识均更新为目标进程标识,所述目标进程标识是指应用程序恢复启动后的进程的标识;
所述重映射模块主要用于:
根据所述第一虚拟内存区域的区域信息和所述目标进程标识,从所述第二映射关系中获取所述第一物理内存区域的物理页。
17.根据权利要求16所述的装置,其特征在于,所述装置还用于:
将所述第二映射项的状态标识修改为第二标识,所述第二标识用于指示允许对相应映射项中的物理页进行重映射。
18.根据权利要求15-17任一所述的装置,其特征在于,所述重映射模块主要用于:
对所述第一物理内存区域的物理页的引用计数、反向映射信息、状态信息、全局统计信息以及控制结构关联关系进行校正;
将所述第一物理内存区域的物理页添加至所述目标进程页表中,所述目标进程页表是指所述应用程序的进程对应的进程页表。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得所述计算机执行权利要求1-9任一所述的方法。
CN202010598055.2A 2020-06-28 2020-06-28 恢复应用程序的运行状态的方法、装置及存储介质 Active CN113849339B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202010598055.2A CN113849339B (zh) 2020-06-28 2020-06-28 恢复应用程序的运行状态的方法、装置及存储介质
PCT/CN2021/095783 WO2022001504A1 (zh) 2020-06-28 2021-05-25 恢复应用程序的运行状态的方法、装置及存储介质
EP21833916.6A EP4170500A4 (en) 2020-06-28 2021-05-25 METHOD AND APPARATUS FOR RESTORING AN OPERATIONAL STATE OF AN APPLICATION PROGRAM, AND STORAGE MEDIUM
US18/146,614 US20230136649A1 (en) 2020-06-28 2022-12-27 Method and apparatus for restoring running status of application, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010598055.2A CN113849339B (zh) 2020-06-28 2020-06-28 恢复应用程序的运行状态的方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN113849339A true CN113849339A (zh) 2021-12-28
CN113849339B CN113849339B (zh) 2023-07-11

Family

ID=78972158

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010598055.2A Active CN113849339B (zh) 2020-06-28 2020-06-28 恢复应用程序的运行状态的方法、装置及存储介质

Country Status (4)

Country Link
US (1) US20230136649A1 (zh)
EP (1) EP4170500A4 (zh)
CN (1) CN113849339B (zh)
WO (1) WO2022001504A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114781322A (zh) * 2022-04-24 2022-07-22 苏州睿芯集成电路科技有限公司 Cpu芯片仿真加速中针对无mmu环境的内存状态恢复方法
CN114781323A (zh) * 2022-04-24 2022-07-22 苏州睿芯集成电路科技有限公司 Cpu芯片仿真加速中针对有mmu环境的内存状态恢复方法
CN114816862A (zh) * 2022-06-27 2022-07-29 统信软件技术有限公司 数据恢复方法和装置、计算设备和可读存储介质
CN115129505A (zh) * 2022-09-02 2022-09-30 荣耀终端有限公司 应用程序异常退出的处理方法及装置
CN116107668A (zh) * 2023-04-13 2023-05-12 紫光同芯微电子有限公司 一种应用程序运行方法及其操作***

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116627544B (zh) * 2023-07-24 2023-10-31 中化现代农业有限公司 页面启动方法、装置、电子设备和存储介质

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662799A (zh) * 2012-04-13 2012-09-12 华为技术有限公司 数据备份的方法、服务器及热备份***
CN103116532A (zh) * 2011-11-16 2013-05-22 通用汽车环球科技运作有限责任公司 从嵌入式软件***中的堆栈损坏故障中恢复
US8458422B1 (en) * 2005-12-22 2013-06-04 Oracle America, Inc. Policy based creation of export sets and backup media
CN103699498A (zh) * 2013-11-25 2014-04-02 南京大学 一种应用程序关键数据保护***及其保护方法
US9256496B1 (en) * 2008-12-15 2016-02-09 Open Invention Network, Llc System and method for hybrid kernel—and user-space incremental and full checkpointing
CN106203091A (zh) * 2016-06-30 2016-12-07 北京奇虎科技有限公司 一种虚拟机逃逸检测方法及装置
US9658925B1 (en) * 2011-10-31 2017-05-23 Veritas Technologies Systems and methods for restoring application data
CN107315658A (zh) * 2017-06-26 2017-11-03 珠海市魅族科技有限公司 一种数据备份方法及装置、计算机装置及可读存储介质
CN107357704A (zh) * 2017-06-27 2017-11-17 努比亚技术有限公司 一种应用程序检测方法、终端及计算机可读存储介质
US20180032409A1 (en) * 2016-07-26 2018-02-01 Netapp, Inc. Backup and recovery of application data of an application executing in a virtual machine
WO2018118040A1 (en) * 2016-12-21 2018-06-28 Hewlett-Packard Development Company, L.P. Persistent memory updating
CN111274503A (zh) * 2020-01-20 2020-06-12 北京无限光场科技有限公司 数据处理的方法、装置、电子设备及计算机可读介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995012848A1 (en) * 1993-11-03 1995-05-11 Eo, Inc. Recovery boot process
US7676554B1 (en) * 2005-09-15 2010-03-09 Juniper Networks, Inc. Network acceleration device having persistent in-memory cache
US8819676B2 (en) * 2007-10-30 2014-08-26 Vmware, Inc. Transparent memory-mapped emulation of I/O calls
CN109408149B (zh) * 2018-10-30 2022-02-25 青岛海信传媒网络技术有限公司 应用程序的启动方法、装置、设备以及存储介质
CN109710185B (zh) * 2018-12-19 2021-12-21 麒麟合盛网络技术股份有限公司 数据处理方法及装置
CN111008044A (zh) * 2019-11-29 2020-04-14 支付宝实验室(新加坡)有限公司 一种应用程序的恢复方法、***以及电子设备

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8458422B1 (en) * 2005-12-22 2013-06-04 Oracle America, Inc. Policy based creation of export sets and backup media
US9256496B1 (en) * 2008-12-15 2016-02-09 Open Invention Network, Llc System and method for hybrid kernel—and user-space incremental and full checkpointing
US9658925B1 (en) * 2011-10-31 2017-05-23 Veritas Technologies Systems and methods for restoring application data
CN103116532A (zh) * 2011-11-16 2013-05-22 通用汽车环球科技运作有限责任公司 从嵌入式软件***中的堆栈损坏故障中恢复
CN102662799A (zh) * 2012-04-13 2012-09-12 华为技术有限公司 数据备份的方法、服务器及热备份***
CN103699498A (zh) * 2013-11-25 2014-04-02 南京大学 一种应用程序关键数据保护***及其保护方法
CN106203091A (zh) * 2016-06-30 2016-12-07 北京奇虎科技有限公司 一种虚拟机逃逸检测方法及装置
US20180032409A1 (en) * 2016-07-26 2018-02-01 Netapp, Inc. Backup and recovery of application data of an application executing in a virtual machine
WO2018118040A1 (en) * 2016-12-21 2018-06-28 Hewlett-Packard Development Company, L.P. Persistent memory updating
CN107315658A (zh) * 2017-06-26 2017-11-03 珠海市魅族科技有限公司 一种数据备份方法及装置、计算机装置及可读存储介质
CN107357704A (zh) * 2017-06-27 2017-11-17 努比亚技术有限公司 一种应用程序检测方法、终端及计算机可读存储介质
CN111274503A (zh) * 2020-01-20 2020-06-12 北京无限光场科技有限公司 数据处理的方法、装置、电子设备及计算机可读介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杨朝树 等: "" 持久化内存文件***的磨损攻击与防御机制"", 《软件学报》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114781322A (zh) * 2022-04-24 2022-07-22 苏州睿芯集成电路科技有限公司 Cpu芯片仿真加速中针对无mmu环境的内存状态恢复方法
CN114781323A (zh) * 2022-04-24 2022-07-22 苏州睿芯集成电路科技有限公司 Cpu芯片仿真加速中针对有mmu环境的内存状态恢复方法
CN114781323B (zh) * 2022-04-24 2023-08-18 苏州睿芯集成电路科技有限公司 Cpu芯片仿真加速中针对有mmu环境的内存状态恢复方法
CN114816862A (zh) * 2022-06-27 2022-07-29 统信软件技术有限公司 数据恢复方法和装置、计算设备和可读存储介质
CN114816862B (zh) * 2022-06-27 2022-09-27 统信软件技术有限公司 数据恢复方法和装置、计算设备和可读存储介质
CN115129505A (zh) * 2022-09-02 2022-09-30 荣耀终端有限公司 应用程序异常退出的处理方法及装置
CN116107668A (zh) * 2023-04-13 2023-05-12 紫光同芯微电子有限公司 一种应用程序运行方法及其操作***
CN116107668B (zh) * 2023-04-13 2023-08-15 紫光同芯微电子有限公司 一种应用程序运行方法及其***

Also Published As

Publication number Publication date
CN113849339B (zh) 2023-07-11
US20230136649A1 (en) 2023-05-04
EP4170500A1 (en) 2023-04-26
WO2022001504A1 (zh) 2022-01-06
EP4170500A4 (en) 2024-03-20

Similar Documents

Publication Publication Date Title
CN113849339B (zh) 恢复应用程序的运行状态的方法、装置及存储介质
US11586673B2 (en) Data writing and reading method and apparatus, and cloud storage system
US20200320036A1 (en) Data unit cloning in memory-based file systems
KR20160124794A (ko) Dram 결함들의 커널 마스킹
EP3639144B1 (en) Memory management in non-volatile memory
CN110399333B (zh) 删除快照的方法、设备和计算机程序产品
CN113515501B (zh) 非易失性内存数据库管理***恢复方法、装置和电子设备
CN110780811B (zh) 数据保护方法、装置及存储介质
CN109726264B (zh) 用于索引信息更新的方法、装置、设备和介质
CN109753378A (zh) 一种内存故障的隔离方法、装置、***及可读存储介质
CN110019063B (zh) 计算节点数据容灾回放的方法、终端设备及存储介质
CN112650692A (zh) 堆内存分配方法、装置及存储介质
CN107729182B (zh) 数据存储和访问的方法及装置
CN112115521B (zh) 数据访问方法及装置
CN112612537A (zh) 配置数据缓存方法、装置、设备及存储介质
CN117112522A (zh) 并发进程日志管理方法、装置、设备和存储介质
CN111400248A (zh) 写数据、恢复数据的方法及文件***
US11803469B2 (en) Storing data in a log-structured format in a two-tier storage system
CN106557263B (zh) 用于在数据块删除中检查伪共享的方法及设备
CN112416860B (zh) 数据回滚更新方法、装置、计算机设备和存储介质
US9471409B2 (en) Processing of PDSE extended sharing violations among sysplexes with a shared DASD
CN114489480A (zh) 高并发存储数据的方法及***
CN112559457A (zh) 数据访问方法及装置
CN110096389A (zh) 一种数据库的启动方法、装置、设备和存储介质
US11385826B2 (en) Method, electronic device and computer program product for restoring orphan block via replication

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