CN106462455A - 进程接替的方法和装置 - Google Patents
进程接替的方法和装置 Download PDFInfo
- Publication number
- CN106462455A CN106462455A CN201580031040.5A CN201580031040A CN106462455A CN 106462455 A CN106462455 A CN 106462455A CN 201580031040 A CN201580031040 A CN 201580031040A CN 106462455 A CN106462455 A CN 106462455A
- Authority
- CN
- China
- Prior art keywords
- shadow
- subprocess
- flow process
- module
- preset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明实施例公开了进程接替的方法和装置,用于在不额外占用过多的系统内存资源和任务调度资源的情况下,处理故障进程的快速接替。本发明实施例方法包括:父进程为子进程创建影子进程,当该影子进程被创建后,该影子进程处理预置部分流程,并休眠等待唤醒,当该父进程监控到该子进程故障时,该父进程回收该子进程,并唤醒该影子进程,当该影子进程被唤醒后,该影子进程处理接替流程中除预置部分流程外的初始化流程,该影子进程升级为所述子进程。
Description
技术领域
本发明涉及数据处理领域,尤其涉及进程接替的方法和装置。
背景技术
无论是通信软件还是互联网软件,如何能够在系统故障情况下快速恢复业务,这是每个公司和开发人员永久面对的课题。
在各种操作系统中,进程是作为部署在操作系统上的最小粒度的软件能力单元。当然进程也就成为最小的软件能力故障单位,指定的进程异常退出,必然会使得由该进程承载的软件能力的消失,最终体现为软件业务故障。为了在软件业务故障后,软件还能继续正常运行,软件系统的故障接替效率很重要。而一个软件系统的故障接替效率,往往依赖于其关键软件能力进程的故障接替效率,且软件系统的关键进程故障一般情况下由于各种业务场景的约束,是很难通过简单的用户数据迁移来解决的。
目前,主要采用的方法为部署完全相同的1+1双进程,主进程正常运行,备份进程占用相同的系统资源进行备用(standby)。当主进程故障时,由备份进程接替主进程继续处理业务;当备份进程也出现故障时,整个设备业务中断。
在实际应用中,由于额外的增加占用相同系统资源的备份进程,增大了系统的内存开销和任务调度开销,从而降低了软件承载用户数据能力和处理能力。
发明内容
本发明实施例提供了进程接替的方法和装置,用于在不额外占用过多的系统内存资源和任务调度资源的情况下,处理故障进程的快速接替。
本发明实施例第一方面提供了一种进程接替的方法,包括:
父进程为子进程创建影子进程,所述影子进程用于在所述子进程故障时接替所述子进程;
当所述影子进程被创建后,所述影子进程处理预置部分流程,并休眠等待唤醒,所述预置部分流程为在接替流程中预先指定必须处理的一部分初始化流程,所述接替流程为接替所述子进程的全部初始化流程;
当所述父进程监控到所述子进程故障时,所述父进程回收所述子进程,并唤醒所述影子进程;
当所述影子进程被唤醒后,所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程,所述影子进程升级为所述子进程。
结合本发明实施例的第一方面,本发明实施例第一方面的第一种实现方式中,所述影子进程升级为所述子进程的步骤之后还包括:
当所述父进程监控到所述影子进程升级到所述子进程时,触发所述父进程为子进程创建影子进程的步骤。
结合本发明实施例的第一方面或第一方面的第一种实现方式,本发明实施例第一方面的第二种实现方式中,所述父进程为子进程创建影子进程的步骤之后,所述影子进程处理预置部分流程的步骤之前还包括:
所述影子进程加载可执行与可链接格式ELF文件,按照所述ELF文件的描述加载预置部分动态库,所述预置部分动态库为在接替动态库中预先指定的一部分动态库,所述接替动态库为接替所述子进程需要加载的全部动态库;
所述影子进程处理预置部分流程具体包括:
所述影子进程执行所述预置部分动态库中的预处理函数,处理所述预置部分流程;
所述唤醒所述影子进程的步骤之后,所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程的步骤之前还包括:
所述影子进程按照所述ELF文件的描述加载除所述预置部分动态库外的所述接替动态库;
所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程具体包括:
所述影子进程执行所述接替动态库中除所述预处理函数外的其他函数,处理所述接替流程中除所述预置部分流程外的初始化流程。
本发明实施例第二方面提供了一种进程接替的装置,包括:
父进程模块,子进程模块和影子进程模块;
所述父进程模块包括:
子进程创建单元,用于创建所述子进程模块;
影子进程创建单元,用于为所述子进程模块创建所述影子进程模块,所述影子进程模块用于在所述子进程模块故障时接替所述子进程模块;
所述影子进程模块包括:
处理休眠单元,用于当所述影子进程创建单元创建影子进程模块后,处理预置部分流程,并控制所述影子进程模块进入休眠状态等待唤醒,所述预置部分流程为在接替流程中预先指定必须处理的一部分初始化流程,所述接替流程为接替所述子进程模块的全部初始化流程;
所述父进程模块还包括:
监控唤醒单元,用于当监控到所述子进程模块故障时,回收所述子进程模块,并唤醒处于休眠状态的影子进程模块;
所述影子进程模块还包括:
处理升级单元,用于当所述影子进程模块被所述监控唤醒单元唤醒时,处理所述接替流程中除所述预置部分流程外的初始化流程,所述影子进程模块升级为子进程模块。
结合本发明实施例的第二方面,本发明实施例第二方面的第一种实现方式中,所述父进程模块还包括:
触发单元,用于当监控到所述影子进程模块升级到所述子进程模块时,触发所述影子进程创建单元。
结合本发明实施例的第二方面或第二方面的第一种实现方式,本发明实施例第二方面的第二种实现方式中,所述影子进程模块还包括:
第一加载单元,用于加载ELF文件,并按照所述ELF文件的描述加载预置部分动态库,所述预置部分动态库为在接替动态库中预先指定的一部分动态库,所述接替动态库为接替所述子进程模块需要加载的全部动态库;
所述处理休眠单元具体用于,当所述影子进程创建单元创建影子进程模块后,执行所述第一加载单元加载的预置部分动态库中的预处理函数,处理所述预置部分流程,并控制所述影子进程模块进入休眠状态等待唤醒,所述预置部分流程为在接替流程中预先指定必须处理的一部分初始化流程,所述接替流程为接替所述子进程模块的全部初始化流程;
所述影子进程模块还包括:
第二加载单元,用于当所述监控唤醒单元唤醒所述影子进程模块时,按照所述ELF文件的描述加载除所述第一加载单元加载的预置部分动态库外的所述接替动态库;
所述处理升级单元具体用于,当所述影子进程模块被所述监控唤醒单元唤醒时,执行所述第二加载单元加载的接替动态库中除所述预处理函数外的其他函数,处理所述接替流程中除所述预置部分流程外的初始化流程,所述影子进程模块升级为子进程模块。
本发明实施例第三方面提供了一种进程接替的装置,包括:
处理器和存储器;
通过调用所述存储器存储的操作指令,所述处理器用于执行如下操作:
指示父进程创建子进程;
指示所述父进程为所述子进程创建影子进程,所述影子进程用于在所述子进程故障时接替所述子进程;
当所述影子进程被创建后,指示所述影子进程处理预置部分流程,并休眠等待唤醒,所述预置部分流程为在接替流程中预先指定必须处理的一部分初始化流程,所述接替流程为接替所述子进程的全部初始化流程;
当所述父进程监控到所述子进程故障时,指示操作系统内核回收所述子进程,并唤醒所述影子进程;
当所述影子进程被唤醒时,指示所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程,所述影子进程升级为所述子进程。
结合本发明实施例的第三方面,本发明实施例第三方面的第一种实现方式中,所述处理器还执行如下操作:
当所述父进程监控到所述影子进程升级到所述子进程时,触发所述指示所述父进程为所述子进程创建所述影子进程的操作。
结合本发明实施例的第三方面或第三方面的第一种实现方式,本发明实施例第三方面的第二种实现方式中,所述处理器执行所述指示所述影子进程处理预置部分流程的操作之前,所述处理器还执行如下操作:
指示所述影子进程加载ELF文件,并按照所述ELF文件的描述加载预置部分动态库,所述预置部分动态库为在接替动态库中预先指定的一部分动态库,所述接替动态库为接替所述子进程需要加载的全部动态库;
所述处理器执行所述指示所述影子进程处理预置部分流程的操作时,具体执行如下操作:
指示所述影子进程执行加载的所述预置部分动态库中的预处理函数,处理所述预置部分流程;
所述处理器执行所述指示所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程的操作之前,所述处理器还执行如下操作:
指示所述影子进程按照所述ELF文件的描述加载除所述预置部分动态库外的所述接替动态库;
所述处理器执行所述指示所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程的操作时,具体执行如下操作:
指示所述影子进程执行加载的所述接替动态库中除所述预处理函数外的其他函数,处理所述接替流程中除所述预置部分流程外的初始化流程。
从以上技术方案可以看出,本发明实施例具有以下优点:父进程为子进程创建用于在该子进程故障时接替该子进程的影子进程,该影子进程只处理预置部分流程就休眠等待唤醒,该预置部分流程远少于接替子进程需要处理的全部初始化流程,保证了影子进程只占用极少的系统内存资源和任务调度资源,当父进程监控到该子进程故障时,该父进程回收该子进程后,立即唤醒该影子进程,由于该影子进程已经处理了接替该子进程的部分初始化流程,因此,被唤醒后,只需继续处理剩余初始化流程即可快速升级为该子进程,接替故障的子进程继续进行数据处理,保证了子进程故障时消耗最少的时间处理故障接替,实现了在不额外占用过多的系统内存资源和任务调度资源的情况下,处理故障进程的快速接替。
附图说明
图1为本发明实施例中进程接替的方法一个流程示意图;
图2为本发明实施例中进程接替的方法另一个流程示意图;
图3为本发明实施例中进程接替的方法一个场景示意图;
图4为本发明实施例中进程接替的方法另一个场景示意图;
图5为本发明实施例中进程接替的装置一个结构示意图;
图6为本发明实施例中进程接替的装置另一个结构示意图;
图7为本发明实施例中进程接替的装置另一个结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种进程接替的方法和装置,用于在不额外占用过多的操作系统内存资源和任务调度资源的情况下,处理故障进程的快速接替。
需要说明的是,本发明应用的操作系统,既可以为可靠性高的通信软件系统(嵌入式系统),也可以为互联网软件系统,例如Linux操作系统、Android操作系统、Windows操作系统等,此处不作限定,该操作系统可以运行于通信设备的用户业务处理单板,主控单板,也可以运行于互联网功能服务器等,此处不作限定。
请参阅图1,本发明实施例中进程接替的方法一个实施例包括:
101、父进程为子进程创建影子进程,所述影子进程用于在所述子进程故障时接替所述子进程;
可以理解的是,该子进程为该父进程所创建。本步骤中,父进程创建子进程后,还为该子进程创建影子进程,该影子进程用于在该子进程故障时接替该子进程。
可以理解的是,父进程可以为创建的所有子进程创建影子进程,也可以只为创建的子进程中的关键进程创建影子进程,此处不作限定。
102、当所述影子进程被创建后,所述影子进程处理预置部分流程,并休眠等待唤醒,所述预置部分流程为在接替流程中预先指定必须处理的一部分初始化流程,所述接替流程为接替所述子进程的全部初始化流程;
父进程创建影子进程后,该影子进程在elf加载阶段,处理预置部分流程,并休眠等待唤醒,该预置部分流程为在接替流程中预先制定必须处理的一部分初始化流程,该接替流程为接替该子进程的全部初始化流程。
103、当所述父进程监控到所述子进程故障时,所述父进程回收所述子进程,并唤醒所述影子进程;
本步骤中,影子进程处于休眠状态,当该父进程监控到该子进程故障时,该父进程去活该子进程,并回收该子进程,唤醒接替该子进程的影子进程。
104、当所述影子进程被唤醒后,所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程,所述影子进程升级为所述子进程。
当该影子进程被唤醒后,该影子进程处理该接替流程中除该预置部分流程外的初始化流程,完成全部的接替流程后,该影子进程即升级为了该子进程,继续处理该子进程未完成的任务。
本发明实施例中父进程为子进程创建用于在该子进程故障时接替该子进程的影子进程,该影子进程只处理预置部分流程就休眠等待唤醒,该预置部分流程远少于接替子进程需要处理的全部初始化流程,保证了影子进程只占用极少的系统内存资源和任务调度资源,当父进程监控到该子进程故障时,该父进程回收该子进程后,立即唤醒该影子进程,由于该影子进程已经处理了接替该子进程的部分初始化流程,因此,被唤醒后,只需继续处理剩余初始化流程即可快速升级为该子进程,接替故障的子进程继续进行数据处理,保证了子进程故障时消耗最少的时间处理故障接替,实现了在不额外占用过多的系统内存资源和任务调度资源的情况下,处理故障进程的快速接替。
上面实施例中,影子进程升级为子进程,在实际应用中,影子进程升级为子进程之后,父进程还可以再为子进程创建一个影子进程,进一步的,在实际应用中,处理接替流程前可以先加载ELF文件和动态库,下面对本发明实施例中的进程接替的方法进行具体描述,请参阅图2,本发明实施例中进程接替的方法另一个实施例包括:
201、父进程为子进程创建影子进程,所述影子进程用于在所述子进程故障时接替所述子进程;
需要说明的是,该子进程为该父进程所创建,或由被回收的子进程的影子进程升级得到。本步骤中,父进程为子进程创建影子进程,该影子进程用于在该子进程故障时接替该子进程。
可以理解的是,父进程可以为创建的所有子进程创建影子进程,也可以只为创建的子进程中的关键进程创建影子进程,此处不作限定。
可以理解的是,子进程故障被回收,影子进程升级为子进程后,父进程再为该子进程创建影子进程,如此形成了子进程与影子进程的故障循环接替技术,能够做到故障场景循环处理,即使升级后的子进程再次故障,也还会有新的影子进程来接替它,不会造成整个设备业务中断,保障了整个设备的稳定持续运行。
202、当所述影子进程被创建后,所述影子进程加载ELF文件,按照所述ELF文件的描述加载预置部分动态库,所述预置部分动态库为在接替动态库中预先指定的一部分动态库,所述接替动态库为接替所述子进程需要加载的全部动态库;
需要说明的是,该影子进程被创建后,会加载可执行与可链接格式(Executableand Linking Format,ELF)文件,该文件中描述有需要依赖的动态库,该影子进程按照该ELF文件的描述加载动态库,动态库中存储有该影子进程接替子进程需要执行的流程,该流程可以以函数的方式存储。可以将该ELF文件中描述的影子进程接替子进程需要依赖的全部动态库称为接替动态库,该接替动态库可以分为多个部分,指定其中一部分动态库存储必须预先执行的初始化流程,可以称这部分必须预先加载的动态库为预置部分动态库。
可以理解的是,在进程栈空间中,该ELF文件与动态库均可以有代码段,数据段和BSS段组成,此处不作限定。
203、所述影子进程执行所述预置部分动态库中的预处理函数,处理预置部分流程,并休眠等待唤醒,所述预置部分流程为在接替流程中预先指定必须处理的一部分初始化流程,所述接替流程为接替所述子进程的全部初始化流程;
ELF加载阶段,影子进程加载预置部分动态库后,可以处理该预置部分动态库中的预处理函数,按照该预处理函数处理预置部分流程,可以理解的是,将影子进程接替子进程需要完成的全部初始化流程称为接替流程,其中预先指定必须处理的一部分初始化流程称为预置部分流程,则影子进程执行该预置部分流程后,休眠等待唤醒。
204、当所述父进程监控到所述子进程故障时,所述父进程回收所述子进程,并唤醒所述影子进程;
本步骤中,影子进程处于休眠状态,当该父进程监控到该子进程故障时,该父进程去活该子进程,并回收该子进程,唤醒接替该子进程的影子进程。
205、当所述影子进程被唤醒后,所述影子进程按照所述ELF文件的描述加载除所述预置部分动态库外的所述接替动态库;
可以理解的是,影子进程已经加载了ELF文件中描述的预置部分动态库,该ELF文件中还描述有影子进程接替子进程过程中需要依赖的接替动态库的其余部分,则影子进程被唤醒后,该影子进程按照该ELF文件的描述加载出该预置部分动态库外的该接替动态库。
206、所述影子进程执行所述接替动态库中除所述预处理函数外的其他函数,处理所述接替流程中除所述预置部分流程外的初始化流程,所述影子进程升级为所述子进程。
影子进程加载完出预置部分动态库外的接替动态库后,执行该接替动态库中除该预处理函数外的其他函数,处理该接替流程中除该预置部分流程外的初始化流程,完成全部的接替流程后,该影子进程即升级为了该子进程,继续处理该子进程未完成的任务。
可以理解的是,该影子进程升级成为子进程后,可以执行步骤201,该父进程为该子进程创建影子进程,形成了子进程与影子进程的故障循环接替技术,保证所有子进程或关键子进程,始终有一个相应的影子进程。
本发明实施例中,在ELF加载阶段,影子进程按照ELF文件的描述先加载预置部分动态库,执行其中的预置部分预处理函数,处理预置部分流程后休眠等待唤醒,被唤醒后继续按照该ELF文件的描述加载剩余的接替动态库,执行剩余的函数并处理剩余的初始化流程,保证了影子进程只占用极少的系统内存资源和任务调度资源,同时又能够在子进程故障时快速的完成接替动态库的加载,接替子进程升级成为新的子进程。进一步的,在影子进程升级成为子进程后,父进程还可以为该子进程创建影子进程,如此形成了子进程与影子进程的故障循环接替技术,能够做到故障场景循环处理,即使升级后的子进程再次故障,也还会有新的影子进程来接替它,不会造成整个设备业务中断,保障了整个设备的稳定持续运行。
为便于理解,下面以一具体应用场景对本发明实施例中进程接替的方法进行具体描述:
如图3所示,操作系统启动,父进程301创建子进程302;
同时,父进程301为该子进程302创建影子进程303,该影子进程完成预置部分流程并休眠等待唤醒;
如图4所示,若该子进程301故障,父进程301监控到该子进程302故障后,回收该子进程301,并唤醒该影子进程302,该影子进程302完成后续的初始化流程并接替该子进程301,升级成为新的子进程401,同时,该父进程301为该升级的子进程401创建影子进程402。
下面对本发明实施例中进程接替的装置进程描述,请参阅图5,本发明实施例中进程接替的装置一个实施例包括:
父进程模块501,子进程模块502和影子进程模块503;
所述父进程模块501包括:
子进程创建单元5011,用于创建所述子进程模块502;
影子进程创建单元5012,用于为所述子进程模块502创建所述影子进程模块503,所述影子进程模块503用于在所述子进程模块502故障时接替所述子进程模块502;
所述影子进程模块503包括:
处理休眠单元5031,用于当所述影子进程创建单元5012创建影子进程模块503后,处理预置部分流程,并控制所述影子进程模块503进入休眠状态等待唤醒,所述预置部分流程为在接替流程中预先指定必须处理的一部分初始化流程,所述接替流程为接替所述子进程模块的全部初始化流程;
所述父进程模块501还包括:
监控唤醒单元5013,用于当监控到所述子进程模块502故障时,回收所述子进程模块502,并唤醒处于休眠状态的影子进程模块503;
所述影子进程模块503还包括:
处理升级单元5032,用于当所述影子进程模块503被所述监控唤醒单元5013唤醒时,处理所述接替流程中除所述预置部分流程外的初始化流程,所述影子进程模块503升级为子进程模块。
本发明实施例中父进程模块501为子进程模块502创建用于在该子进程模块502故障时接替该子进程模块502的影子进程模块503,该影子进程模块503只处理预置部分流程就休眠等待唤醒,该预置部分流程远少于接替子进程模块502需要处理的全部初始化流程,保证了影子进程模块503只占用极少的系统内存资源和任务调度资源,当父进程模块501监控到该子进程模块502故障时,该父进程模块501回收该子进程模块502后,立即唤醒该影子进程模块503,由于该影子进程模块503已经处理了接替子进程模块502的部分初始化流程,因此,被唤醒后,只需继续处理剩余初始化流程即可快速升级为子进程模块502,接替故障的子进程模块502继续进行数据处理,保证了子进程模块502故障时消耗最少的时间处理故障接替,实现了在不额外占用过多的系统内存资源和任务调度资源的情况下,处理故障进程的快速接替。
上面实施例中,影子进程模块503升级为子进程模块502,在实际应用中,影子进程模块503升级为子进程模块502之后,父进程还可以再为子进程模块502创建一个影子进程,进一步的,在实际应用中,处理接替流程前可以先加载ELF文件和动态库,下面对本发明实施例中的进程接替的方法进行具体描述,请参阅图6,作为本发明实施例中进程接替的装置另一个实施例,上述影子进程模块503还包括:
第一加载单元601,用于加载ELF文件,并按照所述ELF文件的描述加载预置部分动态库,所述预置部分动态库为在接替动态库中预先指定的一部分动态库,所述接替动态库为接替所述子进程模块需要加载的全部动态库;
所述处理休眠单元5031具体用于,当所述影子进程创建单元5012创建影子进程模块503后,执行所述第一加载单元601加载的预置部分动态库中的预处理函数,处理所述预置部分流程,并控制所述影子进程模块503进入休眠状态等待唤醒,所述预置部分流程为在接替流程中预先指定必须处理的一部分初始化流程,所述接替流程为接替所述子进程模块502的全部初始化流程;
所述影子进程模块503还包括:
第二加载单元602,用于当所述监控唤醒单元5013唤醒所述影子进程模块503时,按照所述ELF文件的描述加载除所述第一加载单元601加载的预置部分动态库外的所述接替动态库;
所述处理升级单元5032具体用于,当所述影子进程模块503被所述监控唤醒单元5013唤醒时,执行所述第二加载单元602加载的接替动态库中除所述预处理函数外的其他函数,处理所述接替流程中除所述预置部分流程外的初始化流程,所述影子进程模块503升级为子进程模块;
可选的,该父进程模块501还可以包括:
触发单元603,用于当监控到所述影子进程模块503升级到子进程模块时,触发所述影子进程创建单元5012。
本发明实施例中,在ELF加载阶段,第一加载单元5033按照ELF文件的描述先加载预置部分动态库,处理休眠单元5031执行其中的预置部分预处理函数,处理预置部分流程后休眠等待唤醒,被唤醒后第二加载单元5034继续按照该ELF文件的描述加载剩余的接替动态库,处理升级单元5032执行剩余的函数并处理剩余的初始化流程,保证了影子进程模块503只占用极少的系统内存资源和任务调度资源,同时又能够在子进程模块502故障时快速的完成接替动态库的加载,接替子进程模块502升级成为新的子进程模块502。进一步的,在影子进程模块503升级成为子进程模块502后,触发单元5014触发父进程模块501为该子进程模块502创建影子进程模块503,如此形成了子进程模块502与影子进程模块503的故障循环接替技术,能够做到故障场景循环处理,即使升级后的子进程模块502再次故障,也还会有新的影子进程模块503来接替它,不会造成整个设备业务中断,保障了整个设备的稳定持续运行。
请参阅图7,本发明实施例中进程接替的装置700另一个实施例包括:
处理器701和存储器702;
通过调用所述存储器702存储的操作指令,所述处理器701用于执行如下操作:
指示父进程创建子进程;
指示所述父进程为所述子进程创建影子进程,所述影子进程用于在所述子进程故障时接替所述子进程;
当所述影子进程被创建后,指示所述影子进程处理预置部分流程,并休眠等待唤醒,所述预置部分流程为在接替流程中预先指定必须处理的一部分初始化流程,所述接替流程为接替所述子进程的全部初始化流程;
当所述父进程监控到所述子进程故障时,指示操作系统内核回收所述子进程,并唤醒所述影子进程;
当所述影子进程被唤醒时,指示所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程,所述影子进程升级为所述子进程。
本发明的一些实施例中,所述处理器701还执行如下操作:
当所述父进程监控到所述影子进程升级到所述子进程时,触发所述指示所述父进程为所述子进程创建所述影子进程的操作。
本发明的一些实施例中,所述处理器701执行所述指示所述影子进程处理预置部分流程的操作之前,所述处理器701还执行如下操作:
指示所述影子进程加载ELF文件,并按照所述ELF文件的描述加载预置部分动态库,所述预置部分动态库为在接替动态库中预先指定的一部分动态库,所述接替动态库为接替所述子进程需要加载的全部动态库;
所述处理器701执行所述指示所述影子进程处理预置部分流程的操作时,具体执行如下操作:
指示所述影子进程执行加载的所述预置部分动态库中的预处理函数,处理所述预置部分流程;
所述处理器701执行所述指示所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程的操作之前,所述处理器701还执行如下操作:
指示所述影子进程按照所述ELF文件的描述加载除所述预置部分动态库外的所述接替动态库;
所述处理器701执行所述指示所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程的操作时,具体执行如下操作:
指示所述影子进程执行加载的所述接替动态库中除所述预处理函数外的其他函数,处理所述接替流程中除所述预置部分流程外的初始化流程。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种进程接替的方法,其特征在于,包括:
父进程为子进程创建影子进程,所述影子进程用于在所述子进程故障时接替所述子进程;
当所述影子进程被创建后,所述影子进程处理预置部分流程,并休眠等待唤醒,所述预置部分流程为在接替流程中预先指定必须处理的一部分初始化流程,所述接替流程为接替所述子进程的全部初始化流程;
当所述父进程监控到所述子进程故障时,所述父进程回收所述子进程,并唤醒所述影子进程;
当所述影子进程被唤醒后,所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程,所述影子进程升级为所述子进程。
2.根据权利要求1所述的方法,其特征在于,所述影子进程升级为所述子进程的步骤之后还包括:
当所述父进程监控到所述影子进程升级到所述子进程时,触发所述父进程为子进程创建影子进程的步骤。
3.根据权利要求1或2所述的方法,其特征在于,所述父进程为子进程创建影子进程的步骤之后,所述影子进程处理预置部分流程的步骤之前还包括:
所述影子进程加载可执行与可链接格式ELF文件,按照所述ELF文件的描述加载预置部分动态库,所述预置部分动态库为在接替动态库中预先指定的一部分动态库,所述接替动态库为接替所述子进程需要加载的全部动态库;
所述影子进程处理预置部分流程具体包括:
所述影子进程执行所述预置部分动态库中的预处理函数,处理所述预置部分流程;
所述唤醒所述影子进程的步骤之后,所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程的步骤之前还包括:
所述影子进程按照所述ELF文件的描述加载除所述预置部分动态库外的所述接替动态库;
所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程具体包括:
所述影子进程执行所述接替动态库中除所述预处理函数外的其他函数,处理所述接替流程中除所述预置部分流程外的初始化流程。
4.一种进程接替的装置,其特征在于,包括:
父进程模块,子进程模块和影子进程模块;
所述父进程模块包括:
子进程创建单元,用于创建所述子进程模块;
影子进程创建单元,用于为所述子进程模块创建所述影子进程模块,所述影子进程模块用于在所述子进程模块故障时接替所述子进程模块;
所述影子进程模块包括:
处理休眠单元,用于当所述影子进程创建单元创建影子进程模块后,处理预置部分流程,并控制所述影子进程模块进入休眠状态等待唤醒,所述预置部分流程为在接替流程中预先指定必须处理的一部分初始化流程,所述接替流程为接替所述子进程模块的全部初始化流程;
所述父进程模块还包括:
监控唤醒单元,用于当监控到所述子进程模块故障时,回收所述子进程模块,并唤醒处于休眠状态的影子进程模块;
所述影子进程模块还包括:
处理升级单元,用于当所述影子进程模块被所述监控唤醒单元唤醒时,处理所述接替流程中除所述预置部分流程外的初始化流程,所述影子进程模块升级为子进程模块。
5.根据权利要求4所述的装置,其特征在于,所述父进程模块还包括:
触发单元,用于当监控到所述影子进程模块升级到所述子进程模块时,触发所述影子进程创建单元。
6.根据权利要求4或5所述的装置,其特征在于,所述影子进程模块还包括:
第一加载单元,用于加载ELF文件,并按照所述ELF文件的描述加载预置部分动态库,所述预置部分动态库为在接替动态库中预先指定的一部分动态库,所述接替动态库为接替所述子进程模块需要加载的全部动态库;
所述处理休眠单元具体用于,当所述影子进程创建单元创建影子进程模块后,执行所述第一加载单元加载的预置部分动态库中的预处理函数,处理所述预置部分流程,并控制所述影子进程模块进入休眠状态等待唤醒,所述预置部分流程为在接替流程中预先指定必须处理的一部分初始化流程,所述接替流程为接替所述子进程模块的全部初始化流程;
所述影子进程模块还包括:
第二加载单元,用于当所述监控唤醒单元唤醒所述影子进程模块时,按照所述ELF文件的描述加载除所述第一加载单元加载的预置部分动态库外的所述接替动态库;
所述处理升级单元具体用于,当所述影子进程模块被所述监控唤醒单元唤醒时,执行所述第二加载单元加载的接替动态库中除所述预处理函数外的其他函数,处理所述接替流程中除所述预置部分流程外的初始化流程,所述影子进程模块升级为子进程模块。
7.一种进程接替的装置,其特征在于,包括:
处理器和存储器;
通过调用所述存储器存储的操作指令,所述处理器用于执行如下操作:
指示父进程创建子进程;
指示所述父进程为所述子进程创建影子进程,所述影子进程用于在所述子进程故障时接替所述子进程;
当所述影子进程被创建后,指示所述影子进程处理预置部分流程,并休眠等待唤醒,所述预置部分流程为在接替流程中预先指定必须处理的一部分初始化流程,所述接替流程为接替所述子进程的全部初始化流程;
当所述父进程监控到所述子进程故障时,指示操作系统内核回收所述子进程,并唤醒所述影子进程;
当所述影子进程被唤醒时,指示所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程,所述影子进程升级为所述子进程。
8.根据权利要求7所述的装置,其特征在于,所述处理器还执行如下操作:
当所述父进程监控到所述影子进程升级到所述子进程时,触发所述指示所述父进程为所述子进程创建所述影子进程的操作。
9.根据权利要求7或8所述的装置,其特征在于,所述处理器执行所述指示所述影子进程处理预置部分流程的操作之前,所述处理器还执行如下操作:
指示所述影子进程加载ELF文件,并按照所述ELF文件的描述加载预置部分动态库,所述预置部分动态库为在接替动态库中预先指定的一部分动态库,所述接替动态库为接替所述子进程需要加载的全部动态库;
所述处理器执行所述指示所述影子进程处理预置部分流程的操作时,具体执行如下操作:
指示所述影子进程执行加载的所述预置部分动态库中的预处理函数,处理所述预置部分流程;
所述处理器执行所述指示所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程的操作之前,所述处理器还执行如下操作:
指示所述影子进程按照所述ELF文件的描述加载除所述预置部分动态库外的所述接替动态库;
所述处理器执行所述指示所述影子进程处理所述接替流程中除所述预置部分流程外的初始化流程的操作时,具体执行如下操作:
指示所述影子进程执行加载的所述接替动态库中除所述预处理函数外的其他函数,处理所述接替流程中除所述预置部分流程外的初始化流程。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2015/081547 WO2016201620A1 (zh) | 2015-06-16 | 2015-06-16 | 进程接替的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106462455A true CN106462455A (zh) | 2017-02-22 |
CN106462455B CN106462455B (zh) | 2019-11-01 |
Family
ID=57544718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580031040.5A Active CN106462455B (zh) | 2015-06-16 | 2015-06-16 | 进程接替的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106462455B (zh) |
WO (1) | WO2016201620A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109710463A (zh) * | 2018-12-27 | 2019-05-03 | 亚信科技(中国)有限公司 | 一种任务调度方法及装置 |
CN110312995A (zh) * | 2017-04-19 | 2019-10-08 | Oppo广东移动通信有限公司 | 应用程序加速启动方法、装置及终端 |
CN111158725A (zh) * | 2019-12-30 | 2020-05-15 | 上海达梦数据库有限公司 | 程序升级方法、装置、终端及存储介质 |
CN112148477A (zh) * | 2020-08-28 | 2020-12-29 | 杭州安恒信息技术股份有限公司 | 服务进程处理方法、电子装置及存储介质 |
CN113064748A (zh) * | 2021-04-08 | 2021-07-02 | 中国第一汽车股份有限公司 | 进程接替的方法、装置、电子设备及存储介质 |
CN113778998A (zh) * | 2021-09-28 | 2021-12-10 | 北京安华金和科技有限公司 | 一种数据库代理故障预防处理方法及装置 |
CN114610478A (zh) * | 2022-01-05 | 2022-06-10 | 上海电气风电集团股份有限公司 | 风电场的数据采集控制方法、控制系统、电子设备和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0629949A2 (en) * | 1993-06-14 | 1994-12-21 | International Business Machines Corporation | System and method of recovering from process failure in a write lock control system |
CN1714545A (zh) * | 2002-01-24 | 2005-12-28 | 艾维西系统公司 | 容错的数据通信的方法和系统 |
CN101179432A (zh) * | 2007-12-13 | 2008-05-14 | 浪潮电子信息产业股份有限公司 | 一种多机环境中实现系统高可用的方法 |
CN102497288A (zh) * | 2011-12-13 | 2012-06-13 | 华为技术有限公司 | 一种双机备份方法和双机系统实现装置 |
CN102917015A (zh) * | 2012-09-10 | 2013-02-06 | 浪潮(北京)电子信息产业有限公司 | 一种基于云计算的虚拟化容忍入侵的方法及装置 |
CN103020242A (zh) * | 2012-12-19 | 2013-04-03 | 中国人民解放军第二炮兵装备研究院第四研究所 | 基于oracle数据库的数据同步方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040078625A1 (en) * | 2002-01-24 | 2004-04-22 | Avici Systems, Inc. | System and method for fault tolerant data communication |
-
2015
- 2015-06-16 WO PCT/CN2015/081547 patent/WO2016201620A1/zh active Application Filing
- 2015-06-16 CN CN201580031040.5A patent/CN106462455B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0629949A2 (en) * | 1993-06-14 | 1994-12-21 | International Business Machines Corporation | System and method of recovering from process failure in a write lock control system |
CN1714545A (zh) * | 2002-01-24 | 2005-12-28 | 艾维西系统公司 | 容错的数据通信的方法和系统 |
CN101179432A (zh) * | 2007-12-13 | 2008-05-14 | 浪潮电子信息产业股份有限公司 | 一种多机环境中实现系统高可用的方法 |
CN102497288A (zh) * | 2011-12-13 | 2012-06-13 | 华为技术有限公司 | 一种双机备份方法和双机系统实现装置 |
CN102917015A (zh) * | 2012-09-10 | 2013-02-06 | 浪潮(北京)电子信息产业有限公司 | 一种基于云计算的虚拟化容忍入侵的方法及装置 |
CN103020242A (zh) * | 2012-12-19 | 2013-04-03 | 中国人民解放军第二炮兵装备研究院第四研究所 | 基于oracle数据库的数据同步方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110312995A (zh) * | 2017-04-19 | 2019-10-08 | Oppo广东移动通信有限公司 | 应用程序加速启动方法、装置及终端 |
CN110312995B (zh) * | 2017-04-19 | 2022-12-16 | Oppo广东移动通信有限公司 | 应用程序加速启动方法、装置及终端 |
CN109710463A (zh) * | 2018-12-27 | 2019-05-03 | 亚信科技(中国)有限公司 | 一种任务调度方法及装置 |
CN111158725A (zh) * | 2019-12-30 | 2020-05-15 | 上海达梦数据库有限公司 | 程序升级方法、装置、终端及存储介质 |
CN111158725B (zh) * | 2019-12-30 | 2024-01-23 | 上海达梦数据库有限公司 | 程序升级方法、装置、终端及存储介质 |
CN112148477A (zh) * | 2020-08-28 | 2020-12-29 | 杭州安恒信息技术股份有限公司 | 服务进程处理方法、电子装置及存储介质 |
CN113064748A (zh) * | 2021-04-08 | 2021-07-02 | 中国第一汽车股份有限公司 | 进程接替的方法、装置、电子设备及存储介质 |
WO2022213641A1 (zh) * | 2021-04-08 | 2022-10-13 | 中国第一汽车股份有限公司 | 进程接替的方法、装置、电子设备及存储介质 |
CN113064748B (zh) * | 2021-04-08 | 2023-02-28 | 中国第一汽车股份有限公司 | 进程接替的方法、装置、电子设备及存储介质 |
CN113778998A (zh) * | 2021-09-28 | 2021-12-10 | 北京安华金和科技有限公司 | 一种数据库代理故障预防处理方法及装置 |
CN114610478A (zh) * | 2022-01-05 | 2022-06-10 | 上海电气风电集团股份有限公司 | 风电场的数据采集控制方法、控制系统、电子设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106462455B (zh) | 2019-11-01 |
WO2016201620A1 (zh) | 2016-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106462455A (zh) | 进程接替的方法和装置 | |
EP3063620B1 (en) | Selective power management for pre-boot firmware updates | |
CN111338854B (zh) | 基于Kubernetes集群快速恢复数据的方法及系统 | |
EP3211532B1 (en) | Warm swapping of hardware components with compatibility verification | |
CN102789305B (zh) | 推迟挂起 | |
US9910664B2 (en) | System and method of online firmware update for baseboard management controller (BMC) devices | |
US10430082B2 (en) | Server management method and server for backup of a baseband management controller | |
CN104823160A (zh) | 虚拟机-保留主机更新 | |
CN103324495A (zh) | 数据中心服务器开机管理方法及系统 | |
CN102163167A (zh) | 系统拯救的方法及装置 | |
CN103902316A (zh) | 切换方法和电子设备 | |
CN108549550A (zh) | 一种硬盘挂载方法及装置 | |
US20240256263A1 (en) | Application Upgrade Method and Apparatus, Computing Device, and Chip System | |
CN107810488A (zh) | 一种虚拟机的状态管理方法、装置和智能终端 | |
CN105183525A (zh) | 一种系统软件的升级方法及实现该升级方法的电子设备 | |
CN102819466A (zh) | 操作系统异常的处理方法及其装置 | |
CN111552489A (zh) | 用户态文件系统热升级方法、装置、服务器及介质 | |
WO2013065115A1 (ja) | 情報処理装置、情報処理装置の制御方法、仮想マシン制御プログラム及び情報処理システム | |
CN108897603B (zh) | 一种内存资源管理方法和装置 | |
CN109976886B (zh) | 内核远程切换方法及装置 | |
CN108563472B (zh) | 基于多开应用的服务插件加载方法及装置 | |
US7747893B2 (en) | Method and system for managing resources during system initialization and startup | |
CN111290767B (zh) | 具有业务快速恢复功能的容器组更新方法及系统 | |
JP5673666B2 (ja) | マルチコアプロセッサシステム、割込プログラム、および割込方法 | |
CN103873516A (zh) | 提高云计算资源池中物理服务器使用率的ha方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |