專利名稱:包括用戶接口的中斷系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及單個和多個處理器計算機系統(tǒng),該系統(tǒng)為在此系統(tǒng)上運行的請求程序單元提供系統(tǒng)服務。更詳盡地,本發(fā)明涉及擴大或修正所選定的先存在的程序單元所運行時間操作的方法。
多年來,計算機系統(tǒng)從單個孤立的處理器發(fā)展到各種形式的多個處理器系統(tǒng)。許多計算機系統(tǒng)使用程序單元,有時就把它簡稱為“程序”。
程序單元包含計算機指令,計算機系統(tǒng)執(zhí)行這些指令以完成特定的功能。這些程序單元可由其它程序單元來產(chǎn)生。然而,在大多數(shù)情況下,人們一直在一定程度上致力于產(chǎn)生可執(zhí)行的計算機指令集。
程序單元,在被執(zhí)行時,預期滿足一定的已知或設想的要求。無論如何,大多數(shù)過去設計的或現(xiàn)在正設計的程序單元不能適合所有將來的要求。
現(xiàn)有技術(shù)系統(tǒng)已接近以多種方式靈活處理將來需求的需要。在許多情況下,以前的方法在成本上不實用和/或不允許用戶在執(zhí)行過程中有多種可選性。
新硬件系統(tǒng)、新操作系統(tǒng)、新程序單元、新系統(tǒng)過程、新數(shù)據(jù)結(jié)構(gòu)或新用戶接口的發(fā)展和組合可以要求原來的程序單元被修正,重新編譯,或更壞的情況,由于有關(guān)兼容和/或成本等問題而被廢棄。某些現(xiàn)有技術(shù)方法要求在該方法的應用和執(zhí)行上進行廣泛的訓練。某些用戶可能無法負擔為完成現(xiàn)有技術(shù)方法而要花的時間、金錢和人力資源。
對現(xiàn)有程序的更新或修正的靈活性方面的要求在多處理器分布系統(tǒng)中特別明顯。幾種不同類型的問題為驅(qū)使多用戶處理器系統(tǒng)的發(fā)展提供了原動力。
其中的一個原動力是在好幾個用戶之間更有效地共享信息的愿望。解決此問題的一個方法是把各個處理器通過本地區(qū)網(wǎng)絡連接在一起,這些處理器可以是相同的,也可以是不同的。這種網(wǎng)絡能使許多不同的個人及其有關(guān)的處理器存取共同的信息以及互相存取。
另一個促使多用戶處理器環(huán)境發(fā)展的原動力是用較低可靠度元件創(chuàng)造高可靠度的計算機系統(tǒng)的愿望。這類系統(tǒng)典型地使用于諸如銀行、事務處理或庫存量控制等環(huán)境,其中可靠度是首要的。
此類計算機系統(tǒng)族之一是加州,Cupertino的Tandem公司銷售的。Tandem系統(tǒng)能以單個孤立的,多個的處理器結(jié)構(gòu),或作為多個內(nèi)部連接的節(jié)點形式來運行。每個節(jié)點相應于一個或多個多處理器系統(tǒng)。
支持多個遠距離事務處理終端或庫存量控制功能的主程序系統(tǒng),它可能包括幾十個程序單元,在多處理器環(huán)境中,在生產(chǎn)基礎上被安裝和運行的地方,上述更新和維護程序單元問題的解決變得非常困難和昂貴。例如,新操作系統(tǒng)可能被硬件賣主所采納。在這種例子中,系統(tǒng)操作員可能不得不裝上新操作系統(tǒng),以接收持續(xù)的支持和操作系統(tǒng)維護。
若操作系統(tǒng)的改變對于現(xiàn)存的程序系統(tǒng)是不透明的,那么這些程序系統(tǒng)需要被修正或重新編譯。這種處理不僅昂貴和費時,而且會在多個程序,多個處理器環(huán)境中導致錯誤,由此可能造成災難性結(jié)果。
另外,從第三方銷售者處得到軟件的用戶可能沒有為進行修正,擴充或重新編譯所必須的源碼或文件,更壞的情況是,第三方銷售者多半不再繼續(xù)為用戶支持或提供新的信息卡。
這樣,當要求或環(huán)境改變時,就繼續(xù)需要能以有效的成本形式安全地更新或修正現(xiàn)存的程序。首選地,這種需要能由系統(tǒng)操作的個人來滿足,而不需要回到原先軟件銷售者或去修正原先所提供的程序單元。
另外,在多個處理器系統(tǒng)中,操作環(huán)境連續(xù)地變化。結(jié)果,資源、可用的處理器和在一個程序單元或過程每次初始化時可用的類似者的混合將是不同的,這依賴于其它程序單元或過程在任何給定時間內(nèi)有效的情況。
這樣,就有持續(xù)不斷的有關(guān)資源分配和管理方面的問題,在這些系統(tǒng)中,它們是必須被提出的。一種已知的方法,由本申請的受讓人所銷售的,名稱為用于Tandem計算機的“自動網(wǎng)絡平衡系統(tǒng)”,基于預定的和固定的分配方法提供了在這種環(huán)境下的資源分配系統(tǒng)和資源管理。
在已知的自動網(wǎng)絡平衡系統(tǒng)中,性能因子是用來考慮選擇指派在其中進行處理的最佳或最適當?shù)奶幚砥鞯?,它們包括一個給定處理器的可用度或繁忙狀態(tài)、可用的存儲器、交換率、運送率、存儲器排隊長度、備用清單上的可用的工作,以及許多其它量。各種不同的性能因子可應用加權(quán)系統(tǒng)來進行估值。然后,表現(xiàn)為最合適的處理器可被用來運行程序。
已知的負載平衡系統(tǒng)是非常成功的,并能用來大大提高類似于Tandem系統(tǒng)的性能。然而,選用最適合的被指派來實行給定任務的處理器的方法并未考慮地點或用戶對在一種設置與另一種設置之間的相異性或定做的要求。
這樣,就繼續(xù)要求能考慮到不同地點的變化的更靈活的方法。首選地,執(zhí)行這樣的一種方法以允許給處理器選擇過程提供地點特定輸入,或擴展提供給正在執(zhí)行的給定的過程的服務。最好地,執(zhí)行過程對于各自的處理將是透明的。
本發(fā)明是針對為程序單元中先存在的計算機指令進行運行時間中斷的裝置和方法,以便支持用戶掛機或進入能用來在用戶分離的情況下修正和/或擴大創(chuàng)造的和/或收到的程序單元的點。結(jié)果,程序單元能滿足用戶現(xiàn)在的要求,且能允許用戶根據(jù)要求被修正以支持將來的要求。使用本發(fā)明后,這些就能完成而不需要被中斷的程序單元的原作者和/或發(fā)明者的支持和/或指導和/或?qū)iT知識,或者也不用任何另外的實際電子的或機械的設備。
當程序單元要求計算機系統(tǒng)的操作系統(tǒng)為其運行提供服務時,在運行時間通過執(zhí)行程序單元而發(fā)出的中斷系統(tǒng)服務調(diào)用達到以上的結(jié)果。中斷可以出現(xiàn)在主程序單元、用戶庫程序單元、系統(tǒng)庫程序單元或以上列出的程序單元的組合中。
本方法也期望,系統(tǒng)服務調(diào)用的中斷和用戶掛機或進入點可被安置在幾類程序單元中。這就使用戶在系統(tǒng)服務請求的中斷產(chǎn)生的地方有許多可選項。更進一步地,這允許用戶根據(jù)一個程序單元接著一個程序單元執(zhí)行本發(fā)明,如果有此要求的話,或者根據(jù)一個系統(tǒng)接著一個系統(tǒng)執(zhí)行本發(fā)明。
按照本發(fā)明的一個方面,一個裝置和一種方法被提供用來變更或轉(zhuǎn)換先存在的方法中的一個或多個步驟以實行預定的功能。地點或用戶定義的步驟或功能可被結(jié)合成定制的或?qū)iT的過程。
例如,本方法可用來在多個處理器計算機系統(tǒng)內(nèi)分配資源。在本發(fā)明的其它方面,還可完成除先存的方法中指定的功能以外的不同類型的功能。
本方法包括檢測一個變更的候選步驟。變更過程可以包括實行不同于該步驟原先所要求的功能或轉(zhuǎn)換或擴展該步驟。
在實行一個或多個預定的變更或轉(zhuǎn)換步驟之前,確定一個以前定義的,用戶提供的,預變更的步驟集是否為要執(zhí)行的。響應該確定步驟,地點或用戶提供的預變更或預轉(zhuǎn)換步驟群如所指出那樣被執(zhí)行。
然后,該方法包括執(zhí)行該一個或多個預定的變更或轉(zhuǎn)換步驟。按照本發(fā)明的一個方面,這些步驟包括確定多個可用的資源中的哪個可被用來實行作為變更的候選者的要求的步驟。
兩者挑一地,預定的變更步驟可提供在原先候選步驟中不能調(diào)用的擴大功能。這些擴大功能可能變成合乎需要的,只要它們對于原先的候選步驟是透明的。
然后,該方法確定是否有一個或多個在后變更(post-alteration),地點或用戶供給的步驟。接著,在執(zhí)行變更步驟集后,這些步驟可如所指出那樣被執(zhí)行。
仍舊按照本發(fā)明的另一個方面,本方法可用作為在多個節(jié)點,多個處理器系統(tǒng)中分配資源的目的。每個節(jié)點可包括一個或多個計算機處理器。這些節(jié)點可實際地互相替換,也可通過通信線路連接在一起。
這方面包括下列步驟實行預定過程中的一連串步驟;
按順序檢測要實行的一個步驟,且該步驟為進行轉(zhuǎn)換的候選者;
中斷所檢測的步驟,且確定以前規(guī)定的,用戶提供的,一個預轉(zhuǎn)換步驟集是否存在;
中斷該次序,并執(zhí)行用戶提供的預轉(zhuǎn)換步驟集,如所指出那樣;
將候選步驟轉(zhuǎn)換為一個或多個預定的被轉(zhuǎn)換步驟的預定序列;
進行轉(zhuǎn)換步驟以后,確定以前定義的,用戶提供的一個在后轉(zhuǎn)換步驟集是否存在;
執(zhí)行用戶提供的在后轉(zhuǎn)換步驟集,如所指出那樣;以及在檢測步驟以后,立刻返回到步驟序列,藉此繼續(xù)處理。
仍舊在本發(fā)明的另一個方面,本方法用作為資源分配的目的,不僅為了優(yōu)化處理的容許能力,也為了在間隔開的地點為其它功能目的而自動生成冗余數(shù)據(jù)庫,例如災難恢復。
本發(fā)明的這些與其它的方面和特征將參考下列附圖和伴隨的說明順序地進行討論。
圖1是多節(jié)點、多個處理器網(wǎng)絡的草圖;
圖2是可在其中執(zhí)行程序單元的環(huán)境的草圖;
圖3是按照本發(fā)明的方法的流程圖;以及圖4是按照本發(fā)明的一個替換方法的流程圖。
在本發(fā)明易受許多不同形式實施例影響的同時,特定的實施例將在附圖中顯示,且在此進行詳細描述,應理解到這里揭示的內(nèi)容被看作為本發(fā)明原理的舉例,而不是把本發(fā)明限制在所詳加說明的實施例上。
本方法使程序用戶或系統(tǒng)操作員有可能更新和修正先存在的程序而不需要重新編譯相應程序單元的源碼。這是由所選用的調(diào)用程序或關(guān)于過程、程序單元或變量的參考程序而完成的,這些程序?qū)τ谙却嬖诘膱?zhí)行的程序單元可以是內(nèi)部的或外部的。一種可中斷的指令是操作系統(tǒng)服務調(diào)用。
在中斷時,操作系統(tǒng)在與正執(zhí)行的程序單元相連接的程序庫中尋找調(diào)用過程,如果它們存在的話。在缺乏有關(guān)程序庫或正執(zhí)行的程序單元中被調(diào)用過程的配對者時,那么操作系統(tǒng)將企圖在其它系統(tǒng)庫內(nèi)尋找調(diào)用過程或程序單元。
在程序庫內(nèi)或是在系統(tǒng)庫內(nèi)找到配對者的地方,那么該過程或程序單元就被執(zhí)行。若沒有配對者,應當把運行時間錯誤的指示返回到調(diào)用的程序單元。
本方法使“用戶掛機”在各自的庫過程或程序單元中是可用的。術(shù)語“用戶掛機”正如在此處所使用的,指的是故意產(chǎn)生的進入點或步驟,其中用戶或系統(tǒng)操作員為了透明地更新或修正所執(zhí)行的程序單元能插入一個或多個計算機指令(碼塊)。因此,用戶對計算機系統(tǒng)有較大控制,并能在執(zhí)行的程序單元的外面進行修正或擴充。這就避免了對修正或重新編譯該程序單元的任何要求。
本方法的另一個優(yōu)點是它能用于將程序庫結(jié)合成程序單元本身的情況。用戶掛機提供了一種方式,即為用戶或操作員在軟件包不同版本或信息卡與程序單元之間建起一座橋。
圖1以草圖形式說明多個處理器計算機網(wǎng)絡10。網(wǎng)絡10包括多個節(jié)點,從12到18。
節(jié)點12到18中的每一個可以包括一個或多個計算機系統(tǒng)。代表性的例子包括Tandem型多個處理器計算機系統(tǒng),它可以包括多達16個處理器模塊。
將會懂得,一個節(jié)點,例如節(jié)點12,能作為獨立的單個處理器計算機系統(tǒng)來執(zhí)行。本發(fā)明的限制既不是處理器的數(shù)目及結(jié)構(gòu),也不是通信電路的存在與否。本發(fā)明能結(jié)合單個的獨立系統(tǒng)有利地予以實現(xiàn)。
節(jié)點12到18中的每一個可以通過通信信道,例如信道20a到20e,至少與其它的一個節(jié)點進行通信。藉長距離通信電路或其它通信方法將節(jié)點12到18相互連接或者至少部分連接,網(wǎng)絡10可以地區(qū)性地分配。
圖2以草圖形式說明在處理器32中執(zhí)行的程序單元30。通常程序單元30通過操作系統(tǒng)與處理器32通信。操作系統(tǒng)34為所執(zhí)行的程序單元提供多種服務。
程序單元30和操作系統(tǒng)34通常存儲在處理器32的一個或多個存儲器器件或單元中。這種存儲器和操作系統(tǒng)34在處理器32中開始執(zhí)行程序單元30的過程的細節(jié)是公知的,并不是本發(fā)明的限制。
作為早已知曉的,操作系統(tǒng)的一個方面是擴大對處理器32的利用效率,以及改進建立程序,例如程序單元30,的速度和簡易性。在這方面,操作系統(tǒng)34提供了多種預先規(guī)定的命令,稱之為“系統(tǒng)服務調(diào)用”(SSC),當調(diào)用的程序單元請求時,它實行一些預先規(guī)定的功能。
代表性的系統(tǒng)服務調(diào)用包括實行“讀出”功能的命令?!白x出”請求,基于所給的參量,能要求從磁盤驅(qū)動器或從其它類型磁存儲器進行讀出,或能要求從終端或從其它器件讀出。
兩者挑一地,操作系統(tǒng)可系統(tǒng)服務調(diào)用,例如“寫入”存儲器單元或器件中。“寫”請求可把數(shù)據(jù)或程序發(fā)送到通信線路、打印機或類似物。由Tandem的GURDIAN(護衛(wèi)神)操作系統(tǒng)支持的一類系統(tǒng)服務調(diào)用的更廣泛的清單附于展示A中。
按照本發(fā)明,在程序單元30和操作系統(tǒng)34之間插入功能層36,它包括“用戶掛機”即進入點。在這些進入點,操作員、用戶或地點可以擴展或修正由操作系統(tǒng)中斷的外部參考程序或調(diào)用。
一旦指令已被中斷,則第一用戶掛機被檢驗或執(zhí)行。該進入點可包括用戶或操作員供給的原先碼塊。此原先或“在先”碼塊是在進行任何修正或擴充作為被中斷指令的主題的功能之前所要被執(zhí)行的。
然后,被中斷的調(diào)用或服務請求可如被要求的那樣執(zhí)行。該執(zhí)行過程,如下面所述的那樣,可以預定的方式被修正和/或擴大,或擴展。
接著,第二用戶掛機或進入點可被檢驗或執(zhí)行,以確定是否有任何要被執(zhí)行的在后轉(zhuǎn)換、用戶的或地點的特殊碼。若有,則該碼被執(zhí)行。最后,適當?shù)膮⒘亢?或數(shù)據(jù)可被返回到以前造成服務請求或調(diào)用的程序單元30。
按照本發(fā)明,中斷過程在使用等級制的一個實施例中被實行,該等級制常常被程序庫調(diào)用和系統(tǒng)庫調(diào)用間的操作系統(tǒng)所強加。作為實行調(diào)用或功能性請求的第一步,若程序庫30a與程序單元30有聯(lián)系,操作系統(tǒng)34首先檢驗程序庫30a以確定被中斷的外部參考程序或調(diào)用在程序庫中是否存在。
藉把程序庫30a中的副本提供給操作系統(tǒng)34的系統(tǒng)服務調(diào)用或函數(shù)的部分或全部,在操作系統(tǒng)中斷程序單元對該服務的請求之前,程序庫(而不是系統(tǒng)庫)中的相應過程將被執(zhí)行。這就提供了以預定方式修正或擴展這些請求的媒介物。
因此,與程序庫結(jié)構(gòu)30a相聯(lián)系,當程序30執(zhí)行特別的服務調(diào)用時,多個被修正的操作系統(tǒng)調(diào)用服務可按照該請求而被提供。另外,根據(jù)執(zhí)行的程序單元幾乎是透明的,該服務可按預定的方式被擴大和/或修正,或完全改變。如果且當適當參量和/或數(shù)據(jù)被返回到程序單元30時,則該程序能繼續(xù)執(zhí)行以后的指令。
應當理解,程序庫30a對實踐本方法并不需要。一種等效的結(jié)構(gòu)能在操作系統(tǒng)34中完成,如以后要討論的那樣,或在程序單元30本身中完成。
例1說明了該過程。順序標明的行號沿例1左手頁邊列出。
在例1中,根據(jù)在接口層36中幾乎是透明的,程序單元30中的讀操作可被中斷和/或修正或轉(zhuǎn)換。例1的行40把要執(zhí)行的過程規(guī)定為帶有與此有關(guān)的幾個參量的“讀出”功能。
“讀出”過程在行42開始。行44代表第一用戶掛機或進入點。被調(diào)用的一個過程包括一個或多個以前所指定的地點特定的或操作員特定的指令,它們不是“讀出”過程的正常部分。執(zhí)行行44的過程以后,真空的“讀出”過程可被執(zhí)行,正如行46中概略地指出的那樣。
應當注意到,能被實行的真實的讀出過程可以是被擴展的讀出過程和/或與在調(diào)用程序單元30中的原先期望的和指定的讀過程大大不同的讀過程。這樣,若有必要,可在不同程序版本和/或信息卡之間提供橋梁功能。
40PROCREAD(1,2,…n)
42BEGIN44CALLPRIOR(1,2,…n)46JUMPTOREADFUNCTIONVIAO/SLOGICALADDRESS48CALLPOST(1,2,…n)50ENDPROCPRIOR(1,2,…n)BEGIN若需要,用戶指令可插入這一點ENDPROCPOST(1,2,…n)BEGIN若需要,用戶指令可插入這一點END例1行48是第二用戶掛機或進入點。被調(diào)用的過程包括一個或多個地點特定的或操作員特定的指令,它們可在讀出功能被實行后再被實行。過程的結(jié)束在行50中被指出。
將會理解,用戶掛機的位置、數(shù)目或功能并不是本發(fā)明的限制。另外,本發(fā)明期待使用,例如,在程序單元、程序庫或系統(tǒng)庫中的多層進入點。
在從例1的讀過程返回到程序單元30后,該程序?qū)⒏鶕?jù)返回的參量或數(shù)據(jù),若有的話,繼續(xù)執(zhí)行,這些參量或數(shù)據(jù)是由其中起始的讀過程所給出的。因此,實際提供給程序單元30的信息可以來自和程序單元30原先期待的完全不同的位置和/或來源,且這個改變可對此完全透明。
圖3顯示了本發(fā)明的方法的實施例的流程圖。圖3的過程將結(jié)合例1的正文被解釋如下。在圖3的實施例中,程序庫30a以前已被連接到程序單元30,并且在運行時間內(nèi)是可用的。使用上面提到過的分等級的方法,當程序單元30調(diào)用外部函數(shù)或服務,或者試圖開始執(zhí)行外部過程時,操作系統(tǒng)34首先檢驗程序庫30a。
程序庫30a與相應于程序30的,至少某些外部參考程序的過程已在先前被裝載。某些以前裝載的庫過程的名字必須和要擴展和/或要修正的系統(tǒng)服務調(diào)用的名字相同。(通常,這被視作為需小心避免的錯誤!)另外,必須能得到,通常是通過操作系統(tǒng),在要中斷的操作系統(tǒng)庫中的相應系統(tǒng)服務調(diào)用的邏輯地址。相應的庫過程需要能不使用其名字就可調(diào)用該服務功能的這種信息。
例如,在例1中,“讀出”系統(tǒng)服務調(diào)用要被中斷和/或修正。作為結(jié)果,程序庫包括一個PROCREAD指令。在行46中,為了在操作系統(tǒng)庫中調(diào)用真實的“讀出”,必須執(zhí)行aJUMPTOLOGICALADDRESSOFSSCREAD,以避免PROCREAD調(diào)用它自己。
參見圖3,程序單元30在以前已開始執(zhí)行。步驟62代表執(zhí)行程序30,直到作出某種外部請求,或直到程序單元30完成,這時程序終止在步驟64。
在程序單元30作出外部請求時,例如請求“讀出”或“寫入”,操作系統(tǒng)34,在步驟68中,首先檢驗程序庫30a,如果有的話,以確定該函數(shù)或過程是否在該庫中找到。若調(diào)用函數(shù)、過程或外部參考程序被庫30a的操作系統(tǒng)34找到,例如,例1的“讀出”程序,則該過程就起始。
在步驟72中,遇到第一用戶掛機或進入點。這相應于例1的行44上的調(diào)用。若存在操作員特定的或地點特定的過程和/或碼,則這些步驟應當被執(zhí)行。這相應于實行例1行44上的程序。
在步驟76中,被程序單元30所調(diào)用的系統(tǒng)服務調(diào)用或其它函數(shù)被實行,這相應于實行例1行46上的“讀出”功能。被執(zhí)行的操作系統(tǒng)的被執(zhí)行的過程可以不同于程序單元30的創(chuàng)作者所期待的過程。
在步驟78中,遇到第二個或“在后”用戶掛機或進入點。這相應于實行例1行48的過程。然后,返回到步驟80,執(zhí)行程序單元30。在執(zhí)行用戶掛機指令的同時,可交替的返回路徑,例如步驟80a或步驟80b可由用戶提供。
在該例中,若被調(diào)用過程或服務請求在程序庫30a中未被找到,且若它們是在系統(tǒng)庫中,那么在步驟70中所請求的服務或過程被實行,或許結(jié)合操作系統(tǒng)34的其它服務來實行。任何必要的參量和/或數(shù)據(jù)返回到程序單元30,在步驟62a中,該程序單元繼續(xù)執(zhí)行。
正如能從圖3的過程看到的那樣,作為地點特定的、用戶供給的預轉(zhuǎn)換和/或預修正步驟,第一用戶掛機,例如過程44,以及在后轉(zhuǎn)換或在后修正步驟,例如過程48,的結(jié)果,操作員和/或用戶為程序單元所請求的原先的功能提供擴展、轉(zhuǎn)換和/或修正是相當容易的。這些均在程序單元30的外部,且對于程序單元幾乎是透明的。
圖4是本發(fā)明交替實施例的說明。在圖4的實施例中,程序單元30不一定必須有與其有關(guān)的程序庫30a。
無論如何,操作系統(tǒng)庫中的過程或系統(tǒng)服務調(diào)用的名字在以前已被變更,以便使它們和要中斷的過程或“系統(tǒng)服務調(diào)用”區(qū)分開。有了這種變更,真正操作系統(tǒng)調(diào)用可在新的名字下繼續(xù)進行。這些過程之一可相應于“打開”過程。對系統(tǒng)庫的有關(guān)系統(tǒng)服務程序的重新命名,例如把“open”改稱“sopen”,正如圖4所示的步驟34b,可以在操作系統(tǒng)被編譯和連接在一起時完成。另外,相應的過程,如圖4所示的步驟72a,必須以要中斷的系統(tǒng)服務調(diào)用的原來的名字被裝載入系統(tǒng)庫中。
若操作系統(tǒng)的相應的系統(tǒng)庫過程在以前被修正和擴展,如上述的那樣,則將有可能實行相應的用戶特定的“prior”過程,如例1行44所驗明的那樣,在步驟72a中,類似于以前討論過的步驟72。在步驟76a執(zhí)行相應的和/或類似的系統(tǒng)服務調(diào)用以后,由例1的“post”過程所代表的用戶規(guī)定的指令可以在大多數(shù)步驟78a中被執(zhí)行。接著,操作系統(tǒng)34把適當?shù)膮⒘亢?或數(shù)據(jù),假如有的話,返回到程序單元30,然后在步驟62a中程序單元繼續(xù)執(zhí)行。
使用以前描述過的方法,圖3的實施例或者圖4的實施例,使用戶和/或操作員更新、維護和/或修正程序單元,例如單元30,成為可能,以便在現(xiàn)在和將來對付改變的環(huán)境和改變的功能請求。也有可能修正和/或更新系統(tǒng)服務調(diào)用,以便提供很不同的和/或擴大了的功能,這些功能以前是不能提供給相應的程序單元,例如程序單元30,以及操作系統(tǒng)34的。
以上描述的指令中斷在運行時間內(nèi)被實行,且對于所執(zhí)行的程序單元幾乎是透明的。程序單元的源碼對實踐本方法并不需要。藉使“用戶掛機”或進入點成為可用的,如上述的那樣,在執(zhí)行相應的系統(tǒng)服務調(diào)用之前和之后,用戶和/或操作員將能更有效地管理和維護,以及以成本非常實用的方式更新他們的程序單元。更進一步地,因為本方法對各自的程序單元幾乎是外部的,所以對第三方銷售者或維修關(guān)系應當沒有影響。
圖3和/或圖4的方法被使用的方式的另外的代表性例子包括在多個處理器環(huán)境中改善的資源的分配,包括為用戶特定的和/或操作者特定的修正提供資源分配程序。當實行寫入功能以提供多個幾乎透明的數(shù)據(jù)集時,冗余的寫操作可被提供,這些數(shù)據(jù)可被用于驗證、災難恢復功能或類似者。
這樣,按照本發(fā)明,根據(jù)幾乎是透明的,用戶接口可用來修正由執(zhí)行的程序單元為各種不同的目的而作的請求。該修正過程主要發(fā)生在程序單元的外部。它可主要在有關(guān)操作系統(tǒng)的外部,但為了定制的目的,也可很容易地由操作員和/或用戶所修正。
本發(fā)明已就運行時在程序單元內(nèi)轉(zhuǎn)換和/或修正指令方面進行了討論,例如在示范的程序單元30內(nèi)。將會理解,本方法可和任何類型程序單元一起使用,例如應用、利用或類似者。因此,本方法也被用來轉(zhuǎn)換和/或修正程序中的指令,此程序也可按常規(guī)被看作為操作系統(tǒng)的一個部分。
也將會理解,圖3和/或圖4的實施例可被組合。另外,交替地把某些程序庫過程與有關(guān)的主程序單元相合并也是本發(fā)明的精神和意圖。
例2以源碼形式對本發(fā)明的方法進一步詳細說明。
綜上所述,可以看到在不違反本發(fā)明的精神和意圖的條件下,可以作出許多變化和修正。也要理解,對于本文說明的特定裝置,可預期它是無限制的,或者應當可推斷它是無限制的。當然,可以預期,藉附加的權(quán)利要求,它可適用于屬于權(quán)利要求意圖下的所有這些修正。
例2展示ATANDEMGUARDIAN操作系統(tǒng)調(diào)用(不帶參量)的部分清單ALTERALTERPRIORITYAPSDATAGETPARAMCONTROLCREATEDEFINEADODEFINEINFOMEASURINFONEWPROCESSOPENFILEPRINTINFOPRINTREADREADWRITE
權(quán)利要求
1.一種裝置,用于轉(zhuǎn)換先存在的方法的一個或多個步驟,以實行預定的功能,其中用戶規(guī)定的步驟可與之合并,包括用于檢測先存在的方法的一個步驟的電路,該步驟是作為轉(zhuǎn)換的候選者;用于確定以前規(guī)定的,用戶供給的預轉(zhuǎn)換的步驟集是否要在執(zhí)行任何預定的轉(zhuǎn)換步驟之前被執(zhí)行的電路,且作為對確定步驟的響應,在指明的地方執(zhí)行預轉(zhuǎn)換步驟集。
2.按照權(quán)利要求1的裝置,其特征在于進一步包括用于確定以前規(guī)定的,用戶供給的在后轉(zhuǎn)換的步驟集是否要在執(zhí)行任何預定的轉(zhuǎn)換步驟之后被執(zhí)行的裝置,且作為對此的響應,在指明的地方執(zhí)行在后轉(zhuǎn)換步驟。
3.一種轉(zhuǎn)換過程,轉(zhuǎn)換先存在的方法的一個或多個步驟,以實行預定的功能,其中用戶規(guī)定的步驟可與之合并,按照權(quán)利要求1的裝置,其特征在于包括檢測先存的方法的一個步驟,該步驟是作為轉(zhuǎn)換的候選者;以及確定以前規(guī)定的,用戶供給的預轉(zhuǎn)換步驟集是否要在執(zhí)行任何預定的轉(zhuǎn)換步驟之前被執(zhí)行,且作為對確定步驟的響應,在指明的地方執(zhí)行預轉(zhuǎn)換步驟集。
4.權(quán)利要求3的過程,其特征在于進一步包括下列步驟確定以前規(guī)定的,用戶供給的在后轉(zhuǎn)換的步驟集是否要在執(zhí)行任何預定的轉(zhuǎn)換步驟之后被執(zhí)行,且作為對此的響應,在指明的地方執(zhí)行在后轉(zhuǎn)換步驟。
5.執(zhí)行預定步驟集的一種方法,包括以預定方法變更一個或多個步驟,其中用戶規(guī)定的步驟可與之合并,按照權(quán)利要求1的裝置,其特征在于包括檢測作為變更的候選者的一個步驟;執(zhí)行該變更步驟;且確定以前規(guī)定的,用戶供給的在后變更的步驟集是否要在表明的地方執(zhí)行在后變更步驟集之后被執(zhí)行。
6.權(quán)利要求5的方法,其特征在于進一步包括,在檢測步驟之后,下列步驟確定以前規(guī)定的,用戶供給的預變更的步驟集是否要在執(zhí)行任何預定的變更步驟之前被執(zhí)行,且作為對確定步驟的響應,在指明的地方執(zhí)行預變更步驟集。
7.在運行時間內(nèi)對權(quán)利要求1的裝置中被執(zhí)行的計算機程序的先存在的指令進行中斷和修正的一種方法,其特征在于包括中斷所選擇的指令,并確定它是否為修正的候選者;確定一組可變更的以前規(guī)定的預修正的指令是否要被執(zhí)行,且作為對此的響應,執(zhí)行預修正指令組,若有的話;以及修正或執(zhí)行被中斷的指令。
8.權(quán)利要求7的方法,其特征在于進一步包括以下步驟確定一組可變更的以前規(guī)定的在后修正的指令是否要被執(zhí)行,且作為對此的響應,執(zhí)行在后修正指令組,如果有的話。
9.對在多節(jié)點,多個處理器系統(tǒng)中的資源進行分配的一種方法,其中至少若干個節(jié)點被間隔開,且藉通信電路被內(nèi)部連通,其中一個或多個處理器包括如權(quán)利要求1中的裝置,該方法包括實行在一個節(jié)點處的所選的處理器的預定過程的一系列步驟;按照要實行的次序檢測一個步驟,該步驟是作為運行時間內(nèi)修正的候選者;中斷被檢測的步驟,且確定以前規(guī)定的操作員供給的預修正步驟集是否存在;中斷該次序,并執(zhí)行操作員供給的預修正步驟集,如指明的那樣;修正,采用一個或多個預定的修正步驟的預定的先后次序修正候選步驟;在進行修正步驟以后,確定以前規(guī)定的操作員供給的在后修正步驟集是否存在;執(zhí)行操作者供給的在后修正步驟集,如指明的那樣;以及返回,在檢測步驟之后立即返回到步驟的先后次序,由此繼續(xù)進行處理過程。
全文摘要
一種中斷先存在的計算機指令的方法,以便修正和/或擴大先存在的程序單元及提供用戶進入點,在一個或多個實施例中確定參考程序是否在程序單元中被找到。若已被找到,則在被中斷的指令,或許,以被修正的和/或擴大的形式,執(zhí)行之前和之后,相應的方法提供用戶編碼進入點。用戶供給的碼塊可在進入點被提供,用來擴大、更新和/或擴展被中斷的指令,并藉此擴大先存在的程序單元。
文檔編號G06F9/40GK1091842SQ93120169
公開日1994年9月7日 申請日期1993年12月6日 優(yōu)先權(quán)日1992年12月7日
發(fā)明者D·J·肯尼迪 申請人:奧弗羅德有限公司