專利名稱:一種實(shí)現(xiàn)透明進(jìn)程遷移的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域中網(wǎng)絡(luò)操作系統(tǒng)進(jìn)程遷移技術(shù),尤其涉及具有 網(wǎng)絡(luò)連接透明性的高效進(jìn)程遷移裝置及方法。
背景技術(shù):
從集群計(jì)算到Internet計(jì)算,再到今天的網(wǎng)格計(jì)算,當(dāng)前的計(jì)算技術(shù) 己經(jīng)更多地集中在協(xié)作、數(shù)據(jù)共享、周期挪用,以及其它在動(dòng)態(tài)和地理上 分布的組織中的交互模式。在這種趨勢(shì)下,進(jìn)程遷移技術(shù)由于能實(shí)現(xiàn)系統(tǒng) 容錯(cuò)和動(dòng)態(tài)維護(hù);支持負(fù)載均衡和共享;優(yōu)化本地資源利用率,已成為現(xiàn) 代通信和計(jì)算系統(tǒng)中越來越不可或缺的機(jī)制。
進(jìn)程遷移是指當(dāng)進(jìn)程運(yùn)行時(shí),在源節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)之間轉(zhuǎn)移進(jìn)程的行 為。進(jìn)程遷移的主要工作可以分為三步(1)在源節(jié)點(diǎn)提取進(jìn)程狀態(tài);(2) 將進(jìn)程狀態(tài)轉(zhuǎn)移到目標(biāo)節(jié)點(diǎn);(3)在目標(biāo)節(jié)點(diǎn)根據(jù)進(jìn)程狀態(tài)再生該進(jìn)程, 并繼續(xù)執(zhí)行進(jìn)程。圖1為進(jìn)程遷移技術(shù)的原理示意圖,也是本發(fā)明的理論 ^石出。
雖然進(jìn)程遷移技術(shù)的重要性己被普遍認(rèn)識(shí),但由于其實(shí)現(xiàn)的復(fù)雜性、 對(duì)網(wǎng)絡(luò)操作系統(tǒng)的依賴性,以及下級(jí)互聯(lián)網(wǎng)絡(luò)通信帶寬限制阻礙了進(jìn)程遷 移的廣泛使用,尤其是透明的進(jìn)程遷移實(shí)現(xiàn)問題更加復(fù)雜。 一般來說,所 有計(jì)算機(jī)系統(tǒng)都需要某種層次上的通信和同步,進(jìn)程間的網(wǎng)絡(luò)連接不但直 接影響了遷移的透明性,對(duì)進(jìn)程遷移也帶來了限制。所以,進(jìn)程遷移只有 對(duì)網(wǎng)絡(luò)連接的遷移提供支持,才能達(dá)到保持進(jìn)程遷移前網(wǎng)絡(luò)連接的目的, 實(shí)現(xiàn)遷移進(jìn)程完全透明性。
目前,關(guān)于透明進(jìn)程遷移方面的研究還很少,從公開的資料來看,實(shí) 現(xiàn)進(jìn)程透明遷移的裝置及方法主要有以下幾種(1)通過在操作系統(tǒng)用戶 態(tài)提供新的高層網(wǎng)絡(luò)接口裝置或修改庫的實(shí)現(xiàn)來支持網(wǎng)絡(luò)連接的透明遷 移。然而,由于在用戶態(tài)無法獲得內(nèi)核中關(guān)于網(wǎng)絡(luò)連接的所有狀態(tài),因此 存在或多或少的遷移限制;同時(shí),遷移進(jìn)程需要在用戶態(tài)和內(nèi)核態(tài)不斷切 換,造成巨大的系統(tǒng)開銷。(2)為每個(gè)進(jìn)程都設(shè)置一個(gè)唯一的Home (代理)
節(jié)點(diǎn)裝置,進(jìn)程遷移后,在Home節(jié)點(diǎn)上保留一個(gè)代理進(jìn)程,負(fù)責(zé)轉(zhuǎn)發(fā)與位 置相關(guān)的系統(tǒng)調(diào)用,恢復(fù)進(jìn)程原有網(wǎng)絡(luò)環(huán)境。由于進(jìn)程發(fā)送和接收網(wǎng)絡(luò)數(shù) 據(jù)都要通過代理進(jìn)程轉(zhuǎn)發(fā),所以效率較低,且依賴于Home節(jié)點(diǎn)。(3)通過 擴(kuò)展相關(guān)網(wǎng)絡(luò)協(xié)議或提出新的網(wǎng)絡(luò)協(xié)議來實(shí)現(xiàn)透明進(jìn)程遷移,這種方法需 要對(duì)協(xié)議及其實(shí)現(xiàn)有細(xì)致的了解,非常復(fù)雜,而且不穩(wěn)定,無法適應(yīng)動(dòng)態(tài) 的網(wǎng)絡(luò)環(huán)境。
發(fā)明內(nèi)容
本發(fā)明解決的技術(shù)問題是為了克服目前在實(shí)現(xiàn)透明進(jìn)程遷移方法中存 在的弊端,解決由于網(wǎng)絡(luò)連接所導(dǎo)致的遷移限制問題,提供一種實(shí)現(xiàn)透明 進(jìn)程遷移的裝置和方法。
本發(fā)明提出的實(shí)現(xiàn)透明進(jìn)程遷移的裝置,包括系統(tǒng)主控模塊和通信 控制模塊;所述系統(tǒng)主控模塊,以進(jìn)程形式體現(xiàn),運(yùn)行在操作系統(tǒng)用戶態(tài), 用于控制進(jìn)程狀態(tài)切換和進(jìn)程狀態(tài)數(shù)據(jù)同步;所述通信控制模塊,以進(jìn)程 形式體現(xiàn),運(yùn)行在操作系統(tǒng)內(nèi)核態(tài),用于控制底層網(wǎng)絡(luò)連接切換和通信鏈 路上緩存消息的處理;所述系統(tǒng)主控模塊和通信控制模塊在進(jìn)程遷移的過 程中相互協(xié)調(diào),分別用于完成應(yīng)用進(jìn)程的狀態(tài)轉(zhuǎn)移和底層網(wǎng)絡(luò)連接轉(zhuǎn)移。
本發(fā)明提出的實(shí)現(xiàn)透明進(jìn)程遷移的方法,包括以下處理過程
1) 源節(jié)點(diǎn)上的系統(tǒng)主控進(jìn)程停止運(yùn)行需要遷移的竭進(jìn)程,抑止該源進(jìn) 程向外發(fā)送數(shù)據(jù),并向目標(biāo)節(jié)點(diǎn)發(fā)出遷移進(jìn)程請(qǐng)求;
2) 目標(biāo)節(jié)點(diǎn)上的系統(tǒng)主控進(jìn)程收到源節(jié)點(diǎn)發(fā)來的請(qǐng)求后,判斷是否接 受;如果同意接受,則新建一個(gè)空進(jìn)程作為目標(biāo)進(jìn)程準(zhǔn)備接替源進(jìn)程,并 向源節(jié)點(diǎn)發(fā)送同意應(yīng)答;
3) 源節(jié)點(diǎn)收到目標(biāo)節(jié)點(diǎn)的同意應(yīng)答后,源節(jié)點(diǎn)的系統(tǒng)主控進(jìn)程和通信 控制進(jìn)程進(jìn)行進(jìn)程狀態(tài)轉(zhuǎn)移和網(wǎng)絡(luò)連接轉(zhuǎn)移;
4) 目標(biāo)進(jìn)程恢復(fù)完成后,取代源進(jìn)程,從遷移前的指令處繼續(xù)運(yùn)行, 重新向外發(fā)送數(shù)據(jù),并發(fā)送確認(rèn)消息給源節(jié)點(diǎn);
5) 源節(jié)點(diǎn)收到確認(rèn)消息后,殺死源進(jìn)程,進(jìn)程遷移結(jié)束。
優(yōu)選的,所述步驟3)中進(jìn)行進(jìn)程狀態(tài)轉(zhuǎn)移的同時(shí)或者之后進(jìn)行底層 網(wǎng)絡(luò)連接轉(zhuǎn)移。優(yōu)選的,所述步驟3)中的底層網(wǎng)絡(luò)連接轉(zhuǎn)移包括以下處理過程 31 )源節(jié)點(diǎn)上通信控制進(jìn)程緩存所有其它進(jìn)程發(fā)給源進(jìn)程的數(shù)據(jù)包, 并提取源進(jìn)程的網(wǎng)絡(luò)連接狀態(tài),發(fā)送給目標(biāo)節(jié)點(diǎn)上的目標(biāo)進(jìn)程;
32) 目標(biāo)進(jìn)程根據(jù)收到的網(wǎng)絡(luò)連接狀態(tài)恢復(fù)原有的網(wǎng)絡(luò)環(huán)境,之后向
源節(jié)點(diǎn)上通信控制進(jìn)程返回帶有新目的地址的確認(rèn)消息,并向其通信的對(duì)
端進(jìn)程發(fā)送地址改變消息,告知新的目的地址;
33) 源節(jié)點(diǎn)上通信控制進(jìn)程收到確認(rèn)后,提取緩存中其它進(jìn)程發(fā)給源 進(jìn)程的數(shù)據(jù)包,修改目的地址,轉(zhuǎn)發(fā)給目標(biāo)進(jìn)程進(jìn)行處理;
34) 對(duì)端進(jìn)程收到目標(biāo)進(jìn)程發(fā)來的地址改變消息后,找到匹配的連接 控制結(jié)構(gòu),修改該連接的目的地址,并清除緩沖的路由信息,然后向目標(biāo) 進(jìn)程發(fā)送響應(yīng)消息;
35) 目標(biāo)進(jìn)程收到對(duì)端進(jìn)程的響應(yīng)消息,網(wǎng)絡(luò)連接狀態(tài)轉(zhuǎn)移結(jié)束。 優(yōu)選的,所述步驟3)中的進(jìn)程狀態(tài)轉(zhuǎn)移包括源進(jìn)程的進(jìn)程控制塊、
進(jìn)程執(zhí)行狀態(tài)、進(jìn)程虛地址空間、物理頁面、浮點(diǎn)處理器狀態(tài)的轉(zhuǎn)移。
本發(fā)明的進(jìn)程遷移處理方式同現(xiàn)有的其它進(jìn)程遷移方式相比,本發(fā)明 充分利用了操作系統(tǒng)具有用戶空間和內(nèi)核空間的特點(diǎn),采用雙層軟件功能 來實(shí)現(xiàn)了透明的進(jìn)程轉(zhuǎn)移,解決了現(xiàn)有方法普遍存在的效率低,系統(tǒng)開銷 大等缺陷。此外,本發(fā)明在設(shè)計(jì)和實(shí)現(xiàn)時(shí),盡量考慮到通用性和網(wǎng)絡(luò)協(xié)議 無關(guān)性,解決了現(xiàn)有算法過分依賴網(wǎng)絡(luò)協(xié)議和移植性差等問題,具有直接 高效,應(yīng)用范圍廣等特點(diǎn)。
圖1為進(jìn)程遷移技術(shù)的原理示意圖2為本發(fā)明提出的實(shí)現(xiàn)透明進(jìn)程遷移的裝置體系結(jié)構(gòu)圖; 圖3為L(zhǎng)imix操作系統(tǒng)網(wǎng)絡(luò)分層結(jié)構(gòu)圖4為本發(fā)明提出的進(jìn)程遷移方法在Linux系統(tǒng)中實(shí)現(xiàn)的流程圖; 圖5為按本發(fā)明方法在Linux系統(tǒng)中實(shí)現(xiàn)網(wǎng)絡(luò)連接轉(zhuǎn)移的流程圖。
具體實(shí)施例方式
以下將結(jié)合Linux應(yīng)用對(duì)本發(fā)明的具體實(shí)施方式
進(jìn)行詳細(xì)闡述。需要 指出的是,本發(fā)明不局限于任何具體的硬件平臺(tái)和操作系統(tǒng),可以方便地 應(yīng)用到其它環(huán)境中,具有較廣泛的通用性。
進(jìn)程遷移是指當(dāng)進(jìn)程運(yùn)行時(shí),在源節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)之間轉(zhuǎn)移進(jìn)程的行
為。由于在這個(gè)過程中轉(zhuǎn)移的是活躍(Active)進(jìn)程,因此又稱為搶占式 (Preemptive)進(jìn)程遷移。 一般來說,進(jìn)程在遷移之前必須停止,并使進(jìn)程 的狀態(tài)能夠被獲取并轉(zhuǎn)移到目標(biāo)節(jié)點(diǎn)。在目標(biāo)節(jié)點(diǎn)上,遷移進(jìn)程的執(zhí)行信 息被重建并開始繼續(xù)執(zhí)行。
通用操作系統(tǒng)具有內(nèi)核空間和用戶空間的特征, 一個(gè)應(yīng)用進(jìn)程往往由 用戶級(jí)上下文和系統(tǒng)級(jí)上下文兩部分所組成。用戶級(jí)上下文包含著程序代 碼、棧、數(shù)據(jù)、進(jìn)程的寄存器和內(nèi)存映像,是對(duì)進(jìn)程在用戶態(tài)運(yùn)行的封裝。 而系統(tǒng)級(jí)上下文則是對(duì)進(jìn)程在內(nèi)核態(tài)運(yùn)行的封裝,包括對(duì)進(jìn)程所使用資源 的描述和系統(tǒng)代碼運(yùn)行時(shí)的核心棧等。根據(jù)以上特點(diǎn),本發(fā)明從雙層軟件 體系結(jié)構(gòu)的角度設(shè)計(jì)了進(jìn)程遷移裝置,所述裝置包括操作系統(tǒng)中的系統(tǒng)主 控模塊和通信控制模塊,裝置的體系結(jié)構(gòu)如圖2所示。系統(tǒng)主控模塊以進(jìn) 程的形式運(yùn)行在操作系統(tǒng)的用戶態(tài),負(fù)責(zé)控制遷移進(jìn)程的狀態(tài)切換,控制 進(jìn)程的遷移順序和進(jìn)程狀態(tài)數(shù)據(jù)同步;通信控制模塊以進(jìn)程的形式運(yùn)行在 操作系統(tǒng)的內(nèi)核空間,負(fù)責(zé)底層網(wǎng)絡(luò)連接切換和通信鏈路上緩存的數(shù)據(jù)處 理。在進(jìn)程遷移的過程中,系統(tǒng)主控模塊與通信控制模塊相互進(jìn)行協(xié)調(diào), 按照分工分別完成進(jìn)程的狀態(tài)轉(zhuǎn)移和網(wǎng)絡(luò)連接轉(zhuǎn)移。同時(shí),為了縮短故障 轉(zhuǎn)移延時(shí),進(jìn)程狀態(tài)和網(wǎng)絡(luò)連接的轉(zhuǎn)移可以并發(fā)進(jìn)行,也可以采用先進(jìn)行 進(jìn)程狀態(tài)轉(zhuǎn)移再進(jìn)行網(wǎng)絡(luò)連接的轉(zhuǎn)移。
Linux操作系統(tǒng)的網(wǎng)絡(luò)分層結(jié)構(gòu)如圖3所示。這個(gè)層次模型可以進(jìn)一 步抽象為三個(gè)層次:套接字層、網(wǎng)絡(luò)協(xié)議層和網(wǎng)絡(luò)設(shè)備層。在具體實(shí)現(xiàn)中, 每個(gè)層次被抽象為一個(gè)對(duì)象,它們是
■套接字(Socket)。 一個(gè)套接字就是網(wǎng)絡(luò)中的一個(gè)連接,它向用戶提 供了基于文件I/0 (讀,寫等)的網(wǎng)絡(luò)數(shù)據(jù)傳輸。Socket通過網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn) 自身,它與網(wǎng)絡(luò)協(xié)議密切相關(guān),體現(xiàn)了網(wǎng)絡(luò)和文件系統(tǒng)、進(jìn)程管理之間的 關(guān)系,它是網(wǎng)絡(luò)傳輸?shù)娜肟凇?br>
■網(wǎng)絡(luò)協(xié)議(Protocol)。網(wǎng)絡(luò)協(xié)議是一種網(wǎng)絡(luò)語言,它規(guī)定了通信雙 方交換信息的一種規(guī)范,是網(wǎng)絡(luò)傳輸?shù)幕A(chǔ)。
■ 設(shè)備接口 (Device and Interface )。網(wǎng)絡(luò)設(shè)備接口控制著網(wǎng)絡(luò)數(shù)據(jù) 由軟件到硬件和由硬件到軟件的過程,體現(xiàn)了網(wǎng)絡(luò)和設(shè)備的關(guān)系,是網(wǎng)絡(luò) 傳輸?shù)臉蛄骸?br>
可以說大多數(shù)計(jì)算環(huán)境都是通過socket套接字接口,使用TCP
(Transmission Control Protocol,傳輸層控制協(xié)議)和UDP (User Datagram Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)作為底層的通信機(jī)制,而TCP是一 種面向連接的網(wǎng)絡(luò)協(xié)議,順利地對(duì)TCP網(wǎng)絡(luò)連接進(jìn)行轉(zhuǎn)移能夠有效地解決 進(jìn)程遷移中透明性的問題,提高系統(tǒng)穩(wěn)定性。本發(fā)明實(shí)現(xiàn)了基于TCP網(wǎng)絡(luò) 連接的進(jìn)程透明遷移的方法,該實(shí)現(xiàn)方法主要由以下步驟組成,如圖4所 示。
首先定義應(yīng)用進(jìn)程的網(wǎng)絡(luò)狀態(tài)四元組N〈節(jié)點(diǎn),進(jìn)程,本地IP,本地
端口〉。節(jié)點(diǎn)A上進(jìn)程A1的網(wǎng)絡(luò)狀態(tài)NKA, Al, IP—A, Port—A〉與節(jié)點(diǎn)B 上進(jìn)程B1的網(wǎng)絡(luò)狀態(tài)N2〈B, Bl, IP_B, Port—B〉已經(jīng)建立了一條TCP連接 L1(IP_A, Port—A, IP—B, Port_B)并且正常通信。當(dāng)節(jié)點(diǎn)B決定遷移進(jìn)程 Bl到節(jié)點(diǎn)C上時(shí)。
步驟401:節(jié)點(diǎn)B上的系統(tǒng)主控進(jìn)程首先停止需要遷移的進(jìn)程B1的運(yùn) 行,標(biāo)志B1已處于準(zhǔn)備遷移(PRE—MIG)態(tài),抑止該進(jìn)程繼續(xù)發(fā)送數(shù)據(jù)。并 根據(jù)所獲得的節(jié)點(diǎn)信息,決定遷移進(jìn)程B1到節(jié)點(diǎn)C上。于是,向C的發(fā)送 遷移請(qǐng)求。
步驟402:節(jié)點(diǎn)C上的系統(tǒng)主控模塊接收到節(jié)點(diǎn)B發(fā)來的遷移請(qǐng)求, 會(huì)首先判斷是否接受該請(qǐng)求,判斷的依據(jù)可以根據(jù)系統(tǒng)負(fù)載情況。如果同 意接受遷移請(qǐng)求,則創(chuàng)建(fork)—個(gè)空進(jìn)程Cl處理遷移請(qǐng)求,準(zhǔn)備接替進(jìn) 程B1,同時(shí),向節(jié)點(diǎn)B發(fā)出同意應(yīng)答。
步驟403: B收到同意應(yīng)答后,系統(tǒng)主控模塊開始獲取進(jìn)程Bl的進(jìn)程 狀態(tài),依次提取進(jìn)程控制塊、進(jìn)程執(zhí)行狀態(tài)、進(jìn)程虛地址空間、物理頁面、 浮點(diǎn)處理器狀態(tài)等狀態(tài)并發(fā)送到節(jié)點(diǎn)C,在C1上進(jìn)行恢復(fù)。同時(shí)通知內(nèi)核 態(tài)的通信控制進(jìn)程進(jìn)行網(wǎng)絡(luò)連接狀態(tài)轉(zhuǎn)移。
步驟404:通信控制進(jìn)程收到轉(zhuǎn)移通知后,提取B1網(wǎng)絡(luò)連接的狀態(tài)并 在C1上恢復(fù)。
步驟405: Cl恢復(fù)完成后,將取代B1,從Bl遷移前的指令處繼續(xù)運(yùn) 行,重新向外發(fā)送數(shù)據(jù)。同時(shí)發(fā)送確認(rèn)消息給源節(jié)點(diǎn)。
步驟406:節(jié)點(diǎn)B收到確認(rèn)消息后,通知系統(tǒng)主控進(jìn)程殺死源進(jìn)程B1, 進(jìn)程遷移結(jié)束。
圖5為按本發(fā)明方法在Linux系統(tǒng)中實(shí)現(xiàn)網(wǎng)絡(luò)連接轉(zhuǎn)移的流程圖,其 具體步驟如下所示
步驟501:節(jié)點(diǎn)B上通信控制進(jìn)程收到遷移通知后,緩存進(jìn)程A1發(fā)給
Bl的所有數(shù)據(jù)包,并提取B1網(wǎng)絡(luò)連接狀態(tài),發(fā)送給目標(biāo)節(jié)點(diǎn)上的目標(biāo)進(jìn) 程;打包并發(fā)送MIG—SOCKET請(qǐng)求給CI 。
步驟502: Cl通過sock—create ()重新分配一個(gè)socket套接字,解包, 根據(jù)包內(nèi)容恢復(fù)該連接的狀態(tài)。如果該連接的端口己被占用,將得到一個(gè) 新的端口。 Cl向B1發(fā)送MIG—SOCKET—REPLY消息,表示該連接一端的狀態(tài) 己被恢復(fù),并且返回新的地址和端口(IP—C, Port一C〉。
步驟503: Cl向該連接的peer所在的節(jié)點(diǎn)A的通信控制進(jìn)程發(fā)送 ADDR_CHANGE消息(IP—A, Port_A, IP_B, Port_B, IP—C, Port_C),告知 它由(IP—A, Port—A, IP—B, Port—B)標(biāo)識(shí)的網(wǎng)絡(luò)連接的另一端地址己變?yōu)?(IP—C, Port一C)。
步驟504:節(jié)點(diǎn)B上通信控制進(jìn)程收到確認(rèn)后,提取緩存中進(jìn)程Al發(fā) 給B1的數(shù)據(jù)包,利用Linux的內(nèi)核函數(shù)ip—rev—finish()調(diào)用另一個(gè)內(nèi)核 函數(shù)ip—route—input (),根據(jù)接收到的以太網(wǎng)數(shù)據(jù)包中源地址和目的地址 來獲得路由信息,改寫目的IP地址,將數(shù)據(jù)包轉(zhuǎn)發(fā)給進(jìn)程Cl進(jìn)行處理。
步驟505:對(duì)端節(jié)點(diǎn)A收到ADDR—CHANGE消息后,通信控制進(jìn)程將根 據(jù)(IP— A, Port—A, IP_B, Port—B )找到所匹配連接的sock控制結(jié)構(gòu),然后 把該連接的目的地址和端口分別修改為IP一C和Portj:,并清除緩沖的路 由信息。這樣,在下次發(fā)送數(shù)據(jù)時(shí),內(nèi)核將會(huì)査找路由表,重建路由信息。 然后發(fā)送ADDR一CHANGE一REPLY響應(yīng)消息。
步驟506:當(dāng)目標(biāo)進(jìn)程C 1收到ADDR_CHANGE_REPLY響應(yīng)消息后,網(wǎng) 絡(luò)連接轉(zhuǎn)移完畢。
進(jìn)程遷移是現(xiàn)代計(jì)算系統(tǒng)中重要機(jī)制之一,本發(fā)明基于雙層軟件功能 角度提出一種進(jìn)程遷移裝置及方法,不僅保證了進(jìn)程遷移的透明性,還大 大降低了系統(tǒng)運(yùn)行開銷,取得了良好的應(yīng)用效果。
以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說 明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對(duì)于本發(fā)明所屬技術(shù) 領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若 干簡(jiǎn)單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1. 一種實(shí)現(xiàn)透明進(jìn)程遷移的裝置,其特征在于,所述裝置包括系統(tǒng) 主控模塊和通信控制模塊;所述系統(tǒng)主控模塊,以進(jìn)程形式體現(xiàn),運(yùn)行在操作系統(tǒng)用戶態(tài),用于控制進(jìn)程狀態(tài)切換和進(jìn)程狀態(tài)數(shù)據(jù)同步;所述通信 控制模塊,以進(jìn)程形式體現(xiàn),運(yùn)行在操作系統(tǒng)內(nèi)核態(tài),用于控制底層網(wǎng)絡(luò) 連接切換和通信鏈路上緩存消息的處理;所述系統(tǒng)主控模塊和通信控制模 塊在進(jìn)程遷移的過程中相互協(xié)調(diào),用于完成應(yīng)用進(jìn)程的狀態(tài)轉(zhuǎn)移和底層網(wǎng) 絡(luò)連接轉(zhuǎn)移。
2. —種實(shí)現(xiàn)透明進(jìn)程遷移的方法,其特征在于,所述方法包括以下處 理過程1) 源節(jié)點(diǎn)上的系統(tǒng)主控進(jìn)程停止運(yùn)行需要遷移的源進(jìn)程,抑止該源進(jìn)程向外發(fā)送數(shù)據(jù),并向目標(biāo)節(jié)點(diǎn)發(fā)出遷移進(jìn)程請(qǐng)求;2) 目標(biāo)節(jié)點(diǎn)上的系統(tǒng)主控進(jìn)程收到源節(jié)點(diǎn)發(fā)來的請(qǐng)求后,判斷是否接 受;如果同意接受,則新建一個(gè)空進(jìn)程作為目標(biāo)進(jìn)程準(zhǔn)備接替源進(jìn)程,并 向源節(jié)點(diǎn)發(fā)送同意應(yīng)答;3) 源節(jié)點(diǎn)收到目標(biāo)節(jié)點(diǎn)的同意應(yīng)答后,源節(jié)點(diǎn)的系統(tǒng)主控進(jìn)程和通信 控制進(jìn)程進(jìn)行進(jìn)程狀態(tài)轉(zhuǎn)移和網(wǎng)絡(luò)連接轉(zhuǎn)移;4) 目標(biāo)進(jìn)程恢復(fù)完成后,取代源進(jìn)程,從遷移前的指令處繼續(xù)運(yùn)行, 重新向外發(fā)送數(shù)據(jù),并發(fā)送確認(rèn)消息給源節(jié)點(diǎn);5) 源節(jié)點(diǎn)收到確認(rèn)消息后,殺死源進(jìn)程,進(jìn)程遷移結(jié)束。
3. 根據(jù)權(quán)利要求2所述的實(shí)現(xiàn)透明進(jìn)程遷移的方法,其特征在于,所 述步驟3)中進(jìn)行進(jìn)程狀態(tài)轉(zhuǎn)移的同時(shí)或者之后進(jìn)行底層網(wǎng)絡(luò)連接轉(zhuǎn)移。
4. 根據(jù)權(quán)利要求2或3所述的實(shí)現(xiàn)透明進(jìn)程遷移的方法,其特征在于, 所述步驟3)中的底層網(wǎng)絡(luò)連接轉(zhuǎn)移包括以下處理過程31) 源節(jié)點(diǎn)上通信控制進(jìn)程緩存所有其它進(jìn)程發(fā)給源進(jìn)程的數(shù)據(jù)包, 并提取源進(jìn)程的網(wǎng)絡(luò)連接狀態(tài),發(fā)送給目標(biāo)節(jié)點(diǎn)上的目標(biāo)進(jìn)程;32) 目標(biāo)進(jìn)程根據(jù)收到的網(wǎng)絡(luò)連接狀態(tài)恢復(fù)原有的網(wǎng)絡(luò)環(huán)境,之后向 源節(jié)點(diǎn)上通信控制進(jìn)程返回帶有新目的地址的確認(rèn)消息,并向其通信的對(duì)端進(jìn)程發(fā)送地址改變消息,告知新的目的地址;33) 源節(jié)點(diǎn)上通信控制進(jìn)程收到確認(rèn)后,提取緩存中其它進(jìn)程發(fā)給源 進(jìn)程的數(shù)據(jù)包,修改目的地址,轉(zhuǎn)發(fā)給目標(biāo)進(jìn)程進(jìn)行處理;34) 對(duì)端進(jìn)程收到目標(biāo)進(jìn)程發(fā)來的地址改變消息后,找到匹配的連接 控制結(jié)構(gòu),修改該連接的目的地址,并清除緩沖的路由信息,然后向目標(biāo) 進(jìn)程發(fā)送響應(yīng)消息;35) 目標(biāo)進(jìn)程收到對(duì)端進(jìn)程的響應(yīng)消息,網(wǎng)絡(luò)連接狀態(tài)轉(zhuǎn)移結(jié)束。
5.根據(jù)權(quán)利要求2或3所述的實(shí)現(xiàn)透明進(jìn)程遷移的方法,其特征在于, 所述步驟3)中的進(jìn)程狀態(tài)轉(zhuǎn)移包括源進(jìn)程的進(jìn)程控制塊、進(jìn)程執(zhí)行狀態(tài)、 進(jìn)程虛地址空間、物理頁面、浮點(diǎn)處理器狀態(tài)的轉(zhuǎn)移。
全文摘要
本發(fā)明公開了一種實(shí)現(xiàn)透明進(jìn)程遷移的裝置和方法,充分利用了操作系統(tǒng)具有用戶空間和內(nèi)核空間的特點(diǎn),采用雙層軟件功能實(shí)現(xiàn)透明的進(jìn)程轉(zhuǎn)移,提高了遷移的效率,降低了系統(tǒng)的開銷。此外本發(fā)明還解決了現(xiàn)有算法過分依賴網(wǎng)絡(luò)協(xié)議和移植性差等問題,具有直接高效,應(yīng)用范圍廣等特點(diǎn)。
文檔編號(hào)H04L12/28GK101122868SQ200710077200
公開日2008年2月13日 申請(qǐng)日期2007年9月18日 優(yōu)先權(quán)日2007年9月18日
發(fā)明者翌 李, 王繼剛, 鐘衛(wèi)東 申請(qǐng)人:中興通訊股份有限公司