CN115454661A - 一种目标应用的保活方法、装置、设备及介质 - Google Patents
一种目标应用的保活方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115454661A CN115454661A CN202211154005.0A CN202211154005A CN115454661A CN 115454661 A CN115454661 A CN 115454661A CN 202211154005 A CN202211154005 A CN 202211154005A CN 115454661 A CN115454661 A CN 115454661A
- Authority
- CN
- China
- Prior art keywords
- application
- target
- processes
- sub
- exclusive lock
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种目标应用的保活方法、装置、设备及介质。该方法包括:启用目标应用的至少两个应用进程,并创建各应用进程的应用子进程。上述各目标进程均设有唯一的排他锁权限且任一目标进程与余下目标进程中的至少一个进程互为关联进程,这样,通过在目标进程启用过程中持续请求其关联进程的排他锁权限以确定关联进程是否被系统清除。当任一目标进程获取了关联进程的排他锁权限则说明关联进程被系统清除,此时通过启用关联进程的标定进程使目标应用的应用进程重新被拉起,实现目标应用的保活。
Description
技术领域
本申请实施例涉及计算机技术领域,具体涉及一种目标应用的保活方法、装置、设备及介质。
背景技术
随着各类应用(Application,APP)的蓬勃发展,很多事务都可以在如手机、平板电脑等终端设备上通过软件进行操作,人们日常使用的软件也越来越多。因此在使用终端设备的过程中,用户经常需要在各种软件中进行切换。而各类应用自身的不断更新升级也使其占用内存越来越大。为降低终端设备的功耗,安卓系统(Android)对应用程序设有强杀机制,当安卓设备运行过程中监测到内存占用过多时即会触发强杀机制对后台运行的进程强制清除。
相关技术中多通过如添加系统内存清理白名单、控制后台进程播放无声音乐、将后台进程伪装成前台进程、以及接收系统广播唤醒等方式使应用程序的进程能够避免被系统强杀或在被系统强杀后能够自动重启进程,以此实现应用程序的保活。但随着安卓版本的不断更新,上述保活方式在部分高版本的安卓系统中会存在失效的情况。
发明内容
本申请实施例提供一种目标应用的保活方法、装置、设备及介质,用于对后台运行的目标应用进行保活,避免目标应用被强杀机制清除。
为达到上述目的,本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供一种目标应用的保活方法,所述方法包括:
启用目标应用的至少两个应用进程,并创建各所述应用进程的应用子进程;
控制所述目标进程请求关联进程的排它锁权限,并监测所述目标进程是否持有所述关联进程的排他锁权限;其中,所述目标进程为各所述应用进程和各所述应用子进程,各所述目标进程均持有唯一的排他锁权限,任一目标进程与余下目标进程中的至少一个进程互为关联进程;
若确定所述目标进程持有所述关联进程的排他锁权限,则启用所述关联进程的标定进程使所述目标应用保活;其中,所述目标进程中任一应用进程的标定进程为所述应用进程自身,任一应用子进程的标定进程为所述应用子进程对应的应用进程。
在一些可能的实施例中,所述创建各所述应用进程的应用子进程,包括:
创建所述应用进程的并行进程;
将所述并行进程作为父进程,通过进程创建函数创建所述并行进程的子进程;并将所述子进程作为所述应用进程的应用子进程。
在一些可能的实施例中,所述方法还包括:
创建待处理进程的并行进程;其中,所述待处理进程为以所述应用进程创建的并行进程的子进程;
将所述并行进程作为父进程,并通过进程创建函数创建所述并行进程的子进程;并将所述待处理进程和所述子进程作为所述应用进程的应用子进程。
在一些可能的实施例中,所述方法还包括:
在创建所述并行进程的子进程之后,清除所述并行进程以使所述子进程与所述应用进程处于不同进程组。
在一些可能的实施例中,通过下述方式启用所述关联进程的标定进程:
在监测到所述目标进程持有所述关联进程的排他锁权限之后,通过通信机制Binder将封装有所述标定进程的标识信息的进程包发送给应用管理系统;
控制所述应用管理系统启用所述标定进程。
在一些可能的实施例中,所述方法还包括:
启用所述关联进程的标定进程之后,获取所述目标应用内未被清除的各所述目标进程;
清除各所述目标进程当前持有的排他锁权限,并重新赋予各所述目标进程唯一的排他锁权限。
在一些可能的实施例中,所述关联进程是根据下述任一方式确定的:
方式一,将各所述应用进程两两组成应用进程对;其中,不同应用进程对内的应用进程各不相同;
针对任一应用进程对,将所述应用进程对内的任一应用进程作为另一应用进程的关联进程,并将所述任一应用进程的应用子进程作为所述另一应用进程的应用子进程的关联进程;
方式二,针对所述目标进程中的任一待关联进程,将所述待关联进程之外的余下待关联进程作为所述待关联进程的关联进程;其中,所述待关联进程为或各所述应用子进程。
本申请实施例提供了一种目标应用的保活方法,该方法包括:启用目标应用的至少两个应用进程,并创建各应用进程的应用子进程。上述各目标进程均设有唯一的排他锁权限且任一目标进程与余下目标进程中的至少一个进程互为关联进程,这样,通过在目标进程启用过程中持续请求其关联进程的排他锁权限以确定关联进程是否被系统清除。当任一目标进程获取了关联进程的排他锁权限则说明关联进程被系统清除,此时通过启用关联进程的标定进程使目标应用的应用进程重新被拉起,实现目标应用的保活。
第二方面,本申请实施例提供了一种目标应用的保活装置,所述装置包括:
进程创建模块,被配置为执行启用目标应用的至少两个应用进程,并创建各所述应用进程的应用子进程;
权限请求模块,被配置为执行控制所述目标进程请求关联进程的排它锁权限,并监测所述目标进程是否持有所述关联进程的排他锁权限;其中,所述目标进程为各所述应用进程和各所述应用子进程,各所述目标进程均持有唯一的排他锁权限,任一目标进程与余下目标进程中的至少一个进程互为关联进程;
进程启用模块,被配置执行若确定所述目标进程持有所述关联进程的排他锁权限,则启用所述关联进程的标定进程使所述目标应用保活;其中,所述目标进程中任一应用进程的标定进程为所述应用进程自身,任一应用子进程的标定进程为所述应用子进程对应的应用进程。
在一些可能的实施例中,执行所述创建各所述应用进程的应用子进程,所述进程创建模块被配置为:
创建所述应用进程的并行进程;
将所述并行进程作为父进程,通过进程创建函数创建所述并行进程的子进程;并将所述子进程作为所述应用进程的应用子进程。
在一些可能的实施例中,所述进程创建模块还被配置为:
创建待处理进程的并行进程;其中,所述待处理进程为以所述应用进程创建的并行进程的子进程;
将所述并行进程作为父进程,并通过进程创建函数创建所述并行进程的子进程;并将所述待处理进程和所述子进程作为所述应用进程的应用子进程。
在一些可能的实施例中,所述进程创建模块还被配置为:
在创建所述并行进程的子进程之后,清除所述并行进程以使所述子进程与所述应用进程处于不同进程组。
在一些可能的实施例中,通过下述方式启用所述关联进程的标定进程:
在监测到所述目标进程持有所述关联进程的排他锁权限之后,通过通信机制Binder将封装有所述标定进程的标识信息的进程包发送给应用管理系统;
控制所述应用管理系统启用所述标定进程。
在一些可能的实施例中,所述进程启用模块还被配置为:
启用所述关联进程的标定进程之后,获取所述目标应用内未被清除的各所述目标进程;
清除各所述目标进程当前持有的排他锁权限,并重新赋予各所述目标进程唯一的排他锁权限。
在一些可能的实施例中,所述关联进程是根据下述任一方式确定的:
方式一,将各所述应用进程两两组成应用进程对;其中,不同应用进程对内的应用进程各不相同;
针对任一应用进程对,将所述应用进程对内的任一应用进程作为另一应用进程的关联进程,并将所述任一应用进程的应用子进程作为所述另一应用进程的应用子进程的关联进程;
方式二,针对所述目标进程中的任一待关联进程,将所述待关联进程之外的余下待关联进程作为所述待关联进程的关联进程;其中,所述待关联进程为或各所述应用子进程。
第三方面,本申请实施例还提供了一种电子设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器实现第一方面的业务系统升级方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现第一方面的业务系统升级方法。
第五方面,本申请实施例一种计算机程序产品,其包括计算机指令,所述计算机指令存储在计算机可读存储介质中;当计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令时,所述处理器执行该计算机指令,使得所述计算机设备执行上述任一种业务系统升级方法的步骤。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的传统应用保活方式示意图;
图2为本申请实施例提供的Linux的文件锁示意图;
图3为本申请实施例提供的一种目标应用的保活方法整体流程图;
图4为本申请实施例提供的获取应用子程序示意图;
图5为本申请实施例提供的获取应用子程序的另一示意图;
图6为本申请实施例提供的获取应用子程序的另一示意图;
图7为本申请实施例提供的排他锁权限示意图;
图8为本申请实施例提供的关联进程的获取方式示意图;
图9为本申请实施例提供的关联进程示意图;
图10为本申请实施例提供的关联进程的另一示意图;
图11为本申请实施例提供的目标应用的保活流程示意图;
图12为本申请实施例提供的双保险示意图;
图13为本申请实施例提供的一种目标应用的保活装置1300的结构图;
图14为本申请实施例提供的一种电子设备的结构图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以按不同于此处的顺序执行所示出或描述的步骤。
本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请中的“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本申请实施例不做限制。
前文已提及,安卓系统对应用程序设有强杀机制,当安卓设备运行过程中监测到内存占用过多时即会触发强杀机制对后台运行的进程强制清除。
该强杀机制是通过循环调用安卓原生的DoKillProcessGroupOnce方法将后台进程清除40次后等待5毫秒。也就是说5×40=200毫秒结束后,无论后台是否仍存在进程均会结束对后台进程的清除。基于此,现有的保活技术主要分为两大类,一类是通过添加系统内存清理的白名单、控制后台进程播放无声音乐、将后台进程伪装成强台进程等方式避免进程被系统强杀。然而随着安卓系统的版本更新,该类保活方式逐渐在高版本的安卓系统中失效。
另一类则是在进程被系统强杀后交由守护进程拉起,以使强杀机制执行的200毫秒之后应用程序仍存在进程存活。该类方式的实现主要如图1所示,通过命令Am.jar创建一个虚拟机(Java Virtual Machine,JVM)进程作为守护进程,然后为目标应用启动一个ART虚拟机,接着通过安卓原生的getSerVice方法获取应用管理系统(ApplicationManagement System,AMS)的安卓通信机制Binder代理,最后通过调用Binder代理的trans方法使进程间的通信进入AMS中,继而在应用进程被清除后交互启用新的应用进程,使应用程序在上述强杀的200毫秒结束后仍存在进程。然而这种保活方式需要调用jar包、使用代理等方式,耗时较长,存在应用进程和守护进程均被强杀,进而无法通过守护进程拉起应用进程的可能。
为解决上述问题,本申请的发明构思为:启用目标应用的至少两个应用进程,并创建各应用进程的应用子进程。上述各目标进程均设有唯一的排他锁权限且任一目标进程与余下目标进程中的至少一个进程互为关联进程,这样,通过在目标进程启用过程中持续请求其关联进程的排他锁权限以确定关联进程是否被系统清除。当任一目标进程获取了关联进程的排他锁权限则说明关联进程被系统清除,此时通过启用关联进程的标定进程使目标应用的应用进程重新被拉起,实现目标应用的保活。
为便于理解本申请的技术方案,在介绍本申请实施例提供的一种目标应用的保活方法之前,首先对本申请技术方案涉及的两个函数fork()和flock()进行介绍。
fork()函数是Linux操作系统中创建新进程的函数命令,通过对当前进程调用fork()函数能够创建出与当前进程几乎完全相同的一个新进程,这个新进程创建后跟当前进程并行运行。
flock()函数是Linux文件锁,用于在多个进程同时操作同一个文件时,通过加锁机制以保证文件数据的完整性。flock()函数使用场景之一便是用于检测进程是否存在。需要说明的是,flock()属于建议性锁,而非强制性锁。即,进程可以直接操作正被另一个进程用flock()锁住的文件,原因在于flock()只检测文件是否被加锁,但内核并不会强制阻塞其他进程的读写操作略。
具体如图2所示,Linux中的文件锁包括共享锁LOCK_SH、排他锁LOCK_EX和解锁LOCK_UN三种。其中共享锁用于使同一时间运行的多个进程同时持有该锁权限,排他锁则只允许一个进程持有该锁权限,而解锁则用于移除进程的文件当前持有的全部锁。本申请中涉及的文件锁上述排他锁。
接下来对本申请技术方案进行介绍,图3示出了本申请实施例提供的一种目标应用的保活方法的整体流程,具体包括下述步骤:
步骤301:启用目标应用的至少两个应用进程,并创建各所述应用进程的应用子进程;
实施时,预先选定需要保活的目标应用,并在目标应用启动的同时创建至少两个应用进程P1和P2,创建的应用进程可为系统最高级别的进程。接下来,通过对应用进程进行两次进程创建函数fork()的调用以得到该应用进程对应的应用子进程。
具体的,首先针创建应用进程的并行进程,然后将并行进程作为父进程,通过进程创建函数创建并行进程的子进程;并将子进程作为应用进程的应用子进程。具体可如图4所示,首先对应用进程P1进行一次fork得到应用进程P1的并行进程C10,然后对并行进程C10再次fork得到子进程C11,此时的C11为应用进程P1的应用子进程。
另需说明的是,前文已提及安卓强杀策略是在200毫秒内将进程依次清除,而非一瞬间全部清除。所以只要在所以段时间内尚未被强杀的进程能够在被系统强杀前将已被强杀的进程拉起,反复循环直至200毫秒结束后仍保证一个进程的存活即可通过该进程拉起应用进程从而保证目标应用存活。基于此,创建的进程数量越多越能够避免已被强杀的进程在被其他进程拉起前,其他进程就已经被系统强杀的情况。故此,可在保证内存资源的基础上适当增添应用子进程的数量,以提高目标应用的保活率。
实施时,可创建待处理进程的并行进程,该待处理进程为上述以应用进程创建的并行进程的子进程。以图4示例进行举例,具体如图5所示,在对C10进行fork得到子进程C11后可对C11进行两次fork()函数的调用。具体的,对C11进行一次fork得到C11的并行进程D10,然后对并行进程D10再次fork得到子进程D11,此时的D11和C11均为应用进程P1的应用子进程。
为进一步提高目标应用的保活率,在创建并行进程的子进程之后,可清除并行进程以使子进程与应用进程处于不同进程组。以图4示例进行举例,具体如图6所示。当对应用进程P1进行两次fork得到C10和C11时,P1、C10和C11这三个进程处于同一进程组,此时若释放C11的父进程C10,则进程C11会交由系统进程,此时C11和P1将不再属于同一进程组。
步骤302:控制所述目标进程请求关联进程的排它锁权限,并监测所述目标进程是否持有所述关联进程的排他锁权限;其中,所述目标进程为各所述应用进程和各所述应用子进程,各所述目标进程均持有唯一的排他锁权限,任一目标进程与余下目标进程中的至少一个进程互为关联进程;
本申请实施例中,在对目标应用每创建一个目标进程(包括上述应用进程和应用子进程)的同时,为该目标进程设置一个配有排他锁的对应文件。这样即表征只要该目标进程未被系统强杀则仅有该目标进程能够持有该排他锁权限。
此外,本申请实施例中的任一目标进程与余下目标进程中的至少一个进程互为关联进程,目标进程会在被创建后持续请求关联进程的排他锁权限。以应用进程P1和应用进程P2互为关联进程为例,可如图7所示,应用进程P1持有排他锁1的权限,应用进程P2持有排他锁2的权限。应用进程P1会持续请求排他锁2的权限,相应的应用进程P2也会持续请求排他锁1的权限。这样,在任一进程被系统强杀时,系统会回收其包括文件在内的所有资源,也即释放了排他锁。此时向该排他锁请求权限的进程即会得到该排他锁的持有权限。以上述图7示例来说,假设应用进程P1被系统强杀则应用进程P2会获取排他锁1的权限。
由此,通过为目标进程设置对应的排他锁即可通过监测目标进程是否获取了其关联进程的排他锁权限以确定关联进程是否被系统强杀,并可在关联进行被系统强杀后将其拉起。
步骤303:若确定所述目标进程持有所述关联进程的排他锁权限,则启用所述关联进程的标定进程使所述目标应用保活;其中,所述目标进程中任一应用进程的标定进程为所述应用进程自身,任一应用子进程的标定进程为所述应用子进程对应的应用进程。
本申请实施例中的关联进程的获取方式具体如图8所示,包括下述两种获取方式:
S1,将各应用进程两两组成应用进程对;其中,不同应用进程对内的应用进程各不相同;
针对任一应用进程对,将应用进程对内的任一应用进程作为另一应用进程的关联进程,并将任一应用进程的应用子进程作为另一应用进程的应用子进程的关联进程。
具体如图9所示,假设应用进程包括P1和P2,则P1和P2互为关联进程,应用进程P1对应的应用子进程C1与应用进程P2对应的应用子进程C2互为关联进程;由于在上述方式一中要求不同应用进程对内的各应用进程各不相同,所以若想要扩充新的应用进程,则需要一次性至少增加两个应用进程P3和P4。即图9中示出的P3和P4互为关联进程,P3对应的应用子进程C3和P4对应的应用子进程C4互为关联进程,而P1、P2与P3、P4之间互不监听,且C1、C2与C3、C4之间互不监听。当任何一个目标进程被系统强杀时,与之关联的进程会获取被强杀进程的排他锁权限,此时可由获取权限的进程将被强杀进程拉起。假设应用进程P1被系统强杀,则P1对应的关联进程P2会获取原本P1持有的排他锁1权限,P2在获取排他锁1权限后拉起P1。
方式二,针对目标进程中的任一待关联进程,将待关联进程之外的余下待关联进程作为待关联进程的关联进程;其中,待关联进程为各应用进程或各应用子进程。
即各应用进程之间互为关联进程,且各应用子进程之间互为关联进程。以应用进程距离,如图10所示,假设在目标应用启动后创建了应用进程为P1、P2和P3,分别对应的应用子进程为C1、C2和C3。则这三个应用进程之间互为关联进程,即P1和P2、P2和P3以及P1和P3互为关联进程。并且C1和C2、C2和C3以及C1和C3也互为关联进程。
当任何一个目标进程被系统强杀时,与之关联的另外两个进程中至少会有一个进程会获取被强杀进程的排他锁权限,此时可由获取权限的进程将被强杀进程拉起。假设应用进程P1被系统强杀,则P2和P3中的一个会得到P1对应的排他锁1权限。假设P2得到了排他锁1权限,此时需要通过P2将被强杀的P1拉起,假设在P1拉起过程中P2也被系统强杀,此时P3会获取到排他锁1权限和排他锁2权限,此时由P3分别拉起P1和P2,这样只要拉起一个进程即便自身被系统强杀也会由被拉起的进程重新拉起,进而实现目标应用的保活。
本申请实施例在启用关联进程的标定进程时,通过通信机制Binder将封装有标定进程的标识信息的进程包发送给应用管理系统AMS,然后控制应用管理系统启用标定进程。该流程即通过反射获取Binder引用,并获取通过Parcel封装的标定进程的进程信息。然后通过Binder引用的transact方法直接给AMS发送封装了待启动进程信息的Parcel,以通过AMS启动该标定进程。
上述流程中,目标进程中任一应用进程的标定进程为应用进程自身,任一应用子进程的标定进程为应用子进程对应的应用进程。具体如图11所示,假设目标应用在启动后创建了应用进程P1和P2。首先通过上述步骤301分别对P1和P2进行两次fork,得到P1的应用子进程C1和P2的应用子进程C2。其中,P1持有文件File_P1的排他锁1权限,P2持有文件File_P2的排他锁2权限,C1持有文件File_C1的排他锁3权限,C2持有文件File_C2的排他锁4权限。P1和P2互为关联进程,且C1和C2互为关联进程。通过控制各关联进程间互相监测对方的文件以请求对方当前持有的排他锁权限,这样在任一进程获取其关联进程持有的排他锁权限时则表征该关联进程被系统强杀。
根据系统机制,当应用进程被强杀时其fork出的进程会同时被强杀。以应用进程P1为例,当P1被系统强杀时,P1和C1会同时被清除。P1的关联进程P2会获取到原本P1持有的排他锁1权限,此时触发将封装有P1进程信息的Parcel发送给AMS以通过AMS启动P1,该流程即相当于通过P2将被系统强杀的P1进程拉起。前文已提及,各应用子进程的标定进程为应用子进程对应的应用进程。因而,C1被系统强杀时其关联进程C2在获取C1原本持有的排他锁3权限后,同样触发将封装有P1进程信息的Parcel发送给AMS,以通过AMS启动P1的流程,即便拉起P1之前C2或P2中的任一进程被系统强杀,仍可由余下存活的进程拉起P1,由此每四个进程组成了如图12示出的铁三角双保险,从而保证进程存活率。
在一些可能的实施例中,启用关联进程的标定进程之后,获取目标应用内未被清除的各目标进程。清除各目标进程当前持有的排他锁权限,并重新赋予各目标进程唯一的排他锁权限。
实施时,在每次检测到系统内存在任一进程被拉起后,需要清除当前各进程的排他锁权限,并将原本的排他锁权限进行赋予。以上述图12示例来说,假设P1被强杀后且被拉起前的时刻,P2同时持有排他锁1权限和排他锁2权限。当P1被拉起后假设当前存在P1、P2和C1这三个进程,则清除各进程当前持有的排他锁权限,并重新为P1赋予排他锁1权限,为P2赋予排他锁2权限以及为C1赋予排他锁3权限。相应的,由C1拉起C2后,需再次对尚未被强杀的各进程进行清除持有的排他锁权限,并重新赋予权限的操作。
上述流程通过在目标进程启用过程中,持续请求其关联进程的排他锁权限以确定关联进程是否被系统清除。当任一目标进程获取其关联进程的排他锁权限则说明关联进程被系统清除,此时通过启用关联进程的标定进程使目标应用的应用进程重新被拉起,实现目标应用的保活。
基于相同的发明构思,本申请实施例提供了一种目标应用的保活装置1300,具体如图13所示,包括:
进程创建模块1301,被配置为执行启用目标应用的至少两个应用进程,并创建各所述应用进程的应用子进程;
权限请求模块1302,被配置为执行控制所述目标进程请求关联进程的排它锁权限,并监测所述目标进程是否持有所述关联进程的排他锁权限;其中,所述目标进程为各所述应用进程和各所述应用子进程,各所述目标进程均持有唯一的排他锁权限,任一目标进程与余下目标进程中的至少一个进程互为关联进程;
进程启用模块1303,被配置执行若确定所述目标进程持有所述关联进程的排他锁权限,则启用所述关联进程的标定进程使所述目标应用保活;其中,所述目标进程中任一应用进程的标定进程为所述应用进程自身,任一应用子进程的标定进程为所述应用子进程对应的应用进程。
在一些可能的实施例中,执行所述创建各所述应用进程的应用子进程,所述进程创建模块1301被配置为:
创建所述应用进程的并行进程;
将所述并行进程作为父进程,通过进程创建函数创建所述并行进程的子进程;并将所述子进程作为所述应用进程的应用子进程。
在一些可能的实施例中,所述进程创建模块1301还被配置为:
创建待处理进程的并行进程;其中,所述待处理进程为以所述应用进程创建的并行进程的子进程;
将所述并行进程作为父进程,并通过进程创建函数创建所述并行进程的子进程;并将所述待处理进程和所述子进程作为所述应用进程的应用子进程。
在一些可能的实施例中,所述进程创建模块1301还被配置为:
在创建所述并行进程的子进程之后,清除所述并行进程以使所述子进程与所述应用进程处于不同进程组。
在一些可能的实施例中,通过下述方式启用所述关联进程的标定进程:
在监测到所述目标进程持有所述关联进程的排他锁权限之后,通过通信机制Binder将封装有所述标定进程的标识信息的进程包发送给应用管理系统;
控制所述应用管理系统启用所述标定进程。
在一些可能的实施例中,所述进程启用模块1303还被配置为:
启用所述关联进程的标定进程之后,获取所述目标应用内未被清除的各所述目标进程;
清除各所述目标进程当前持有的排他锁权限,并重新赋予各所述目标进程唯一的排他锁权限。
在一些可能的实施例中,所述关联进程是根据下述任一方式确定的:
方式一,将各所述应用进程两两组成应用进程对;其中,不同应用进程对内的应用进程各不相同;
针对任一应用进程对,将所述应用进程对内的任一应用进程作为另一应用进程的关联进程,并将所述任一应用进程的应用子进程作为所述另一应用进程的应用子进程的关联进程;
方式二,针对所述目标进程中的任一待关联进程,将所述待关联进程之外的余下待关联进程作为所述待关联进程的关联进程;其中,所述待关联进程为或各所述应用子进程。
下面参照图14来描述根据本申请的这种实施方式的电子设备130。图14显示的电子设备130仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图14所示,电子设备130以通用电子设备的形式表现。电子设备130的组件可以包括但不限于:上述至少一个处理器131、上述至少一个存储器132、连接不同系统组件(包括存储器132和处理器131)的总线133。
总线133表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储器132可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)1321和/或高速缓存存储器1322,还可以进一步包括只读存储器(ROM)1323。
存储器132还可以包括具有一组(至少一个)程序模块1324的程序/实用工具1325,这样的程序模块1324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
电子设备130也可以与一个或多个外部设备134(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与电子设备130交互的设备通信,和/或与使得该电子设备130能与一个或多个其它电子设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口135进行。并且,电子设备130还可以通过网络适配器136与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器136通过总线133与用于电子设备130的其它模块通信。应当理解,尽管图中未示出,可以结合电子设备130使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器132,上述指令可由上述装置的处理器131执行以完成上述方法。可选地,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器131执行时实现如本申请提供的一种目标应用的保活方法中的任一方法。
在示例性实施例中,本申请提供的一种目标应用的保活方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的一种目标应用的保活方法中的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的用于目标应用的保活的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在电子设备上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如语言或类似的程序设计语言。程序代码可以完全地在用户电子设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户电子设备上部分在远程电子设备上执行、或者完全在远程电子设备或服务端上执行。在涉及远程电子设备的情形中,远程电子设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户电子设备,或者,可以连接到外部电子设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程图像缩放设备的处理器以产生一个机器,使得通过计算机或其他可编程图像缩放设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程图像缩放设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程图像缩放设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种目标应用的保活方法,其特征在于,所述方法包括:
启用目标应用的至少两个应用进程,并创建各所述应用进程的应用子进程;
控制所述目标进程请求关联进程的排它锁权限,并监测所述目标进程是否持有所述关联进程的排他锁权限;其中,所述目标进程为各所述应用进程和各所述应用子进程,各所述目标进程均持有唯一的排他锁权限,任一目标进程与余下目标进程中的至少一个进程互为关联进程;
若确定所述目标进程持有所述关联进程的排他锁权限,则启用所述关联进程的标定进程使所述目标应用保活;其中,所述目标进程中任一应用进程的标定进程为所述应用进程自身,任一应用子进程的标定进程为所述应用子进程对应的应用进程。
2.根据权利要求1所述的方法,其特征在于,所述创建各所述应用进程的应用子进程,包括:
创建所述应用进程的并行进程;
将所述并行进程作为父进程,通过进程创建函数创建所述并行进程的子进程;并将所述子进程作为所述应用进程的应用子进程。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
创建待处理进程的并行进程;其中,所述待处理进程为以所述应用进程创建的并行进程的子进程;
将所述并行进程作为父进程,并通过进程创建函数创建所述并行进程的子进程;并将所述待处理进程和所述子进程作为所述应用进程的应用子进程。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
在创建所述并行进程的子进程之后,清除所述并行进程以使所述子进程与所述应用进程处于不同进程组。
5.根据权利要求1所述的方法,其特征在于,通过下述方式启用所述关联进程的标定进程:
在监测到所述目标进程持有所述关联进程的排他锁权限之后,通过通信机制Binder将封装有所述标定进程的标识信息的进程包发送给应用管理系统;
控制所述应用管理系统启用所述标定进程。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
启用所述关联进程的标定进程之后,获取所述目标应用内未被清除的各所述目标进程;
清除各所述目标进程当前持有的排他锁权限,并重新赋予各所述目标进程唯一的排他锁权限。
7.根据权利要求1所述的方法,其特征在于,所述关联进程是根据下述任一方式确定的:
方式一,将各所述应用进程两两组成应用进程对;其中,不同应用进程对内的应用进程各不相同;
针对任一应用进程对,将所述应用进程对内的任一应用进程作为另一应用进程的关联进程,并将所述任一应用进程的应用子进程作为所述另一应用进程的应用子进程的关联进程;
方式二,针对所述目标进程中的任一待关联进程,将所述待关联进程之外的余下待关联进程作为所述待关联进程的关联进程;其中,所述待关联进程为或各所述应用子进程。
8.一种目标应用的保活装置,其特征在于,所述装置包括:
进程创建模块,被配置为执行启用目标应用的至少两个应用进程,并创建各所述应用进程的应用子进程;
权限请求模块,被配置为执行控制所述目标进程请求关联进程的排它锁权限,并监测所述目标进程是否持有所述关联进程的排他锁权限;其中,所述目标进程为各所述应用进程和各所述应用子进程,各所述目标进程均持有唯一的排他锁权限,任一目标进程与余下目标进程中的至少一个进程互为关联进程;
进程启用模块,被配置执行若确定所述目标进程持有所述关联进程的排他锁权限,则启用所述关联进程的标定进程使所述目标应用保活;其中,所述目标进程中任一应用进程的标定进程为所述应用进程自身,任一应用子进程的标定进程为所述应用子进程对应的应用进程。
9.一种电子设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行权利要求1-7中任一项所述的方法包括的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211154005.0A CN115454661A (zh) | 2022-09-21 | 2022-09-21 | 一种目标应用的保活方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211154005.0A CN115454661A (zh) | 2022-09-21 | 2022-09-21 | 一种目标应用的保活方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115454661A true CN115454661A (zh) | 2022-12-09 |
Family
ID=84307754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211154005.0A Pending CN115454661A (zh) | 2022-09-21 | 2022-09-21 | 一种目标应用的保活方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115454661A (zh) |
-
2022
- 2022-09-21 CN CN202211154005.0A patent/CN115454661A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109597677B (zh) | 用于处理信息的方法和装置 | |
CN110716748B (zh) | 业务处理方法、装置、计算机可读介质及电子设备 | |
CN102918503B (zh) | 用于更新虚拟机模板的方法、设备和制品 | |
US8117435B2 (en) | Method and system for secured dynamic bios update | |
CN112840321A (zh) | 用于自动化操作管理的应用程序编程接口 | |
US20200192689A1 (en) | Container migration in computing systems | |
US8812683B2 (en) | Service scripting framework | |
US8997047B2 (en) | Dynamically updating code without requiring processes to restart | |
US9275238B2 (en) | Method and apparatus for data security reading | |
US8893272B2 (en) | Method and device for recombining runtime instruction | |
US8973117B2 (en) | Propagating security identity information to components of a composite application | |
US9501344B2 (en) | Data dump for a memory in a data processing system | |
EP4148579A1 (en) | One-sided reliable remote direct memory operations | |
US20150100961A1 (en) | Operating Programs on a Computer Cluster | |
CN111414256A (zh) | 基于麒麟移动操作系统的应用程序进程派生方法、系统及介质 | |
CN110162344B (zh) | 一种隔离限流的方法、装置、计算机设备及可读存储介质 | |
US9330266B2 (en) | Safe data storage method and device | |
CN116028163A (zh) | 一种容器组的动态链接库调度方法、装置及存储介质 | |
CN113360893B (zh) | 基于容器的智能合约执行方法、装置及存储介质 | |
CN115454661A (zh) | 一种目标应用的保活方法、装置、设备及介质 | |
US8849916B2 (en) | Infrastructure management operational workflows | |
CN108270832B (zh) | 一种故障重放方法和装置 | |
CN112564979B (zh) | 构建任务的执行方法、装置、计算机设备和存储介质 | |
US9672083B2 (en) | Operating a program code object in conjunction with an application context | |
CN113296802A (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 |