欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于四級嵌套重啟的任務(wù)關(guān)鍵系統(tǒng)生存應(yīng)急恢復(fù)方法

文檔序號:6483497閱讀:253來源:國知局
專利名稱:基于四級嵌套重啟的任務(wù)關(guān)鍵系統(tǒng)生存應(yīng)急恢復(fù)方法
技術(shù)領(lǐng)域
.本發(fā)明涉及增強任務(wù)關(guān)鍵系統(tǒng)生存性的應(yīng)急恢復(fù)方法,尤其是面向高可生存 性的任務(wù)關(guān)鍵系統(tǒng)應(yīng)急重啟恢復(fù)方法。
(二)
背景技術(shù)
作為增強系統(tǒng)生存性最后手段的應(yīng)急恢復(fù)技術(shù),偏重于保障關(guān)鍵應(yīng)用具備持 續(xù)服務(wù)的能力,這是增強系統(tǒng)在面對成功入侵和惡意攻擊時的可復(fù)原性(可恢復(fù) 彈性)能力,做到系統(tǒng)深層次防御的最后一道防線,也是可生存系統(tǒng)采取的最后 階段的積極反應(yīng)。應(yīng)急恢復(fù)的基本思想是當(dāng)系統(tǒng)或關(guān)鍵服務(wù)的生存性能下降到一 定程度時,通過周期性地終止程序的繼續(xù)運行,清除持續(xù)運行系統(tǒng)的內(nèi)部狀態(tài), 重新啟動并恢復(fù)為初始狀態(tài)或"健康的"中間狀態(tài),使系統(tǒng)或應(yīng)用服務(wù)的生存性 能得到一定程度的恢復(fù),并預(yù)防將來可能發(fā)生的更嚴(yán)重的失效。
許多研究表明重啟(Reboot or Rejuvenation)技術(shù)能夠有效消除系統(tǒng)在運 行過程中積累的一些錯誤、失效狀態(tài),包括那些人為攻擊導(dǎo)致的錯誤、失效,因 此重啟能有效恢復(fù)系統(tǒng)或應(yīng)用服務(wù)至初始良好狀態(tài)。但當(dāng)前對可生存性系統(tǒng)重啟 恢復(fù)策略的研究尚不深入,最新資料也只是執(zhí)行到了服務(wù)級重啟。Castelli簡 單地將重啟分為兩級服務(wù)級和系統(tǒng)級,但并未給出確定重啟時間間隔和重啟優(yōu) 先級的具體方法。Hong按實際系統(tǒng)資源測量值來確定恢復(fù)粒度,當(dāng)資源消耗的 當(dāng)前值不能反映導(dǎo)致資源損耗的程度時,這種方法不再適用。Xie雖然采用半馬 爾可夫過程對上文方法進(jìn)行了優(yōu)化,但其基本思想并未改變。以上研究都有其局 限性,且尚顯粗糙。相對來講,在軟件容錯研究領(lǐng)域?qū)浖Ш蟮闹貑⒓夹g(shù)的 研究己進(jìn)入較成熟的階段。在UC Berkeley和Stanford大學(xué)合作開展的面向恢 復(fù)的計算(Recovery-oriented Computing, RoC)項目的研究中提出了遞歸重啟 (Recursive Restartability, RR)技術(shù)之后,Candea又提出了微重啟 (Microreboot)技術(shù),其思想是預(yù)先建立一棵重啟樹,重啟樹上的各節(jié)點是可 以獨立重啟的應(yīng)用或進(jìn)程。當(dāng)執(zhí)行重啟操作時,從重啟樹最底層的節(jié)點開始重啟, 性能不能恢復(fù)則上推一級,執(zhí)行更大范圍的重啟。這兩種技術(shù)要求軟件的體系結(jié)構(gòu)是己知的,且軟件在開發(fā)之初即遵循了模塊間松耦合的原則,使得一個模塊的 重啟不會影響其它模塊的正常工作。王慧強提出了一種通用的基于遞歸微重啟技 術(shù)的快速自恢復(fù)方法,主要是面向系統(tǒng)可用性的提高,同時降低系統(tǒng)的平均恢復(fù) 時間。目前,現(xiàn)有重啟恢復(fù)的研究還沒有面向可生存性領(lǐng)域的成果出現(xiàn),本發(fā)明 提出的四級恢復(fù)等級與上述研究提到的微重啟、宏重啟存在著本質(zhì)的區(qū)別,因此 本發(fā)明是具有創(chuàng)新性的。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種能減少恢復(fù)時間,降低恢復(fù)成本,增強任務(wù)關(guān)鍵 系統(tǒng)生存性的基于四級嵌套重啟的任務(wù)關(guān)鍵系統(tǒng)生存應(yīng)急恢復(fù)方法。 本發(fā)明的目的是這樣實現(xiàn)的
(1) 將重啟層劃分為系統(tǒng)級、服務(wù)級、進(jìn)程級和線程級四個等級;
(2) 重啟優(yōu)先級指標(biāo)參數(shù)為《.,《=d*AP*S,其中,s表示需要應(yīng)急恢復(fù)
的重啟可控對象、."表示^的關(guān)鍵等級、Ap表示x的生存態(tài)勢等級;在確定重啟 對象時,遵從以下規(guī)則a.在同一層,可控對象的《,越大,重啟優(yōu)先級越高,越 優(yōu)先重啟;b.在不同層,如果某一進(jìn)程的《大于其所屬的應(yīng)用服務(wù)的《值,則
該進(jìn)程和服務(wù)分別作為一個重啟對象,且進(jìn)程優(yōu)先于所屬應(yīng)用服務(wù)執(zhí)行重啟操 作;反之,則該進(jìn)程不能作為重啟對象,只將服務(wù)作為一個重啟對象;如果重新
引導(dǎo)整個系統(tǒng)的《,值最大,則只以整個系統(tǒng)作為重啟對象,執(zhí)行簡單的周期性 恢復(fù);
(3) 用SPN描述了每次應(yīng)急重啟恢復(fù)的具體實施過程,用DFA控制各次 重啟恢復(fù)的返回位置。
所述的將重啟層劃分為系統(tǒng)級、服務(wù)級、進(jìn)程級和線程級四個等級的確定重 啟層的級別和不同級別重啟層的恢復(fù)策略為
(a )系統(tǒng)級恢復(fù)策略系統(tǒng)應(yīng)急重啟恢復(fù)時間間隔為/7 , ;;,=MTAF;-M777 ,(z' = 0,l,...),當(dāng) 7,時刻系統(tǒng)生存性降至此時實施系統(tǒng)級 重啟策略;
(b)服務(wù)級恢復(fù)策略當(dāng)某一關(guān)鍵服務(wù)的生存性能降低到某一預(yù)定閾值尸目時,進(jìn)行一次服務(wù)級重啟恢復(fù);而當(dāng)尸 ^〉尸>戶 , 時,進(jìn)行M次的進(jìn)程級恢復(fù); 同時,在M次的進(jìn)程級恢復(fù)后,實施一次服務(wù)級恢復(fù),使該服務(wù)的生存性能恢 復(fù)到初始值尸 ^,再重新開始M次的進(jìn)程級恢復(fù);
(C)進(jìn)程/線程級恢復(fù)策略利用系統(tǒng)loctl()函數(shù)調(diào)用,讀取檢查點文件, 創(chuàng)建子進(jìn)程后,父進(jìn)程返回用戶空間等到恢復(fù)任務(wù)完成,子進(jìn)程則利用clone() 函數(shù)產(chǎn)生多個線程重新恢復(fù)原任務(wù);在通過最后一個阻塞點后,所有線程即離開 內(nèi)核空間,進(jìn)入到用戶空間,由回調(diào)函數(shù)繼續(xù)執(zhí)行進(jìn)程恢復(fù)后的代碼。
本發(fā)明旨在面向任務(wù)關(guān)鍵系統(tǒng),提出了一種增強系統(tǒng)生存性的四級(系統(tǒng)級、 服務(wù)級、進(jìn)程級和線程級)遞歸嵌套的細(xì)粒度應(yīng)急恢復(fù)方法。其主要技術(shù)特征包 括1、確定了系統(tǒng)不同粒度的重啟層級別及不同級別的重啟恢復(fù)策略;2、定義 了重啟優(yōu)先級的計算方法,確定出系統(tǒng)各重啟層模塊的重啟次序,建立了遞歸嵌 套重啟鏈;3、利用隨機Petri網(wǎng)(SPN)和確定有限自動機(DFA)形式化描述 了遞歸重啟應(yīng)急恢復(fù)的實施過程。
應(yīng)急恢復(fù)是一種前懾的、搶先式的高生存性增強技術(shù)。本發(fā)明中四級恢復(fù)策 略的實施基于以下的考慮有計劃的恢復(fù)比無計劃的系統(tǒng)宕機消耗的成本低得 多;恢復(fù)某一應(yīng)用進(jìn)程(進(jìn)程級恢復(fù))的成本比恢復(fù)整個應(yīng)用程序(服務(wù)級恢復(fù)) 的成本低得多;恢復(fù)某一應(yīng)用程序(服務(wù)級恢復(fù))的成本比恢復(fù)整個應(yīng)用系統(tǒng)(系 統(tǒng)級恢復(fù))的成本低得多。
與傳統(tǒng)的周期性系統(tǒng)級恢復(fù)方法相比,本發(fā)明具有以下優(yōu)點面向不同的故 障場景,可以有效地選擇不同粒度的重啟對象,并確定出重啟次序,減少了恢復(fù) 時間,降低了恢復(fù)成本,增強了任務(wù)關(guān)鍵系統(tǒng)生存性的可恢復(fù)彈性。當(dāng)系統(tǒng)生存 性能退化到一定程度時,通過終止應(yīng)用的繼續(xù)運行,或重啟系統(tǒng)、應(yīng)用服務(wù)或進(jìn) 程以清理其內(nèi)部狀態(tài),從而釋放操作系統(tǒng)資源,使系統(tǒng)生存性能得到恢復(fù)。

圖1為系統(tǒng)級遞歸恢復(fù)策略圖2為服務(wù)級遞歸恢復(fù)策略圖3為進(jìn)程/線程級恢復(fù)策略圖4為四級嵌套的應(yīng)急恢復(fù)策略實施過程圖5為四級嵌套的應(yīng)急恢復(fù)DFA模型;
5圖6為A級嵌套的應(yīng)急恢復(fù)策略實施過程圖; 圖7是本發(fā)明的流程框圖。
具體實施方式
下面結(jié)合附圖舉例對本發(fā)明做更詳細(xì)地描述 1.確定重啟層的級別及不同級別的重啟恢復(fù)策略
實施細(xì)粒度嵌套的應(yīng)急恢復(fù)策略,需將系統(tǒng)分為若干重啟層,而每層的重啟 對象須具有原子性、并發(fā)性的獨立服務(wù)實體。由此,將重啟恢復(fù)定義為4等級 系統(tǒng)級、服務(wù)級、進(jìn)程級和線程級。系統(tǒng)級恢復(fù)是將整個系統(tǒng)作為重啟對象,服 務(wù)級恢復(fù)將應(yīng)用服務(wù)作為重啟對象,進(jìn)程級恢復(fù)是將系統(tǒng)運行過程中執(zhí)行的具體 進(jìn)程作為重啟對象,而線程級恢復(fù)則將進(jìn)程中的每個單元線程作為重啟對象。在 每次系統(tǒng)級恢復(fù)前執(zhí)行多次的服務(wù)級恢復(fù)在每次服務(wù)級恢復(fù)前執(zhí)行多次的進(jìn)程 級恢復(fù);進(jìn)程級恢復(fù)過程中伴隨著多次的線程級恢復(fù)。
(1) 系統(tǒng)級恢復(fù)策略
依賴于現(xiàn)有系統(tǒng)的失效分布規(guī)律,定義系統(tǒng)應(yīng)急重啟恢復(fù)時間間隔為/7,
7, =MZS《-M777 ,(/ = 0,1,...;)。如圖1所示,系統(tǒng)剛開始運行時,具有最佳生存
性能Hn^,隨著各種失效、錯誤、攻擊等不可測事件的發(fā)生,導(dǎo)致系統(tǒng)生存性能 的逐漸下降,假設(shè)77,時刻降至H皿",此時實施系統(tǒng)級重啟策略,使系統(tǒng)的生存性
能快速恢復(fù)到起始狀態(tài)。
(2) 服務(wù)級恢復(fù)策略 服務(wù)級恢復(fù)策略是每當(dāng)某一關(guān)鍵服務(wù)的生存性能降低到某一預(yù)定閾值
時,進(jìn)行一次服務(wù)級重啟恢復(fù);而當(dāng)某一關(guān)鍵服務(wù)的生存性能尸 皿>尸>^^時, 進(jìn)行M次的進(jìn)程級恢復(fù),從而得到一系列不同的該服務(wù)的生存性能恢復(fù)值
尸^,^S,…^^和執(zhí)行恢復(fù)的時間間隔H…,7n,如圖2所示。由于服務(wù)級
恢復(fù)不能釋放被損耗的所有操作系統(tǒng)資源,該應(yīng)急服務(wù)恢復(fù)后的生存性能值戶
和時間間隔序列值/7依次遞減, 一定次數(shù)iV后,開始頻繁地執(zhí)行恢復(fù)操作而無法
正常提供服務(wù),直至該服務(wù)徹底失效。因此我們考慮在M次的進(jìn)程級恢復(fù)后, 實施一次服務(wù)級恢復(fù),使該服務(wù)的生存性能恢復(fù)到初始值T^m,再重新開始M 次的進(jìn)程級恢復(fù)。依次循環(huán),如果不發(fā)生其他故障,該關(guān)鍵服務(wù)有望長時間地運行下去。
(3)進(jìn)程級與線程級恢復(fù)策略
為了避免關(guān)鍵服務(wù)在發(fā)生失效事件后由于從頭開始執(zhí)行而引起計算上的大 量浪費,充分提高系統(tǒng)的可用性,在服務(wù)正常運行的適當(dāng)時刻設(shè)置檢査點(Check Point),保存服務(wù)進(jìn)程當(dāng)時的規(guī)范狀態(tài),并對各進(jìn)程相關(guān)性進(jìn)行跟蹤和記錄。發(fā) 生服務(wù)中斷故障后,將相關(guān)進(jìn)程回巻到故障前服務(wù)的一致性狀態(tài)(檢查點),經(jīng) 過狀態(tài)恢復(fù)后從該檢査點處重新執(zhí)行。
進(jìn)程級或線程級恢復(fù)的過程就是從檢查點文件中恢復(fù)內(nèi)存鏡像?;謴?fù)機制利 用系統(tǒng)loctl()函數(shù)調(diào)用,讀取檢査點文件,創(chuàng)建完子進(jìn)程后,父進(jìn)程返回用戶空 間, 一直等到恢復(fù)任務(wù)完成,結(jié)束退出。子進(jìn)程則利用clone()函數(shù)產(chǎn)生多個線程 重新恢復(fù)原任務(wù),其中一個線程從檢査點文件中讀取基本信息,并且恢復(fù)各個線 程的編號以及它們之間的關(guān)系。在通過最后一個阻塞點后,所有的線程即離開內(nèi) 核空間,進(jìn)入到用戶空間,并且它們的回調(diào)函數(shù)將繼續(xù)執(zhí)行進(jìn)程恢復(fù)后的代碼, 如圖3所示。
2.確定系統(tǒng)各重啟層模塊的重啟次序,建立遞歸嵌套重啟鏈 一般情況下,恢復(fù)粒度越細(xì),服務(wù)失效時間越短,恢復(fù)成本也越低。但是, 并不能因此就簡單地確定重啟次序為線程級、進(jìn)程級、服務(wù)級和系統(tǒng)級。本發(fā)
明在確定重啟次序時,引入了重啟優(yōu)先級指標(biāo)參數(shù)K,。定義《=^* "5:(重
啟可控對象后釋放的資源量/重啟可控對象引發(fā)的恢復(fù)成本),其中,^表示需要
應(yīng)急恢復(fù)的重啟可控對象;^表示s的關(guān)鍵等級;A^表示s的生存態(tài)勢等級。
在確定重啟對象時,遵從以下規(guī)則(l)在同一層,可控對象的《、越大,重 啟優(yōu)先級越高,越優(yōu)先重啟;(2)在不同層,如果某一進(jìn)程的《大于其所屬的 應(yīng)用服務(wù)的K,值,則該進(jìn)程和服務(wù)可以分別作為一個重啟對象,且進(jìn)程優(yōu)先于 所屬應(yīng)用服務(wù)執(zhí)行重啟操作;反之,則該進(jìn)程不能作為重啟對象,只將服務(wù)作為
一個重啟對象。如果重新引導(dǎo)整個系統(tǒng)的i:,值最大,則只需要以整個系統(tǒng)作為
重啟對象,執(zhí)行簡單的周期性恢復(fù),而不用再考慮服務(wù)級和進(jìn)程級、線程級的細(xì) 粒度恢復(fù)策略。
7因為一個應(yīng)用服務(wù)的重啟是對它運行過程中啟用的所有進(jìn)程的重置,重啟該 應(yīng)用服務(wù)相當(dāng)于重啟從屬它的所有進(jìn)程。系統(tǒng)的重新引導(dǎo)將停止所有運行其上的 應(yīng)用服務(wù)程序,釋放所有系統(tǒng)資源,是對系統(tǒng)生存性能的最徹底恢復(fù)。按以上規(guī) 則可以得到各級重啟對象,并按重啟優(yōu)先級可將這些重啟對象排序為一鏈狀結(jié) 構(gòu),即為重啟鏈。
3.構(gòu)建遞歸重啟應(yīng)急恢復(fù)的實施過程模型
用SPN描述每次應(yīng)急重啟恢復(fù)的具體實施過程,用DFA控制各次重啟恢復(fù) 的返回位置,由此簡化了 SPN模型,易于理解和分析。四級嵌套的可生存系統(tǒng) 應(yīng)急重啟恢復(fù)策略實施過程如圖4所示。用DFA模型M控制各恢復(fù)子過程之間 的關(guān)聯(lián)與轉(zhuǎn)移位置,這既避免了模型狀態(tài)空間爆炸問題又避免了 DFA模型不能 描述策略實施細(xì)節(jié)的缺點。圖中的圓圈表示位置,圓圈中的黑點為標(biāo)記,小矩形
框表示變遷。其中,Pavail、 Pd。wn、 P一模擬系統(tǒng)進(jìn)入的狀態(tài),Pcl。ck表示執(zhí)行恢 復(fù)的記錄時鐘,空心框Td。^、 Tre」u、 Tup表示實施時間服從任意分布的變遷,實
心框Td。ck表示確定時間變遷,確定時間/7,即最優(yōu)恢復(fù)時間間隔。變遷實施,則
Token從其前一位置運動到后一位置,系統(tǒng)狀態(tài)隨之變化。將含有Token的位置 記為l,不含Token的位置記為0,則位置組(P翻u Pd。wn, Pcl。ek, P,)可標(biāo)識系 統(tǒng)在恢復(fù)子過程中所處的狀態(tài)。
兩大矩形框包含兩組位置{Pavail0, P誦U,'.., Pava"4和《Pd。ck0, P続,…, Pcl。ckn},分別表示各恢復(fù)子過程的初始位置和記錄時鐘,每次恢復(fù)各有其中的一 個位置參與。前n次恢復(fù)共用同一變遷Td。wni、 Td。ckl,但是,對應(yīng)不同的初始位
置,Td。誦服從不同的隨機分布i^(t)(0《<"),Td。cki的實施時間77,(0 < ")也不 同,進(jìn)入恢復(fù)狀態(tài)后實施相同變遷T^ju。任一時刻若系統(tǒng)進(jìn)入失效狀態(tài),實施
相同的變遷Tup,服從相同的隨機分布。從Pd。ek位置組到自動機M的連接線, 標(biāo)示M的一個輸入,由此獲知系統(tǒng)的當(dāng)前狀態(tài)《妙;從變遷Tareju、 Tsreju、 Tup到 自動機M,三線合一作為M的另一個輸入,變遷Ta「e」u、 Tsreju、 T叩的實施對應(yīng)2: 中系統(tǒng)執(zhí)行的操作;M的轉(zhuǎn)移函數(shù)e讀取這兩個輸入,得到系統(tǒng)的下一狀態(tài),作 為M的輸出,并控制下一子過程的初始位置。圖4中將服務(wù)層、進(jìn)程層、線程
層重啟的變遷表示為一組,如灰色框所示,其中變遷總數(shù)等于三層重啟次數(shù)之和。
自動機的狀態(tài)轉(zhuǎn)移規(guī)則形式化描述如圖5所示。圖中用M的有限狀態(tài)^控制位置組(乙,。,…U和《P絲,…U中的標(biāo)記,定義狀態(tài)如下對應(yīng)初始 狀態(tài)《。。。,標(biāo)記位于P』。和P摘;當(dāng)系統(tǒng)進(jìn)入狀態(tài)^,00…010…00 (第
堂S単,]+単2]+z+y+"i位為1 ),則標(biāo)記位于P—和Pd。cky ,其中 y = f I; iV[&] + iV[&] + i + j + A +1 ,此時系統(tǒng)已執(zhí)行了 A:次線程級重啟,7'次進(jìn)
程級重啟,Z'次服務(wù)級重啟;當(dāng)系統(tǒng)到達(dá)狀態(tài)^,w。)時,標(biāo)記位于P^和
P£l。。kn,準(zhǔn)備執(zhí)行系統(tǒng)級重啟。
從Pd。。k位置組到M存在一個輸入,由此獲知系統(tǒng)的當(dāng)前狀態(tài)&;從變遷T, 組、T,、 Tup到M作為其另一個輸入,由此獲知系統(tǒng)的重啟類型;M的轉(zhuǎn)移函
數(shù)^讀取兩個輸入,得到系統(tǒng)的下一個狀態(tài),同時得知系統(tǒng)此時應(yīng)執(zhí)行的操作, 作為M的輸出,并控制下一恢復(fù)子過程中標(biāo)記的初始位置,以及系統(tǒng)從位置出 發(fā)所執(zhí)行的重啟對象。
將圖4稍加改動即可用以表示任意的A:級遞歸嵌套的應(yīng)急恢復(fù)策略,如圖6 所示。
VS. Net示例進(jìn)程級恢復(fù)管理的部分代碼如下
〃列出系統(tǒng)中的當(dāng)前所有進(jìn)程 〃
private void ListProcesses0 { Process[] ps; try
{ ps = Process.GetProcesses0;
z/更新進(jìn)程列表的內(nèi)容
lvProcesses.BeginUpdate0 ; lvProcesses.Clear 0; //添加列
lvProcesses. Columns. Add( 〃映像名稱〃,100, Horizontal Alignment. Left ); lvProcesses. Columns. Add( 〃進(jìn)禾呈ID〃, 60, Horizontal Alignment. Left ); lvProcesses. Columns. Add( 〃優(yōu)先級〃,60, Horizontal Alignment. Right ); lvProcesses. Columns. Add( 〃CPU日寸間",100, Horizontal Alignment. Right ); lvProcesses. Columns. Add( 〃占用內(nèi)存〃,100, Horizontal Alignment. Right); 〃添加列表項foreach( Process p in ps ) { ListViewItem lvi = new ListViewItem0 ; lvi.Text = p.ProcessName; lvi. Subltems. Add( p. Id. ToString()); lvi.Subltems. Add( p. BasePriority. ToString()); lvi.Subltems. Add( p. TotalProcessorTime. Hours. ToString() + 〃〃 + p. TotalProcessorTim e.Minutes. ToString() + 〃〃 + p.TotalProcessorTime. Seconds. ToString()); lvi.Subltems. Add( p. WorkingSet.ToString() );IvProcesses. Items. Add( lvi );
}
IvProcesses.EndUpdate 0 ;
catch( Exception e ) { MessageBox.Show( e.Message );
public int pid = 0;
〃根據(jù)進(jìn)程ID獲取進(jìn)程對象,然后顯示它的屬性
private void FormProp丄oad (object sender, System. EventArgs e) { if( pid == 0 ) return;
Process p = Process.GetProcessById( pid ); if( p == null ) return: try
{ txtID. Text 二 p. Id. ToString (); txtName. Text = p.ProcessName;
txtStartTime.Text = p.StartTime. ToLongTimeString(); txtPriority.Text = p,PriorityClass. ToString0 ; txtVirtualMem.Text 二 p.VirtualMemorySize. ToString (); txtWorkingSet.Text 二 p. WorkingSet. ToString(); if( p. MainModule != null )
{ txtModuleName. Text = p. MainModule. FileName; txtModuleDescription. Text=p. MainModule. FileVersion Info. FileDescription; txtModuleVersion. Text = p. MainModule. FileVersion Info. FileVersion;
catch( Exception ex ) { MessageBox. Show (this, ex. Message, 〃出現(xiàn)異?!?,MessageBox Buttons. 0K, M essageBoxIcon. Warning );
finally
10p. Close 0 ;
〃/
〃根據(jù)用戶在窗體中的輸入創(chuàng)建ProcessStartlnfo對象實例 〃然后使用這個對象實例啟動新的進(jìn)程
private void btnOK—CIick(object sender, System. EventArgs e) { ProcessStartlnfo si = new ProcessStartlnfo0 ; si.FileName 二 txtFileName. Text; si.Arguments = txtParara. Text; si.ErrorDiaJog = chkErrDlg. Checked; si.UseShellExecute = chkUseShell, Checked; if( cbxVerb. Selectedlndex != -1 )
si.Verb = cbxVerb. Text; si. WorkingDirectory 二 txtWorkDir.Text; if( cbxStyle,Selectedlndex == 0 )
si. WindowStyle 二 ProcessWindowStyle. Maximized; else if( cbxStyle.Selectedlndex ==1 )
si. WindowStyle 二 ProcessWindowStyle. Minimized;
else
si. WindowStyle 二 ProcessWindowStyle. Normal; try { Process.Start ( si );) catch ( Exception ex )
MessageBox. Show (this, ex. Message,"出現(xiàn)異常〃,MessageBox Buttons. 0K, MessageBoxIcon. War riing );
this. DialogResult 二 DialogResult. None;
private void Forml—Load(object sender, System. EventArgs e)
{ ListProcesses0 ; } 〃刪除當(dāng)前選擇的進(jìn)程 private void btnKillProcess—Click(object sender, System. Event Args e)
if ( MessageBox. Show(this, 〃確定結(jié)束進(jìn)程〃+lvProcesses. SelectedItems[O] Text, 〃結(jié)束進(jìn) 禾呈〃,MessageBoxButtons. OK Cancel, MessageBoxIcon. Warning ) == DialogResult. Cancel ) return;
int pid = Int32. Parse( lvProcesses. Selectedltems
. Sub Items[1].Text );Process p = Process, GetProcessByld( pid ); if( p == null ) return; if( !p. CloseMainWindow())
p. Kill (); p. WaitForExit(): p. Close (); ListProcesses ();
〃刷新進(jìn)程列表
private void btnRefresh—Click (object sender, System. EventArgs e) { ListProcesses 0;} 〃創(chuàng)建新進(jìn)程
private void btnNewProcess_Click(object sender, System. Event Args e) { FormStartlnfo dig = new FormStartlnfo(); if( dig. ShowDialog() == DialogResult. OK ) ListProcesses ();} 〃顯示當(dāng)前選擇進(jìn)程的屬性
private void btnProcessProp—Click(object sender, System. Event Args e) { FormProp dig = new FormProp(); dig. Text = 〃進(jìn)程〃 + lvProcesses. SelectedItems[O]. Text +"的屬性"; dig. pid = Int32. Parse( lvProcesses. Selectedltems
. Sub Items[1].Text ); dig. ShowDialog ()
〃進(jìn)程掛起&進(jìn)程恢復(fù)
Private Declare Function 0penProcess LAb 〃kernel32〃 (ByVal dwDesiredAccess As Long,
ByVal blnheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Const SYNCHRONIZE = &H100000 Private Const STANDARD—RIGHTS—REQUIRED = &HF0000
Private Const PROCESS—ALL—ACCESS 二 (STANDARD—RIGHTS—REQUIRED Or SYNCHRONIZE Or &HFF F)
Private Declare Function NtSuspendProcess Lib 〃rrtdll.d11〃 (ByVal hProc As Long) As Long
Private Declare Function NtResumeProcess Lib 〃ntdll.d11〃 (ByVal hProc As Long) As L ong
Private Declare Function TerminateProcess Lib 〃kernel32" (ByVal hProcess As Long, B yVal uExitCode As Long) As Long Private hProcess As LongPrivate Sub cmdClose—Click ()'終丄匕
CloseHandle hProcess End Sub
Private Sub cmdResume_Click ()'關(guān)閉句卞丙 If IsNumeric(txtPid. Text) Then
hProcess = OpenProcess(PROCESS—ALL一ACCESS, False, CLng(txtPid.Text)) If hProcess 0 Then
NtResumeProcess hProcess End If End If End Sub
Private Sub cmdTerminate_Click ()'恢復(fù) If hProcess Then
TerminateProcess hProcess, 0
Else
If IsNumeric(txtPid. Text) Then
hProcess = OpenProcess(PROCESS—ALL—ACCESS, False, CLng (txtPid. Text))
1權(quán)利要求
1、一種基于四級嵌套重啟的任務(wù)關(guān)鍵系統(tǒng)生存應(yīng)急恢復(fù)方法,其特征是(1)將重啟層劃分為系統(tǒng)級、服務(wù)級、進(jìn)程級和線程級四個等級;(2)重啟優(yōu)先級指標(biāo)參數(shù)為Ks,Ks=d*Δp*∑,其中,s表示需要應(yīng)急恢復(fù)的重啟可控對象、d表示s的關(guān)鍵等級、Δp表示s的生存態(tài)勢等級;在確定重啟對象時,遵從以下規(guī)則a.在同一層,可控對象的Ks越大,重啟優(yōu)先級越高,越優(yōu)先重啟;b.在不同層,如果某一進(jìn)程的Ks大于其所屬的應(yīng)用服務(wù)的Ks值,則該進(jìn)程和服務(wù)分別作為一個重啟對象,且進(jìn)程優(yōu)先于所屬應(yīng)用服務(wù)執(zhí)行重啟操作;反之,則該進(jìn)程不能作為重啟對象,只將服務(wù)作為一個重啟對象;如果重新引導(dǎo)整個系統(tǒng)的Ks值最大,則只以整個系統(tǒng)作為重啟對象,執(zhí)行簡單的周期性恢復(fù);(3)基于SPN方法描述每一次應(yīng)急重啟恢復(fù)的具體實施過程,同時用DFA控制每一次重啟恢復(fù)的返回位置。
2、 根據(jù)權(quán)利要求1所述的基于四級嵌套重啟的任務(wù)關(guān)鍵系統(tǒng)生存應(yīng)急恢復(fù) 方法,其特征是所述的將重啟層劃分為系統(tǒng)級、服務(wù)級、進(jìn)程級和線程級四 個等級的確定重啟層的級別和不同級別重啟層的恢復(fù)策略為(a )系統(tǒng)級恢復(fù)策略系統(tǒng)應(yīng)急重啟恢復(fù)時間間隔為/7 ,",=A/rSf -M777 ,(/ = 0,1,…),當(dāng)時刻系統(tǒng)生存性降至//幽,此時實施系統(tǒng) 級重啟策略;(b)服務(wù)級恢復(fù)策略當(dāng)某一關(guān)鍵服務(wù)的生存性能降低到某一預(yù)定閾值 i^J寸,進(jìn)行一次服務(wù)級重啟恢復(fù);而當(dāng)戶^〉P〉尸冊J寸,進(jìn)行M次的進(jìn)程級 恢復(fù);同時,在M次的進(jìn)程級恢復(fù)后,實施一次服務(wù)級恢復(fù),使該服務(wù)的生存 性能恢復(fù)到初始值Pmax,再重新開始M次的進(jìn)程級恢復(fù);(C)進(jìn)程/線程級恢復(fù)策略利用系統(tǒng)l0Ctl()函數(shù)調(diào)用,讀取檢査點文件,創(chuàng)建子進(jìn)程后,父進(jìn)程返回用戶空間等到恢復(fù)任務(wù)完成,子進(jìn)程則利用clone() 函數(shù)產(chǎn)生多個線程重新恢復(fù)原任務(wù);在通過最后一個阻塞點后,所有線程即離 開內(nèi)核空間,進(jìn)入到用戶空間,由回調(diào)函數(shù)繼續(xù)執(zhí)行進(jìn)程恢復(fù)后的代碼。
全文摘要
本發(fā)明提供的是一種基于四級嵌套重啟的任務(wù)關(guān)鍵系統(tǒng)生存應(yīng)急恢復(fù)方法。其主要技術(shù)特征包括確定了系統(tǒng)不同粒度的重啟層級別及不同級別的重啟恢復(fù)策略;定義了重啟優(yōu)先級的計算方法,確定出系統(tǒng)各重啟層模塊的重啟次序,建立了遞歸嵌套重啟鏈;利用SPN和DFA形式化描述了遞歸重啟應(yīng)急恢復(fù)的實施過程。本發(fā)明具有以下優(yōu)點面向不同的故障場景,可以有效地選擇不同粒度的重啟對象,并確定出重啟次序,減少了恢復(fù)時間,降低了恢復(fù)成本,增強了任務(wù)關(guān)鍵系統(tǒng)生存性的可恢復(fù)彈性。當(dāng)系統(tǒng)生存性能退化到一定程度時,通過終止應(yīng)用的繼續(xù)運行,或重啟系統(tǒng)、應(yīng)用服務(wù)或進(jìn)程以清理其內(nèi)部狀態(tài),從而釋放操作系統(tǒng)資源,使系統(tǒng)生存性能得到恢復(fù)。
文檔編號G06F11/00GK101539863SQ20091007191
公開日2009年9月23日 申請日期2009年4月29日 優(yōu)先權(quán)日2009年4月29日
發(fā)明者健 王, 王慧強, 趙國生 申請人:哈爾濱工程大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
潜山县| 鄂尔多斯市| 延安市| 新沂市| 交口县| 开远市| 平江县| 鄯善县| 卢龙县| 兰州市| 邵武市| 合作市| 株洲市| 永吉县| 怀仁县| 永年县| 高陵县| 远安县| 祁阳县| 藁城市| 永州市| 吴川市| 肇州县| 噶尔县| 额尔古纳市| 吴川市| 安图县| 宝清县| 固镇县| 儋州市| 溧水县| 南投市| 伊宁市| 类乌齐县| 筠连县| 沁源县| 正镶白旗| 寻乌县| 江永县| 施秉县| 陆川县|