亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

進(jìn)程接替的方法和裝置與流程

文檔序號:12287802閱讀:268來源:國知局
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及進(jìn)程接替的方法和裝置。
背景技術(shù)
::無論是通信軟件還是互聯(lián)網(wǎng)軟件,如何能夠在系統(tǒng)故障情況下快速恢復(fù)業(yè)務(wù),這是每個公司和開發(fā)人員永久面對的課題。在各種操作系統(tǒng)中,進(jìn)程是作為部署在操作系統(tǒng)上的最小粒度的軟件能力單元。當(dāng)然進(jìn)程也就成為最小的軟件能力故障單位,指定的進(jìn)程異常退出,必然會使得由該進(jìn)程承載的軟件能力的消失,最終體現(xiàn)為軟件業(yè)務(wù)故障。為了在軟件業(yè)務(wù)故障后,軟件還能繼續(xù)正常運行,軟件系統(tǒng)的故障接替效率很重要。而一個軟件系統(tǒng)的故障接替效率,往往依賴于其關(guān)鍵軟件能力進(jìn)程的故障接替效率,且軟件系統(tǒng)的關(guān)鍵進(jìn)程故障一般情況下由于各種業(yè)務(wù)場景的約束,是很難通過簡單的用戶數(shù)據(jù)遷移來解決的。目前,主要采用的方法為部署完全相同的1+1雙進(jìn)程,主進(jìn)程正常運行,備份進(jìn)程占用相同的系統(tǒng)資源進(jìn)行備用(standby)。當(dāng)主進(jìn)程故障時,由備份進(jìn)程接替主進(jìn)程繼續(xù)處理業(yè)務(wù);當(dāng)備份進(jìn)程也出現(xiàn)故障時,整個設(shè)備業(yè)務(wù)中斷。在實際應(yīng)用中,由于額外的增加占用相同系統(tǒng)資源的備份進(jìn)程,增大了系統(tǒng)的內(nèi)存開銷和任務(wù)調(diào)度開銷,從而降低了軟件承載用戶數(shù)據(jù)能力和處理能力。技術(shù)實現(xiàn)要素:本發(fā)明實施例提供了進(jìn)程接替的方法和裝置,用于在不額外占用過多的系統(tǒng)內(nèi)存資源和任務(wù)調(diào)度資源的情況下,處理故障進(jìn)程的快速接替。本發(fā)明實施例第一方面提供了一種進(jìn)程接替的方法,包括:父進(jìn)程為子進(jìn)程創(chuàng)建影子進(jìn)程,所述影子進(jìn)程用于在所述子進(jìn)程故障時接替所述子進(jìn)程;當(dāng)所述影子進(jìn)程被創(chuàng)建后,所述影子進(jìn)程處理預(yù)置部分流程,并休眠等待喚醒,所述預(yù)置部分流程為在接替流程中預(yù)先指定必須處理的一部分初始化流程,所述接替流程為接替所述子進(jìn)程的全部初始化流程;當(dāng)所述父進(jìn)程監(jiān)控到所述子進(jìn)程故障時,所述父進(jìn)程回收所述子進(jìn)程,并喚醒所述影子進(jìn)程;當(dāng)所述影子進(jìn)程被喚醒后,所述影子進(jìn)程處理所述接替流程中除所述預(yù)置部分流程外的初始化流程,所述影子進(jìn)程升級為所述子進(jìn)程。結(jié)合本發(fā)明實施例的第一方面,本發(fā)明實施例第一方面的第一種實現(xiàn)方式中,所述影子進(jìn)程升級為所述子進(jìn)程的步驟之后還包括:當(dāng)所述父進(jìn)程監(jiān)控到所述影子進(jìn)程升級到所述子進(jìn)程時,觸發(fā)所述父進(jìn)程為子進(jìn)程創(chuàng)建影子進(jìn)程的步驟。結(jié)合本發(fā)明實施例的第一方面或第一方面的第一種實現(xiàn)方式,本發(fā)明實施例第一方面的第二種實現(xiàn)方式中,所述父進(jìn)程為子進(jìn)程創(chuàng)建影子進(jìn)程的步驟之后,所述影子進(jìn)程處理預(yù)置部分流程的步驟之前還包括:所述影子進(jìn)程加載可執(zhí)行與可鏈接格式ELF文件,按照所述ELF文件的描述加載預(yù)置部分動態(tài)庫,所述預(yù)置部分動態(tài)庫為在接替動態(tài)庫中預(yù)先指定的一部分動態(tài)庫,所述接替動態(tài)庫為接替所述子進(jìn)程需要加載的全部動態(tài)庫;所述影子進(jìn)程處理預(yù)置部分流程具體包括:所述影子進(jìn)程執(zhí)行所述預(yù)置部分動態(tài)庫中的預(yù)處理函數(shù),處理所述預(yù)置部分流程;所述喚醒所述影子進(jìn)程的步驟之后,所述影子進(jìn)程處理所述接替流程中除所述預(yù)置部分流程外的初始化流程的步驟之前還包括:所述影子進(jìn)程按照所述ELF文件的描述加載除所述預(yù)置部分動態(tài)庫外的所述接替動態(tài)庫;所述影子進(jìn)程處理所述接替流程中除所述預(yù)置部分流程外的初始化流程具體包括:所述影子進(jìn)程執(zhí)行所述接替動態(tài)庫中除所述預(yù)處理函數(shù)外的其他函數(shù),處理所述接替流程中除所述預(yù)置部分流程外的初始化流程。本發(fā)明實施例第二方面提供了一種進(jìn)程接替的裝置,包括:父進(jìn)程模塊,子進(jìn)程模塊和影子進(jìn)程模塊;所述父進(jìn)程模塊包括:子進(jìn)程創(chuàng)建單元,用于創(chuàng)建所述子進(jìn)程模塊;影子進(jìn)程創(chuàng)建單元,用于為所述子進(jìn)程模塊創(chuàng)建所述影子進(jìn)程模塊,所述影子進(jìn)程模塊用于在所述子進(jìn)程模塊故障時接替所述子進(jìn)程模塊;所述影子進(jìn)程模塊包括:處理休眠單元,用于當(dāng)所述影子進(jìn)程創(chuàng)建單元創(chuàng)建影子進(jìn)程模塊后,處理預(yù)置部分流程,并控制所述影子進(jìn)程模塊進(jìn)入休眠狀態(tài)等待喚醒,所述預(yù)置部分流程為在接替流程中預(yù)先指定必須處理的一部分初始化流程,所述接替流程為接替所述子進(jìn)程模塊的全部初始化流程;所述父進(jìn)程模塊還包括:監(jiān)控喚醒單元,用于當(dāng)監(jiān)控到所述子進(jìn)程模塊故障時,回收所述子進(jìn)程模塊,并喚醒處于休眠狀態(tài)的影子進(jìn)程模塊;所述影子進(jìn)程模塊還包括:處理升級單元,用于當(dāng)所述影子進(jìn)程模塊被所述監(jiān)控喚醒單元喚醒時,處理所述接替流程中除所述預(yù)置部分流程外的初始化流程,所述影子進(jìn)程模塊升級為子進(jìn)程模塊。結(jié)合本發(fā)明實施例的第二方面,本發(fā)明實施例第二方面的第一種實現(xiàn)方式中,所述父進(jìn)程模塊還包括:觸發(fā)單元,用于當(dāng)監(jiān)控到所述影子進(jìn)程模塊升級到所述子進(jìn)程模塊時,觸發(fā)所述影子進(jìn)程創(chuàng)建單元。結(jié)合本發(fā)明實施例的第二方面或第二方面的第一種實現(xiàn)方式,本發(fā)明實施例第二方面的第二種實現(xiàn)方式中,所述影子進(jìn)程模塊還包括:第一加載單元,用于加載ELF文件,并按照所述ELF文件的描述加載預(yù)置部分動態(tài)庫,所述預(yù)置部分動態(tài)庫為在接替動態(tài)庫中預(yù)先指定的一部分動態(tài)庫,所述接替動態(tài)庫為接替所述子進(jìn)程模塊需要加載的全部動態(tài)庫;所述處理休眠單元具體用于,當(dāng)所述影子進(jìn)程創(chuàng)建單元創(chuàng)建影子進(jìn)程模塊后,執(zhí)行所述第一加載單元加載的預(yù)置部分動態(tài)庫中的預(yù)處理函數(shù),處理所述預(yù)置部分流程,并控制所述影子進(jìn)程模塊進(jìn)入休眠狀態(tài)等待喚醒,所述預(yù)置部分流程為在接替流程中預(yù)先指定必須處理的一部分初始化流程,所述接替流程為接替所述子進(jìn)程模塊的全部初始化流程;所述影子進(jìn)程模塊還包括:第二加載單元,用于當(dāng)所述監(jiān)控喚醒單元喚醒所述影子進(jìn)程模塊時,按照所述ELF文件的描述加載除所述第一加載單元加載的預(yù)置部分動態(tài)庫外的所述接替動態(tài)庫;所述處理升級單元具體用于,當(dāng)所述影子進(jìn)程模塊被所述監(jiān)控喚醒單元喚醒時,執(zhí)行所述第二加載單元加載的接替動態(tài)庫中除所述預(yù)處理函數(shù)外的其他函數(shù),處理所述接替流程中除所述預(yù)置部分流程外的初始化流程,所述影子進(jìn)程模塊升級為子進(jìn)程模塊。本發(fā)明實施例第三方面提供了一種進(jìn)程接替的裝置,包括:處理器和存儲器;通過調(diào)用所述存儲器存儲的操作指令,所述處理器用于執(zhí)行如下操作:指示父進(jìn)程創(chuàng)建子進(jìn)程;指示所述父進(jìn)程為所述子進(jìn)程創(chuàng)建影子進(jìn)程,所述影子進(jìn)程用于在所述子進(jìn)程故障時接替所述子進(jìn)程;當(dāng)所述影子進(jìn)程被創(chuàng)建后,指示所述影子進(jìn)程處理預(yù)置部分流程,并休眠等待喚醒,所述預(yù)置部分流程為在接替流程中預(yù)先指定必須處理的一部分初始化流程,所述接替流程為接替所述子進(jìn)程的全部初始化流程;當(dāng)所述父進(jìn)程監(jiān)控到所述子進(jìn)程故障時,指示操作系統(tǒng)內(nèi)核回收所述子進(jìn)程,并喚醒所述影子進(jìn)程;當(dāng)所述影子進(jìn)程被喚醒時,指示所述影子進(jìn)程處理所述接替流程中除所述預(yù)置部分流程外的初始化流程,所述影子進(jìn)程升級為所述子進(jìn)程。結(jié)合本發(fā)明實施例的第三方面,本發(fā)明實施例第三方面的第一種實現(xiàn)方式中,所述處理器還執(zhí)行如下操作:當(dāng)所述父進(jìn)程監(jiān)控到所述影子進(jìn)程升級到所述子進(jìn)程時,觸發(fā)所述指示所述父進(jìn)程為所述子進(jìn)程創(chuàng)建所述影子進(jìn)程的操作。結(jié)合本發(fā)明實施例的第三方面或第三方面的第一種實現(xiàn)方式,本發(fā)明實施例第三方面的第二種實現(xiàn)方式中,所述處理器執(zhí)行所述指示所述影子進(jìn)程處理預(yù)置部分流程的操作之前,所述處理器還執(zhí)行如下操作:指示所述影子進(jìn)程加載ELF文件,并按照所述ELF文件的描述加載預(yù)置部分動態(tài)庫,所述預(yù)置部分動態(tài)庫為在接替動態(tài)庫中預(yù)先指定的一部分動態(tài)庫,所述接替動態(tài)庫為接替所述子進(jìn)程需要加載的全部動態(tài)庫;所述處理器執(zhí)行所述指示所述影子進(jìn)程處理預(yù)置部分流程的操作時,具體執(zhí)行如下操作:指示所述影子進(jìn)程執(zhí)行加載的所述預(yù)置部分動態(tài)庫中的預(yù)處理函數(shù),處理所述預(yù)置部分流程;所述處理器執(zhí)行所述指示所述影子進(jìn)程處理所述接替流程中除所述預(yù)置部分流程外的初始化流程的操作之前,所述處理器還執(zhí)行如下操作:指示所述影子進(jìn)程按照所述ELF文件的描述加載除所述預(yù)置部分動態(tài)庫外的所述接替動態(tài)庫;所述處理器執(zhí)行所述指示所述影子進(jìn)程處理所述接替流程中除所述預(yù)置部分流程外的初始化流程的操作時,具體執(zhí)行如下操作:指示所述影子進(jìn)程執(zhí)行加載的所述接替動態(tài)庫中除所述預(yù)處理函數(shù)外的其他函數(shù),處理所述接替流程中除所述預(yù)置部分流程外的初始化流程。從以上技術(shù)方案可以看出,本發(fā)明實施例具有以下優(yōu)點:父進(jìn)程為子進(jìn)程創(chuàng)建用于在該子進(jìn)程故障時接替該子進(jìn)程的影子進(jìn)程,該影子進(jìn)程只處理預(yù)置部分流程就休眠等待喚醒,該預(yù)置部分流程遠(yuǎn)少于接替子進(jìn)程需要處理的全部初始化流程,保證了影子進(jìn)程只占用極少的系統(tǒng)內(nèi)存資源和任務(wù)調(diào)度資源,當(dāng)父進(jìn)程監(jiān)控到該子進(jìn)程故障時,該父進(jìn)程回收該子進(jìn)程后,立即喚醒該影子進(jìn)程,由于該影子進(jìn)程已經(jīng)處理了接替該子進(jìn)程的部分初始化流程,因此,被喚醒后,只需繼續(xù)處理剩余初始化流程即可快速升級為該子進(jìn)程,接替故障的子進(jìn)程繼續(xù)進(jìn)行數(shù)據(jù)處理,保證了子進(jìn)程故障時消耗最少的時間處理故障接替,實現(xiàn)了在不額外占用過多的系統(tǒng)內(nèi)存資源和任務(wù)調(diào)度資源的情況下,處理故障進(jìn)程的快速接替。附圖說明圖1為本發(fā)明實施例中進(jìn)程接替的方法一個流程示意圖;圖2為本發(fā)明實施例中進(jìn)程接替的方法另一個流程示意圖;圖3為本發(fā)明實施例中進(jìn)程接替的方法一個場景示意圖;圖4為本發(fā)明實施例中進(jìn)程接替的方法另一個場景示意圖;圖5為本發(fā)明實施例中進(jìn)程接替的裝置一個結(jié)構(gòu)示意圖;圖6為本發(fā)明實施例中進(jìn)程接替的裝置另一個結(jié)構(gòu)示意圖;圖7為本發(fā)明實施例中進(jìn)程接替的裝置另一個結(jié)構(gòu)示意圖。具體實施方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。本發(fā)明實施例提供了一種進(jìn)程接替的方法和裝置,用于在不額外占用過多的操作系統(tǒng)內(nèi)存資源和任務(wù)調(diào)度資源的情況下,處理故障進(jìn)程的快速接替。需要說明的是,本發(fā)明應(yīng)用的操作系統(tǒng),既可以為可靠性高的通信軟件系統(tǒng)(嵌入式系統(tǒng)),也可以為互聯(lián)網(wǎng)軟件系統(tǒng),例如Linux操作系統(tǒng)、Android操作系統(tǒng)、Windows操作系統(tǒng)等,此處不作限定,該操作系統(tǒng)可以運行于通信設(shè)備的用戶業(yè)務(wù)處理單板,主控單板,也可以運行于互聯(lián)網(wǎng)功能服務(wù)器等,此處不作限定。請參閱圖1,本發(fā)明實施例中進(jìn)程接替的方法一個實施例包括:101、父進(jìn)程為子進(jìn)程創(chuàng)建影子進(jìn)程,所述影子進(jìn)程用于在所述子進(jìn)程故障時接替所述子進(jìn)程;可以理解的是,該子進(jìn)程為該父進(jìn)程所創(chuàng)建。本步驟中,父進(jìn)程創(chuàng)建子進(jìn)程后,還為該子進(jìn)程創(chuàng)建影子進(jìn)程,該影子進(jìn)程用于在該子進(jìn)程故障時接替該子進(jìn)程??梢岳斫獾氖牵高M(jìn)程可以為創(chuàng)建的所有子進(jìn)程創(chuàng)建影子進(jìn)程,也可以只為創(chuàng)建的子進(jìn)程中的關(guān)鍵進(jìn)程創(chuàng)建影子進(jìn)程,此處不作限定。102、當(dāng)所述影子進(jìn)程被創(chuàng)建后,所述影子進(jìn)程處理預(yù)置部分流程,并休眠等待喚醒,所述預(yù)置部分流程為在接替流程中預(yù)先指定必須處理的一部分初始化流程,所述接替流程為接替所述子進(jìn)程的全部初始化流程;父進(jìn)程創(chuàng)建影子進(jìn)程后,該影子進(jìn)程在elf加載階段,處理預(yù)置部分流程,并休眠等待喚醒,該預(yù)置部分流程為在接替流程中預(yù)先制定必須處理的一部分初始化流程,該接替流程為接替該子進(jìn)程的全部初始化流程。103、當(dāng)所述父進(jìn)程監(jiān)控到所述子進(jìn)程故障時,所述父進(jìn)程回收所述子進(jìn)程,并喚醒所述影子進(jìn)程;本步驟中,影子進(jìn)程處于休眠狀態(tài),當(dāng)該父進(jìn)程監(jiān)控到該子進(jìn)程故障時,該父進(jìn)程去活該子進(jìn)程,并回收該子進(jìn)程,喚醒接替該子進(jìn)程的影子進(jìn)程。104、當(dāng)所述影子進(jìn)程被喚醒后,所述影子進(jìn)程處理所述接替流程中除所述預(yù)置部分流程外的初始化流程,所述影子進(jìn)程升級為所述子進(jìn)程。當(dāng)該影子進(jìn)程被喚醒后,該影子進(jìn)程處理該接替流程中除該預(yù)置部分流程外的初始化流程,完成全部的接替流程后,該影子進(jìn)程即升級為了該子進(jìn)程,繼續(xù)處理該子進(jìn)程未完成的任務(wù)。本發(fā)明實施例中父進(jìn)程為子進(jìn)程創(chuàng)建用于在該子進(jìn)程故障時接替該子進(jìn)程的影子進(jìn)程,該影子進(jìn)程只處理預(yù)置部分流程就休眠等待喚醒,該預(yù)置部分流程遠(yuǎn)少于接替子進(jìn)程需要處理的全部初始化流程,保證了影子進(jìn)程只占用極少的系統(tǒng)內(nèi)存資源和任務(wù)調(diào)度資源,當(dāng)父進(jìn)程監(jiān)控到該子進(jìn)程故障時,該父進(jìn)程回收該子進(jìn)程后,立即喚醒該影子進(jìn)程,由于該影子進(jìn)程已經(jīng)處理了接替該子進(jìn)程的部分初始化流程,因此,被喚醒后,只需繼續(xù)處理剩余初始化流程即可快速升級為該子進(jìn)程,接替故障的子進(jìn)程繼續(xù)進(jìn)行數(shù)據(jù)處理,保證了子進(jìn)程故障時消耗最少的時間處理故障接替,實現(xiàn)了在不額外占用過多的系統(tǒng)內(nèi)存資源和任務(wù)調(diào)度資源的情況下,處理故障進(jìn)程的快速接替。上面實施例中,影子進(jìn)程升級為子進(jìn)程,在實際應(yīng)用中,影子進(jìn)程升級為子進(jìn)程之后,父進(jìn)程還可以再為子進(jìn)程創(chuàng)建一個影子進(jìn)程,進(jìn)一步的,在實際應(yīng)用中,處理接替流程前可以先加載ELF文件和動態(tài)庫,下面對本發(fā)明實施例中的進(jìn)程接替的方法進(jìn)行具體描述,請參閱圖2,本發(fā)明實施例中進(jìn)程接替的方法另一個實施例包括:201、父進(jìn)程為子進(jìn)程創(chuàng)建影子進(jìn)程,所述影子進(jìn)程用于在所述子進(jìn)程故障時接替所述子進(jìn)程;需要說明的是,該子進(jìn)程為該父進(jìn)程所創(chuàng)建,或由被回收的子進(jìn)程的影子進(jìn)程升級得到。本步驟中,父進(jìn)程為子進(jìn)程創(chuàng)建影子進(jìn)程,該影子進(jìn)程用于在該子進(jìn)程故障時接替該子進(jìn)程??梢岳斫獾氖牵高M(jìn)程可以為創(chuàng)建的所有子進(jìn)程創(chuàng)建影子進(jìn)程,也可以只為創(chuàng)建的子進(jìn)程中的關(guān)鍵進(jìn)程創(chuàng)建影子進(jìn)程,此處不作限定。可以理解的是,子進(jìn)程故障被回收,影子進(jìn)程升級為子進(jìn)程后,父進(jìn)程再為該子進(jìn)程創(chuàng)建影子進(jìn)程,如此形成了子進(jìn)程與影子進(jìn)程的故障循環(huán)接替技術(shù),能夠做到故障場景循環(huán)處理,即使升級后的子進(jìn)程再次故障,也還會有新的影子進(jìn)程來接替它,不會造成整個設(shè)備業(yè)務(wù)中斷,保障了整個設(shè)備的穩(wěn)定持續(xù)運行。202、當(dāng)所述影子進(jìn)程被創(chuàng)建后,所述影子進(jìn)程加載ELF文件,按照所述ELF文件的描述加載預(yù)置部分動態(tài)庫,所述預(yù)置部分動態(tài)庫為在接替動態(tài)庫中預(yù)先指定的一部分動態(tài)庫,所述接替動態(tài)庫為接替所述子進(jìn)程需要加載的全部動態(tài)庫;需要說明的是,該影子進(jìn)程被創(chuàng)建后,會加載可執(zhí)行與可鏈接格式(ExecutableandLinkingFormat,ELF)文件,該文件中描述有需要依賴的動態(tài)庫,該影子進(jìn)程按照該ELF文件的描述加載動態(tài)庫,動態(tài)庫中存儲有該影子進(jìn)程接替子進(jìn)程需要執(zhí)行的流程,該流程可以以函數(shù)的方式存儲??梢詫⒃揈LF文件中描述的影子進(jìn)程接替子進(jìn)程需要依賴的全部動態(tài)庫稱為接替動態(tài)庫,該接替動態(tài)庫可以分為多個部分,指定其中一部分動態(tài)庫存儲必須預(yù)先執(zhí)行的初始化流程,可以稱這部分必須預(yù)先加載的動態(tài)庫為預(yù)置部分動態(tài)庫??梢岳斫獾氖牵谶M(jìn)程??臻g中,該ELF文件與動態(tài)庫均可以有代碼段,數(shù)據(jù)段和BSS段組成,此處不作限定。203、所述影子進(jìn)程執(zhí)行所述預(yù)置部分動態(tài)庫中的預(yù)處理函數(shù),處理預(yù)置部分流程,并休眠等待喚醒,所述預(yù)置部分流程為在接替流程中預(yù)先指定必須處理的一部分初始化流程,所述接替流程為接替所述子進(jìn)程的全部初始化流程;ELF加載階段,影子進(jìn)程加載預(yù)置部分動態(tài)庫后,可以處理該預(yù)置部分動態(tài)庫中的預(yù)處理函數(shù),按照該預(yù)處理函數(shù)處理預(yù)置部分流程,可以理解的是,將影子進(jìn)程接替子進(jìn)程需要完成的全部初始化流程稱為接替流程,其中預(yù)先指定必須處理的一部分初始化流程稱為預(yù)置部分流程,則影子進(jìn)程執(zhí)行該預(yù)置部分流程后,休眠等待喚醒。204、當(dāng)所述父進(jìn)程監(jiān)控到所述子進(jìn)程故障時,所述父進(jìn)程回收所述子進(jìn)程,并喚醒所述影子進(jìn)程;本步驟中,影子進(jìn)程處于休眠狀態(tài),當(dāng)該父進(jìn)程監(jiān)控到該子進(jìn)程故障時,該父進(jìn)程去活該子進(jìn)程,并回收該子進(jìn)程,喚醒接替該子進(jìn)程的影子進(jìn)程。205、當(dāng)所述影子進(jìn)程被喚醒后,所述影子進(jìn)程按照所述ELF文件的描述加載除所述預(yù)置部分動態(tài)庫外的所述接替動態(tài)庫;可以理解的是,影子進(jìn)程已經(jīng)加載了ELF文件中描述的預(yù)置部分動態(tài)庫,該ELF文件中還描述有影子進(jìn)程接替子進(jìn)程過程中需要依賴的接替動態(tài)庫的其余部分,則影子進(jìn)程被喚醒后,該影子進(jìn)程按照該ELF文件的描述加載出該預(yù)置部分動態(tài)庫外的該接替動態(tài)庫。206、所述影子進(jìn)程執(zhí)行所述接替動態(tài)庫中除所述預(yù)處理函數(shù)外的其他函數(shù),處理所述接替流程中除所述預(yù)置部分流程外的初始化流程,所述影子進(jìn)程升級為所述子進(jìn)程。影子進(jìn)程加載完出預(yù)置部分動態(tài)庫外的接替動態(tài)庫后,執(zhí)行該接替動態(tài)庫中除該預(yù)處理函數(shù)外的其他函數(shù),處理該接替流程中除該預(yù)置部分流程外的初始化流程,完成全部的接替流程后,該影子進(jìn)程即升級為了該子進(jìn)程,繼續(xù)處理該子進(jìn)程未完成的任務(wù)??梢岳斫獾氖?,該影子進(jìn)程升級成為子進(jìn)程后,可以執(zhí)行步驟201,該父進(jìn)程為該子進(jìn)程創(chuàng)建影子進(jìn)程,形成了子進(jìn)程與影子進(jìn)程的故障循環(huán)接替技術(shù),保證所有子進(jìn)程或關(guān)鍵子進(jìn)程,始終有一個相應(yīng)的影子進(jìn)程。本發(fā)明實施例中,在ELF加載階段,影子進(jìn)程按照ELF文件的描述先加載預(yù)置部分動態(tài)庫,執(zhí)行其中的預(yù)置部分預(yù)處理函數(shù),處理預(yù)置部分流程后休眠等待喚醒,被喚醒后繼續(xù)按照該ELF文件的描述加載剩余的接替動態(tài)庫,執(zhí)行剩余的函數(shù)并處理剩余的初始化流程,保證了影子進(jìn)程只占用極少的系統(tǒng)內(nèi)存資源和任務(wù)調(diào)度資源,同時又能夠在子進(jìn)程故障時快速的完成接替動態(tài)庫的加載,接替子進(jìn)程升級成為新的子進(jìn)程。進(jìn)一步的,在影子進(jìn)程升級成為子進(jìn)程后,父進(jìn)程還可以為該子進(jìn)程創(chuàng)建影子進(jìn)程,如此形成了子進(jìn)程與影子進(jìn)程的故障循環(huán)接替技術(shù),能夠做到故障場景循環(huán)處理,即使升級后的子進(jìn)程再次故障,也還會有新的影子進(jìn)程來接替它,不會造成整個設(shè)備業(yè)務(wù)中斷,保障了整個設(shè)備的穩(wěn)定持續(xù)運行。為便于理解,下面以一具體應(yīng)用場景對本發(fā)明實施例中進(jìn)程接替的方法進(jìn)行具體描述:如圖3所示,操作系統(tǒng)啟動,父進(jìn)程301創(chuàng)建子進(jìn)程302;同時,父進(jìn)程301為該子進(jìn)程302創(chuàng)建影子進(jìn)程303,該影子進(jìn)程完成預(yù)置部分流程并休眠等待喚醒;如圖4所示,若該子進(jìn)程301故障,父進(jìn)程301監(jiān)控到該子進(jìn)程302故障后,回收該子進(jìn)程301,并喚醒該影子進(jìn)程302,該影子進(jìn)程302完成后續(xù)的初始化流程并接替該子進(jìn)程301,升級成為新的子進(jìn)程401,同時,該父進(jìn)程301為該升級的子進(jìn)程401創(chuàng)建影子進(jìn)程402。下面對本發(fā)明實施例中進(jìn)程接替的裝置進(jìn)程描述,請參閱圖5,本發(fā)明實施例中進(jìn)程接替的裝置一個實施例包括:父進(jìn)程模塊501,子進(jìn)程模塊502和影子進(jìn)程模塊503;所述父進(jìn)程模塊501包括:子進(jìn)程創(chuàng)建單元5011,用于創(chuàng)建所述子進(jìn)程模塊502;影子進(jìn)程創(chuàng)建單元5012,用于為所述子進(jìn)程模塊502創(chuàng)建所述影子進(jìn)程模塊503,所述影子進(jìn)程模塊503用于在所述子進(jìn)程模塊502故障時接替所述子進(jìn)程模塊502;所述影子進(jìn)程模塊503包括:處理休眠單元5031,用于當(dāng)所述影子進(jìn)程創(chuàng)建單元5012創(chuàng)建影子進(jìn)程模塊503后,處理預(yù)置部分流程,并控制所述影子進(jìn)程模塊503進(jìn)入休眠狀態(tài)等待喚醒,所述預(yù)置部分流程為在接替流程中預(yù)先指定必須處理的一部分初始化流程,所述接替流程為接替所述子進(jìn)程模塊的全部初始化流程;所述父進(jìn)程模塊501還包括:監(jiān)控喚醒單元5013,用于當(dāng)監(jiān)控到所述子進(jìn)程模塊502故障時,回收所述子進(jìn)程模塊502,并喚醒處于休眠狀態(tài)的影子進(jìn)程模塊503;所述影子進(jìn)程模塊503還包括:處理升級單元5032,用于當(dāng)所述影子進(jìn)程模塊503被所述監(jiān)控喚醒單元5013喚醒時,處理所述接替流程中除所述預(yù)置部分流程外的初始化流程,所述影子進(jìn)程模塊503升級為子進(jìn)程模塊。本發(fā)明實施例中父進(jìn)程模塊501為子進(jìn)程模塊502創(chuàng)建用于在該子進(jìn)程模塊502故障時接替該子進(jìn)程模塊502的影子進(jìn)程模塊503,該影子進(jìn)程模塊503只處理預(yù)置部分流程就休眠等待喚醒,該預(yù)置部分流程遠(yuǎn)少于接替子進(jìn)程模塊502需要處理的全部初始化流程,保證了影子進(jìn)程模塊503只占用極少的系統(tǒng)內(nèi)存資源和任務(wù)調(diào)度資源,當(dāng)父進(jìn)程模塊501監(jiān)控到該子進(jìn)程模塊502故障時,該父進(jìn)程模塊501回收該子進(jìn)程模塊502后,立即喚醒該影子進(jìn)程模塊503,由于該影子進(jìn)程模塊503已經(jīng)處理了接替子進(jìn)程模塊502的部分初始化流程,因此,被喚醒后,只需繼續(xù)處理剩余初始化流程即可快速升級為子進(jìn)程模塊502,接替故障的子進(jìn)程模塊502繼續(xù)進(jìn)行數(shù)據(jù)處理,保證了子進(jìn)程模塊502故障時消耗最少的時間處理故障接替,實現(xiàn)了在不額外占用過多的系統(tǒng)內(nèi)存資源和任務(wù)調(diào)度資源的情況下,處理故障進(jìn)程的快速接替。上面實施例中,影子進(jìn)程模塊503升級為子進(jìn)程模塊502,在實際應(yīng)用中,影子進(jìn)程模塊503升級為子進(jìn)程模塊502之后,父進(jìn)程還可以再為子進(jìn)程模塊502創(chuàng)建一個影子進(jìn)程,進(jìn)一步的,在實際應(yīng)用中,處理接替流程前可以先加載ELF文件和動態(tài)庫,下面對本發(fā)明實施例中的進(jìn)程接替的方法進(jìn)行具體描述,請參閱圖6,作為本發(fā)明實施例中進(jìn)程接替的裝置另一個實施例,上述影子進(jìn)程模塊503還包括:第一加載單元601,用于加載ELF文件,并按照所述ELF文件的描述加載預(yù)置部分動態(tài)庫,所述預(yù)置部分動態(tài)庫為在接替動態(tài)庫中預(yù)先指定的一部分動態(tài)庫,所述接替動態(tài)庫為接替所述子進(jìn)程模塊需要加載的全部動態(tài)庫;所述處理休眠單元5031具體用于,當(dāng)所述影子進(jìn)程創(chuàng)建單元5012創(chuàng)建影子進(jìn)程模塊503后,執(zhí)行所述第一加載單元601加載的預(yù)置部分動態(tài)庫中的預(yù)處理函數(shù),處理所述預(yù)置部分流程,并控制所述影子進(jìn)程模塊503進(jìn)入休眠狀態(tài)等待喚醒,所述預(yù)置部分流程為在接替流程中預(yù)先指定必須處理的一部分初始化流程,所述接替流程為接替所述子進(jìn)程模塊502的全部初始化流程;所述影子進(jìn)程模塊503還包括:第二加載單元602,用于當(dāng)所述監(jiān)控喚醒單元5013喚醒所述影子進(jìn)程模塊503時,按照所述ELF文件的描述加載除所述第一加載單元601加載的預(yù)置部分動態(tài)庫外的所述接替動態(tài)庫;所述處理升級單元5032具體用于,當(dāng)所述影子進(jìn)程模塊503被所述監(jiān)控喚醒單元5013喚醒時,執(zhí)行所述第二加載單元602加載的接替動態(tài)庫中除所述預(yù)處理函數(shù)外的其他函數(shù),處理所述接替流程中除所述預(yù)置部分流程外的初始化流程,所述影子進(jìn)程模塊503升級為子進(jìn)程模塊;可選的,該父進(jìn)程模塊501還可以包括:觸發(fā)單元603,用于當(dāng)監(jiān)控到所述影子進(jìn)程模塊503升級到子進(jìn)程模塊時,觸發(fā)所述影子進(jìn)程創(chuàng)建單元5012。本發(fā)明實施例中,在ELF加載階段,第一加載單元5033按照ELF文件的描述先加載預(yù)置部分動態(tài)庫,處理休眠單元5031執(zhí)行其中的預(yù)置部分預(yù)處理函數(shù),處理預(yù)置部分流程后休眠等待喚醒,被喚醒后第二加載單元5034繼續(xù)按照該ELF文件的描述加載剩余的接替動態(tài)庫,處理升級單元5032執(zhí)行剩余的函數(shù)并處理剩余的初始化流程,保證了影子進(jìn)程模塊503只占用極少的系統(tǒng)內(nèi)存資源和任務(wù)調(diào)度資源,同時又能夠在子進(jìn)程模塊502故障時快速的完成接替動態(tài)庫的加載,接替子進(jìn)程模塊502升級成為新的子進(jìn)程模塊502。進(jìn)一步的,在影子進(jìn)程模塊503升級成為子進(jìn)程模塊502后,觸發(fā)單元5014觸發(fā)父進(jìn)程模塊501為該子進(jìn)程模塊502創(chuàng)建影子進(jìn)程模塊503,如此形成了子進(jìn)程模塊502與影子進(jìn)程模塊503的故障循環(huán)接替技術(shù),能夠做到故障場景循環(huán)處理,即使升級后的子進(jìn)程模塊502再次故障,也還會有新的影子進(jìn)程模塊503來接替它,不會造成整個設(shè)備業(yè)務(wù)中斷,保障了整個設(shè)備的穩(wěn)定持續(xù)運行。請參閱圖7,本發(fā)明實施例中進(jìn)程接替的裝置700另一個實施例包括:處理器701和存儲器702;通過調(diào)用所述存儲器702存儲的操作指令,所述處理器701用于執(zhí)行如下操作:指示父進(jìn)程創(chuàng)建子進(jìn)程;指示所述父進(jìn)程為所述子進(jìn)程創(chuàng)建影子進(jìn)程,所述影子進(jìn)程用于在所述子進(jìn)程故障時接替所述子進(jìn)程;當(dāng)所述影子進(jìn)程被創(chuàng)建后,指示所述影子進(jìn)程處理預(yù)置部分流程,并休眠等待喚醒,所述預(yù)置部分流程為在接替流程中預(yù)先指定必須處理的一部分初始化流程,所述接替流程為接替所述子進(jìn)程的全部初始化流程;當(dāng)所述父進(jìn)程監(jiān)控到所述子進(jìn)程故障時,指示操作系統(tǒng)內(nèi)核回收所述子進(jìn)程,并喚醒所述影子進(jìn)程;當(dāng)所述影子進(jìn)程被喚醒時,指示所述影子進(jìn)程處理所述接替流程中除所述預(yù)置部分流程外的初始化流程,所述影子進(jìn)程升級為所述子進(jìn)程。本發(fā)明的一些實施例中,所述處理器701還執(zhí)行如下操作:當(dāng)所述父進(jìn)程監(jiān)控到所述影子進(jìn)程升級到所述子進(jìn)程時,觸發(fā)所述指示所述父進(jìn)程為所述子進(jìn)程創(chuàng)建所述影子進(jìn)程的操作。本發(fā)明的一些實施例中,所述處理器701執(zhí)行所述指示所述影子進(jìn)程處理預(yù)置部分流程的操作之前,所述處理器701還執(zhí)行如下操作:指示所述影子進(jìn)程加載ELF文件,并按照所述ELF文件的描述加載預(yù)置部分動態(tài)庫,所述預(yù)置部分動態(tài)庫為在接替動態(tài)庫中預(yù)先指定的一部分動態(tài)庫,所述接替動態(tài)庫為接替所述子進(jìn)程需要加載的全部動態(tài)庫;所述處理器701執(zhí)行所述指示所述影子進(jìn)程處理預(yù)置部分流程的操作時,具體執(zhí)行如下操作:指示所述影子進(jìn)程執(zhí)行加載的所述預(yù)置部分動態(tài)庫中的預(yù)處理函數(shù),處理所述預(yù)置部分流程;所述處理器701執(zhí)行所述指示所述影子進(jìn)程處理所述接替流程中除所述預(yù)置部分流程外的初始化流程的操作之前,所述處理器701還執(zhí)行如下操作:指示所述影子進(jìn)程按照所述ELF文件的描述加載除所述預(yù)置部分動態(tài)庫外的所述接替動態(tài)庫;所述處理器701執(zhí)行所述指示所述影子進(jìn)程處理所述接替流程中除所述預(yù)置部分流程外的初始化流程的操作時,具體執(zhí)行如下操作:指示所述影子進(jìn)程執(zhí)行加載的所述接替動態(tài)庫中除所述預(yù)處理函數(shù)外的其他函數(shù),處理所述接替流程中除所述預(yù)置部分流程外的初始化流程。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-OnlyMemory)、隨機存取存儲器(RAM,RandomAccessMemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。以上所述,以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1