專利名稱:應用于分布式系統(tǒng)中的升級方法及版本管理客戶端的制作方法
技術領域:
本發(fā)明屬于分布式系統(tǒng)技術領域,尤其涉及一種應用于分布式系統(tǒng)中的升 級方法及版本管理客戶端。
背景技術:
在分布式系統(tǒng)環(huán)境中,通常需要對不同類型、不同功能的多個處理機節(jié)點 進行快速、批量部署不同的版本。由于通信領域的產(chǎn)品比較復雜,網(wǎng)元、物理 單板種類繁多,而且同一物理單板在不同網(wǎng)絡環(huán)境下可以完成不同的邏輯功能
處理,例如開局時需要大規(guī)模的版本批量部署;版本更新時需要大量的單板 版本升級。在這種情況下,就特別需要提供一種通用、靈活、高效的方式來支 持分布式環(huán)境中眾多不同類型的處理機版本的下載、啟動和更新。由于存在上 述需求,版本管理應運而生。
版本管理是分布式系統(tǒng)的一個重要功能組件,主要完成分布式環(huán)境下各個 處理機版本的配置、查詢、下載和啟動(包括啟動參數(shù)的傳遞)。版本管理通 常采用服務器一客戶端模型,由統(tǒng)一的版本服務器對不同的處理機節(jié)點的版本 進行集中管理,每個處理機上運行版本管理客戶端。版本管理客戶端負責本地 物理配置信息的上傳,從版本服務器查詢和獲取處理機功能版本信息,并下載 和啟動相應版本。
分布式系統(tǒng)中通常將版本管理集成到本地存儲的啟動加載程序(以下簡稱 為boot)里,主要提供版本管理客戶端運行的基本環(huán)境,比如配置單板IP地 址和運行FTP客戶端等基本網(wǎng)絡功能。在boot啟動之后,版本管理客戶端可 以進行版本信息的配置、查詢,并從版本服務器下載和加載版本、獲取啟動參 數(shù)等。
參見圖1和圖2,介紹了 VxWork系統(tǒng)中現(xiàn)有的三階段上電啟動過程,該 三階段包括固件上電自檢階段、boot版本管理階段和內核啟動階段,其中
41) 固件上電自4企階段,固件也可稱為"BIOS"。系統(tǒng)引導過程從硬件加 電啟動開始, 一些初始化工作完成后,控制轉到固件。固件;險測并配置平臺芯 片組、存儲器控制器、總線橋、中斷控制器和其他的低級硬件。
在本階段中,系統(tǒng)花費了大量的時間。固件基于設置將控制移交給一個引 導裝載程序,在普通PC上是主引導記錄MBR ( Master Boot Record,主引導 記錄),在嵌入式領域通常是燒制在Flash上的boot;
2) boot版本管理階段,在boot里面集成了版本管理功能。通常boot是一個 相對比較完善的小內核,具有基本的IP、 MAC ( Media Access Control,介質訪 問控制)配置功能和TFTP/FTP (簡單文件傳輸協(xié)議/文件傳輸協(xié)議)下載功能。 固件階4殳BIOS4巴Flash上的boot加載到內存某位置處,并跳轉到boot入口 #1行。 boot執(zhí)行Vxworks的一些公共代碼和硬件初始化工作;然后激活VxWorks內核, 執(zhí)行VxWorks內核指定的根任務;開始閱讀和執(zhí)行用戶輸入命令。根據(jù)用戶是 否有輸入決定是否進入版本管理界面。如果用戶有輸入,則進入版本管理,用 戶可以對版本進行配置。配置完成后開始內核的下載和加載,并跳轉到內核的 起始位置執(zhí)行。
3 ) VxWorks內核啟動階段,VxWorks內核啟動過程首先是syslnit禁止中斷, 清除cache(緩存),初始化CPU基本寄存器;然后usrlnit設置cache的工作模式, 板級硬件初始化,初始化Wind內核,啟動usrRoot根任務;進行內存初始化, 添加用戶應用程序,至此VxWorks內核啟動完成。這種啟動方式的最大缺點是 每次系統(tǒng)重啟都需要進行硬件上電、自檢及booH、內核的引導啟動過程。
目前,隨著計算機技術的發(fā)展,系統(tǒng)的處理速度更快、存儲容量更大、性 能結構更加先進和復雜,系統(tǒng)重新啟動的時間不僅沒有降低反而有增長的趨 勢。延長重新啟動的時間意味著延長版本升級過程和開發(fā)調試過程,導致既浪 費時間,也嚴重地影響了系統(tǒng)的工作效率。
發(fā)明內容
為了解決上述問題,本發(fā)明的目的是提供一種應用于分布式系統(tǒng)中的升級 方法及版本管理客戶端,可有效提高在升級過程中分布式系統(tǒng)的重啟速度,改 善用戶體驗,進而提高分布式系統(tǒng)的工作效率。為了達到上述目的,本發(fā)明提供一種應用于分布式系統(tǒng)中的升級方法,所
述方法包括
版本管理客戶端下載新內核,并將新內核映像加載到動態(tài)內存中;
所述版本管理客戶端將分布式系統(tǒng)的快速重啟模塊DSFRM的匯編存根 代碼拷貝到所述動態(tài)內存中,所述DSFRM的匯編存根代碼用于將所述動態(tài)內 存中指定的內容從原位置搬移到指定位置;
在拷貝完成后跳轉到所述DSFRM的匯編存根代碼的執(zhí)行入口 ,并通過執(zhí) 行所述DSFRM的匯編存根代碼將所述新內核映像拷貝到所述動態(tài)內存中的 目標位置,并在拷貝完成后跳轉到新內核的執(zhí)行入口 ,啟動所述新內核。
優(yōu)選的,所述版本管理客戶端將分布式系統(tǒng)的快速重啟模塊DSFRM的匯 編存根代碼拷貝到所述動態(tài)內存中的步驟具體為
在所述動態(tài)內存中分配至少 一代碼頁;
將所述DSFRM的匯編存根代碼拷貝到所述代碼頁中。
優(yōu)選的,所述新內核是所述版本管理客戶端從本地Flash下載、從PC機 下載、或通過FTP從網(wǎng)絡位置下載得到。
優(yōu)選的,在將所述DSFRM的匯編存根代碼拷貝到所述動態(tài)內存中之前, 所述方法還包括
優(yōu)選的,在跳轉到所述DSFRM的匯編存根代碼的執(zhí)行入口之前,所述方 法還包括
所述版本管理客戶端裝載內核數(shù)據(jù)段值到段寄存器,并將全局描述符表 GDT和中斷描述符表IDT設置為無效。
優(yōu)選的,在跳轉到所述DSFRM的匯編存根代碼的執(zhí)行入口之后,所述方 法還包括
所述版本管理客戶端將所述新內核映像的起始地址和/或存儲有DSFRM 的匯編存根代碼的代碼頁的地址以參數(shù)的形式發(fā)送給所述新內核。 優(yōu)選的,所述方法還包括
從所述動態(tài)內存的棧中讀取所述代碼頁的地址,并將所述代碼頁的地址存 儲到寄存器中;通過所述代碼頁的地址,在所述代碼頁的頂端設置當前函數(shù)^執(zhí)行堆棧,將 所述新內核的起始地址存儲到棧中。
優(yōu)選的,在所述版本管理客戶端下載新內核之后,所述方法還包括 所述版本管理客戶端初始化分布式系統(tǒng)的快速重啟模塊DSFRM的管理 數(shù)據(jù)結構T一VerFRMCtrlInfo,所述管理數(shù)據(jù)結構T—VerFRMCtrllnfo用于指定 新內核在內存中的位置、新內核啟動位置和DSFRM的匯編存根代碼頁的位 置。
本發(fā)明還提供一種版本管理客戶端,包括 加載模塊,用于將新內核映像加載到動態(tài)內存中;
拷貝模塊,用于將分布式系統(tǒng)的快速重啟模塊DSFRM的匯編存根代碼拷
定的內容從原位置搬移到指定位置;
引導模塊,用于在拷貝完成后跳轉到所述DSFRM的匯編存根代碼的執(zhí)行
態(tài)內存中的目標位置,并在拷貝完成后跳轉到新內核的執(zhí)行入口,啟動所述新 內核。
優(yōu)選的,所述版本管理客戶端還包括
初始化模塊,用于初始化分布式系統(tǒng)的快速重啟模塊DSFRM的管理數(shù)據(jù) 結構T—VerFRMCtrllnfo,所述管理數(shù)據(jù)結構T一VerFRMCtrlInfo用于指定新內 核在內存中的位置、新內核啟動位置和DSFRM的匯編存根代碼頁的位置。
優(yōu)選的,所述版本管理客戶端還包括
下載模塊,用于從本地Flash下載、從PC機下載、或通過FTP從網(wǎng)絡位 置下載所述新內核。
上述技術方案中的至少一個技術方案具有如下有益效果首先將下載的新 內核,并將該新內核映像加載到動態(tài)內存中;然后將DSFRM的匯編存根代碼 拷貝到動態(tài)內存中,并在拷貝完成后跳轉到DSFRM匯編代碼執(zhí)行入口;最后 通過DSFRM的匯編存根代碼將新內核映像拷貝到動態(tài)內存中,拷貝完成后跳 轉到新內核的執(zhí)行入口,并啟動新內核。通過上述方式既充分利用了版本管理 的靈活性和擴展性,又跳過了系統(tǒng)重啟過程中比較耗時的固件上電自檢階段和
7boot內核啟動階段,有效減少了在升級過程中分布式系統(tǒng)的重啟時間,改善用
戶體驗,大大提高了系統(tǒng)的工作效率,同時也可以為開發(fā)調試人員帶來便利。
圖1為現(xiàn)有的VxWorks系統(tǒng)的三階段上電啟動過程示意圖2為現(xiàn)有的分布式系統(tǒng)的升級方法流程圖3為本實施例中分布式系統(tǒng)的升級方法流程圖4為圖3中內存布局示意圖5為本實施例中分布式系統(tǒng)的升級方法流程圖6為本實施例中版本管理客戶端的結構示意圖。
具體實施例方式
在本實施例中,首先將新內核下載到本地并加載到內存中,然后為DSFRM 的匯編存才艮代碼和DSFRM的管理數(shù)據(jù)結構T一VerFRMCtrlInfo分配動態(tài)內存 頁。初始化設置T—VerFRMCtrlInfo的內容,如新內核在內存中位置、新內核 啟動位置、內核大小、DSFRM的匯編存根代碼頁的位置等,上述DSFRM的 匯編存根代碼用于把指定內存中的內容搬移到另 一個指定位置,然后跳轉到新 位置的開始處執(zhí)行。上述T一VerFRMCtrlInfo管理數(shù)據(jù)結構可用于保存快速重 啟內核所需要的相關信息。然后版本管理調用體系結構相關的函數(shù) machine_kfrmexec實現(xiàn)快速重啟,入?yún)⑹前姹竟芾沓跏蓟说?T—VerFRMCtrlInfo結構。machine—kfrmexec跳轉到該DSFRM的匯編存4艮代碼 的起始處執(zhí)行,將分布式系統(tǒng)的快速重啟模塊DSFRM (假設DSFRM內核代 碼段位置用dsfrm—code—start表示,大小為dsfrm—code_size )的代碼拷貝到在 內存中分配的存根代碼頁中,然后跳轉到DSFRM快速重啟的入口函數(shù)。 DSFRM的匯編存才艮代碼完成新內核拷貝到最終位置,并跳轉到內核初始化入 口執(zhí)行,從而完成系統(tǒng)的重啟。
為了使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚明白,下面結合實 施例和附圖,對本發(fā)明實施例做進一步詳細地說明。在此,本發(fā)明的示意性實 施例及說明用于解釋本發(fā)明,但并不作為對本發(fā)明的限定。如圖3所示,為分布式系統(tǒng)的升級方法流程圖,具體步驟如下 步驟301、版本管理客戶端下載新內核,并將新內核映像加載到動態(tài)內存
中;
版本管理客戶端接收到快速重啟命令后,系統(tǒng)跳轉到版本管理客戶端中的 版本管理模塊入口。如果在規(guī)定時間內用戶沒有輸入,則直接執(zhí)行新內核的下 載和加載;否則,根據(jù)用戶配置參數(shù)進行新內核的下載和加載。
步驟302、版本管理客戶端將DSFRM的匯編存根代碼拷貝到所述動態(tài)內 存中,該DSFRM的匯編存根代碼用于將動態(tài)內存中指定的內容從原位置搬移 到指定位置;
步驟303、在拷貝完成后跳轉到DSFRM的匯編存根代碼的執(zhí)行入口,并 通過執(zhí)行DSFRM的匯編存根代碼將新內核映像拷貝到動態(tài)內存中的目標位 置,并在拷貝完成后跳轉到新內核的執(zhí)行入口,啟動所述新內核。
在步驟302中,新內核加載后進行DSFRM切換的準備和初始化工作,包 括在動態(tài)內存中申請至少一頁面用于T_VerFRMCtrlInfo管理結構,根據(jù)新 加載內核的信息初始化T—VerFRMCtrlInfo結構的某些字段;根據(jù)DSFRM的 匯編存根代碼大小申請相應的動態(tài)頁面。
頁中,可以保證在新內核覆蓋舊內核的過程中DSFRM的匯編存根代碼不會 被覆蓋。
T—VerFRMCtrlInfo管理結構是重要的DSFRM控制結構 typedef struct tagT—VerFRMCtrlInfo{
unsigned long destination; /*新內核最纟冬力口載》也址*/ unsigned long start; /*新內核當前起始地址*/
struct page *dsfrm—code_page; /* "f^碼頁 */ unsigned long nr—segments; /*新內核映像段數(shù)*/ struct kimage—segment segment[KIMAGE—SEGMENT—MAX];
}T_VerFRMCtrlInfo;kimage—segment結構體 struct kimage—segment {
void *mem;
size—t memsz;
};
上述結構中kimage—segment結構表示內核映像的地址和大?。豢紤]到 內核可能比較大,T—VerFRMCtrllnfo結構中可以4巴內核最大拆分為 KIMAGE—SEGMENT—MAX個^爻存》文;
nr一segments表示實際分段數(shù);
dsfrm_code_page成員表示DSFRM的匯編存根代碼的代碼頁的地址; start表示新內核加載的起始位置。
版本管理模塊完成新內核加載和快速重啟需要的必要初始化工作,然后將 控制交給體系結構相關的實現(xiàn)machine—kfrmexec 4丸行。
下面以X86體系結構為例說明。machine—kfrmexec主要作用是判斷系統(tǒng) 是否支持快速重啟,如果不支持,則跳轉到系統(tǒng)的正常重啟入口,否則禁止內 核任務搶占和關中斷;將內核代碼段中DSFRM的匯編存根代碼拷貝到版本 管理模塊申請的dsfrm—code_page內存頁中;裝載內核數(shù)據(jù)段值到段寄存器, 并使GDT( Global Description Table,全局描述符表)和IDT( Interrupt Description Table,中斷描述符表)無效;跳轉到dsfrm—code_page的起始代碼,將一些重 要的信息以參數(shù)的形式傳遞給新內核,比如容納有內核映像的源/目的地址的 間接頁,新內核的起始地址,DSFRM的匯編存根代碼頁的地址,以及一個
參見圖4,為本實施例中內存布局示意圖。在本實施例中DSFRM快速重 啟的關鍵點在于DSFRM的控制數(shù)據(jù)結構和DSFRM的匯編存根代碼要獨立于 當前內核運行位置,可保證DSFRM的匯編存根代碼在搬移新內核覆蓋當前內 核的過程中,DSFRM的匯編存才艮代碼不被破壞。
新內核的加載地址通常就是當前運行內核的起始地址,內核一般從底端內 存某位置開始。
新內核的加載位置、DSFRM控制數(shù)據(jù)結構的內存頁、DSFRM的匯編存根代碼的代碼頁的分配可由版本管理模塊借助VxWorks的內存管理功能完成。 版本管理模塊能夠獲取新內核的大小和最終目的地址信息,因而可以保證申請 的新內核加載位置不會與最終加載位置交叉或重合。同理,對于DSFRM控制 數(shù)據(jù)結構的內存頁、DSFRM的匯編存根代碼的代碼頁的分配也要保證不能位 于新內核最終加載內存范圍,所以版本管理分配內存的策略是盡量分配高端內 存。
當前內核的運行位置一般是固定的,對于新內核加載位置、DSFRM控制 數(shù)據(jù)結構的內存頁和DSFRM的匯編存根代碼的代碼頁的位置并沒有順序要 求,只要版本管理模塊在分配內存時保證前面所說的約束條件即可。
在步驟303中,DSFRM的匯編存根代碼執(zhí)行下面的操作
1) 自棧中讀取參數(shù),并將它們存儲到寄存器中,然后禁用中斷。
2) 使用以參數(shù)形式傳遞給自己的頁地址,在頁的末端設置一個棧。
3) 將新內核映像的起始地址存儲到棧中,以使得存根代碼的返回自動將 系統(tǒng)引導到新的內核映像。
4) 設置crO寄存器的適當位來禁用內存分頁。 5 )將頁目錄基址寄存器cr4重設為0。
6) 清S快表(Translation Lookaside Buffers, TLB )。
7) 將所有內核映像頁拷貝到最終目標頁。
8) 再次清空TLB。
9) 將除了棧指針寄存器esp (因為它指向容納新內核起始地址的棧)以 外的所有寄存器重設為0。
10) 自存根代碼"返回"。自動將系統(tǒng)引導到新內核。
如圖5所示,為本實施例中分布式系統(tǒng)的升級方法流程圖,本流程過程分 為三個階段。
第一階段通過版本管理加載新內核和DSFRM快速重啟的初始化分配。 步驟501、首先用戶輸入快速重啟命令,系統(tǒng)跳轉到版本管理快速重啟入d 。
步驟502、版本管理判斷是否需要快速重啟,如果不需要,則直接調用系 統(tǒng)reboot操作;否則,進入版本管理的配置過程。版本管理的配置操作由用戶選擇完成,如果用戶沒有輸入,則根據(jù)當前配置進行下一步搡作。
步驟503、版本管理根據(jù)配置下載和加載內核到內存中。內核下載方式有 多種,可以從本地Flash下載、從PC機下載或者通過FTP從網(wǎng)絡位置下載等。 內核加載到內存中,由版本管理負責分配加載新內核所需要的空間,并保證所 分配空間與新內核最終加載的位置不會重合。
步驟504、版本管理為DSFRM的匯編存根代碼分配動態(tài)內存頁,通常為 一頁大小。根據(jù)當前內核DSFRM代碼段的大小DSFRM—code—size分配。
步驟505、版本管理為DSFRM管理結構T_VerFRMCtrlInfo分配一個動態(tài) 內存頁,并初始化如新內核加載位置和大小、內核最終加載地址、DSFRM的 匯編存根代碼頁地址等信息。
步驟506、調用體系結構相關的machine—kfrmexec函數(shù),入?yún)槌跏蓟?的T—VerFRMCtrlInfo結構,進入第二階段。
第二階段machine—kfrmexec完成體系結構相關的快速重啟前的準備工作。
步驟507、如果當前體系結構不支持快速重啟功能,則直接reboot重啟; 否則進入下一步。
步驟508、禁止內核搶占并關中斷,保證當前操作不會被打斷。
步驟509、把DSFRM的匯編存根代碼從dsfrm—code_start位置開始拷貝到 版本管理所分配的動態(tài)內存頁,這份DSFRM拷貝是最終完成新內核搬移和啟 動的代碼。之所以不直接使用當前內核的DSFRM代碼是因為當前內核會被新 內核覆蓋。
步驟510、裝載數(shù)據(jù)段寄存器,并使GDT和IDT表無效。 步驟511、跳轉到動態(tài)分配的DSFRM匯編代碼頁的起始位置處執(zhí)行,并 將 一 些重要的信息以參數(shù)的形式傳遞給新內核,如新內核的起始地址, DSFRM匯編存根代碼頁的地址,是否啟用了 PAE的標志等。然后進入第三 階段。
第三階段DSFRM的匯編存根代碼完成新內核的搬移和啟動工作。 步驟512、自棧中讀取參數(shù),并將它們存儲到寄存器中,然后禁用中斷。 步驟513、使用以參數(shù)形式傳遞的頁地址,在頁頂端設置當前函數(shù)執(zhí)行堆棧。
步驟514、將新內核映像的起始地址存儲到當前棧中,以使得存根代碼當
前函數(shù)的返回自動將系統(tǒng)引導到新的內核映像。
步驟515、禁用內存分頁,這是通過設置crO寄存器的適當位來完成。 步驟516、將頁目錄基址寄存器cr4設為0。
步驟517、清空TLB緩存(Translation Lookaside Buffers),因為頁表無效, 防止下一步操作使用不正確的TLB緩存。
步驟518、將所有內核映像頁拷貝到最終目標頁,這主要通過匯編循環(huán)搬 移指令完成。
步驟519、再次清空TLB緩存,主要是清除上一步操作產(chǎn)生的TLB內容。
步驟520、將除了棧指針寄存器esp以外的所有寄存器重設為0。因為esp 含有指向新內核起始地址的棧信息,所以保留。
步驟521、 DSFRM的匯編存根代碼"返回",自動將系統(tǒng)引導到新內核起 始地址(步驟514保存到棧中的地址)。
至此,快速重啟過程完成,控制權轉交到新內核,新內核進行必要的初始 化工作最終將控制轉交到用戶。
由上述技術方案可知,有益效果首先將下載的新內核加載到內存的新內 核映像頁中;然后在內存中給DSFRM的匯編存根代碼分配至少一存根代碼 頁,并將該DSFRM的匯編存根代碼拷貝到該存根代碼頁中,跳轉到DSFRM 匯編代碼執(zhí)行入口;最后通過DSFRM的匯編存根代碼將新內核映像頁中的新 內核拷貝到內存的目標頁中,拷貝完成后跳轉到新內核的執(zhí)行入口,啟動新內 核。通過上述方式既充分利用了版本管理的靈活性和擴展性,又跳過了系統(tǒng)重 啟過程中比較耗時的固件上電自檢階段和boot內核啟動階段,有效減少了在 升級過程中分布式系統(tǒng)的重啟時間,改善用戶體驗,大大提高了系統(tǒng)的工作效 率,同時也可以為開發(fā)調試人員帶來便利。
參見圖6,為本實施例中版本管理客戶端的結構示意圖,由圖中可知,該 版本管理客戶端,包括
加載模塊,用于將新內核映像加載到動態(tài)內存中;
拷貝模塊,用于將分布式系統(tǒng)的快速重啟模塊DSFRM的匯編存根代碼拷
13貝到所述動態(tài)內存中,并在拷貝完成后跳轉到所述DSFRM的匯編存根代碼的 執(zhí)行入口 ;
到所述動態(tài)內存中的目標位置,并在拷貝完成后啟動所述新內核。
在本發(fā)明的另一實施例中,該版本管理客戶端還包括
初始化模塊,用于初始化分布式系統(tǒng)的快速重啟模塊DSFRM的管理數(shù)據(jù) 結構T—VerFRMCtrlInfo,所述管理數(shù)據(jù)結構T_VerFRMCtrlInfo用于指定新內 核在內存中的位置、新內核啟動位置和DSFRM的匯編存#>代碼頁的位置。
在本發(fā)明的另一實施例中,該版本管理客戶端還包括
下載模塊,用于從本地Flash下載、從PC機下載、或通過FTP從網(wǎng)絡位 置下載新內核。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通 技術人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進和潤飾, 這些改進和潤飾也應視為本發(fā)明的保護范圍。
權利要求
1.一種應用于分布式系統(tǒng)中的升級方法,其特征在于,所述方法包括版本管理客戶端下載新內核,并將新內核映像加載到動態(tài)內存中;所述版本管理客戶端將分布式系統(tǒng)的快速重啟模塊DSFRM的匯編存根代碼拷貝到所述動態(tài)內存中,所述DSFRM的匯編存根代碼用于將所述動態(tài)內存中指定的內容從原位置搬移到指定位置;在拷貝完成后跳轉到所述DSFRM的匯編存根代碼的執(zhí)行入口,并通過執(zhí)行所述DSFRM的匯編存根代碼將所述新內核映像拷貝到所述動態(tài)內存中的目標位置,并在拷貝完成后跳轉到新內核的執(zhí)行入口,啟動所述新內核。
2. 根據(jù)權利要求1所述的方法,其特征在于,所述版本管理客戶端將分 布式系統(tǒng)的快速重啟模塊DSFRM的匯編存根代碼拷貝到所述動態(tài)內存中的 步驟具體為在所述動態(tài)內存中分配至少 一代碼頁;將所述DSFRM的匯編存根代碼拷貝到所述代碼頁中。
3. 根據(jù)權利要求1所述的方法,其特征在于,所述新內核是所述版本管 理客戶端從本地Flash下載、從PC機下載、或通過FTP從網(wǎng)絡位置下載得到。
4. 根據(jù)權利要求1所述的方法,其特征在于,在將所述DSFRM的匯編 存根代碼拷貝到所述動態(tài)內存中之前,所述方法還包括官
5. 根據(jù)權利要求1所述的方法,其特征在于,在跳轉到所述DSFRM的 匯編存根代碼的執(zhí)行入口之前,所述方法還包括所述版本管理客戶端裝載內核數(shù)據(jù)段值到段寄存器,并將全局描述符表 GDT和中斷描述符表IDT設置為無效。
6. 根據(jù)權利要求5所述的方法,其特征在于,在跳轉到所述DSFRM的 匯編存根代碼的執(zhí)行入口之后,所述方法還包括所述版本管理客戶端將所述新內核映像的起始地址和/或存儲有DSFRM 的匯編存根代碼的代碼頁的地址以參數(shù)的形式發(fā)送給所述新內核。
7. 根據(jù)權利要求6所述的方法,其特征在于,所述方法還包括從所述動態(tài)內存的棧中讀耳又所述代碼頁的地址,并將所述代碼頁的地址存儲到寄存器中;通過所述代碼頁的地址,在所述代碼頁的頂端設置當前函數(shù)執(zhí)行堆棧,將 所述新內核的起始地址存儲到棧中。
8. 根據(jù)權利要求1所述的方法,其特征在于,在所述版本管理客戶端下 載新內核之后,所述方法還包括所述版本管理客戶端初始化分布式系統(tǒng)的快速重啟模塊DSFRM的管理 數(shù)據(jù)結構T—VerFRMCtrlInfo,所述管理數(shù)據(jù)結構T—VerFRMCtrlInfo用于指定 新內核在內存中的位置、新內核啟動位置和DSFRM的匯編存根代碼頁的位 置。
9. 一種版本管理客戶端,其特征在于,包括 加載模塊,用于將新內核映像加載到動態(tài)內存中;拷貝模塊,用于將分布式系統(tǒng)的快速重啟模塊DSFRM的匯編存根代碼拷定的內容從原位置搬移到指定位置;引導模塊,用于在拷貝完成后跳轉到所述DSFRM的匯編存根代碼的執(zhí)行態(tài)內存中的目標位置,并在拷貝完成后跳轉到新內核的執(zhí)行入口 ,啟動所述新 內核。
10. 根據(jù)權利要求9所述的版本管理客戶端,其特征在于,所述版本管理 客戶端還包括初始化模塊,用于初始化分布式系統(tǒng)的快速重啟模塊DSFRM的管理數(shù)據(jù) 結構T一VerFRMCtrlInfo,所述管理數(shù)據(jù)結構T一VerFRMCtrlInfo用于指定新內 核在內存中的位置、新內核啟動位置和DSFRM的匯編存根代碼頁的位置。
11. 根據(jù)權利要求10所述的版本管理客戶端,其特征在于,所述版本管 理客戶端還包括下載模塊,用于從本地Flash下載、從PC機下載、或通過FTP從網(wǎng)絡位 置下載所述新內核。
全文摘要
本發(fā)明提供一種應用于分布式系統(tǒng)中的升級方法及版本管理客戶端,屬于分布式系統(tǒng)技術領域,該方法包括版本管理客戶端下載的新內核,并將新內核映像加載到動態(tài)內存中;版本管理客戶端將DSFRM的匯編存根代碼拷貝到動態(tài)內存中,DSFRM的匯編存根代碼用于將動態(tài)內存中指定的內容從原位置搬移到指定位置;在拷貝完成后跳轉到DSFRM的匯編存根代碼的執(zhí)行入口,并通過執(zhí)行DSFRM的匯編存根代碼將新內核映像拷貝到動態(tài)內存中的目標位置,并在拷貝完成后跳轉到新內核的執(zhí)行入口,啟動所述新內核,從而可有效提高在升級過程中分布式系統(tǒng)的重啟速度,改善用戶體驗,進而提高分布式系統(tǒng)的工作效率。
文檔編號G06F9/445GK101615129SQ200910090110
公開日2009年12月30日 申請日期2009年7月29日 優(yōu)先權日2009年7月29日
發(fā)明者忱 劉, 李忠雷, 陸小飛, 陳雪源 申請人:中興通訊股份有限公司