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

一種檢測操作系統(tǒng)故障的方法和裝置的制作方法

文檔序號:6613862閱讀:187來源:國知局
專利名稱:一種檢測操作系統(tǒng)故障的方法和裝置的制作方法
技術領域
本發(fā)明涉及通信技術,特別是涉及一種檢測操作系統(tǒng)(OS, Operating System)故障的方法和裝置。
背景技術
目前,微處理器技術得到了飛速的發(fā)展,出現(xiàn)了多核處理器。簡單說來, 多核處理器就是在同一個硅晶片上集成了多個獨立物理核心,在實際工作 中,多顆核心能夠分別獨立完成工作,從而達到了性能倍增的目的?;诙嗪颂幚砥骶哂卸鄠€核心,每個核心能夠分別獨立完成工作的特 點,在具有多核處理器的設備上運行多個操作系統(tǒng)則成為了可能。圖l是現(xiàn) 有技術中多核雙系統(tǒng)的結構示意圖。參見圖1,以目前出現(xiàn)的一種多核雙系 統(tǒng)(MCDS, Multi-Core Dual-System)為例,設備中配置有多核處理器,多 核處理器中的一部分核運行OSl,另一部分核運行OS2,比如OSl為防火 墻處理所對應的操作系統(tǒng),OS2為防病毒處理所對應的:t喿作系統(tǒng),這樣,運 行OSl的核和運行OS2的核則可以分別完成對應的防火墻和防病毒的業(yè)務 處理,從而使得設備不僅能夠因為具有多核處理器而極大地提高其處理性 能,而且還能夠因為具有雙操作系統(tǒng)而完成多種業(yè)務處理,極大地提高了設 備的處理性能。諸如多核雙系統(tǒng)的多核多系統(tǒng)中包括多個OS,每一個OS獨立運行互 不干擾,分別實現(xiàn)各自的業(yè)務處理功能。當其中任意一個OS發(fā)生故障無法 運行時,其對應的功能則無法實現(xiàn)。這樣,為了保證業(yè)務處理功能的正常實 現(xiàn),則要求能夠檢測出OS的故障,以便于采取對應的故障恢復措施。然而, 諸如多核雙系統(tǒng)的多核多系統(tǒng)是一種新出現(xiàn)的技術,目前還沒有一種檢測多 核多系統(tǒng)中os故障的方法。由此可見,提供一種檢測多核多系統(tǒng)中os故障的方案已經(jīng)成為了目前 亟待解決的問題。發(fā)明內容有鑒于此,本發(fā)明的目的在于提供一種檢測OS故障的方法和裝置,以便于檢測出多核多系統(tǒng)中OS的故障。為了達到上述目的,本發(fā)明的技術方案是這樣實現(xiàn)的 一種檢測操作系統(tǒng)故障的方法,應用于具有多核多系統(tǒng)的設備中,該方法包括>^人內存中劃分出用于實現(xiàn)故障;f全測的共享內存區(qū); 多核多系統(tǒng)中的第二 OS在正常時將正常狀態(tài)字寫入所述共享內存區(qū)中;多核多系統(tǒng)中的第一OS判斷是否能夠從所述共享內存區(qū)中讀取到正常 狀態(tài)字,如果否,則確定第二OS故障。一種檢測操作系統(tǒng)故障的裝置,包括共享內存區(qū)、多核多系統(tǒng)中的第 一OS和第二OS,其中,第一 OS,用于判斷是否能夠從共享內存區(qū)中讀取到正常狀態(tài)字,如果 否,則確定第二OS故障;第二 OS,用于在正常時將正常狀態(tài)字寫入所述共享內存區(qū)中。由此可見,在本發(fā)明中,多核多系統(tǒng)中的一個OS能夠利用共享內存區(qū) 來檢測另一個OS是否故障,因此,提供了有效地檢測多核多系統(tǒng)中OS故 障的方案。


圖1是現(xiàn)有技術中多核雙系統(tǒng)的結構示意圖。圖2是在本發(fā)明一個實施例中檢測OS故障的流程圖。 圖3A是在本發(fā)明實施例中多核雙系統(tǒng)的結構示意圖。圖3B是在本發(fā)明一個實施例中OS的狀態(tài)遷移圖。圖4是在本發(fā)明一個實施例中檢測OS故障的裝置結構示意圖。
具體實施方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面結合附圖及具體實 施例對本發(fā)明作進 一 步地詳細描述。在多核多系統(tǒng)中,沒有實際的物理通道,因此,不同OS之間無法通過 發(fā)送消息的方式來實現(xiàn)OS故障的檢測。而對多核多系統(tǒng)的特點進行分析可 知,為了保證每一個OS的正常工作,每一個OS都擁有獨立的內存區(qū),都 需要對內存進行訪問。比如圖1中,OS 1和0S2分別需要訪問其獨享的內 存區(qū)。利用每一個os都需要訪問內存的特點,本發(fā)明提出了一種檢測os故障的方法。在該方法中,從內存中劃分出用于實現(xiàn)故障檢測的共享內存區(qū); 多核多系統(tǒng)中的第一 OS將正常狀態(tài)字寫入所述共享內存區(qū)中;多核多系統(tǒng) 中的第二OS判斷是否能夠從所述共享內存區(qū)中讀取到正常狀態(tài)字,如果是, 則確定第一OS正常,否則,確定第一OS故障。圖2是在本發(fā)明一個實施例中檢測OS故障的流程圖。參見圖l和圖2, 以多核雙系統(tǒng)為例,本發(fā)明 一個實施例4企測該多核雙系統(tǒng)中OS故障的過程 具體包括以下步驟步驟201:預先從內存中劃分出用于實現(xiàn)故障檢測的共享內存區(qū)。在劃分內存區(qū)時,不僅需要在內存中為每一個OS劃分其獨享的內存區(qū), 保證每一個OS可以分別完成其業(yè)務處理功能,而且,為了保證后續(xù)OS故 障的檢測,還需要從內存中劃分出用于實現(xiàn)故障檢測的共享內存區(qū)。對于該 共享內存區(qū),每一個OS均可以訪問。此時,多核雙系統(tǒng)的結構可以參見圖3A所示。步驟202:預先定義OS的運行狀態(tài)。
這里,為了更好地在后續(xù)過程中區(qū)分出OS的具體故障情況,比如是初 始啟動時故障還是運行過程中故障,則需要通過本步驟的處理來定義出OS 的運4亍狀態(tài)。本步驟中定義的OS的運行狀態(tài)具體可以包括初始態(tài)、初始化故障態(tài)、 運4亍態(tài)和運4于故障態(tài)。步驟203:根據(jù)預先定義的OS工作狀態(tài),定義共享內存區(qū)中的狀態(tài)變 量及其對應的狀態(tài)字。由于OS的工作狀態(tài)具體可以包括初始態(tài)、初始化故障態(tài)、運行態(tài)和運 行故障態(tài),因此,在后續(xù)過程中寫入共享內存區(qū)的變量的狀態(tài)字需要反映該 四種工作狀態(tài)。在本步驟中,共享內存區(qū)中的狀態(tài)變量記為ulHeartFlag,定義ulHeartFlag包括Bit0和Bitl兩個比特位,其中,Bit0可以有0或1兩種狀態(tài)字,0為故障狀態(tài)字,1為正常狀態(tài)字;Bitl也有0或1兩種狀態(tài)字,0為初始態(tài)狀態(tài)字,l為運行態(tài)狀態(tài)字。這樣,在后續(xù)過程中,通過狀態(tài)變量ulHeartFlag的BitO和Bit 1兩個比特位的狀態(tài)字的不同組合,則可以分別表示OS的四種運行狀態(tài)。在本步驟中,i殳置ulHeartFlag的Bitl的初始值為0, BitO的初始值為0。在實際的實現(xiàn)中,可以定義一個枚舉變量來表示OS2的四種工作狀態(tài),其數(shù)據(jù)結構可以設計為typedef enum tagMCDSOS2StateDRV—MCDSHEART—OS2—INITIALING, /*OS2處于初始態(tài)*/DRV—MCDS—HEART—OS2—INITIAL—FAIL, /*OS2處于初始故障態(tài)*/DRV_MCDS—HEART_OS2—RUN, /*OS2處于運行態(tài)*/DRV—MCDS_HEART—OS2_BLOCK, /*OS2處于運行故障態(tài)*/DRVMCDS—HEART—OS2—BUTT }MCDSOS2—STATE—E;步驟204:預先定義共享內存區(qū)中的自旋鎖變量及其變量值。 由于在后續(xù)過程中,0S1和0S2都會訪問共享內存區(qū),因此,為了避 免出現(xiàn)OS1和OS2同時訪問共享內存區(qū)同時進行讀和寫狀態(tài)變量 ulHeartFlag的操作,在本步驟中,需要定義出自旋鎖變量記為u舊eartLock, 并定義出ulHeartLock的值包括鎖定狀態(tài)字比如為1,鎖定狀態(tài)字表示有OS 正在訪問共享內存區(qū),ulHeartLock的值還包括解鎖狀態(tài)字比如為0,解鎖狀 態(tài)字表示沒有OS訪問共享內存區(qū)。
自旋鎖變量ulHeartLock的初始值i殳置為解鎖狀態(tài)字0。 圖3B是在本發(fā)明一個實施例中OS的狀態(tài)遷移圖。下述過程的處理可 以參考圖3B所示的狀態(tài)遷移圖。
另外,為便于描述,以下過程中以OS1正常初始化后正常運行,并檢 測OS2是否發(fā)生故障的過程為例進行說明。
步驟205:多核雙系統(tǒng)中的0S1和OS2上電,進行初始化過程,處于 #刀始態(tài)。
步驟206:在OS2初始化過程中,如果OS2初始化失敗,那么,OS2 進入初始化故障態(tài),轉向步驟216,如果OS2初始化完成,則執(zhí)行步驟207。
這里,由于共享內存區(qū)中狀態(tài)變量ulHeartFlag的Bitl和Bit0以及自旋 鎖變量ulHeartLock的初始值均為0 ,因此,如果OS2進入初始化故障態(tài), 則無法對共享內存區(qū)中的ulHeartFlag和ulHeartLock進行寫操作,那么,共 享內存區(qū)中ulHeartFlag的Bitl和Bit0的值以及ulHeartLock的值將始終保 持為0。
步驟207: OS2初始化完成后,進入運行態(tài)。
步驟208: OS2訪問共享內存區(qū),首先將共享內存區(qū)中ulHeartLock的 值置為1,然后將ulHeartFlag的Bitl的值置為1,在將Bitl的值置為1之 后,重新將共享內存區(qū)中ulHeartLock的值置為0。
在本步驟中,由于OS2需要對共享內存區(qū)中的ulHeartFlag進行寫操作, 因此,為了避免OS 1同時對共享內存區(qū)進行訪問來對ulHeartFlag進行讀操
作,需要首先將ulHeartLock值置為1,以表示共享內存區(qū)處于鎖定狀態(tài)。另夕卜,由于OS2已經(jīng)初始化成功,因此,需要將共享內存區(qū)中ulHeartFlag 的Bitl置為1,從而表示其已經(jīng)從初始態(tài)進入了運行態(tài)。在將Bitl置為1之后,需要重新將ulHeartLock的值置為0,以便此時 OS1可以讀取共享內存區(qū)中ulHeartFlag的Bitl的值。步驟209: OS2將共享內存區(qū)中ulHeartLock的值置為1,然后將共享內 存區(qū)中ulHeartFlag的BitO的值置為1,并啟動預先設置的1秒定時器。這里,由于OS2當前處于正常,未發(fā)生故障,因此,需要將共享內存 區(qū)中的BitO置為l,從而表示其當前正常運行。在實際的實現(xiàn)中,實現(xiàn)本步驟的程序可以設計為void OS2SetHeartFlagTimer(void)if(獲取自旋鎖ulHeartLock成功)將共享內存區(qū)的ulHeartFlag BitO置1; 釋放自旋鎖ulHeartLock;return;步驟210: OS2將共享內存區(qū)中ulHeartLock值置為0。在本步驟中,由于OS2已經(jīng)完成對共享內存區(qū)中的ulHeartFlag進行寫 操作的處理,因此,為了保證OSl在后續(xù)過程中能夠對共享內存區(qū)進行訪 問來對ulHeartFlag進行讀操作,本步驟中需要將ulHeartLock值置為0,以 表示共享內存區(qū)處于解鎖狀態(tài)。步驟211: OS2處于運行態(tài)時,如果正常運行,那么,在;f企測到l秒定 時器的定時時間到達后返回步驟209,如果發(fā)生故障,則執(zhí)行步驟220。步驟212: OSl正常初始化運行后,啟動預先設置的3秒定時器。
在上述步驟209和步驟212中,定時器的定時時間可以根據(jù)實際檢測的 靈敏度需求來進行靈活設定,但是需要保證0S1使用的定時器的定時時間 長度大于等于0S2使用的定時器的定時時間長度。步驟213:在到達3秒定時器的定時時間后,0S1訪問共享內存區(qū),判 斷共享內存區(qū)中ulHeartLock的值是否為0,如果是,則執(zhí)行步驟214,否則, 啟動3秒定時器,然后返回步驟213。這里,如果自旋鎖變量ulHeartLock的值為0則表示當前OS2沒有對共 享內存區(qū)進行訪問,因此,OS1可以執(zhí)行后續(xù)步驟中的訪問共享內存區(qū)的處 理。步驟214: OS1將ulHeartLock的值置為1,然后判斷共享內存區(qū)中 ulHeartFlag的Bitl的值為1還是0,如果是0,則執(zhí)行步驟215,如果是1, 則執(zhí)行步驟217。這里,OS1首先將ulHeartLock的值置為1,是為了在對共享內存區(qū)進 行訪問的過程中,將共享內存區(qū)處于鎖定狀態(tài),避免OS2同時對共享內存 區(qū)進4亍i方問。步驟215: OS1判斷已連續(xù)^r測到Bitl的值為0的次數(shù)是否達到預先設 定的次數(shù)閾值,如果是,則執(zhí)行步驟216,否則,將ulHeartLock的值置為0, 并啟動3秒定時器,然后返回步驟213。這里,由于在上述過程中如果OS2初始化成功,則會主動將Bitl的值 置為1,如果OS2初始化失敗,Bitl的值將保持為0,因此,如果OSl檢測 預先設定的次數(shù)閾值后(比如為100次,即5分鐘),均檢測到Bitl的值 為0,那么,則可以確定OS2已經(jīng)在初始化過程中發(fā)生了故障。步驟216: OS1確定OS2處于初始化故障態(tài),并向管理人員進行提示, 結束當前流程。這里,管理人員確定OS2發(fā)生初始化故障后,可以對OS2進行重啟, 參見圖3B,使得OS2重新進入初始態(tài)。步驟217: OS1判斷共享內存區(qū)中ulHeartFlag的Bit0的值為1還是O,
如果是l,則執(zhí)行步驟218,如果是O,則執(zhí)行步驟219。這里,如果0S1判斷出Bit0的值為1,則可以確定OS2當前處于正常 狀態(tài),未發(fā)生故障,繼續(xù)執(zhí)行后續(xù)重復檢測的過程,而如果BitO的值為0, 則表示OS2當前發(fā)生故障。步驟218: 0S1將共享內存區(qū)中ulHeartFlag的Bit0的值置0,然后將共 享內存區(qū)中ulHeartLock的值置為0,啟動3秒定時器,返回步驟213。步驟219: 0S1判斷已連續(xù)檢測到Bit0的值為0的次數(shù)是否達到預先設 定的次數(shù)閾值,如果是,則執(zhí)行步驟220,否則,將共享內存區(qū)中ulHeartLock 的值置為0,啟動3秒定時器,返回步驟213。這里,由于在上述過程中如果OS2正常運行,則會主動將BitO的值置 為1,如果OS2故障,Bit0的值將會保持為0,因此,如果0S1檢測預先設 定的次數(shù)閾值后(比如為3次,即9秒),均檢測到Bit0的值為0,那么, 則可以確定OS2已經(jīng)在運行過程中發(fā)生了故障。步驟220: OS1確定OS2處于運行故障態(tài),并向管理人員進行提示。這里,管理人員確定OS2在運行中發(fā)生故障后,可以對OS2進行重啟, 參見圖3B,使得OS2重新進入初始態(tài)。實現(xiàn)步驟212至步驟220的程序可以設計為unsigned long OSlGetOS2StateTimer(void)static unsigned long ullnitCnt = 0; static unsigned long ulHeartCnt = 0;unsigned long ulState = DRV—MCDS—HEART—OS2—RUN;if(調用函數(shù)OSlGetHeartFlagBitl()返回0)ulInitCnt++if (ullnitCnt == 100 )
ulState = DRV—MCDS—HEART—OS2—INITIAL—FAIL;elseulState = DRV—MCDS—HEART—OS2—INITIALING; return ulState; if(調用函數(shù)OSlGetHeartFlagBitO()返回0) ulHeartCnt++; if (ulHeartCnt == 3 )ulState = DRV—MCDS—HEART—OS2—BLOCK;elseulHeartCnt = 0;將ulHeartFlag的BitO清零;return ulState;unsigned long OSlGetHeartFlagBitO(void) if (獲取自旋鎖ulHeartLock成功)
if (共享內存區(qū)的ulHeartFlag BitO為1 )釋放自旋鎖ulHeartLock; return 1;else釋放自旋鎖ulHeartLock;return 0junsigned long OSlGetHeartFlagBitl(void) if(獲取自旋鎖u舊eartLock成功)if(共享內存區(qū)的ulHeartFlag Bitl為1 )釋放自旋鎖ulHeartLock; returnelse釋放自旋鎖ulHeartLock;return 0;
需要說明的是,上述步驟206至步驟211的過程與步驟212至步驟220 的過程是同時進行的,并無執(zhí)行上的先后順序。還需要說明的是,在上述圖2所示過程中,是以多核雙系統(tǒng)為例來說明 檢測OS故障的過程。對于其他的多核多系統(tǒng),比如多核3系統(tǒng),其實現(xiàn)檢 測任意一個OS故障的過程與上述圖2所示過程相同。另外,根據(jù)業(yè)務發(fā)展的需要,在多核多系統(tǒng)中,很可能會有一個OS為 主控OS,其他OS均為受控OS,這樣,在本發(fā)明實施例的實現(xiàn)過程中,可 以是由主控OS作為上述圖2所示過程中的OSl,來對其他任意一個作為 OS2的受控OS進行故障4全測。此時,在上述步驟216和步驟220中,當主 控的OS1檢測出受控的OS2故障時,也可以由主控OS1主動對OS2進行重 啟處理,使得OS2重新進入初始態(tài)。另外,本發(fā)明還提出了一種檢測OS故障的裝置。圖4是在本發(fā)明一個 實施例中檢測OS故障的裝置結構示意圖。參見圖4,該裝置包括共享內 存區(qū)、多核多系統(tǒng)中的第一OS和第二OS,其中,第一OS,用于判斷是否能夠從共享內存區(qū)中讀取到正常狀態(tài)字,如果 否,則確定第二OS故障;第二 OS,用于在正常時將正常狀態(tài)字寫入所述共享內存區(qū)中。在本發(fā)明裝置中,利用共享內存區(qū)實現(xiàn)第二 OS故障檢測的一種具體實 現(xiàn)方式可以為所述共享內存區(qū)中包括狀態(tài)變量ulHeartFlag,并且,ulHeartFlag中包括 比特位BitO, Bit0的值包括正常狀態(tài)字和故障狀態(tài)字,BitO的初始值為故障 狀態(tài)字;所述第二 OS,用于在初始化完成后,如果正常則每當?shù)竭_第二定時器 的定時時間后訪問共享內存區(qū)中的狀態(tài)變量ulHeartFlag,將比特位Bit0的 值置為正常狀態(tài)字;所述第一 OS,用于在初始化完成后,每當?shù)竭_第一定時器的定時時間 后訪問共享內存區(qū)中的狀態(tài)變量ulHeartFlag,判斷比特位Bit0的值是否為
正常狀態(tài)字,如果否,則確定第二OS故障,如果是,則將比特位BitO的值 置為故障狀態(tài)字。較佳地,在本發(fā)明裝置中,所述共享內存區(qū)中的狀態(tài)變量ulHeartFlag 中進一步包括比特位Bitl,Bitl的值包括初始態(tài)狀態(tài)字和運行態(tài)狀態(tài)字,Bitl 的初始值為初始態(tài)狀態(tài)字;所述第二OS,進一步用于在初始化完成后,訪問共享內存區(qū)中的狀態(tài) 變量ulHeartFlag,將比特位Bitl的值置為運行態(tài)狀態(tài)字;所述第一OS,進一步用于在判斷共享內存區(qū)中狀態(tài)變量ulHeartFlag的 比特位BitO的值是否為正常狀態(tài)字之前,判斷比特位Bitl的值是否為初始 態(tài)狀態(tài)字,如果是,則直接確定第二OS處于初始化故障態(tài),結束本次訪問 共享內存區(qū)的處理,否則,繼續(xù)執(zhí)行所述的判斷共享內存區(qū)中狀態(tài)變量 ulHeartFlag的比特位BitO的值是否為正常狀態(tài)字的處理,并且,如果BitO 的值不為正常狀態(tài)字,則確定第二OS為運行故障態(tài)。較佳地,在本發(fā)明裝置中,所述共享內存區(qū)中包括自旋鎖變量 ulHeartLock, ulHeartLock的值包括鎖定狀態(tài)字和解鎖狀態(tài)字,ulHeartLock 的初始值為解鎖狀態(tài)字;所述第一 OS和第二 OS,均進一步用于在每次訪問共享內存區(qū)中狀態(tài) 變量ulHeartFlag之前,判斷共享內存區(qū)中自旋鎖變量ulHeartLock的值是否 為解鎖狀態(tài)字,如果是,則將ulHeartLock的值置為鎖定狀態(tài)字,并繼續(xù)執(zhí) 行所述的訪問共享內存區(qū)中的狀態(tài)變量ulHeartFlag的處理,并在每次對共 享內存區(qū)訪問完畢后,將自旋鎖變量ulHeartLock的值置為解鎖狀態(tài)字。在本發(fā)明裝置中,所述第一 OS可以為多核多系統(tǒng)中的主控OS,所述 第二 OS可以為多核多系統(tǒng)中的任意一個受控OS??傊?,以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的 保護范圍。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改 進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1、一種檢測操作系統(tǒng)故障的方法,應用于具有多核多系統(tǒng)的設備中,其特征在于,該方法包括從內存中劃分出用于實現(xiàn)故障檢測的共享內存區(qū);多核多系統(tǒng)中的第二OS在正常時將正常狀態(tài)字寫入所述共享內存區(qū)中;多核多系統(tǒng)中的第一OS判斷是否能夠從所述共享內存區(qū)中讀取到正常狀態(tài)字,如果否,則確定第二OS故障。
2、 才艮據(jù)權利要求1所述的方法,其特征在于,該方法進一步包括在共享 內存區(qū)中定義包括比特位BitO的狀態(tài)變量ulHeartFlag,并且,定義BitO的值包 括正常狀態(tài)字和故障狀態(tài)字,并將BitO的初始值設置為故障狀態(tài)字;所述第二 OS在正常時將正常狀態(tài)字寫入所述共享內存區(qū)中的步驟包括 第二 OS初始化完成后,如果正常則每當?shù)竭_第二定時器的定時時間后訪問共 享內存區(qū)中的狀態(tài)變量ulHeartFlag,將比特位BitO的值置為正常狀態(tài)字;所述第一 OS判斷是否能夠從所述共享內存區(qū)中讀取到正常狀態(tài)字的步驟 包括第一 OS初始化完成后,每當?shù)竭_第一定時器的定時時間后訪問共享內 存區(qū)中的狀態(tài)變量ulHeartFlag,判斷比特位BitO的值是否為正常狀態(tài)字;在第一OS判斷出比特位Bit0的值為正常狀態(tài)字之后,進一步包括第一 OS將共享內存區(qū)中狀態(tài)變量ulHeartFlag的比特位BitO的值置為故障狀態(tài)字。
3、 根據(jù)權利要求2所述的方法,其特征在于,在第一 OS判斷出比特位 BitO的值不是正常狀態(tài)字之后,并在確定第二 OS故障之前,進一步包括第 一 OS判斷已連續(xù)檢測到比特位BitO的值不是正常狀態(tài)字的次數(shù)是否達到預先 設定的次數(shù)閾值,如果是,則繼續(xù)執(zhí)行所述的確定第二OS故障的步驟,否貝'J, 返回執(zhí)行所述的每當?shù)竭_第一定時器的定時時間后訪問共享內存區(qū)中的狀態(tài)變 量ulHeartFlag的步驟。
4、 根據(jù)權利要求2所述的方法,其特征在于,該方法進一步包括定義狀 態(tài)變量ulHeartFlag中包括比特位Bitl,并且,定義Bitl的值包括初始態(tài)狀態(tài)字和運行態(tài)狀態(tài)字,并將Bitl的初始值設置為初始態(tài)狀態(tài)字;第二OS如果初始 化完成,則訪問共享內存區(qū)中的狀態(tài)變量ulHeartFlag,將比特位Bitl的值置為 運行態(tài)狀態(tài)字;在到達第一定時器的定時時間之后,并在判斷比特位BitO的值是否為正常 狀態(tài)字之前,進一步包括第一 OS判斷共享內存區(qū)中狀態(tài)變量ulHeartFlag的 比特位Bitl的值是否為初始態(tài)狀態(tài)字,如果是,則直接確定第二OS處于初始 化故障態(tài),結束當前流程,否則,繼續(xù)執(zhí)行所述的判斷比特位BitO的值是否為 正常狀態(tài)字的步驟;則,所述的確定第二 OS故障為確定第二 OS為運行故障態(tài)。
5、 根據(jù)權利要求4所述的方法,其特征在于,在第一 OS判斷出比特位 Bitl的值為初始態(tài)狀態(tài)字之后,并在確定第二 OS處于初始化故障態(tài)之前,進 一步包括第一 OS判斷已連續(xù)檢測到比特位Bitl的值為初始態(tài)狀態(tài)字的次數(shù)是否達 到預先設定的次數(shù)閾值,如果是,則繼續(xù)執(zhí)行所述的確定第二 OS處于初始化 故障態(tài)的步驟,否則,返回執(zhí)行所述的每當?shù)竭_第一定時器的定時時間后訪問 共享內存區(qū)中的狀態(tài)變量ulHeartFlag的步驟。
6、 根據(jù)權利要求1至5中任意一項所述的方法,其特征在于,該方法進一 步包括在共享內存區(qū)中定義自旋鎖變量ulHeartLock,并且,定義ulHeartLock 的值包括鎖定狀態(tài)字和解鎖狀態(tài)字,并將ulHeartLock的初始值設置為解鎖狀態(tài) 字;在第一OS和第二OS每次訪問共享內存區(qū)中的狀態(tài)變量ulHeartFlag之前, 進一步包括判斷共享內存區(qū)中自旋鎖變量ulHeartLock的值是否為解鎖狀態(tài) 字,如果是,則將ulHeartLock的值置為鎖定狀態(tài)字,并繼續(xù)執(zhí)行所述的訪問共 享內存區(qū)中的狀態(tài)變量u舊eartFlag的步驟;在第一OS和第二OS每次對共享內存區(qū)訪問完畢后,進一步包括將共享 內存區(qū)中自旋鎖變量ulHeartLock的值置為解鎖狀態(tài)字。
7、 根據(jù)權利要求1至5中任意一項所述的方法,其特征在于,所述第一OS為多核多系統(tǒng)中的主控OS,所述第二 OS為多核多系統(tǒng)中的任意一個受控os。
8、 一種檢測操作系統(tǒng)故障的裝置,其特征在于,包括共享內存區(qū)、多核 多系統(tǒng)中的第一OS和第二OS,其中,第一OS,用于判斷是否能夠從共享內存區(qū)中讀取到正常狀態(tài)字,如果否, 則確定第二OS故障;第二OS,用于在正常時將正常狀態(tài)字寫入所述共享內存區(qū)中。
9、 根據(jù)權利要求8所述的裝置,其特征在于,所述共享內存區(qū)中定義有狀 態(tài)變量ulHeartFlag,并且,ulHeartFlag中包括比特位BitO, Bit0的值包括正常 狀態(tài)字和故障狀態(tài)字,BitO的初始值為故障狀態(tài)字;所述第二OS,用于在初始化完成后,如果正常則每當?shù)竭_第二定時器的定 時時間后訪問共享內存區(qū)中的狀態(tài)變量u舊eartFlag,將比特位BitO的值置為正 常狀態(tài)字;所述第一OS,用于在初始化完成后,每當?shù)竭_第一定時器的定時時間后訪 問共享內存區(qū)中的狀態(tài)變量ulHeartFlag,判斷比特位BitO的值是否為正常狀態(tài) 字,如果否,則確定第二OS故障,如果是,則將比特位BitO的值置為故障狀 態(tài)字。
10、 根據(jù)權利要求9所述的裝置,其特征在于,所述共享內存區(qū)中的狀態(tài) 變量ulHeartFlag中進一步包括比特位Bitl, Bitl的值包括初始態(tài)狀態(tài)字和運行 態(tài)狀態(tài)字,Bitl的初始值為初始態(tài)狀態(tài)字;所述第二OS,進一步用于在初始化完成后,訪問共享內存區(qū)中的狀態(tài)變量 ulHeartFlag,將比特位Bitl的值置為運行態(tài)狀態(tài)字;所述第一 OS,進一步用于在判斷共享內存區(qū)中狀態(tài)變量ulHeartFlag的比 特位BitO的值是否為正常狀態(tài)字之前,判斷比特位Bitl的值是否為初始態(tài)狀態(tài) 字,如果是,則直接確定第二 OS處于初始化故障態(tài),結束本次訪問共享內存 區(qū)的處理,否則,繼續(xù)執(zhí)行所述的判斷共享內存區(qū)中狀態(tài)變量ulHeartFlag的比 特位BitO的值是否為正常狀態(tài)字的處理,并且,如果BitO的值不為正常狀態(tài)字,則確定第二 OS為運行故障態(tài)。
11、 根據(jù)權利要求8、 9或10所述的裝置,其特征在于,所述共享內存區(qū) 中包括自旋鎖變量ulHeartLock, ulHeartLock的值包括鎖定狀態(tài)字和解鎖狀態(tài) 字,ulHeartLock的初始值為解鎖狀態(tài)字;所述第一OS和第二OS,均進一步用于在每次訪問共享內存區(qū)中狀態(tài)變量 ulHeartFlag之前,判斷共享內存區(qū)中自旋鎖變量ulHeartLock的值是否為解鎖狀 態(tài)字,如果是,則將ulHeartLock的值置為鎖定狀態(tài)字,并繼續(xù)執(zhí)行所述的訪問 共享內存區(qū)中的狀態(tài)變量ulHeartFlag的處理,并在每次對共享內存區(qū)訪問完畢 后,將自旋鎖變量ulHeartLock的值置為解鎖狀態(tài)字。
12、 根據(jù)權利要求8、 9或10所述的裝置,其特征在于,所述第一OS為 為多核多系統(tǒng)中的主控OS,所述第二 OS為多核多系統(tǒng)中的任意一個受控OS。
全文摘要
本發(fā)明公開了一種檢測操作系統(tǒng)故障的方法,應用于具有多核多系統(tǒng)的設備中。該方法包括從內存中劃分出用于實現(xiàn)故障檢測的共享內存區(qū);多核多系統(tǒng)中的第二OS在正常時將正常狀態(tài)字寫入所述共享內存區(qū)中;多核多系統(tǒng)中的第一OS判斷是否能夠從所述共享內存區(qū)中讀取到正常狀態(tài)字,如果否,則確定第二OS故障。本發(fā)明還公開了一種檢測操作系統(tǒng)故障的裝置,包括共享內存區(qū)、多核多系統(tǒng)中的第一OS和第二OS。本發(fā)明能夠實現(xiàn)對多核多系統(tǒng)中OS故障的檢測。
文檔編號G06F11/36GK101158920SQ20071017793
公開日2008年4月9日 申請日期2007年11月22日 優(yōu)先權日2007年11月22日
發(fā)明者武建中, 武 郭 申請人:杭州華三通信技術有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1