亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

分布式操作系統(tǒng)中的一種方法與系統(tǒng)的制作方法

文檔序號:6408453閱讀:327來源:國知局
專利名稱:分布式操作系統(tǒng)中的一種方法與系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明總體上涉及到分布式操作系統(tǒng)中的進程及相關(guān)資源處理。
所謂進程,當(dāng)前連接中也稱上下文,在本文中是指操作系統(tǒng)中的資源,作業(yè)需要使用這種資源以便執(zhí)行該進程中的程序代碼。進程為作業(yè)提供了若干必不可少的資源,如自己的程序計數(shù)器、自己的存儲空間以及自己的一組處理器寄存器等。進程通過一次只允許執(zhí)行一個作業(yè)而協(xié)調(diào)多個作業(yè)。
更一般地說,本文中作業(yè)是指涉及到進程的事件,因此,可以執(zhí)行進程所擁有的對象中的方法。一項作業(yè)可以創(chuàng)建涉及到其它進程或者自身進程的新作業(yè)。
美國專利US3905023說明了一種包括多級操作系統(tǒng)的系統(tǒng)。這種系統(tǒng)以巨大和格外復(fù)雜為特征。通過多級操作系統(tǒng)能以適當(dāng)?shù)姆绞絼討B(tài)且自動地重構(gòu)系統(tǒng)模塊,從而保證了系統(tǒng)硬件的可靠性。在上述系統(tǒng)的所有主模塊中均有檢錯和報錯電路,該電路為操作系統(tǒng)提供了用于進行出錯分析及動態(tài)重構(gòu)系統(tǒng)資源的信息。其存儲模塊具有獨立于操作系統(tǒng)的“單個位”的糾錯能力。所述操作系統(tǒng)可看成包括有一基本級和N個連續(xù)級?;炯壉欢x為操作系統(tǒng)的核心。每一級操作系統(tǒng)內(nèi)的進程只負(fù)責(zé)最鄰近的高級別內(nèi)所形成的處理工作,而不負(fù)責(zé)任何其它的處理工作。操作系統(tǒng)動態(tài)地控制系統(tǒng)資源并有計劃地管理多程序混合體中的作業(yè)或任務(wù)。操作系統(tǒng)重新分配資源、啟動作業(yè)并監(jiān)控它們的執(zhí)行。
專利GB2079997涉及到帶有多個彼此相連系統(tǒng)的分布式計算機系統(tǒng)。每一個系統(tǒng)均具有多個相互連接的單元。所說的系統(tǒng)包括眾多的單元以及一分布式操作系統(tǒng),該操作系統(tǒng)在使用縱向?qū)ぶ返耐瑫r用于操作、錯誤監(jiān)控以及重新配置功能。當(dāng)檢測到錯誤時,就改正該錯誤,并將出錯的單元隔離,同時將該單元的作業(yè)安排給其它未被占用的單元。如果沒有其它單元可以利用,那么,就對系統(tǒng)進行重構(gòu),以便在使用可用系統(tǒng)的同時恢復(fù)惡化了的操作。
在專利US4933936中,說明了一種分布式計算機系統(tǒng),這種系統(tǒng)規(guī)定了靈活的容錯性。分布式操作系統(tǒng)駐留在所有的計算機內(nèi)。共用操作系統(tǒng)的駐留拷貝控制著每個計算機。
在計算機中,希望通信錯誤或者有錯程序所引起的錯誤都能由計算機的操作系統(tǒng)以這樣的方式加以處理,亦即讓該計算機保持原樣且其它程序和調(diào)用均不受錯誤的影響。一個錯誤在最壞的情況下應(yīng)該僅讓出現(xiàn)錯誤的鏈接進程或調(diào)用鏈?zhǔn)芸胤蛛x。錯誤的影響與調(diào)用是完全隔離的。換句話說,就系統(tǒng)而言,對已出現(xiàn)錯誤的恢復(fù)必須不包括比錯誤自身所引起的后果更嚴(yán)重的結(jié)果。
本發(fā)明的第一個目的是在分布式操作系統(tǒng)內(nèi)卸下鏈接進程鏈,同時把盡可能多的內(nèi)存和硬件資源返還給系統(tǒng)。
本發(fā)明的第二個目的是隔離錯誤并減少錯誤和恢復(fù)措施對有關(guān)事項/調(diào)用的影響,并且,如果可能的話,避免重新啟動計算機以及對其它調(diào)用的影響。
本發(fā)明的第三個目的是不管錯誤出現(xiàn)在系統(tǒng)內(nèi)什么地方都能跟蹤這些錯誤。
本發(fā)明的第四個目的是在系統(tǒng)更新方面對某些活動進行類型標(biāo)記,以便控制這些活動執(zhí)行期望的程序版本。
一般地說,依照本發(fā)明,為了能在分布式操作系統(tǒng)的進程之間建立雙向通信鏈路,給這些進程提供了端口,通過這些端口可進行進程之間的通信。所述進程和端口能使操作系統(tǒng)檢查帶有鏈路的進程,如果進程自身中止,操作系統(tǒng)就使用上述鏈路,同時,發(fā)現(xiàn)進程中的錯誤并中止它。為了能使操作系統(tǒng)經(jīng)由所說的鏈路傳送有關(guān)進程或計算機故障的信息并將這一信息傳送到整個鏈接進程鏈中同時將這一信息報告給在所述鏈接進程內(nèi)執(zhí)行的應(yīng)用程序,以便使這些應(yīng)用程序執(zhí)行特定的程序內(nèi)容,因此要使用一種在鏈路中斷及通信出錯時被調(diào)用的代碼。該代碼的功能包括中止有錯誤的進程并將錯誤報告給出錯處理代碼。所說的第一種代碼總是在已向其報告了錯誤的進程內(nèi)執(zhí)行。
具體地說,本發(fā)明之用于在分布式操作系統(tǒng)內(nèi)處理資源的方法包括下列步驟在所說的進程之間提供雙向通信鏈路并用操作系統(tǒng)來跟蹤帶有鏈路的進程,同時,如果帶有鏈路的進程中止,操作系統(tǒng)就使用該鏈路;在進程中檢錯并中止該進程;經(jīng)由所說的鏈路傳遞有關(guān)進程或計算機失效的信息,并將這一信息傳遍整個的鏈接進程鏈;以及將上述信息報告給在鏈接進程內(nèi)執(zhí)行的應(yīng)用程序,以便使這些應(yīng)用程序能執(zhí)行特定的恢復(fù)工作。
本發(fā)明的系統(tǒng)包括編碼裝置,編碼裝置包括第一裝置,此裝置用于在進程之間提供雙向通信鏈路;第二裝置,此裝置用于使所說的操作系統(tǒng)能跟蹤帶有鏈路的進程,并且,如果有進程結(jié)束,操作系統(tǒng)就使用所說的鏈路;第三裝置,此裝置用于使所說的操作系統(tǒng)或在某些情況下使進程本身去檢測進程中的錯誤并中止進程;第四裝置,此裝置用于使所說的操作系統(tǒng)經(jīng)由前述鏈路傳遞有關(guān)進程或計算機失效的失效信息并將該信息傳遍整個的鏈接進程鏈;以及第五裝置,此裝置用于使所說的操作系統(tǒng)將前述失效信息報告給在鏈接進程內(nèi)執(zhí)行的應(yīng)用程序,以便使這些應(yīng)用程序執(zhí)行特定的恢復(fù)工作。
以下參照附圖中概略示出的實施例來詳細(xì)地說明本發(fā)明。


圖1顯示了分布式操作系統(tǒng)中呈作業(yè)鏈形式的活動的實例;圖2顯示了由若干上述活動所構(gòu)成的活動組的實例;圖3顯示了資源如何短時間或長時間地從屬于一種活動;圖4顯示了一種活動的鏈路模擬圖;圖5用于說明可將一種活動中錯誤的結(jié)果與活動本身隔離開來;圖6a-6d說明了當(dāng)一進程中出現(xiàn)錯誤時如何斷開一活動;圖7說明了系統(tǒng)的升級情況;圖8說明了圖1所示活動中的檢錯系統(tǒng)的結(jié)構(gòu);圖9顯示了在進程出錯情況下所執(zhí)行的動作碼;
圖10-13說明了對進程局部錯誤的處理;圖14-16說明了對通信錯誤的處理;圖17-19說明了對其它進程中錯誤的處理;圖20以表的形式概括了參照圖6至圖19所說明的錯誤。
在不同的圖中相同的標(biāo)號說明相同或相類的部件。
在以下的說明和附圖中,使用了信息和通信專家所熟悉的表達方式以及某種類型的偽語法表達方式。假定專業(yè)人員不需要對上述表達方式和語法作進一步的解釋和說明,所以,以下不對所說的表達方式和語法作解釋。
以下使用活動這一概念來定義操作系統(tǒng)中因獨立的外部或內(nèi)部事件而創(chuàng)建的作業(yè)鏈以及由該作業(yè)鏈在執(zhí)行過程中所使用的資源總和。
圖1顯示了作業(yè)鏈的“作業(yè)記錄”,作為一個實例,該作業(yè)鏈源于兩個電話用戶A與B之間電話交換過程中的事件。具體地說,圖1顯示了呈作業(yè)鏈形式的活動以及活動自身所連接的三種資源,即進程、端口和用戶設(shè)備。在圖1中,標(biāo)號2表示進程,標(biāo)號,4.n表示作業(yè),標(biāo)號6表示端口,標(biāo)號8表示用戶設(shè)備。
箭頭涉及到作業(yè)鏈中的不同消息,如也稱“cast”消息的異步通信信息10、呈調(diào)用及應(yīng)答消息12和14形式的同步消息。具體地說,異步消息是指這樣一種消息,一個進程發(fā)送了該消息之后不等待應(yīng)答就繼續(xù)執(zhí)行,而在同步信息的情況下,進程鎖定直至應(yīng)答到達。每一種新的“cast”消息都會導(dǎo)致一個新的作業(yè),如4.2等,然后作業(yè)4.2可以非常恰當(dāng)?shù)嘏c創(chuàng)建它的作業(yè)4.1同時存在。調(diào)用12也會導(dǎo)致一新的作業(yè)4.6,而調(diào)用的作業(yè)4.5會被暫時掛起。直至新作業(yè)4.6停止執(zhí)行并送出了一個應(yīng)答消息14,掛起的作業(yè)4.5再繼續(xù)。
“獨立的”外部事件是指不涉及系統(tǒng)內(nèi)任何活動的事件。如果用戶A拿起電話接收機,那么,這就是一個啟動新活動的獨立事件。如果用戶B拿起電話接收機,那么,這不是一個獨立事件,這是因為,它是涉及到已建立起來的調(diào)用,因而涉及到了現(xiàn)有的活動。如果用戶A或B放下接收機,上述情況同樣成立。
多數(shù)內(nèi)部事件都不是獨立的。例如,如果接收到借方脈沖(debiting pulse),這是因為某項活動已安排了周期性的時間管理并且創(chuàng)建了暫時掛起的“到時(timeout)”作業(yè)。該作業(yè)包括在所說的活動內(nèi)。但是,應(yīng)把某些內(nèi)部事件看作是獨立的。這一點適用于諸如啟動來自測試碼生成程序或已觸發(fā)的(啟動例行檢測型的)絕對時間管理程序的測試活動。
作業(yè)鏈中的作業(yè)并非必須通過操作系統(tǒng)中的通信設(shè)備直接在另一項作業(yè)或調(diào)用中出現(xiàn)。例如,可以有這樣的情況,在特定的時隙內(nèi),活動中不存在有排隊執(zhí)行或等待的作業(yè)。在這種情況下,僅由以下將詳細(xì)說明的鏈路圖來定義所說的活動。如果當(dāng)前一項新作業(yè)起源于所述活動獨占的一些資源,如用戶B的線路,那么作業(yè)4.10也屬于所說的活動。
參照圖2,如果有接線員或第三方C要加入談話,那么,就更難區(qū)分“獨立”和“不獨立”。該事件的確是涉及到現(xiàn)有的活動20,但它首先導(dǎo)致了一個新的活動22的創(chuàng)建。這兩項活動通過作業(yè)鏈匯合于相同的資源即匯合于用戶A的半個調(diào)用進程24而形成了一“活動組”,如圖2概略所示。但是,應(yīng)該注意,兩個活動共享一種資源并非這兩個活動形成活動組的充分條件。為此,多個活動(調(diào)用)在不屬于同一恢復(fù)域內(nèi)的情況下可以共享訪問進程。
足夠合理的條件大概是共享動態(tài)進程的活動可以形成一活動組,而共享靜態(tài)進程的活動則不能形成活動組。靜態(tài)進程被看作是足夠健壯的從而能在一種活動不會影響共享進程的其它活動的情況下恢復(fù)該活動。
如圖3概略所示,所說的活動在生存期內(nèi)會與不同的資源相連較短或較長的一段時間。例如,開始執(zhí)行的作業(yè)25總是與進程型的資源26相連。在許多情況下,例如就靜態(tài)起始進程而言,一旦作業(yè)中止,就會直接釋放該進程,但由于已為該進程創(chuàng)建了端口28等類似原因,該進程也可以仍與所說的活動相連一段較長的時間,因此,來自同一活動的新調(diào)用會出現(xiàn)在較后的時間點上,如標(biāo)號30和32所示,這意味著可分別連上或斷開新進程34。
所述活動通常連接的一種重要類型資源是通信端口,該通信端口從屬于操作系統(tǒng)的通信設(shè)備。所有的端口都從屬于進程并且每個端口都涉及到一相對的端口。通常把端口連接在一起,所說的活動可創(chuàng)建出圖4所示的鏈路圖,該鏈路圖把端口6的“擁有者”進程連在一起。通過這種方式,在活動內(nèi)沒有將要被執(zhí)行的作業(yè)期間,該活動也可與進程相連。但是,請注意,這種“連接”并不意味著對進程作任何獨占性的訪問。
注意到鏈路圖僅僅是以節(jié)點和鏈路方式存在的東西是很重要的。因此,沒有能夠知道鏈路圖的存在及其范圍的集中或分散式的協(xié)調(diào)功能。系統(tǒng)中存在的有關(guān)鏈路圖的僅有知識是每個端口內(nèi)的有限信息(一個節(jié)點能了解鏈路圖中緊相鄰的結(jié)點)。
端口6還可用于間接地把在一個進程內(nèi)所管理的的資源與活動相連。在圖4進程“入口A”中所執(zhí)行的程序內(nèi),與用戶A的硬件相聯(lián)系的端口6與直接從屬于鏈路圖的端口6之間存在有一內(nèi)部引用。當(dāng)不希望當(dāng)前進程與鏈路圖的其余部分一起終止時,就需要這種“內(nèi)部”連接。一般地說,靜態(tài)進程應(yīng)該在鏈路圖拆線后繼續(xù)存在(參照圖6)。
當(dāng)然,還存在有多種在活動存在期間與該活動相連的其它類型資源,但是,總是端口和鏈路圖才可能把所有的資源連在一起。
由于從屬于活動的資源和作業(yè)連在一起,所以,在系統(tǒng)中會形成新型的“管區(qū)”(domain)。如圖5所示,管區(qū)40“橫貫”與調(diào)用有關(guān)的所有計算機42、44、46和48。但另一方面各計算機有著明確的分界。在適當(dāng)類型的設(shè)備的支持下,管區(qū)40也即活動可非常便利地用作恢復(fù)區(qū)。
如果能把錯誤的影響及范圍限制在該活動內(nèi)部并同時釋放所有被占用的資源,即么,在最壞的情況下也有可能斷開由上述活動所控制的調(diào)用,而所有其它調(diào)用均保持不變。
這一點與先有技術(shù)的方法完全相反,在先有方法中,最小的恢復(fù)區(qū)是一臺獨立的計算機。在一次調(diào)用中出現(xiàn)嚴(yán)重錯誤的情況下,標(biāo)準(zhǔn)的方法是重新啟動計算機,結(jié)果,必須要斷開屬于該計算機的所有調(diào)用。
當(dāng)鏈路圖中進程之一內(nèi)出現(xiàn)有嚴(yán)重錯誤時,通常的方法斷開所有的調(diào)用即整個活動,不殘留任何“調(diào)用休眠”(call rests)。如果只想作到這一點,那么,可以用操作系統(tǒng)本身來完成這任務(wù)。但是,如果應(yīng)用程序包含有處理釋放活動的代碼,那么,可以更靈活更迅速地釋放被占用的資源。圖6a-6d是因出錯而斷開調(diào)用時的典型圖。在這些圖中,標(biāo)號50表示有錯的進程,標(biāo)號52表示靜態(tài)進程,標(biāo)號54表示動態(tài)進程。在這一實施例中,事件鏈貫穿三個步驟即分別如圖6a、圖6b和圖6c所示的步驟,并且會導(dǎo)致圖6d所示的狀態(tài),在該狀態(tài)下,只剩下靜態(tài)進程52。具體地說,每個進程總是在按箭頭58終止自身以前先在其鏈路上發(fā)送出一稱為“Connection Abort”(連接廢棄)的中斷消息56。對上述最后一個步驟來說,使用了標(biāo)志“Context Terminate”(上下文中止)。
對系統(tǒng)更新來說,一項活動也可以起客戶的作用。該活動的全部或部分可以執(zhí)行特定版本的程序。如業(yè)已安裝了新版的程序。那么,就可以在一定時間內(nèi)創(chuàng)建使用這一程序版本的“測試活動”,而對舊版程序來說,仍控制著“標(biāo)準(zhǔn)的”活動。以后,對新程序來說,可以進行選擇以便控制新的“標(biāo)準(zhǔn)”活動。
這要求活動與“活動屬性”相關(guān)聯(lián)。屬性必須包括帶有有關(guān)活動類型的信息的字段。該屬性必須存在于包括在活動內(nèi)的所有消息、作業(yè)、時間管理程序以及作業(yè)創(chuàng)建資源中。
活動中系統(tǒng)更新的“有關(guān)區(qū)”是作業(yè)鏈以及作業(yè)創(chuàng)建資源(例如存取進程和端口)即活動包含有系統(tǒng)更新屬性的那部分。從系統(tǒng)更新的觀點看,鏈路圖是無關(guān)和不可見的。
圖7更詳細(xì)地說明了系統(tǒng)更新的過程。在此圖中,顯示了上下文A、B、C、D、E、E′、F、F′、G。在每個上下文中都有程序執(zhí)行,為簡化起見,假定這些程序有與相應(yīng)上下文相同的標(biāo)號。在上下文A-D及G中只有一個程序版本,假定程序A、O和G是舊版程序,程序B和C是新版程序。程序E和F有兩個不同的版本,它們分別在E和E′以及F和F′中執(zhí)行。
例如在系統(tǒng)更新的某一階段中,所有“標(biāo)準(zhǔn)業(yè)務(wù)”會轉(zhuǎn)至一“舊”程序版本即上下文E和F,而所有“測試業(yè)務(wù)”則轉(zhuǎn)至“新”程序版本即上下文E′和F′??梢苿拥募^E″和F″說明了本系統(tǒng)中兩個程序版本之間的轉(zhuǎn)換。圖7顯示了測試業(yè)務(wù)的運行情況。如果只有一個程序版本,那么,對這個版本來說,必須要控制所有的業(yè)務(wù),這對上下文A-D和G來說同樣是成立的。圖中帶有文字“測試”的方框UA表示活動中所包括的系統(tǒng)更新屬性。
所述操作系統(tǒng)的通信業(yè)務(wù)根據(jù)現(xiàn)有的“定向規(guī)則”了解可用的程序版本并控制調(diào)用。應(yīng)該強調(diào)的是,圖7所用的“規(guī)則”僅僅是簡化了的實例。
在必須跟蹤錯誤時,活動也可被用作跟蹤信息的載體。所以,活動的屬性包括有指示是否激活跟蹤的字段以及某些“可見性屬性”以便在跟蹤期間可“查看”那種類型的事件(如每個消息的發(fā)送)。還要包括跟蹤的標(biāo)識。屬性和跟蹤標(biāo)識是由操作人員間接指定的并且在活動執(zhí)行過程中隨時隨地的改變。如果跟蹤開始,那么,活動就以跟蹤信息緩沖區(qū)形式與資源相連。這也隨著上述活動并且在所有執(zhí)行該活動的計算機中都是可以使用的。
在圖8中,圖1所示的活動中業(yè)已啟動的跟蹤由粗線60標(biāo)識。帶有文字“關(guān)”和“開”的方框SA分別表示跟蹤的屬性,它們分別表示該屬性是“關(guān)”還是“開”。活動跟蹤系統(tǒng)的范圍要比用于系統(tǒng)更新的更有限。其影響只涉及到作業(yè)鏈的一部分,即在跟蹤屬性業(yè)已在標(biāo)號62處“啟動”并一直至點64處(在該點處,這部分則為“關(guān)閉”)之后的部分。作業(yè)鏈的一部分60稱為執(zhí)行鏈。在該執(zhí)行鏈內(nèi)也只關(guān)心某些特定的事件。一旦執(zhí)行鏈改變,跟蹤屬性就改變自己的值。在圖中SA’所示的五個位置“開”處,屬性包括了一帶有跟蹤信息的緩沖區(qū),在位置“關(guān)”處則不需要這種緩沖區(qū)。
在某些“跟蹤點”處可以讀取并改變跟蹤屬性,這些跟蹤點分布在沿作業(yè)鏈所在區(qū)域內(nèi)確定的位置上。在圖8中,作為實例,用三角SP標(biāo)記了某些跟蹤點。就活動中的事件而言,跟蹤點是可以調(diào)用的代碼。在調(diào)用期間,跟蹤點可以讀取跟蹤緩沖區(qū)的內(nèi)容并根據(jù)其“可見性”,即對跟蹤操作者來說,事件是否是可見的,確定是否要報告事件。
可能存在的可見性屬性的實例是“報告正在發(fā)送的每一個消息的內(nèi)容”,隨后位于每一端口處的跟蹤點處理已報告的內(nèi)容;或者是“報告所創(chuàng)建的每項作業(yè)的標(biāo)識”,從而使得每個進程內(nèi)的跟蹤點創(chuàng)建這種報告。
為了使跟蹤點能報告事件并改變跟蹤屬性,需要有與操作者即人的交互界面。如何進行這種通信不是本發(fā)明的一部分,但是,仍對它加以解釋以便說明經(jīng)過上述界面的信息類型。
操作者發(fā)給跟蹤點的典型指令是“在所有執(zhí)行鏈中添加跟蹤屬性并將具有含義‘報告消息發(fā)送’的可見性屬性放至跟蹤屬性的緩沖區(qū)內(nèi)”。
跟蹤點向操作員給出的典型報告是“標(biāo)識為××內(nèi)容為xyz的消息剛剛從ABC端口發(fā)送至DEX端口”。
從跟蹤的觀點看,鏈路圖或其它資源是無關(guān)的。
本發(fā)明以下列條件為基礎(chǔ)
—所有直接涉及活動的計算機必須靠一個操作系統(tǒng)工作,所說的操作系統(tǒng)則支持實現(xiàn)本發(fā)明所需的機制。不具備這種操作系統(tǒng)的計算機只能作為活動所控制的可用“資源”而存在。
—上述操作系統(tǒng)的通信機構(gòu)應(yīng)帶有用于檢錯的高級裝置并能將錯誤報告給用戶,這一點是周知的。
—上述操作系統(tǒng)之通信機構(gòu)的必要擴展必須在根本上不會影響執(zhí)行和發(fā)送能力。
—所述系統(tǒng)及其硬件假設(shè)是足夠健壯的,因而很少進行恢復(fù)。經(jīng)常且大規(guī)模的恢復(fù)會嚴(yán)重影響系統(tǒng)的可用性。
本發(fā)明不涉及—在上下文出現(xiàn)失效之后如何修復(fù)靜態(tài)進程。
在必要情況下對修復(fù)失效或部分失效的活動的支持—所以超出了斷開活動和返回執(zhí)行資源這些功能之外的所有修復(fù)工作必須由應(yīng)用程序自身完成。
—某些用于返回除端口及上下文型執(zhí)行資源以外的所用資源的機構(gòu)。
以下說明本發(fā)明所依據(jù)的結(jié)構(gòu)和原理。將依次說明出錯環(huán)境中的動作碼、處理進程局部錯誤時的動作碼、處理通信錯誤時的動作碼以及其它進程中的錯誤。
出錯環(huán)境中的動作碼這種動作碼是周知的例如從程序設(shè)計語言C++編譯而來的機器語言代碼,并且,這種代碼可在出現(xiàn)不同類型的錯誤環(huán)境時執(zhí)行。
下文中,所使用的上述動作碼的名稱中在某些情況下會出現(xiàn)“例外”(“Exception”)字樣。該字樣特別用于指明因某種不正常的事件即例外事件而執(zhí)行所說的動作碼—“ErrorHandler”(錯誤處理程序)這是操作系統(tǒng)的錯誤處理程序。在圖9中,標(biāo)號66表示有錯進程,標(biāo)號68表示相關(guān)的執(zhí)行核心。標(biāo)號70和72分別表示相鄰的進程和有關(guān)的執(zhí)行核心。進程66和70通過端口76和78在標(biāo)號74處彼此相通信。
標(biāo)號80和82處所示的“ErrorHandler”的任務(wù)是從處理器硬件和執(zhí)行核心以及圖9中標(biāo)號84和86所示的應(yīng)用程序中接收錯誤指示?!癊rrorHandler”根據(jù)這些指示有時主動地干預(yù)并控制恢復(fù)工作,有時僅統(tǒng)計錯誤的數(shù)量。只有通過兩種調(diào)用才能進入“ErrorHandler”一種是從應(yīng)用程序84經(jīng)由調(diào)用“UserException”88,另一種是從以管理方式執(zhí)行的核心功能部分經(jīng)由“reportError”90進入。然后在相應(yīng)的調(diào)用之后用參數(shù)描述所指示的錯誤?!癠serException”是在要報告錯誤時使用的代碼。如果必要的話,作為與上述調(diào)用有關(guān)的參數(shù),會給出錯誤代碼和文本錯誤信息。
傳給位于調(diào)用“UserException”和“reportError”之后的“ErrorHandler”的所有錯誤代碼都補充有可用的錯誤信息,即通常為錯誤代碼和對錯誤的簡短文字說明。
—“PortExceptionHandler”(端口例外處理程序)92這是操作系統(tǒng)通信設(shè)備的專門例外處理程序,在鏈路中斷或通信出錯時調(diào)用。該程序的直接恢復(fù)方法是中斷進行中的進程并將錯誤報告給“ErrorHandler”。但是,應(yīng)用程序的設(shè)計者可以重寫上述處理程序或使該程序?qū)iT化,以便能進行更恰當(dāng)?shù)幕謴?fù)。上述例外處理程序總是在向其報告了錯誤的進程中執(zhí)行。
至于對“PortExceptionHandler”的錯誤調(diào)用,它是在函數(shù)“Port”(“端口”)及其專門功能中例外調(diào)用“handle Exception”時所執(zhí)行的代碼名稱。“Port”及其專門功能在以后將詳細(xì)說明。
—“ApplicationExceptionHandler”(應(yīng)用程序例外處理程序)94這是應(yīng)用程序?qū)iT的例外處理程序,在檢出錯誤之后允許應(yīng)用程序取得控制權(quán)的情況下調(diào)用此程序。缺省的恢復(fù)方法是返回所有的資源并終止進行中的進程。但是,應(yīng)用程序的設(shè)計者可進一步使該處理程序?qū)iT化,以便能進行更恰當(dāng)?shù)幕謴?fù)。這一例外處理程序總是在出現(xiàn)了錯誤的進程中執(zhí)行。
“ApplicationExceptionHandler”是在調(diào)用“UserException”之后執(zhí)行的代碼名?!癆pplicationExceptionHandler”不處理通信錯誤,但僅處理進程局部執(zhí)行錯誤。
—“Context”(上下文)=進程除其它工作以外,“Context”還檢查哪個端口與之相連。當(dāng)一個進程得到指令要終止時,不管是正常終止還是非正常終止,該處理程序都會很快地指向?qū)⒁獩]有擁有者的端口并命令這些端口終止自己及其鏈路。
對“Context”的調(diào)用是“terminateProcess”。它會取消進行中的進程,并且,所有其余的端口也將被取消。
—“Port”(端口)就錯誤處理而言,端口有以下幾個任務(wù)
1)接收“刪除”(delete),同時將“connectionAbort”發(fā)送給相連的端口78,如箭頭96所示,若端口存在的話。
2)從其它端口或“MainGate”98中接收錯誤指示并用有關(guān)錯誤的信息調(diào)用“PortExceptionHandler”92,如箭頭100所示。
就“Port”的錯誤標(biāo)識而言,要作以下幾方面的工作1)將包括有可用錯誤信息的“ReturnedMessage”型消息發(fā)送給端口。然后,該端口將用一錯誤代碼調(diào)用“PortExceptionHandler”。
2)將包括有可用錯誤信息的“connectionAbort”型消息發(fā)送給端口。然后,該端口將用錯誤碼“connectionError”調(diào)用“PortExceptionHandler”。
3)調(diào)用“connectionAbort”將上述信息送給端口,該消息告知接收消息的端口與之相連的端口不再存在。這一點與消息“connectionAbort”同樣重要和有效。
—“MainGate”(主門)98這一“port”處理某些專門的錯誤,這些錯誤必須由操作系統(tǒng)的通信機構(gòu)加以處理。此外,它還必須能接收和處理尋址錯誤的消息,因為不存在可以處理它的目的端口。當(dāng)這種消息出現(xiàn)時,它會向發(fā)送端口產(chǎn)生一“ReturnedMessage”型消息?!癕ainGate”不與任何進程相連。
—“Computer Execution Capability Control”-“COECC”102(計算機執(zhí)行能力控制)“COECC”的任務(wù)是了解所有屬于某子網(wǎng)的計算機狀態(tài)。就錯誤處理而言,“COECC”只有一項任務(wù),即尋找具有通向失效計算機的端口的鏈路的端口,然后用“connectionAbort”調(diào)用這些端口。消息“stateChange”給出子網(wǎng)內(nèi)計算機已改變了狀態(tài)的信息。
—“Application”(應(yīng)用程序)84=86在廣義上使用“Application”一詞,也就是說,本文指通信機構(gòu)的所有用戶。在許多情況下,它自己發(fā)現(xiàn)錯誤并報告、甚至處理錯誤。
—“Kernel”(內(nèi)核)104=68=72“Kernel”是指執(zhí)行核心。它向“ErrorHandler”報告錯誤。此外,“Kernel”包括操作系統(tǒng)通信機構(gòu)的某些部分,即“MainGate”和“Port”,這是因為,這些部分的錯誤處理在用戶進程中進行并報告來自其中的錯誤?!癈OECC”也是“Kernel”的一部分,但在圖中是分別畫出的,這是因為,它的功能與檢錯有關(guān)。
對“Kernel”不存在專門的調(diào)用?!癒ernel”在錯誤環(huán)境中起作用時只具有活動功能。
以下參照圖11-19說明幾種錯誤處理環(huán)境。就總體內(nèi)容而言,圖11-19與圖9相同并與圖9有相同的標(biāo)號以指示類似的功能和現(xiàn)象。圖中出現(xiàn)在括號內(nèi)的數(shù)字表示出現(xiàn)在各個圖中的功能步驟順序號。
對處理器局部錯誤的處理—由組件或執(zhí)行核心所檢測的應(yīng)用程序執(zhí)行錯。參照圖10。
這種類型的錯誤是尋址超出許用區(qū)域、被零除、溢出、循環(huán)等等。
這種錯誤會導(dǎo)致(通常為硬件的)中斷,這種中斷使得當(dāng)前函數(shù)104通過“reportError”(1)向操作系統(tǒng)的“ErrorHandler”80發(fā)送一錯誤指示。在有錯誤的情況下,進程總是被判定為不可靠的,所以,“ErrorHandler”會向該進程發(fā)送“terminateProcess”,該進程又會向剩下的端口發(fā)送“delete”(3)。這些端口又會在它們的鏈路上發(fā)送“ConnectionAbort”(4)。如果錯誤是靜態(tài)進程的問題,那么“ErrorHandler”就會創(chuàng)建一個同類型的新進程并調(diào)用其相同的啟動例程。
—由應(yīng)用程序84自身檢測到的應(yīng)用程序執(zhí)行錯誤。參照圖11。
如果應(yīng)用程序84在執(zhí)行過程中檢測到有某種嚴(yán)重錯誤出現(xiàn),那么,它就主動和通常一樣經(jīng)由“UserException”88調(diào)用“ErrorHandler”90(1)。這時,將進程判定為“可靠的”,這是因為,該進程自身可檢測并報告錯誤。所以,“Kernel”104可能把控制權(quán)返回給應(yīng)用程序?qū)iT的“ApplicationExceptionHandler”94。做這種處理的缺省方法仍然是用“TerminateProcess”終止進程,隨后,同利用“delete”(3)和“ConnectionAbort”(4)的情況一樣繼續(xù)進行下去。
—系統(tǒng)調(diào)用時的錯誤。參照圖12和圖13。
如果在系統(tǒng)調(diào)用105過程中核心68檢測到嚴(yán)重錯誤,那么,如圖12所示,從上述核心的返回值就會指示出這種錯誤(1)?!癊xception”106會發(fā)送給應(yīng)用程序(2),因此,該應(yīng)用程序的“ApplicationExceptiontlandler”94自身會處理上述錯誤(3)。此后,處理工作進入如參照圖11所述的情況,需要時利用“terminateProcess”(4)、“delete”(5)以及“ConnectionAbort”(6)終止進程(8)。
就某些錯誤而言,核心104可以直接得出進程是不可靠的結(jié)論。在這種情況下,該核心直接報告給“ErrorHandler”80,如圖13所示。然后,“ErrorHandler”80終止進程(2)。后續(xù)的工作同在圖12中一樣。
處理通信錯誤—丟失的消息如果“Call”或“Reply”型消息丟失,就會被正要釋放的原始調(diào)用部分的時間管理程序檢測出來。就“Call-Reply”而言,調(diào)用端口控制著時間管理程序,并且,當(dāng)釋放時間管理程序時,會將相關(guān)的錯誤代碼作為一種應(yīng)答返回給調(diào)用“Call”。后續(xù)工作與前述參照圖12和圖13對中斷的系統(tǒng)調(diào)用所作的說明完全相同。
如果丟失的消息是“Cast”,那么,調(diào)用的應(yīng)用程序本身會控制時間管理程序。當(dāng)釋放時間管理程序時,調(diào)用部分處于和先前參照圖11所述相同的情況。
參照圖14,也可以用順序計數(shù)來檢測丟失的消息。對諸如“Call”、“Cast”和“Reply”來說,會順序出現(xiàn)。在雙向鏈路的情況下,對發(fā)送在該鏈路上的所有消息順序計數(shù),因此,接收方可檢測計數(shù)中的空缺。會出現(xiàn)以下情況。調(diào)用部分發(fā)送一順序計數(shù)的消息,該消息在途中丟失(1)。調(diào)用部分發(fā)送下一個消息(2),消息的序數(shù)加一(2)。接收端口76檢測上述計數(shù)中的空缺并用有關(guān)遺漏數(shù)的信息向“ReturnMessage”(3)型調(diào)用部分78發(fā)送消息。端口78首先調(diào)用“ErrorHandler”82(4),然后用錯誤代碼“LostMessage”調(diào)用“PortExceptionHandler”(5),之后,“PortExceptionHandler”作某種形式的恢復(fù)。
—尋址錯誤消息。參照圖15。
在“MainGate”98中會出現(xiàn)消息130(1),此消息因某種原因包括一錯誤的目的地址(未聲明的端口名、舊的端口基準(zhǔn)地址或類似的地址)?!癕ainGate”向發(fā)送方的端口78發(fā)送一“ReturnedMessage”型消息(2)。端口78首先調(diào)用“ErrorHandler”82(3),然后用錯誤代碼“PortNotAvailable”調(diào)用“PortExceptionHandler”92(4)。此后進行以上所說的步驟。
—中斷的聯(lián)系。
如果與其它計算機的聯(lián)系74中斷,那么,可以用兩種方式來檢測這種中斷1)參照圖16。發(fā)出的消息將不會到達。相反,該消息會出現(xiàn)在它已到達的計算機的“MainGate”98中(1)。同前述情況一樣,“MainGate”會向發(fā)送方端口78發(fā)送“ReturnedMessage”(2),此后,用另一種錯誤代碼即“ComputerNotAvailable”進行如參照圖15所述的步驟。
2)發(fā)送方端口的鏈路管理程序檢測到不再可能到達所說的目的地并用“reprotError”調(diào)用“ExceptionHandler”(未顯示)。以后的情況與步驟(1)相同。
其它進程中的錯誤—主或輔計算機內(nèi)的失效進程。參見圖17。
當(dāng)進程66失效(即被“ErrorHandler”所終止)但執(zhí)行該進程的計算機仍保持不變時,該計算機的所有鏈接端口如76等會在鏈路上發(fā)出“ConnectionAbort”(1)。這就會導(dǎo)致用錯誤代碼(2)先調(diào)用“ErrorHandler”,再調(diào)用接收方進程70中的“PortExceptionHandler”92,從而進行缺省或?qū)iT的恢復(fù)工作。
—主子網(wǎng)內(nèi)失效的計算機。參照圖18。
如果主子網(wǎng)內(nèi)的計算機失效,那么,就會很迅速用“StateChange”將其通知給“COECC”102(1)。然后,“COECC”會找出帶有涉及到該計算機的鏈路的端口并用“ComputerNotAvailable”調(diào)用這些端口。然后,每個端口都用“ComputerNotAvailable”調(diào)用“ErrorHandler”以及自己的“PortExceptionHandler”。此后,以與同樣類型的其它錯誤相類似的方式繼續(xù)進行事件的過程。
—其它子網(wǎng)內(nèi)失效的計算機。參照圖19。
如果其它子網(wǎng)內(nèi)的計算機失效,不會通知“COECC”。可通過沒有消息到達或操作系統(tǒng)的鏈路管理程序來檢測到所述計算機的失蹤。所以,在實踐中這種情況與先前參照圖16所述的情況相同并且是以同樣方式加以檢測和處理的。
—其它進程中的循環(huán)用兩種方式檢測程序的死循環(huán)1)“Kernel”檢測所說的循環(huán)并如參照圖10所示的那樣釋放相同的事件鏈。
2)釋放調(diào)用進程中的時間管理程序。然后進入上述情況“Lostmessage”,參見圖14。
圖20概括了特別參照圖11-19所述的錯誤實例。該表包括縮寫IPC(進程間通信),其涉及到操作系統(tǒng)的通信機構(gòu)。
在以上參照附圖對不同類型錯誤實例的說明中,未詳細(xì)說明所要使用的軟件和硬件以及在實踐中如何執(zhí)行所說的函數(shù)及進程,這是因為,已經(jīng)假定在上述說明及附圖的指導(dǎo)下,本技術(shù)的技術(shù)人員知道如何實施本發(fā)明。本發(fā)明也可用于已知的操作系統(tǒng)并且不以任何特定的硬件為先決條件。
權(quán)利要求
1.一種在分布式操作系統(tǒng)中用于卸下已連接的進程鏈的方法,其中進程是指操作系統(tǒng)中的資源,應(yīng)用程序可在該資源內(nèi)執(zhí)行,并且,作業(yè)必須使用該資源以便在所述進程中執(zhí)行程序代碼,作業(yè)是一種事件,該事件涉及到所說的進程,因此能執(zhí)行進程所擁有的對象的方法,一項作業(yè)也必須能創(chuàng)建涉及到其它進程或自身進程的新作業(yè);而且所說的進程為作業(yè)提供了資源并通過每次只執(zhí)行一項作業(yè)而協(xié)調(diào)多項作業(yè);所說的方法包括下列步驟在上述進程之間提供雙向通信鏈路并用所述操作系統(tǒng)來跟蹤帶有鏈路的進程,并且,如果帶有鏈路的進程中止,那么,就使用該鏈路;檢測進程中的錯誤并終止該進程;經(jīng)由所說的鏈路傳遞有關(guān)進程或計算機失效的信息,并且將這一信息傳遍整個的鏈接進程鏈;以及將上述信息報告給在鏈接進程內(nèi)執(zhí)行的應(yīng)用程序,以使得這些應(yīng)用程序能執(zhí)行特定的恢復(fù)工作。
2.如權(quán)利要求1所述的方法,其特征在于,它還包括這樣一個步驟使用在鏈接進程鏈中從一項作業(yè)發(fā)送給另一項作業(yè)的錯誤跟蹤屬性。
3.如權(quán)利要求2所述的方法,其特征在于,它包括在執(zhí)行作業(yè)鏈期間,任何時候都允許所說的屬性值發(fā)生改變。
4.如權(quán)利要求2或3所述的方法,其特征在于,它包括為所說的跟蹤屬性提供跟蹤緩沖區(qū),此緩沖區(qū)可存儲信息,該信息與系統(tǒng)內(nèi)由上述跟蹤屬性所跟蹤的事件有關(guān);利用所說的信息創(chuàng)建上述事件的記錄。
5.如前述任何一項權(quán)利要求所述的方法,其特征在于,它包括在所說的系統(tǒng)內(nèi)提供系統(tǒng)更新功能;提供系統(tǒng)更新的信息屬性,此屬性能將內(nèi)部信息傳遞給所說的更新功能,而所述內(nèi)部信息則與在系統(tǒng)內(nèi)所執(zhí)行的業(yè)務(wù)類型有關(guān);在作業(yè)鏈中傳遞上述信息屬性,以便能在執(zhí)行時確定所執(zhí)行的特定程序的版本。
6.一種在分布式操作系統(tǒng)中用于卸下鏈接進程鏈的系統(tǒng),其中進程是指操作系統(tǒng)中的資源,應(yīng)用程序可在該資源內(nèi)執(zhí)行,并且,作業(yè)必須使用該資源以便在所述進程中執(zhí)行程序代碼;作業(yè)是一種事件,該事件涉及到所說的進程,因此能執(zhí)行進程所擁有的對象的方法,一項作業(yè)也必須能創(chuàng)建涉及到其它進程或自身進程的新作業(yè);而且所說的進程為作業(yè)提供了資源并通過每次只能執(zhí)行一項作業(yè)而協(xié)調(diào)多項作業(yè);所說的系統(tǒng)包括編碼裝置,該編碼裝置包括第一裝置,此裝置用于在進程之間提供雙向信息鏈路;第二裝置,此裝置用于使所說的操作系統(tǒng)能跟蹤帶有鏈路的過程,并且,如果有進程中止,就使用所說的鏈路;第三裝置,此裝置用于使所說的操作系統(tǒng)或在某些情況下使進程本身去檢測進程中的錯誤并中止該進程;第四裝置,此裝置用于使所說的操作系統(tǒng)經(jīng)由上述鏈路傳遞有關(guān)進程或計算機失效的信息,并將這一失效信息傳遍整個的鏈接進程鏈;以及第五裝置,此裝置用于使所說的操作系統(tǒng)將上述失效信息報告給在前述鏈接進程中執(zhí)行的應(yīng)用程序,以便使這些應(yīng)用程序執(zhí)行特定的恢復(fù)工作。
7.如權(quán)利要求6所說的系統(tǒng),其特征在于,它包括通信機構(gòu);包括在上述第一裝置內(nèi)的進程端口,經(jīng)由這些端口可以進行進程間的通信;不與進程相連的通信端口,這些端口用于處理必須由操作系統(tǒng)的通信機構(gòu)來處理的特定錯誤;所說的進程端口具有與錯誤處理有關(guān)的任務(wù),該任務(wù)是接收涉及自身進程的“delete”(刪除)指令,并且,在執(zhí)行這一指令的同時將一鏈路斷連消息發(fā)送給任何與該端口相鏈接的端口;從其它進程端口以及任何通信端口中接收錯誤指示并調(diào)用上述通信機構(gòu)中的代碼,以便將與前述錯誤指示中的錯誤有關(guān)的信息傳遞給該通信機構(gòu)。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所說的第二裝置包括進程端口。
9.如權(quán)利要求7或8所述的系統(tǒng),其特征在于,所說的第三裝置包括前述操作系統(tǒng)和進程。
10.如權(quán)利要求7至9中任何一個所述的系統(tǒng),其特征在于,所說的代碼是包括在上述四個裝置內(nèi)的例處處理代碼,并且總是在向其報告了錯誤的進程中執(zhí)行,所說的代碼具有下列功能在有鏈路中斷或通信錯誤時被調(diào)用;中止有錯誤的進程;以及將錯誤報告給一錯誤處理代碼。
11.如權(quán)利要求7至9中任何一個所述的系統(tǒng),其特征在于,它包括錯誤跟蹤屬性,該屬性在鏈接進程鏈中從一項作業(yè)發(fā)送給另一項作業(yè)。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,它包括用于在執(zhí)行作業(yè)鏈期間允許上述跟蹤屬性在任何時候都可發(fā)生改變的裝置。
13.如權(quán)利要求10或11所述的系統(tǒng),其特征在于,所說的跟蹤屬性與跟蹤緩沖區(qū)相聯(lián),該緩沖區(qū)用于存儲上述系統(tǒng)被跟蹤屬性所跟蹤時有關(guān)系統(tǒng)內(nèi)事件的信息,并且,所說的系統(tǒng)包括用于根據(jù)前述信息創(chuàng)建所說事件之作業(yè)記錄的裝置。
14.如權(quán)利要求6至13中任何一個所述的系統(tǒng),它包括系統(tǒng)更新功能;系統(tǒng)更新的信息屬性,此屬性用于將內(nèi)部信息傳遞給所說的更新功能,而所述內(nèi)部信息則與系統(tǒng)內(nèi)所執(zhí)行的業(yè)務(wù)類型有關(guān);用于在作業(yè)鏈中傳遞上述信息屬性以便能在執(zhí)行時確定所執(zhí)行的特定程序之版本的裝置。
全文摘要
為了能在分布式操作系統(tǒng)中的進程之間建立雙向鏈路,給進程提供了端口,通過這些端口可以進行進程間的通信。進程和端能使操作系統(tǒng)檢查帶有鏈路的進程,如果有進程中止就使用其鏈路,同時使操作系統(tǒng)發(fā)現(xiàn)進程中的錯誤并中止該進程。為了能使操作系統(tǒng)經(jīng)由鏈路傳遞信息并將信息傳遍整個的鏈接進程鏈同時將這種信息報告給應(yīng)用程序以使它們執(zhí)行特定的工作,使用了一種代碼,這種代碼在鏈路中繼和通信錯誤時被調(diào)用。
文檔編號G06F11/22GK1117766SQ9419114
公開日1996年2月28日 申請日期1994年2月2日 優(yōu)先權(quán)日1993年2月10日
發(fā)明者J·P·馬羅伊 申請人:艾利森電話股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1