專利名稱:對(duì)用于錄入和重放確定性事件序列的指令進(jìn)行計(jì)數(shù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于對(duì)在一個(gè)或者多個(gè)計(jì)算機(jī)處理器中、特別
是在具有并行架構(gòu)的多處理器系統(tǒng)中執(zhí)行的任務(wù)的運(yùn)行進(jìn)行監(jiān)視和 管理的透明和非侵入式方法。本發(fā)明具體地應(yīng)用于在網(wǎng)絡(luò)中執(zhí)行的 多任務(wù)事務(wù)應(yīng)用的各種任務(wù)。這一管理特別地實(shí)現(xiàn)以錄入數(shù)據(jù)的開
'7
式來(lái)記錄這些任務(wù)的運(yùn)行以及根據(jù)這樣的錄入數(shù)據(jù)重放這一運(yùn)行以
本發(fā)明也涉及一種系統(tǒng),該系統(tǒng)在它批j亍的對(duì)軟件應(yīng)用的運(yùn)作 管理中實(shí)施這樣的方法。
背景技術(shù):
實(shí)施就受管理的應(yīng)用而言是非侵入式和透明的運(yùn)作管理是很有 用的,特別是對(duì)于實(shí)現(xiàn)在多個(gè)現(xiàn)存應(yīng)用的原狀態(tài)下("舊應(yīng)用")以 更多的靈活性或者可靠性或者性能來(lái)使用它們更是如此。
與本申請(qǐng)同一的申請(qǐng)人已經(jīng)在專利申請(qǐng)F(tuán)R 04 07180中提出通 過(guò)中間捕獲以及通過(guò)在同步點(diǎn)或者重啟點(diǎn)("檢查點(diǎn)")恢復(fù)應(yīng)用的 狀態(tài)來(lái)進(jìn)行非入侵式運(yùn)作管理的技術(shù)。以補(bǔ)充的方式,相同申請(qǐng)人 已經(jīng)具體地在專利申請(qǐng)F(tuán)R05 00605至FR 05 00613中提出非入侵式 錄入和重放技術(shù)。
然而, 一個(gè)或者多個(gè)事件的錄入對(duì)于所錄入的應(yīng)用或者執(zhí)行它 的系統(tǒng)而言仍然代表工作開銷,并且盡可能最小化工作開銷非常引 人關(guān)注。
在構(gòu)成應(yīng)用執(zhí)行的事件之中,相對(duì)于應(yīng)用的狀態(tài)具有非確定性 行為的事件必須通過(guò)在錄入數(shù)據(jù)中存儲(chǔ)它們的結(jié)果來(lái)錄入和重放, 以^更在以后重》文過(guò)程中實(shí)現(xiàn)這一結(jié)果的強(qiáng)制或者再注入。因此關(guān)注
于盡可能減少必須被視為非確定性的事件的數(shù)目。
在應(yīng)用外部或者在執(zhí)行它的系統(tǒng)外部的事件常常具有本質(zhì)上非 確定性的行為,并且一般而言必須加以存儲(chǔ),例如在前文引用的申 請(qǐng)中描述的那樣。
比較而言,內(nèi)部事件最經(jīng)常地具有確定性行為并且也構(gòu)成在應(yīng) 用的運(yùn)行中執(zhí)行的大多數(shù)操作。因此關(guān)注于對(duì)非確定性事件、特別 是內(nèi)部的非確定性事件的錄入進(jìn)行聚集和優(yōu)化。
如果來(lái)自 一部分運(yùn)行的所有事件都是確定性的,則可以簡(jiǎn)單地 通過(guò)例如以重啟點(diǎn)的形式存儲(chǔ)應(yīng)用的開始狀態(tài),以經(jīng)濟(jì)的方式錄入 全部這一部分。然后例如通過(guò)將應(yīng)用恢復(fù)到如存儲(chǔ)的重啟點(diǎn)狀態(tài)中 以及通過(guò)起動(dòng)這些確定性事件的執(zhí)行來(lái)獲得重放。于是可以使用術(shù) 語(yǔ)"逐件確定性執(zhí)行模型",該模型包括僅由確定性事件組成的確定 性部分的分組。確定性部分的邊界由此一^殳由非確定性事件構(gòu)成, 例如以一個(gè)外部消息的到達(dá)開始而以另一非確定性事件結(jié)束。
發(fā)明內(nèi)容
本發(fā)明的 一 個(gè)目的在于筒化或者優(yōu)化這樣的確定性部分的錄入 和重放。
另外,某些類型的計(jì)算機(jī)架構(gòu)可以包括有時(shí)繼承于它們自有性 質(zhì)的非確定性起因,特別是并行架構(gòu)系統(tǒng),有時(shí)限定為物理并行或 者實(shí)際并行。
本發(fā)明的另一目的因此在于有助于或者優(yōu)化錄入和重放功能的 實(shí)施以及特別是針對(duì)多任務(wù)應(yīng)用在并行環(huán)境內(nèi)減少非確定性的起 因。
在冗余架構(gòu)中的運(yùn)作管理的背景下,本發(fā)明的另一目的于是在 于使在并行環(huán)境中執(zhí)行的多任務(wù)應(yīng)用的運(yùn)作可靠化。
確定性部分按照它的性質(zhì)將在它始于同 一情形并且執(zhí)行相同指 令時(shí)總是給出同一結(jié)果。為了錄入和重放這樣的確定性部分,因此 有可能僅存儲(chǔ)和恢復(fù)開始情形并且在數(shù)目與這一部分的長(zhǎng)度相對(duì)應(yīng) 的指令過(guò)程中根據(jù)同 一可執(zhí)行文件發(fā)生執(zhí)行。
然而,如果在原應(yīng)用中沒(méi)有設(shè)想到這一點(diǎn),則對(duì)執(zhí)行的指令進(jìn) 行計(jì)數(shù)的實(shí)施方式對(duì)于執(zhí)行這些指令的一個(gè)或者多個(gè)機(jī)器而言代表 了大量工作負(fù)荷。對(duì)于已知技術(shù),這樣的超負(fù)荷常常不可接受或者 將這樣的實(shí)施限于實(shí)驗(yàn)情形并且在開發(fā)利用情形下幾乎無(wú)用。
本發(fā)明的一個(gè)目的在于克服這些不足中的所有或者一些不足。 為此,本發(fā)明提出 一 種用于在計(jì)算機(jī)處理器中在計(jì)算機(jī)系統(tǒng)內(nèi) 在稱為活動(dòng)時(shí)段的給定執(zhí)行時(shí)段期間管理稱為目標(biāo)任務(wù)的計(jì)算機(jī)任 務(wù),該計(jì)算機(jī)處理器具有監(jiān)視或者估計(jì)性能的裝置,這些裝置包括 具有加上或者減去稱為相對(duì)誤差的給定可能誤差的計(jì)數(shù)器。
這一方法包括在一方面使用所述計(jì)數(shù)器來(lái)評(píng)估直至所述活動(dòng) 時(shí)段的至少一個(gè)給定點(diǎn)所執(zhí)行的指令的數(shù)目;以及在另一方面生成 從處理器或者計(jì)算機(jī)系統(tǒng)的狀態(tài)中讀取或者計(jì)算的并且與所述活動(dòng) 時(shí)段的至少 一 個(gè)給定點(diǎn)相對(duì)應(yīng)的稱為簽名的數(shù)據(jù)。
有利地,對(duì)于從受管理的時(shí)段的開始起執(zhí)行的指令的數(shù)目的評(píng) 估結(jié)合所述計(jì)數(shù)器(PMC)而使用了至少一個(gè)系統(tǒng)調(diào)用指令作為同 步障。
這一方法對(duì)于在由兩個(gè)非確定性操作之間的一連串確定性操作 組成的活動(dòng)時(shí)段期間管理任務(wù)特別地有用。
本發(fā)明由此提出了管理在稱為錄入處理器的處理器中錄入的任 務(wù),并且包括存儲(chǔ)與稱為錄入時(shí)段的所述任務(wù)的這一活動(dòng)時(shí)段相對(duì) 應(yīng)的錄入數(shù)據(jù)。這樣的錄入數(shù)據(jù)于是包括所執(zhí)行指令的數(shù)目的至少名。
由此有可能通過(guò)在稱為處理器日志的至少一個(gè)文件中以有序的 方式存儲(chǔ)錄入數(shù)據(jù)來(lái)錄入處理器的使用,所述錄入數(shù)據(jù)代表了來(lái)自 在所述處理器中執(zhí)行的多個(gè)任務(wù)的 一 連串活動(dòng)時(shí)段的錄入,并且包 括針對(duì)這些時(shí)段中各時(shí)段的標(biāo)識(shí)所執(zhí)行任務(wù)的數(shù)據(jù)項(xiàng)。
根據(jù)這樣的錄入數(shù)據(jù),本發(fā)明也提出了從與錄入處理器或者錄
入系統(tǒng)在錄入時(shí)段開始時(shí)的狀態(tài)相對(duì)應(yīng)的狀態(tài)開始,通過(guò)在重放計(jì) 算機(jī)系統(tǒng)內(nèi)管理由稱為重放處理器的處理器執(zhí)行的稱為重放任務(wù)的
任務(wù)來(lái)重放錄入時(shí)段。所述方法于是也包括
-受監(jiān)視的執(zhí)行階段,從重放時(shí)段的開始起執(zhí)行計(jì)數(shù)器所評(píng)估的 數(shù)目的指令,該數(shù)目小于或者等于錄入時(shí)段的指令數(shù)目的假設(shè)值減 去所述計(jì)數(shù)器的相對(duì)誤差;
-確認(rèn)階段,包括如下步驟的重復(fù)
-在重放中的給定點(diǎn)處中斷重放任務(wù)的執(zhí)行;
-在錄入簽名和與重放中斷點(diǎn)相對(duì)應(yīng)的簽名之間進(jìn)行比較測(cè)試。
具體而言,錄入簽名包括稱為錄入指針的數(shù)據(jù),該數(shù)據(jù)代表了 在錄入時(shí)段結(jié)束時(shí)錄入任務(wù)的指令指針的值。該方法于是也包括在 與錄入指針數(shù)據(jù)相對(duì)應(yīng)的重放指令上設(shè)置斷點(diǎn)。
根據(jù)本發(fā)明,對(duì)重放任務(wù)的執(zhí)行的監(jiān)視特別地包括計(jì)數(shù)器的溢 出,該計(jì)數(shù)器被預(yù)先初始化以便確定必須從重放時(shí)段的開始起執(zhí)行 的指令的數(shù)目,并且該計(jì)數(shù)器的溢出引起了重放任務(wù)的中斷。
然而,由于沒(méi)有針對(duì)這樣的確切使用而設(shè)想這一類計(jì)數(shù)器,所 以這樣的中斷可能在計(jì)數(shù)器溢出之后以某一延遲而出現(xiàn)。
本發(fā)明因此提出了以某一裕度在重放時(shí)段開始時(shí)初始化計(jì)數(shù)器 以便足夠早地溢出,從而在計(jì)數(shù)器的溢出與已經(jīng)引起該溢出的任務(wù) 的中斷之間存在延時(shí)時(shí)段的情況下,重放任務(wù)所執(zhí)行的指令的數(shù)目 小于或者等于錄入時(shí)段的指令數(shù)目的假設(shè)值減去所述計(jì)數(shù)器的相對(duì) 誤差。
另外,作為一種安全措施,確認(rèn)階段可以包括安全步驟如果 重放指令的數(shù)目超過(guò)錄入指令的數(shù)目的假設(shè)值加上給定的指令數(shù)目 則發(fā)送錯(cuò)誤信號(hào)。
根據(jù)代表以這一方式錄入的數(shù)個(gè)時(shí)段的日志,本發(fā)明可以由此 在稱為重放處理器的處理器中實(shí)現(xiàn)通過(guò)使用來(lái)自在所述錄入處理器 中錄入的一連串活動(dòng)時(shí)段的有序錄入數(shù)據(jù)集來(lái)重放對(duì)錄入處理器的 使用。
本發(fā)明也提供了對(duì)與多個(gè)錄入任務(wù)所訪問(wèn)的稱為目標(biāo)資源的共 享資源有關(guān)的 一 連串歸屬獨(dú)占性訪問(wèn)的錄入,這 一 方法也發(fā)送或者 存儲(chǔ)稱為資源日志的至少一個(gè)文件。這一資源日志由此包括代表了 已經(jīng)獲得這些獨(dú)占性訪問(wèn)的各不同連續(xù)任務(wù)的標(biāo)識(shí)的錄入數(shù)據(jù)。
從這些技術(shù)出發(fā),本發(fā)明提出了管理在系統(tǒng)軟件內(nèi)至少兩個(gè)應(yīng) 用任務(wù)的運(yùn)作,該系統(tǒng)軟件通過(guò)順序激活來(lái)管理所述任務(wù)在具有并 行結(jié)構(gòu)的計(jì)算機(jī)系統(tǒng)中的執(zhí)行,該并行結(jié)構(gòu)包括能夠在至少兩個(gè)算 術(shù)單元中同時(shí)執(zhí)行數(shù)個(gè)應(yīng)用任務(wù)的計(jì)算裝置。對(duì)于訪問(wèn)至少 一個(gè)共
享資源的這樣的應(yīng)用任務(wù),該方法在 一 個(gè)方面包括如下步驟
-在第一算術(shù)單元中錄入這些任務(wù)中的一個(gè)任務(wù)或者其它任務(wù) 的第一串激活時(shí)段;以及
-在第二算術(shù)單元中錄入這些任務(wù)中的一個(gè)任務(wù)或者其它任務(wù) 的第二串激活時(shí)段;
-以及錄入響應(yīng)于對(duì)訪問(wèn)所述目標(biāo)資源的請(qǐng)求而把對(duì)所述目標(biāo) 資源的稱為獨(dú)占性訪問(wèn)的訪問(wèn) 一連串地歸屬到所述任務(wù)之中的所謂 訪問(wèn)任務(wù),即這樣的歸屬排除了在緊接于所述訪問(wèn)請(qǐng)求之后的所述 訪問(wèn)任務(wù)的激活時(shí)段的整個(gè)其余時(shí)段期間這些任務(wù)中的另一任務(wù)對(duì) 所述目標(biāo)資源的任何訪問(wèn)。
在另一方面,該方法也包括在稱為重放串行的有序結(jié)構(gòu)中將 代表了各算術(shù)單元中多個(gè)一連串激活時(shí)段的錄入數(shù)據(jù)與代表了 一連 串歸屬獨(dú)占性訪問(wèn)的錄入數(shù)據(jù)相組合。安排這一組合是為了維持各 任務(wù)內(nèi)一連串激活任務(wù)相對(duì)于所述共享資源而言的次序。
根據(jù)本發(fā)明,可以在用于重放錄入任務(wù)的錄入運(yùn)行的重放計(jì)算 機(jī)系統(tǒng)中使用重放串行數(shù)據(jù)。
另外,該方法可以包括在重放計(jì)算機(jī)系統(tǒng)內(nèi)虛擬化可由錄入任 務(wù)在錄入期間訪問(wèn)的軟件資源中的所有或者部分軟件資源。
根據(jù)本發(fā)明的方法特別地實(shí)現(xiàn)了對(duì)于包括至少兩個(gè)任務(wù)的錄入 應(yīng)用的運(yùn)作的稱為活動(dòng)復(fù)制的復(fù)制,該至少兩個(gè)任務(wù)在具有計(jì)算機(jī) 網(wǎng)絡(luò)的并行結(jié)構(gòu)的稱為主要節(jié)點(diǎn)的至少 一個(gè)節(jié)點(diǎn)上執(zhí)行并且訪問(wèn)至
少 一 個(gè)共享資源。這一 復(fù)制包括在重放系統(tǒng)上的至少 一 個(gè)重放應(yīng)用 中重放源自于錄入數(shù)據(jù)的重放串行,該錄入數(shù)據(jù)在被生成時(shí)從主要 節(jié)點(diǎn)被立即發(fā)送到第二節(jié)點(diǎn)。
在一個(gè)實(shí)施例中,本發(fā)明然后可以使包括至少兩個(gè)任務(wù)的應(yīng)用
可靠化(reliabilization),該至少兩個(gè)任務(wù)在具有計(jì)算機(jī)網(wǎng)絡(luò)的并行結(jié) 構(gòu)的稱為主要節(jié)點(diǎn)的至少 一 個(gè)節(jié)點(diǎn)上執(zhí)行并且訪問(wèn)至少 一 個(gè)共享資 源。這一可靠化由此也包括將服務(wù)從主要節(jié)點(diǎn)切換到在主要節(jié)點(diǎn)內(nèi) 檢測(cè)到故障或者給定事件時(shí)啟動(dòng)的取代主要節(jié)點(diǎn)的至少一個(gè)輔節(jié) 點(diǎn)。
在另一實(shí)施例中,本發(fā)明也可以實(shí)現(xiàn)通過(guò)在至少一個(gè)輔節(jié)點(diǎn)上 執(zhí)行在主要節(jié)點(diǎn)上執(zhí)行的目標(biāo)應(yīng)用的活動(dòng)副本來(lái)平衡或者調(diào)節(jié)計(jì)算 機(jī)網(wǎng)絡(luò)內(nèi)的工作負(fù)荷。這一負(fù)荷平衡由此包括將受管理的目標(biāo)應(yīng)用 所提供的所有或者部分服務(wù)切換到活動(dòng)副本。
因此,根據(jù)本發(fā)明的方法可以實(shí)施于計(jì)算機(jī)網(wǎng)絡(luò)的至少一個(gè)節(jié) 點(diǎn)內(nèi),該計(jì)算機(jī)網(wǎng)絡(luò)例如是構(gòu)成了通過(guò)中間件型的 一 個(gè)或者多個(gè)運(yùn) 作管理應(yīng)用來(lái)管理的集群的網(wǎng)絡(luò)。該方法由此特別地通過(guò)指令序列 的錄入和重放來(lái)實(shí)現(xiàn)擴(kuò)展或者優(yōu)化這一運(yùn)作管理的性能和功能。
在同一背景下,本發(fā)明也提出一種應(yīng)用于并行類型的或者構(gòu)成 并行系統(tǒng)的一個(gè)或者多個(gè)計(jì)算機(jī)系統(tǒng)并且可能用于網(wǎng)絡(luò)中的實(shí)施該 方法的系統(tǒng)。
本發(fā)明的其它特征和優(yōu)點(diǎn)將從不以任何方式具有限制性的具體 實(shí)施例以及附圖中變得明顯,在附圖中
-圖l和圖2根據(jù)本發(fā)明圖示了通過(guò)對(duì)處理器內(nèi)的任務(wù)進(jìn)行計(jì)數(shù) 來(lái)錄入對(duì)任務(wù)執(zhí)行的調(diào)度;
-圖3和圖4根據(jù)本發(fā)明圖示了通過(guò)對(duì)處理器中的指令進(jìn)行計(jì)數(shù) 來(lái)重放任務(wù)的活動(dòng)時(shí)段;
-圖5根據(jù)本發(fā)明圖示了從通過(guò)對(duì)指令進(jìn)行計(jì)數(shù)而進(jìn)行的對(duì)處
理器中任務(wù)調(diào)度的錄入中獲得的在單處理器系統(tǒng)中多任務(wù)應(yīng)用的確
定性重放;
-圖6是根據(jù)現(xiàn)有技術(shù)對(duì)于在來(lái)自單一環(huán)境的兩個(gè)不同處理器 所并行執(zhí)行的兩個(gè)任務(wù)之間共享的存儲(chǔ)器的訪問(wèn)的運(yùn)作;
-圖7根據(jù)本發(fā)明圖示了在任務(wù)內(nèi)創(chuàng)建和維護(hù)如下結(jié)構(gòu),該結(jié)構(gòu) 實(shí)現(xiàn)了控制對(duì)于在來(lái)自單一環(huán)境的數(shù)個(gè)不同處理器上并行執(zhí)行的多 個(gè)任務(wù)之間共享的存儲(chǔ)器頁(yè)面的訪問(wèn);
-圖8根據(jù)本發(fā)明圖示了對(duì)于在來(lái)自單一環(huán)境的兩個(gè)不同處理 器上并行執(zhí)行的兩個(gè)任務(wù)之間共享的存儲(chǔ)器頁(yè)面的訪問(wèn)的控制的運(yùn) 作;
-圖9根據(jù)本發(fā)明圖示了在多處理器計(jì)算機(jī)上多任務(wù)應(yīng)用的錄 入以及它在單處理器機(jī)器上的立即重放。
具體實(shí)施例方式
這里描述的技術(shù)對(duì)應(yīng)于使用在PC型計(jì)算機(jī)中所用類型的處理 器的某些特征的本發(fā)明實(shí)施例,這些處理器例如是AMD公司的 Athlon型處理器或者Intel公司的Pentium處理器。例如在工作站中 使用的其它當(dāng)前的處理器或者將來(lái)的處理器理所當(dāng)然可以呈現(xiàn)這些 特征或者相似特征中的所有或者一些特征并且可以用來(lái)實(shí)現(xiàn)本發(fā) 明。
圖1至圖2呈現(xiàn)了一種用于錄入單個(gè)pProX處理器或者算術(shù)單 元連續(xù)執(zhí)行的確定性內(nèi)部事件的不同部分的技術(shù)。
如圖1中所示,不同任務(wù)TA和TV可以由稱為激活時(shí)段Schl 至Sch3的部分來(lái)執(zhí)行,這些激活時(shí)段由形成系統(tǒng)代理中如下部分的 調(diào)度器SCH連續(xù)地起動(dòng),該部分稱為上下文管理器并且管理這些交 替或者交織。
在計(jì)算機(jī)系統(tǒng)或者處理器內(nèi)執(zhí)行的不同任務(wù)之間, 一 些任務(wù)可 能是應(yīng)用中人們尋求管理的一部分并且將被限定為"受監(jiān)視的"任 務(wù)。這些任務(wù)通過(guò)任務(wù)描述符內(nèi)在這里稱為管理位MmA或者M(jìn)mB
(見圖7)的通常未用的數(shù)據(jù)位的狀態(tài)(設(shè)置為1)來(lái)標(biāo)識(shí)。受監(jiān)視 的任務(wù)以及未受監(jiān)視的其它任務(wù)可以于在處理器中執(zhí)行的一連串激 活時(shí)段內(nèi)交替。
對(duì)于在圖2中標(biāo)記以字母"m,,的受監(jiān)視的任務(wù)TA和TB而言, 選擇激活時(shí)段使得它們僅由確定性事件組成。這些確定性時(shí)段通過(guò) 一個(gè)或者多個(gè)錄入軟件代理來(lái)定義。這一錄入代理可以包括作為運(yùn) 作管理應(yīng)用的任務(wù)的、在計(jì)算機(jī)系統(tǒng)的用戶存儲(chǔ)器空間中執(zhí)行的單 元。這一錄入代理也可以包括或者使用在系統(tǒng)軟件內(nèi)、例如在調(diào)度 器內(nèi)修改或者添加的單元。
由于應(yīng)用的事件中的多數(shù)是內(nèi)部事件,并且它們之中的許多事 件是確定性的,所以各個(gè)受管理的任務(wù)中的大部分由確定性事件組 成。每當(dāng)出現(xiàn)非確定性事件,錄入代理就關(guān)閉確定性時(shí)段。非確定 性事件然后可能以未受監(jiān)視的任務(wù)的形式來(lái)加以執(zhí)行,并且根據(jù)已 知方法利用它的結(jié)果來(lái)加以錄入。在完成這一非確定性事件時(shí),錄 入代理定義新的確定性部分的開始并且再次起動(dòng)對(duì)指令的計(jì)數(shù)。
非確定性事件的錄入以及可能的處理是在確定性激活時(shí)段以外 進(jìn)行的,或者是例如在內(nèi)核模式Klv下的執(zhí)行時(shí)段Kl或者K2中、 即在相對(duì)于用于用戶模式UIv的值3而言處理器特許模式處于值0 的時(shí)候進(jìn)行的。
為了能夠以與錄入時(shí)的方式相同的方式重放各激活時(shí)段,本發(fā) 明在錄入時(shí)執(zhí)行對(duì)于在這一確定性部分期間執(zhí)行的指令的計(jì)數(shù)。由 此,在以后重放RSCH (見圖3和圖4)這些任務(wù)期間,只需從與錄 入時(shí)的狀態(tài)相同的狀態(tài)起動(dòng)這一錄入部分以便它自行執(zhí)行數(shù)目總計(jì) 與在錄入時(shí)由此同一部分執(zhí)行并且針對(duì)此同一任務(wù)的指令的數(shù)目準(zhǔn) 確對(duì)應(yīng)的重放指令。因此進(jìn)行這一重放而不會(huì)有任何干預(yù)強(qiáng)加于確 定性部分內(nèi)的結(jié)果,因?yàn)樵摯_定性部分僅含確定性事件。
當(dāng)確定性部分延展到調(diào)度器所建立的多個(gè)激活時(shí)段時(shí),這些激 活時(shí)段各包括這一確定性部分的一部分,這些部分可以作為完整的 確定性部分來(lái)自行處理。在其余描述中,將僅描述確定性激活時(shí)段
的錄入,但是不言而喻,許多確定性激活時(shí)段可以一個(gè)接一個(gè)地在 單個(gè)確定性部分之內(nèi)。
根據(jù)本發(fā)明,對(duì)確定性激活時(shí)段的指令的這一計(jì)數(shù)使用了性能 和監(jiān)視計(jì)數(shù)器,該計(jì)數(shù)器目前是很多處理器中的現(xiàn)有硬件特征,例
如自Intel公司的Pentium家族的Pentium 2之后。提供這一性能和監(jiān) 視計(jì)數(shù)器是為了在持續(xù)時(shí)間中或者在多個(gè)事件中測(cè)量處理器的運(yùn) 作,并且該計(jì)數(shù)器主要用來(lái)測(cè)量性能,例如以便通過(guò)對(duì)它的值的定 期采樣來(lái)進(jìn)行對(duì)應(yīng)用簡(jiǎn)檔(profile)的統(tǒng)計(jì)分析。處理器制造商也指 明這些性能計(jì)數(shù)器沒(méi)有受保障的準(zhǔn)確度并且必須用于相對(duì)或者差分 測(cè)量以求應(yīng)用的優(yōu)化。
與能夠出于性能原因而使某些指令預(yù)先執(zhí)行的各種推測(cè)性或者 高速緩存技術(shù)無(wú)關(guān)地,本發(fā)明提出使用這一性能計(jì)數(shù)器PMC的特征 之一,也就是對(duì)于稱為退役(retired)指令的指令的計(jì)數(shù),即這些指 令被解析或者已經(jīng)離開待執(zhí)行的指令列表。
然而,對(duì)退役指令的這一計(jì)數(shù)呈現(xiàn)出在Intel和AMD公司的文 檔中描述的某些限制性特征。這些特征之一是用于這一計(jì)數(shù)器的讀 指令("RDPWC")沒(méi)有直接結(jié)合于待解析的指令中,這對(duì)于與本 發(fā)明有聯(lián)系的對(duì)這一計(jì)數(shù)器的使用沒(méi)有直接影響。
另一方面,兩個(gè)其它限制性特征可能引起用于錄入和重放的指 令計(jì)數(shù)的不準(zhǔn)確性并且應(yīng)當(dāng)加以考慮。
能夠構(gòu)成障礙的第四特征是如下事實(shí)計(jì)數(shù)器溢出所引起的執(zhí) 行中斷可能在已經(jīng)造成這一溢出的指令之后以某一延遲出現(xiàn)。
這些不準(zhǔn)確性限制在一方面涉及到某些復(fù)雜指令如果在解析之 前被中斷則可能對(duì)該指令計(jì)數(shù)兩次的情況,而在另一方面涉及到具 有可能造成指令無(wú)法計(jì)數(shù)的硬件中斷的指令。為了克服這一不準(zhǔn)確 性,本發(fā)明使用 一種實(shí)現(xiàn)消除與激活時(shí)段的結(jié)束的準(zhǔn)確確定有關(guān)的 不確定度的補(bǔ)充確認(rèn)技術(shù)。
如圖1中所示,在日志文件J|iProX中錄入和記錄在|iProX處理 器中執(zhí)行的一連串確定性激活時(shí)段Schl、 Sch2和Sch3。在處理器正在執(zhí)行受監(jiān)視的任務(wù)TA的錄入激活時(shí)段Sch3期間, 計(jì)數(shù)器PMC的值UICX的一個(gè)或者多個(gè)讀數(shù)RDPMC供應(yīng)退役指令 的數(shù)目NJ3。在這一時(shí)段Sch3的掛起(結(jié)束Sch3 )時(shí),錄入代理JSCH 使用任務(wù)TA及其上下文的狀態(tài)所輸出的一項(xiàng)或者多項(xiàng)狀態(tài)數(shù)據(jù),以 便計(jì)算以基本上單義的方式代表這一狀態(tài)的一項(xiàng)或者多項(xiàng)數(shù)據(jù),從 而去除可能存在的與在這一激活時(shí)段Sch3期間執(zhí)行的指令的準(zhǔn)確數(shù) 目有關(guān)的不確定度。這一狀態(tài)數(shù)據(jù)構(gòu)成與這一時(shí)段結(jié)束(結(jié)束Sch3 ) 相對(duì)應(yīng)的簽名SG3。這一簽名特別地包括緊接在這一時(shí)段的最后指 令之后的指令指針的準(zhǔn)確值IPJX3,即最后執(zhí)行的程序指令在任務(wù) TA的可執(zhí)行文件內(nèi)的位置的準(zhǔn)確標(biāo)識(shí)。這一簽名也包括根據(jù)來(lái)自在 這一桂起(結(jié)束Sch3 )時(shí)任務(wù)TA的上下文的寄存器RegJX3和調(diào)用 棧PileJX3中讀取的值而計(jì)算的控制數(shù)據(jù)("校驗(yàn)和(checksum)")。
對(duì)于各錄入時(shí)段SchJ (圖3 ),這一處理器的日志JpProX由此 包括特別地與下述內(nèi)容相關(guān)聯(lián)的行
-在這一時(shí)段中執(zhí)行的任務(wù)TJ的標(biāo)識(shí)idJ,例如這一任務(wù)的 "PID";
-計(jì)數(shù)器PMC所發(fā)送的撤消(withdraw )指令NJ的數(shù)目的值; -為這一時(shí)段的結(jié)束而計(jì)算的簽名SGJ。
由此,對(duì)于圖1中所示的一連串任務(wù),首先TA、然后TB、然
后TA,處理器nProX的日志JpProX包括如下連續(xù)行 " MA: NJ3: SG3 idB: NJ2: SG2
fdA:肌S61w
如圖2中所示,在給定jiProX處理器內(nèi)錄入應(yīng)用APPJ的一連串 不同錄入任務(wù)也可以由錄入代理JSCH初始地傳輸?shù)紽IFO("先入先 出")型的錄入隊(duì)列QJ(aProX。通過(guò)一個(gè)存儲(chǔ)任務(wù)的日志TJ(iProX來(lái) 讀取在這一 隊(duì)列的輸出處的錄入行,這啟動(dòng)了要么通過(guò)本地MEM要 么通過(guò)傳輸TRANS到另一節(jié)點(diǎn)或者備份站或者外設(shè)在這一處理器 的日志J(iProX中以有序的方式存儲(chǔ)這些行。這種錄入隊(duì)列的使用特 別地充當(dāng)緩存器區(qū)以便調(diào)節(jié)錄入數(shù)據(jù)的流量以及避免干擾被錄入的應(yīng)用或者進(jìn)行這一錄入的應(yīng)用。
這一益處在如下全局架構(gòu)的情況下特別地明顯,在該全局架構(gòu) 中立即將錄入數(shù)據(jù)如它出現(xiàn)的那樣傳輸?shù)嚼缭趥溆脵C(jī)器上重放同 一運(yùn)行的另一應(yīng)用以便進(jìn)行具有容錯(cuò)性和服務(wù)連續(xù)性的運(yùn)作。
在這 一 計(jì)數(shù)技術(shù)中使用系統(tǒng)調(diào)用指令作為用于指令計(jì)數(shù)的同步 點(diǎn)可能是有利的。因此這涉及到實(shí)施系統(tǒng)調(diào)用例程使得它們遞增系
統(tǒng)調(diào)用計(jì)數(shù)器。硬件計(jì)數(shù)器PMC對(duì)指令的計(jì)數(shù)因此可以作用于保持 較低的值,這改進(jìn)了它的性能。
圖3和圖4呈現(xiàn)了一種錄入時(shí)段SchJ的在重放處理器^ProZ中 的重放技術(shù)。圖3代表在處理器內(nèi)的被重放任務(wù)TR的最近狀態(tài)TR 至TR4。圖4代表用來(lái)實(shí)施這樣的重放的方法的流程圖。視實(shí)施例 或者使用參數(shù)而定,也可以根據(jù)與用于不同重放處理器的原理相同 的原理,在與例如用于應(yīng)用跟蹤類型的運(yùn)作管理的錄入處理器相同 的處理器中完成重放。
例如,在這樣的重放過(guò)程中,作為由可能加以〗奮改以便包括重 放代理RSCH的調(diào)度器SCH所調(diào)度的激活時(shí)段,所討論的任務(wù)TJ 利用它在所提及的處理器中的上下文來(lái)加以恢復(fù),然后釋放這一任 務(wù)(41 )并且起動(dòng)它的執(zhí)行。
為了能夠在與完成錄入的計(jì)算機(jī)系統(tǒng)不同的重放計(jì)算機(jī)系統(tǒng)中 加以恢復(fù)和執(zhí)行,任務(wù)或者應(yīng)用所能訪問(wèn)的所有或者部分資源必須 凈皮虛擬化(即例如以虛擬方式^皮實(shí)例化或者一皮重建),以^便針對(duì)重 放的應(yīng)用以與在錄入時(shí)相同的方式來(lái)表現(xiàn)。 一般涉及到的項(xiàng)是用于 線程或者進(jìn)程的任務(wù)標(biāo)識(shí)符TIP或者PID以及應(yīng)用所訪問(wèn)的并且視 主機(jī)系統(tǒng)而定的大部分資源。這 一 虛擬化在重放任務(wù)或者應(yīng)用開始 時(shí)加以執(zhí)行,并且根據(jù)在錄入過(guò)程中存儲(chǔ)的數(shù)據(jù)在重放過(guò)程中加以 修改以便以與在錄入過(guò)程中相同的方式改變。
有利地,在內(nèi)核模式下完成這一虛擬化,這特別地實(shí)現(xiàn)了避免 它的操作在性能計(jì)數(shù)器PMC對(duì)指令進(jìn)行計(jì)數(shù)時(shí)被納入考慮之中。
Intel公司的文檔規(guī)定了歸因于硬件中斷的誤差限于加上或者減
去一個(gè)指令的相對(duì)誤差。對(duì)于包括至多一個(gè)單硬件中斷(即造成它 的關(guān)閉的中斷)的錄入確定性時(shí)段而言,監(jiān)視需要將計(jì)數(shù)器PMC的
下述兩個(gè)值納入考慮之中在重放時(shí)段開始時(shí)的值和在監(jiān)視點(diǎn)處的 值。最大相對(duì)誤差因此是加上或者減去兩個(gè)指令。
在用于重放錄入任務(wù)TJ的重放任務(wù)TR的整個(gè)執(zhí)行中,重放代 理RSCH監(jiān)視通過(guò)讀取RDPMC進(jìn)行重放的處理器^ProZ的計(jì)數(shù)器 PMC并且比較這一讀數(shù)和與這一錄入任務(wù)TJ相對(duì)應(yīng)的錄入凄史據(jù) IdJ、 NJ、 SGJ來(lái)監(jiān)視退役指令的數(shù)目。安排這一監(jiān)視是為了一旦達(dá) 到其在這一重放執(zhí)行中的順序值等于NJ-2的指令就中斷重放任務(wù) TR的執(zhí)行。例如通過(guò)在預(yù)期值對(duì)計(jì)數(shù)器PMC的溢出進(jìn)行編程來(lái)完 成這一中斷。
由于上文引用的第四限制性特征,可以通過(guò)以某一裕度對(duì)溢出 進(jìn)行編程(41,圖4)來(lái)補(bǔ)償在溢出與中斷之間存在的延時(shí),以便確 信在預(yù)期值NJ-2之前產(chǎn)生中斷。這一裕度取決于實(shí)-驗(yàn)并且可以例如 是50個(gè)指令的級(jí)別。
因此在NJ-50與NJ-20之間的指令數(shù)目時(shí)中斷重方文時(shí)段SchR的 初始執(zhí)行。重放代理RSCH然后在與簽名SGJ中存儲(chǔ)的指令指針的 值IPJ相對(duì)應(yīng)的程序指令BKI上在重放任務(wù)TR的可執(zhí)行文件內(nèi)設(shè)置
(42) 執(zhí)行斷點(diǎn)BK。然后重新起動(dòng)執(zhí)行直至被這一斷點(diǎn)BK中斷
(43) ,繼續(xù)測(cè)試(44)來(lái)自計(jì)數(shù)器PMC的指令的數(shù)目,直至重放 指令的數(shù)目大于或者等于錄入指令的數(shù)目減去兩個(gè)指令,即NR-NJ-2。
錄入時(shí)段SchJ的實(shí)際結(jié)束的準(zhǔn)確位置由此位于具有相應(yīng)順序值 NJ-1至NJ+2的四次后續(xù)單位指令執(zhí)行InstrO至Instr3中,即處于在 相較于這一同一時(shí)段SchJ的假設(shè)結(jié)束的位置NJ而言減去二與加上 二之間包含的相對(duì)位置。
確認(rèn)階段40 (圖4)然后實(shí)現(xiàn)通過(guò)在簽名SGJ與根據(jù)重放任務(wù) TR在后續(xù)單位指令執(zhí)行Instrl至Instr4之后的狀態(tài)TR1至TR4以同 一方式計(jì)算的值SG1至SG4 (圖3)之間的比較來(lái)確定這一實(shí)際位
置。
在這一確認(rèn)階段開始時(shí),重放代理檢查(45)根據(jù)重放任務(wù)TR 緊接在先前監(jiān)視所引起的中斷之后的狀態(tài)而計(jì)算的重放簽名SGR的 值SG0。
才艮據(jù)本發(fā)明,如果SGJ和SG0不對(duì)應(yīng),則任務(wù)TR的執(zhí)行:故重 新起動(dòng)并且在這一斷點(diǎn)指令BKI的第一次新的執(zhí)行TR2上停止 (46)。
然而關(guān)于這一新的停止位置TR2可能有不確定度,例如錄入任 務(wù)TJ在被掛起之前是否已經(jīng)通過(guò)數(shù)次執(zhí)行這一斷點(diǎn)指令BKI來(lái)進(jìn)行 很短的循環(huán)。在這一斷點(diǎn)指令BKI上的執(zhí)行的各間斷TR2、 TR4處, 重迖文代理再次驗(yàn)證(47 )簽名SGJ和SGR的匹配并且重新起動(dòng)扭J亍 直至獲得這一匹配。當(dāng)簽名對(duì)應(yīng)時(shí)(在本例中SGJ-SG4),意味著 斷點(diǎn)指令BKI的最后執(zhí)行Instr4對(duì)應(yīng)于在錄入時(shí)段SchJ中錄入的最 后操作。重放代理然后關(guān)閉(48)重放時(shí)段SchR。
本發(fā)明也設(shè)想一種安全機(jī)制,例如測(cè)試49,該測(cè)試中斷重i文TR 并且在某一數(shù)目的具體指令執(zhí)行之后(例如在八次單位指令執(zhí)行結(jié) 束時(shí))返回(401)重放錯(cuò)誤以便避免在錯(cuò)誤的情況下無(wú)限循環(huán)。
為了例如在與錄入應(yīng)用APPJ相對(duì)應(yīng)的重》文應(yīng)用APPR (圖5) 的重放時(shí)重放多個(gè)錄入時(shí)段,重放代理RSCH連續(xù)地讀取日志 JpProX的不同行并且使用這些行中的各行以4更重放與有關(guān)行相對(duì)應(yīng) 的激活時(shí)段。
如圖5中所示,通過(guò)在重放處理器uProZ中執(zhí)行的日志讀取任 務(wù)T>ProZ直接接收TRANS或者本地讀取MEM這一 日志J|iProX的
不同行。
這一 日志JiaProX中各自與錄入時(shí)段相對(duì)應(yīng)的所有行然后以它們 被錄入的次序而^皮傳輸?shù)紽IFO型的重方文隊(duì)列QJ(iProZ。在這一隊(duì)列 的輸出處,重放代理RSCH使用這些日志行中的各行以使它所代表 的時(shí)段由與錄入任務(wù)TA、 TB和TC相對(duì)應(yīng)的重放任務(wù)TA,、 TB,和 TC,加以重i文。
為了進(jìn)行這些時(shí)段在重放處理器^ProZ內(nèi)的調(diào)度,重放代理 RSCH在無(wú)語(yǔ)義變化的情況下與調(diào)度器SCH在標(biāo)準(zhǔn)系統(tǒng)軟件中存在 時(shí) 一 樣地使用它的運(yùn)作。這 一 方面特別地實(shí)現(xiàn)了維持與在同 一 處理 器中執(zhí)行的其它TNM,任務(wù)的兼容性。為了獲得與在錄入的同時(shí)相同 的調(diào)度而不干擾調(diào)度器SCH的正常運(yùn)作,重放代理RSCH僅要求阻 止(55b, 55c)各重放任務(wù)TB,、 TB,的釋放,只要它們的標(biāo)識(shí)符TID 或者PID不對(duì)應(yīng)于在它必須獲得其重;^文的行中存儲(chǔ)的標(biāo)識(shí)符idA。
正如在上文引用的申請(qǐng)中描述的那樣,用于確定性時(shí)段的錄入 和重放的這些技術(shù)實(shí)現(xiàn)了優(yōu)化運(yùn)作管理應(yīng)用在一個(gè)或者多個(gè)單處理
器計(jì)算機(jī)內(nèi)的性能和功能性。
在比如多處理器計(jì)算機(jī)或者包括并行工作的多個(gè)計(jì)算機(jī)的網(wǎng)絡(luò) 這樣的并行架構(gòu)情況下,使用可由多個(gè)任務(wù)訪問(wèn)的共享資源增添了 非確定性起因,該起因可能是在這一運(yùn)作管理的背景下顯著性能損 失的起源或者甚至是無(wú)法實(shí)施某些重要和有用功能的起源。
為了去除所有或者一些這些非確定性起因,本發(fā)明提出一種如 下方法,該方法實(shí)現(xiàn)了管理或者控制對(duì)共享資源、特別是直接訪問(wèn) 資源的訪問(wèn),使得各任務(wù)可以在它被系統(tǒng)激活的整個(gè)時(shí)段都獲得對(duì) 共享資源的獨(dú)占性訪問(wèn)。
在圖6中圖示了并行多處理器環(huán)境的運(yùn)作例子,該環(huán)境在例如 Linux型系統(tǒng)這樣的多處理器環(huán)境下包括第一處理器pProX和第二 處理器^ProY。這兩個(gè)處理器各自可以在單個(gè)工作存儲(chǔ)器空間RAM 內(nèi)分別并行執(zhí)行任務(wù)TA和TB,并且通過(guò)調(diào)度器來(lái)加以協(xié)調(diào)。在各 任務(wù)TA和TB的激活時(shí)段期間,將在處理器pProX、 pProY中執(zhí)行 來(lái)自它的程序EXEA、 EXEB的指令序列SchA、 SchB。在來(lái)自這一 序列的指令I(lǐng)nstrA、 InstrB的執(zhí)行過(guò)程中,處理器將能夠使用在它內(nèi) 部的資源,比如寄存器RegA、 RegB、棧PilA、 PilB。
在工作存儲(chǔ)器RAM內(nèi)數(shù)個(gè)共享存儲(chǔ)器區(qū)ShMPi至ShMPk例如 按照"映射,,型指令來(lái)定義并且直接按照它們的物理地址可由不同任 務(wù)TA和TB訪問(wèn)。
圖6圖示了現(xiàn)有技術(shù)的如下情形,在該情形中任務(wù)TA和TB在 公共時(shí)段被并行執(zhí)行并且各自包括請(qǐng)求對(duì)單個(gè)共享存儲(chǔ)器區(qū)ShMPi 進(jìn)4亍訪問(wèn)的指令I(lǐng)nstrA和InstrB。這兩個(gè)訪問(wèn)請(qǐng)求將由各處理器的存 儲(chǔ)器管理器單元MMU以獨(dú)立方式加以處理(11, 13)并且將彼此 獨(dú)立地到達(dá)(12, 14)這一共享存儲(chǔ)器區(qū)。
對(duì)于僅可從某些系統(tǒng)調(diào)用型指令來(lái)訪問(wèn)的資源,有可能實(shí)施進(jìn) 行這些指令的系統(tǒng)例程,即修改這些例程或者把截獲這些系統(tǒng)調(diào)用 或者對(duì)這些系統(tǒng)調(diào)用做出反應(yīng)的單元插入到系統(tǒng)中。在通過(guò)錄入和 重放所進(jìn)行的運(yùn)作管理背景下,這一實(shí)施可以特別地實(shí)現(xiàn)對(duì)它們行 為的記錄以便能夠以后相同地重放或者修改這一行為使得它變得具 確定性并且無(wú)需加以記錄。
反言之,對(duì)于無(wú)需系統(tǒng)調(diào)用、因此潛在地從任何程序指令可直 接訪問(wèn)的資源,大多數(shù)操作系統(tǒng)、特別是Unix或者Linux型操作系 統(tǒng)不能實(shí)現(xiàn)控制這些訪問(wèn)到達(dá)這 一 共享存儲(chǔ)器區(qū)ShMPi的級(jí)別。
為了解決這一問(wèn)題,如圖7和圖8中所示,本發(fā)明提出修改某 些系統(tǒng)軟件單元的代碼或者添加某些其它代碼以便修改或者拓展當(dāng) 前用于其它功能的某些現(xiàn)存硬件功能。
具體而言,有可能通過(guò)修改Unix或者Linux型系統(tǒng)軟件的少量 單元而不修改當(dāng)前處理器的硬件特征來(lái)解決這一問(wèn)題。因此有可能
軟件帶來(lái)增添功能J而l損于它們的^上兼容性的少許修改來(lái)^行 和管理略有修改或者未經(jīng)修改的多任務(wù)應(yīng)用。
本發(fā)明為此使用在許多新近微處理器中存在的某些機(jī)制,這些 微處理器比如是在PC型的架構(gòu)中使用的處理器,例如Intel公司的 Pentium處理器或者AMD公司的Athlon處理器。特別是自Pentium 2 起的這些處理器在它們的存儲(chǔ)器管理單元內(nèi)集成了虛擬存儲(chǔ)器管理 機(jī)制。使用這一機(jī)制是為了將工作存儲(chǔ)器中定義的某些頁(yè)面在它們 不被使用時(shí)"卸載"到硬盤上并且將它們存儲(chǔ)于此以便釋放物理存儲(chǔ) 器內(nèi)的對(duì)應(yīng)空間。對(duì)于當(dāng)前運(yùn)行的應(yīng)用,在工作存儲(chǔ)器中仍然列出
這些頁(yè)面,但是必須從硬盤到該物理存儲(chǔ)器中再次"加載"它們以便 任務(wù)能夠?qū)嶋H訪問(wèn)該頁(yè)面。
為了管理這一虛擬存儲(chǔ)器,如圖8中所示,系統(tǒng)軟件包括虛擬
存儲(chǔ)器管理器VMM,該VMM針對(duì)可虛擬化存儲(chǔ)器的各頁(yè)面在各不 同應(yīng)用進(jìn)程中創(chuàng)建頁(yè)面表?xiàng)l目("P.T.E.,,)。由此,對(duì)于各自以進(jìn)程 形式來(lái)執(zhí)行的、即具有專屬于它的執(zhí)行上下文的兩個(gè)任務(wù)TA和TB, 頁(yè)面ShMPi至ShMPk將各自獲得在任務(wù)TA的進(jìn)程中的頁(yè)面表?xiàng)l目 PTEiA至PTEkA以及在任務(wù)TB的進(jìn)程中的頁(yè)面條目表PTEiB至 PTEkB。
虛擬存儲(chǔ)器管理器VMM包括頁(yè)面加載器軟件PL,該P(yáng)L加載 和卸載存儲(chǔ)器頁(yè)面到硬盤上的"交換"文件中,例如在Microsoft 7>司 的Windows系統(tǒng)中具有擴(kuò)展名".swp"的文件。在ShMPi頁(yè)面的每次 加載或者卸載過(guò)程中,它在物理存儲(chǔ)器中的存在或者不存在狀態(tài)由 VMM管理器存儲(chǔ)和維護(hù)(30)于與它相對(duì)應(yīng)的各頁(yè)面表?xiàng)l目PTEiA 和PTEiB中。在這些表PTEiA和PTEiB中,這一存在狀態(tài)分別以數(shù) 據(jù)位PriA和PriB的形式來(lái)存儲(chǔ),值為1表示存在而值為O表示不存 在。
在各處理器pProX和pProY內(nèi),存儲(chǔ)器管理器MMUX或者 MMUY包括頁(yè)面故障中斷機(jī)制PFIntX或者PFIntY,通過(guò)該才幾制來(lái) 傳遞源自于所執(zhí)行的程序指令I(lǐng)nstrA或者InstrB的任何訪問(wèn):清求。 如果來(lái)自由處理器pProX的任務(wù)TA的指令I(lǐng)nstrA請(qǐng)求(33 )與存 儲(chǔ)器頁(yè)面ShMPi有關(guān)的訪問(wèn),則處理器的中斷機(jī)制PFIntX通過(guò)讀取 這一頁(yè)面在對(duì)應(yīng)條目表PTEiA中的存在位PriA的值來(lái)驗(yàn)證該頁(yè)面是 否存在于物理存儲(chǔ)器RAM中。
如果這一位PriA指示了頁(yè)面的存在,則中斷機(jī)制PFIntX批準(zhǔn)訪 問(wèn)。在相反情況下,中斷機(jī)制PFINtA中斷任務(wù)TA的執(zhí)行并且將錯(cuò) 誤參數(shù)發(fā)送到在系統(tǒng)軟件的虛擬存儲(chǔ)器管理器VMM中包含的"頁(yè)面 故障處理器"軟件代理PFH。這一故障處理器PFH然后被執(zhí)行并且管 理這一錯(cuò)誤在系統(tǒng)軟件和相對(duì)應(yīng)用內(nèi)的結(jié)果。
圖7圖示了如何修改和改變或者轉(zhuǎn)換這些現(xiàn)存機(jī)制以便根據(jù)本 發(fā)明管理對(duì)共享資源的訪問(wèn)。
為了管理來(lái)自在這樣的并行環(huán)境下^丸行的應(yīng)用APP的這些訪
問(wèn),如圖7中所示,起動(dòng)器軟件LCH被用來(lái)起動(dòng)這一應(yīng)用例如在 Unix或者Linux型的系統(tǒng)中的執(zhí)行。在應(yīng)用APP的起動(dòng)時(shí),以如下 進(jìn)程的形式利用第一任務(wù)TA來(lái)創(chuàng)建該應(yīng)用APP,該進(jìn)程包括執(zhí)行 "線程"ThrAl并且使用形成任務(wù)描述符TDA的數(shù)據(jù)表。
在這一任務(wù)描述符TDA內(nèi),起動(dòng)器存儲(chǔ)(21 )如下事實(shí)必須 通過(guò)將通常未用數(shù)據(jù)位(這里稱為管理位MmA)的狀態(tài)修改成1來(lái) 管理或者"監(jiān)視"這一任務(wù)TA。
在形成頁(yè)面存儲(chǔ)器結(jié)構(gòu)PMStrA的數(shù)據(jù)表中在任務(wù)TA內(nèi)列出在 這里限定為共享存儲(chǔ)器頁(yè)面ShMPi、 ShMPj和ShMPk的在工作存儲(chǔ) 器中的不同共享存儲(chǔ)器區(qū)。在這一結(jié)構(gòu)PMStrA中,以頁(yè)面表?xiàng)l目 PTEiAl至PTEkAl的形式來(lái)描述和更新共享頁(yè)面,其中各條目并入 有如前所述由虛擬存儲(chǔ)器管理器VMM使用的數(shù)據(jù)位PriAl至 PrKAl。通常,這一頁(yè)面結(jié)構(gòu)PMStrA與任務(wù)TA同時(shí)被創(chuàng)建,并且 通過(guò)確保共享存儲(chǔ)器中任何變化的不同系統(tǒng)例程(比如"映射,,型的 例程)隨同這些變化一起被更新(20)。
在受管理的應(yīng)用APP的執(zhí)行過(guò)程中,可以通過(guò)來(lái)自這一第一任 務(wù)TA或者來(lái)自以相同方式創(chuàng)建的其它任務(wù)的"創(chuàng)建"型指令CRE來(lái) 創(chuàng)建其它任務(wù)。任何新創(chuàng)建的任務(wù)TB也可以包括線程TrBl和任務(wù) 描述符TB以及頁(yè)面存儲(chǔ)器結(jié)構(gòu)PMStrB。通過(guò)源于它的父任務(wù)的繼 承關(guān)系INH,新頁(yè)面存儲(chǔ)器結(jié)構(gòu)PMStrB也包括以相同方式維持最新 的不同頁(yè)面表?xiàng)l目PTEiBl至PTEkBl,這些條目具有它們的存在位 PriBl至PrkBl。
在從受監(jiān)視的任務(wù)TA創(chuàng)建CRE新任務(wù)TB時(shí),新任務(wù)描述符 TDB也包括管理位MmB,該管理位的值是從來(lái)自父任務(wù)的管理位 MmA的il繼岸義INH的。
在受管理的應(yīng)用APP的執(zhí)行過(guò)程中,可以在起初以具有單個(gè)線
程THrBl的進(jìn)程的形式來(lái)運(yùn)作的任務(wù)TB內(nèi)創(chuàng)建其它線程。
在現(xiàn)存的受監(jiān)視的任務(wù)TB內(nèi),通過(guò)系統(tǒng)調(diào)用如"克隆"指令來(lái)創(chuàng) 建任何新線程ThrB2。通常,形式為多線程進(jìn)程的任務(wù)在它的頁(yè)面結(jié) 構(gòu)PMStrB內(nèi)僅包括一組條目表PTEiBl至PTEkBl。根據(jù)本發(fā)明, 能夠創(chuàng)建新線程的任何系統(tǒng)例程如"克隆"系統(tǒng)調(diào)用的運(yùn)作例如通過(guò) 在它之中結(jié)合一個(gè)補(bǔ)充部分CSUP來(lái)加以修改。這一修改被設(shè)計(jì)為 使得在現(xiàn)存任務(wù)TB中創(chuàng)建任何新線程ThrB2都包括讀取(22 )現(xiàn)存 的一組表PTEiBl至PTEkBl以及創(chuàng)建(23)與相同共享頁(yè)面ShMPI 至ShMPk相對(duì)應(yīng)并且針對(duì)新線程ThrB2來(lái)運(yùn)作的新的一組頁(yè)面表?xiàng)l 目PTEiB2至PTEkB2。正如在相同申請(qǐng)人的專利FR 2 820 221中描 述的那樣,這 一 修改例如可以通過(guò)在系統(tǒng)內(nèi)加載共享庫(kù)而使用動(dòng)態(tài) 插入技術(shù)實(shí)施這些例程CLONE來(lái)完成。
以如下方式來(lái)完成這一創(chuàng)建,該方式確保了新表PTEiB2至 PTEkB2以與它們的父表PTEiBl至PTEkBl相似的方式也維持為最 新(24, 25),這或者通過(guò)對(duì)它們進(jìn)行登記以^便將它們更新到管理 這一更新的系統(tǒng)例程MAP中來(lái)完成,或者例如也通過(guò)在這些系統(tǒng)例 程MAP中結(jié)合補(bǔ)充部分MSUP而實(shí)施這些系統(tǒng)例程來(lái)完成。
圖8圖示了使用這一結(jié)構(gòu)的訪問(wèn)管理的運(yùn)作,其中該結(jié)構(gòu)被應(yīng) 用于包括在兩個(gè)處理器^ProX和^ProY中并行執(zhí)行的兩個(gè)單線程任 務(wù)TA和TB的例子。應(yīng)當(dāng)注意,將頁(yè)面表?xiàng)l目PTE的結(jié)構(gòu)擴(kuò)展到在 各任務(wù)內(nèi)克隆的各線程ThrB2也實(shí)現(xiàn)了以同一方式管理來(lái)自屬于受 監(jiān)視的任務(wù)的所有線程的任何訪問(wèn),無(wú)論這些任務(wù)是單線程的還是 多線程的。
在這里描述的實(shí)施例中,安排根據(jù)本發(fā)明的訪問(wèn)管理是為了就 進(jìn)程TA或者TB而言以及就各線程ThrB 1或者ThrB2而言向各任務(wù) 保證其對(duì)共享存儲(chǔ)器頁(yè)面的訪問(wèn)在激活時(shí)段的整個(gè)持續(xù)時(shí)間內(nèi)都是 獨(dú)占性的,其中在該激活時(shí)段期間共享存儲(chǔ)器頁(yè)面的連貫性(或者 一致性)由系統(tǒng)軟件保證。這樣的時(shí)段在這里被描述為由系統(tǒng)軟件 的調(diào)度器SCH分配和管理的激活時(shí)段。不言而喻可以在同一精神下
選擇其它類型的連貫時(shí)段。
另外,在這里以定義為具體存儲(chǔ)器區(qū)或者存儲(chǔ)器頁(yè)面的共享存 儲(chǔ)器的形式來(lái)描述所受訪問(wèn)被管理或者被控制的共享資源。同 一概 念也可以借助與資源相對(duì)應(yīng)的系統(tǒng)例程的相似實(shí)施而應(yīng)用于其它類 型的資源。
本發(fā)明的實(shí)施可以包括修改系統(tǒng)軟件的某些單元,^吏得它們?nèi)?下文描述的那樣運(yùn)作。必要的修改級(jí)別當(dāng)然可以視系統(tǒng)軟件的類型
或者版本而變化。在Linux型系統(tǒng)的情況下,這些修改一般包括如 先前描述的"克隆"和"映射"型例程的實(shí)施以及在產(chǎn)生調(diào)度器SCH、 頁(yè)面故障處理器PFH和頁(yè)面加載器PL的代理內(nèi)的修改和代碼添加。 有待加以修改以產(chǎn)生這里所述的訪問(wèn)控制類型的系統(tǒng)功能性可以有 利地構(gòu)成相較于標(biāo)準(zhǔn)系統(tǒng)的功能性而言的純粹擴(kuò)展,即無(wú)需去除功 能性或者至少無(wú)損于為標(biāo)準(zhǔn)系統(tǒng)版本而開發(fā)的應(yīng)用的向上兼容性。
另外,雖然使用在用于虛擬存儲(chǔ)器管理的處理器中設(shè)想的硬件 機(jī)制,但是所述訪問(wèn)控制可能并不 一 定需要這 一 虛擬存儲(chǔ)器的去激 活并且可以與它兼容。頁(yè)面加載器PL可以例如被實(shí)施或者修改為使 得如果虛擬頁(yè)面ShMPi已經(jīng)被另一任務(wù)TA使用則受監(jiān)視的任務(wù)TB 在這一頁(yè)面的存在位PriB中并不反映這一頁(yè)面到物理存儲(chǔ)器RAM 中的加載。
如圖8中所示,在任務(wù)TA的激活時(shí)段SchA之一開始時(shí),調(diào)度 器SCH在時(shí)刻SCHAL釋放任務(wù)TA。在釋放這一任務(wù)之前,調(diào)度器 SCH測(cè)試(31 )這一任務(wù)TA的管理位MmA以確定是否必須對(duì)該任 務(wù)施加訪問(wèn)控制。如果必須對(duì)該任務(wù)施加訪問(wèn)控制,則調(diào)度器SCH 然后會(huì)將與這 一 訪問(wèn)控制器所涉及的所有共享頁(yè)面相對(duì)應(yīng)的頁(yè)面表 條目PTEiA至PTEkA的所有存在位PriA至PrkA設(shè)置為0 ( 32 ), 以便這一任務(wù)TA的任何訪問(wèn)請(qǐng)求對(duì)于能夠執(zhí)行這一任務(wù)TA的所有 處理器nProX都會(huì)在中斷機(jī)制PFIntX中缺省地引起頁(yè)面錯(cuò)誤。
在處理器^ProX內(nèi)的這一激活時(shí)段SchA期間,指令I(lǐng)nstrA請(qǐng)求 (33)對(duì)共享存儲(chǔ)器頁(yè)面ShMPi的訪問(wèn)。由于對(duì)應(yīng)存在位PriA為0,
所以處理器i^ProX的中斷機(jī)制PFIntX掛起這一訪問(wèn)請(qǐng)求的執(zhí)行并且 調(diào)用系統(tǒng)軟件的故障頁(yè)面處理器PFH,同時(shí)向它發(fā)送有關(guān)頁(yè)面和任 務(wù)的標(biāo)識(shí)。
當(dāng)處理這一錯(cuò)誤時(shí),頁(yè)面故障處理器PFH的補(bǔ)充功能性PFHSUP 因此在如下數(shù)據(jù)表內(nèi)進(jìn)行測(cè)試和/或修改,該數(shù)據(jù)表在系統(tǒng)軟件的虛 擬存儲(chǔ)器管理器VMM內(nèi)形成內(nèi)核存儲(chǔ)器結(jié)構(gòu)KMStr ("內(nèi)核存儲(chǔ)器 結(jié)構(gòu)")代理。
通常,這一內(nèi)核存儲(chǔ)器結(jié)構(gòu)KMStr以單義的方式為全部工作環(huán) 境或者全部工作存儲(chǔ)器存儲(chǔ)如下數(shù)據(jù),該數(shù)據(jù)代表了存儲(chǔ)器資源及 其發(fā)展的結(jié)構(gòu)。根據(jù)本發(fā)明,這一內(nèi)核存儲(chǔ)器結(jié)構(gòu)KMStr也包括在 這里稱為訪問(wèn)位KSi、 KSj和KSk的一組數(shù)據(jù)位,這些數(shù)據(jù)位對(duì)于各 有關(guān)共享頁(yè)面ShMPi至ShMPk而言代表了如下事實(shí)目前向任務(wù)準(zhǔn) 予(該位為1 )或者不準(zhǔn)予(該位為0)對(duì)這一頁(yè)面的訪問(wèn)。
當(dāng)頁(yè)面故障處理器PFH處理處理器pProX所發(fā)送的錯(cuò)誤時(shí),它 查詢(34)與有關(guān)ShMPi頁(yè)面相對(duì)應(yīng)的訪問(wèn)位KSi。如果這一訪問(wèn) 位不指示任何當(dāng)前訪問(wèn),則它修改(34)這一訪問(wèn)位KSi以便存儲(chǔ) 它準(zhǔn)予對(duì)這一頁(yè)面的訪問(wèn),并且也^"改(35)與請(qǐng)求任務(wù)TA相對(duì)應(yīng) 的存在位PriA (將該位改變?yōu)?)以便存儲(chǔ)如下事實(shí)這一任務(wù)TA 現(xiàn)在具有對(duì)有關(guān)頁(yè)面ShMPPi的獨(dú)占性訪問(wèn)。
應(yīng)當(dāng)注意,內(nèi)核存儲(chǔ)器結(jié)構(gòu)KMStr的訪問(wèn)位KSI的這些測(cè)試和 修改操作構(gòu)成了以原子(atomic)方式來(lái)實(shí)施的操作34,即確保即 使在多處理器環(huán)境下也仍然要么完全地實(shí)現(xiàn)該操作要么完全不實(shí)現(xiàn) 該操作。
一旦頁(yè)面故障處理器PFInt已經(jīng)確定了關(guān)于所^清求的頁(yè)面ShMPi 的獨(dú)占性的歸屬,它就重新起動(dòng)指令I(lǐng)nstrA的執(zhí)行使得它實(shí)際訪問(wèn) (36)這一頁(yè)面的內(nèi)容。
此后,如果來(lái)自由另一處理器^ProY并行執(zhí)行的任何另一受監(jiān) 牙見的任務(wù)TB的指令I(lǐng)nstrB請(qǐng)求(37)對(duì)這一已經(jīng)確定歸屬的頁(yè)面 ShMPi的訪問(wèn),則這一處理器的中斷機(jī)制PFIntY也將查詢這一頁(yè)面 中用于請(qǐng)求任務(wù)TB的存在位PriB。由于任務(wù)TB是受監(jiān)視的任務(wù), 所以所查詢的存在位PriB處于不存在位置(值為0 )。中斷機(jī)制PFIntY 因此將終止請(qǐng)求指令I(lǐng)nstrB并且發(fā)送(38)錯(cuò)誤到頁(yè)面故障處理器 PFH。
此時(shí),這一頁(yè)面故障處理器PFH注意到這一頁(yè)面的訪問(wèn)位KSi 為1,指示了已經(jīng)將對(duì)于這一頁(yè)面ShMPi的獨(dú)占性準(zhǔn)予給另一任務(wù)。 頁(yè)面故障處理器PFH因此將例如通過(guò)結(jié)束請(qǐng)求任務(wù)TB的激活時(shí)段 來(lái)啟動(dòng)(39 )將整個(gè)請(qǐng)求任務(wù)TB掛起到系統(tǒng)軟件上下文改變管理器 中。在它的下一激活時(shí)段期間,這一任務(wù)TB因此會(huì)把它的執(zhí)行準(zhǔn)確 地重復(fù)到它被中斷過(guò)的點(diǎn)并且將能夠再一次嘗試訪問(wèn)該同一頁(yè)面 ShMPi 。
在請(qǐng)求任務(wù)是屬于多線程進(jìn)程的線程ThrB2 (圖7)的情況下, 這一單個(gè)線程ThrB2所特有的一組頁(yè)面表?xiàng)l目PTEiB2的存在使得僅 掛起請(qǐng)求對(duì)已經(jīng)在獨(dú)占性訪問(wèn)中分配的頁(yè)面進(jìn)行訪問(wèn)的線程而不掛 起不會(huì)與這一獨(dú)占性相沖突的其它線程ThrBl 。
在各任務(wù)的激活時(shí)段ScliA完成SCHAS時(shí),調(diào)度器掛起這一任 務(wù)的執(zhí)行并且備份它的執(zhí)行上下文。
關(guān)于這一掛起SCHAS或者關(guān)于對(duì)已經(jīng)分配的頁(yè)面請(qǐng)求的掛起 (39),本發(fā)明也設(shè)想了這一任務(wù)所收到的獨(dú)占性訪問(wèn)所針對(duì)的所 有共享存儲(chǔ)器頁(yè)面的釋放階段。由此,如果調(diào)度器SCH通過(guò)管理位 MmA注意到(301)在掛起過(guò)程中的任務(wù)TA受到監(jiān)視,則它掃描 這一任務(wù)的所有頁(yè)面表?xiàng)l目PTEiA至PTEkA以通過(guò)查詢不同存在位 PriA至PrKA的狀態(tài)來(lái)確定該任務(wù)具有對(duì)哪些頁(yè)面的獨(dú)占性訪問(wèn)。 基于這一信息,它然后將通過(guò)在內(nèi)核存儲(chǔ)器結(jié)構(gòu)KMStr中把所有這 些頁(yè)面ShMPi的訪問(wèn)位KSi重置為0來(lái)釋放所有這些頁(yè)面ShMPi。
在其它未述及的變型中,也有可能例如通過(guò)在單個(gè)任務(wù)描述符 內(nèi)設(shè)想數(shù)個(gè)管理位而將管理或者監(jiān)視的概念分離為數(shù)種管理類型。 因此可以監(jiān)視任務(wù)以便就某些任務(wù)類別而言使任務(wù)受益于獨(dú)占性訪 問(wèn)。類似地,可以僅就某些任務(wù)類別而言排除任務(wù)。
為請(qǐng)求這一 頁(yè)面的第 一任務(wù)獲得對(duì)該頁(yè)面的獨(dú)占而不干擾由此掛起 的其它任務(wù)的執(zhí)行連貫性。
通過(guò)避免對(duì)同時(shí)執(zhí)行的兩個(gè)任務(wù)所共享的單個(gè)存儲(chǔ)器區(qū)的任何 修改,因此這避免了在這一存儲(chǔ)器區(qū)的內(nèi)容有變時(shí)在它們之間的任 何沖突。從用于這一存儲(chǔ)器區(qū)的給定初始狀態(tài)起,在訪問(wèn)該存儲(chǔ)器 區(qū)的任務(wù)的各激活時(shí)段開始時(shí),它的內(nèi)容的變化由此僅依賴于這一 任務(wù)在這 一 激活時(shí)段期間的動(dòng)作。對(duì)于由這 一 任務(wù)例如在調(diào)度的激 活時(shí)段所執(zhí)行的給定指令序列,并且通過(guò)從已知的初始狀態(tài)開始, 由此有可能獲得相對(duì)于這一任務(wù)而言具確定性并且可重復(fù)的這一序 列的執(zhí)行。
特別是由于將原子操作用于存儲(chǔ)對(duì)于所訪問(wèn)的存儲(chǔ)器區(qū)的獨(dú)占 性的分配,所以該方法實(shí)現(xiàn)了避免或者減少在竟相尋求訪問(wèn)的多個(gè) 任務(wù)之間共享的單個(gè)資源的死鎖風(fēng)險(xiǎn)。
有利地,當(dāng)把在這一時(shí)段的其余時(shí)間對(duì)共享存儲(chǔ)器頁(yè)面ShMPi 的獨(dú)占性訪問(wèn)歸屬于訪問(wèn)任務(wù)TA時(shí),頁(yè)面故障處理器PFH、PFHSUP 可以預(yù)備代表這一 歸屬的錄入數(shù)據(jù)。這一錄入數(shù)據(jù)包括這一獨(dú)占性 訪問(wèn)所歸屬于的任務(wù)TA的標(biāo)識(shí)以及可能包括如下其它補(bǔ)充數(shù)據(jù),該 補(bǔ)充數(shù)據(jù)應(yīng)用于上下文或者代表了請(qǐng)求指令I(lǐng)nstrA在有關(guān)任務(wù)TA 的執(zhí)行中的位置以及在所得獨(dú)占性訪問(wèn)的持續(xù)時(shí)間中這一任務(wù)TA 所執(zhí)行的指令的數(shù)目。
在系統(tǒng)軟件內(nèi),可以在如下訪問(wèn)日志中對(duì)這一錄入數(shù)據(jù)進(jìn)4亍分 組,該訪問(wèn)日志代表了在某一時(shí)間段或者某一執(zhí)行時(shí)段期間確定歸 屬的一連串獨(dú)占性訪問(wèn)。這一日志特別地包括如下有序數(shù)據(jù)集,該 數(shù)據(jù)集例如按照已經(jīng)獲得這些獨(dú)占性訪問(wèn)的一連串任務(wù)的PID或者 TID來(lái)標(biāo)識(shí)這些任務(wù)。受監(jiān)視的任務(wù)所訪問(wèn)的各資源因此可以使得 開始建立專屬于它的日志,并且對(duì)已經(jīng)獲得對(duì)這一資源的獨(dú)占性訪 問(wèn)的 一連串任務(wù)進(jìn)行分組。
通過(guò)將這些訪問(wèn)控制技術(shù)(圖7至圖8)與上述用于錄入確定性
時(shí)段的技術(shù)(圖1至圖5)以及與在上文引用的申請(qǐng)中描述的檢查點(diǎn) 設(shè)置以及錄入和重放技術(shù)相組合,本發(fā)明提出在并行架構(gòu)系統(tǒng)中也 實(shí)施前述不同類型的運(yùn)作管理。
圖9因此根據(jù)本發(fā)明圖示了多任務(wù)應(yīng)用APPJ在多處理器系統(tǒng) MP1上的錄入以及它根據(jù)需要在單處理器系統(tǒng)UP2中的重放。
對(duì)于錄入的應(yīng)用APPJ,錄入代理JSCH為各處理器pProX或者 jiProY錄入用于不同受監(jiān)視的任務(wù)TA、 TB和TC的一連串所有激活 時(shí)段。如上所述,它將這些任務(wù)分別作為隊(duì)列QJpProX和QJ(iProY 來(lái)單獨(dú)地發(fā)送。應(yīng)當(dāng)注意,如果任務(wù)在一個(gè)處理器中被執(zhí)行一次以 及在另 一處理器中被執(zhí)行一次,則用于這一任務(wù)的激活時(shí)段將存在 于兩個(gè)隊(duì)列中。
利用由錄入的應(yīng)用APPJ所訪問(wèn)的共享資源ShMPi至ShMPk, 錄入代理JVMM為這些資源中的各資源記錄如下錄入數(shù)據(jù),該數(shù)據(jù) 代表了針對(duì)這一資源而分配的 一連串獨(dú)占性訪問(wèn)。頁(yè)面故障處理器 PFH在虛擬存儲(chǔ)器管理器VMM內(nèi)連同它向不同任務(wù)所分配的獨(dú)占 性訪問(wèn) 一起生成這一獨(dú)占性訪問(wèn)錄入數(shù)據(jù)。
這 一 訪問(wèn)錄入數(shù)據(jù)的各次記錄特另ij地包括
-有關(guān)共享資源的單義標(biāo)識(shí)符,例如用于共享存儲(chǔ)器區(qū)的地址;
-獲得這一訪問(wèn)的任務(wù)的標(biāo)識(shí)符(PID或者TIP);
-例如通過(guò)這里描述的計(jì)數(shù)技術(shù)而獲得的這一獨(dú)占性訪問(wèn)的持 續(xù)時(shí)間;
-允許補(bǔ)償這一技術(shù)的不準(zhǔn)確性的補(bǔ)充數(shù)據(jù),例如前述簽名; -以及例如對(duì)于系統(tǒng)資源以及不同外部事件或者輸入/輸出事件
的虛擬化而言有用的某些補(bǔ)充數(shù)據(jù)。
這一錄入數(shù)據(jù)被發(fā)送到FIFO型的錄入隊(duì)列QJShMPi。 視實(shí)施例而定,有可能在一個(gè)或者多個(gè)日志文件中存儲(chǔ)這些隊(duì)
列QJ^ProX、 QJ(iProY、 QJ(iMPi的內(nèi)容例如以供以后使用。
不同錄入數(shù)據(jù)通過(guò)通信裝置如計(jì)算機(jī)通信網(wǎng)絡(luò)從這些隊(duì)列中被
發(fā)送到重放系統(tǒng)UP2。
來(lái)自各錄入隊(duì)列QJpProX、 QJjiProY、 QJpMPi的數(shù)據(jù)由與發(fā)出 隊(duì)列相對(duì)應(yīng)的重放隊(duì)列QR(iProX、 QR(iProY、 QR41MPi分別接收。
在這些重放隊(duì)列的輸出中,不同錄入處理器^ProX以及^ProY 的錄入數(shù)據(jù)根據(jù)訪問(wèn)錄入數(shù)據(jù)被組合在一起,以便恢復(fù)錄入的激活 時(shí)段和分配的(連續(xù))獨(dú)占性訪問(wèn)的組合串行。
在重放系統(tǒng)內(nèi),在定義這一重放串行或者重放調(diào)度之后,在重 放處理器中起動(dòng)重放的執(zhí)行。
應(yīng)當(dāng)注意, 一旦以不打破對(duì)這一重放串行的調(diào)度的方式在這些 重放處理器之間分布任務(wù),重放處理器的數(shù)目可能就不具有重要性 (除了會(huì)影響在重放時(shí)的性能之外)。
因此,由在多處理器系統(tǒng)MP1中的錄入應(yīng)用APPJ,有可能在重 放機(jī)器UP2中以重放任務(wù)TA,、 TB,、 TC,的形式獲得它的應(yīng)用的不 同任務(wù)TA、 TB、 TC的確定性時(shí)段的重放。通過(guò)將確定性時(shí)段的這 一重放與非確定性事件以及特別是外部事件的錄入和重放相組合, 本發(fā)明實(shí)現(xiàn)了以高性能的方式獲得一種再現(xiàn)對(duì)錄入應(yīng)用APPJ的執(zhí) 行的重i文應(yīng)用APPJ。
通過(guò)將錄入數(shù)據(jù)一經(jīng)生成就從錄入系統(tǒng)發(fā)送到重放系統(tǒng)(立 即),有可能產(chǎn)生一種以與錄入應(yīng)用完全相同的方式(僅有時(shí)間延 遲)生成后續(xù)或者"影像"重放應(yīng)用。例如與存儲(chǔ)應(yīng)用的狀態(tài)作為未 來(lái)儲(chǔ)備的技術(shù)相對(duì)照,可以在兩個(gè)應(yīng)用均在執(zhí)行之中的這一 類情形 下使用術(shù)語(yǔ)"活動(dòng)-活動(dòng)"配置。
在這樣的"活動(dòng)-活動(dòng)"配置中,可以認(rèn)為重放應(yīng)用APPR構(gòu)成了 主應(yīng)用或者主要應(yīng)用的活動(dòng)副本。這一活動(dòng)副本呈現(xiàn)出主要添加了 錄入數(shù)據(jù)的傳輸和處理時(shí)間、可以視比如兩個(gè)系統(tǒng)的比較性能這樣 的因素而定的少量時(shí)間延遲。典型延遲是少數(shù)幾個(gè)通常為幾毫秒的 調(diào)度時(shí)段。
在第一考慮下,這里描述的技術(shù)可以允許實(shí)施運(yùn)作管理,該運(yùn) 作管理僅代表了相較于原應(yīng)用或者舊應(yīng)用而言的較小開銷以及僅代 表了在開發(fā)利用情形下可能接受的某種性能的損失。
本發(fā)明有利地實(shí)現(xiàn)了將這一類"活動(dòng)-活動(dòng)"配置應(yīng)用于對(duì)應(yīng)用可
靠化(reliabilization )的實(shí)施,其中活動(dòng)副本可以用作原應(yīng)用的鏡4象 應(yīng)用并且在故障情況下或者在特定事件時(shí)從它進(jìn)行接管。相較于鏡 像系統(tǒng)的硬件實(shí)施而言,本發(fā)明由于相對(duì)于所用機(jī)器的硬件特征的 改進(jìn)的獨(dú)立性而在運(yùn)作中以及硬件管理中實(shí)現(xiàn)了多得多的靈活性。
這樣的配置由此實(shí)現(xiàn)了即使在并行架構(gòu)中仍以靈活和非入侵式 同時(shí)限制性能損失的方式給現(xiàn)存應(yīng)用帶來(lái)容錯(cuò)功能。
在使用這樣的"活動(dòng)-活動(dòng)"配置以便通過(guò)將所有或者部分服務(wù)從 錄入應(yīng)用重新分布到活動(dòng)副本來(lái)產(chǎn)生工作負(fù)荷的平衡或者調(diào)整("負(fù) 荷平衡")的同時(shí)也存在這些優(yōu)點(diǎn)。這可以例如優(yōu)化硬件的使用或者 釋方丈硬件的 一 部分以便實(shí)施重定位的維護(hù)。
應(yīng)當(dāng)注意,這里描述的不同機(jī)制以與石更件部分無(wú)聯(lián)系的方式來(lái) 使用軟件部分。于是獲得相對(duì)于硬件的良好獨(dú)立性,這特別地使實(shí) 施更簡(jiǎn)易和更可靠并且通過(guò)允許該架構(gòu)最佳地自行管理不同計(jì)算單 元(這些單元可以是處理器或者計(jì)算機(jī))的并行性來(lái)保留良好性能。
另外,由于本發(fā)明最經(jīng)常是純軟件實(shí)施的,所以有可能使用具 有所述所有優(yōu)點(diǎn)的標(biāo)準(zhǔn)硬件。
本發(fā)明特別地實(shí)現(xiàn)了將為在單個(gè)計(jì)算單元上在共享時(shí)間內(nèi)運(yùn)作 的多任務(wù)應(yīng)用而開發(fā)的運(yùn)作管理技術(shù)擴(kuò)展到并行環(huán)境。由此,本發(fā) 明實(shí)現(xiàn)了將這樣的并行環(huán)境結(jié)合到如下網(wǎng)絡(luò)或者集群中,在該網(wǎng)絡(luò) 或者集群中這一運(yùn)作管理在中間件類型的應(yīng)用內(nèi)被實(shí)施以便例如管 理分布式應(yīng)用或者提供"按需"服務(wù)的可變部署應(yīng)用。
不言而喻,本發(fā)明不限于剛才描述的例子,并且可以對(duì)本發(fā)明 做出許多修改而不脫離本發(fā)明的框架。
權(quán)利要求
1.一種用于在計(jì)算機(jī)處理器中在計(jì)算機(jī)系統(tǒng)內(nèi)在稱為活動(dòng)時(shí)段(SchJ,SchR)的給定執(zhí)行時(shí)段期間管理稱為目標(biāo)任務(wù)的計(jì)算機(jī)任務(wù)的方法,所述計(jì)算機(jī)處理器具有監(jiān)視或者估計(jì)性能的裝置并且包括具有加上或者減去稱為相對(duì)誤差的給定可能誤差的計(jì)數(shù)器(PMC),這一過(guò)程包括在一方面使用所述計(jì)數(shù)器來(lái)評(píng)估直至所述活動(dòng)時(shí)段的至少一個(gè)給定點(diǎn)所執(zhí)行的指令的數(shù)目(NR,NJ);以及在另一方面生成從所述處理器或者計(jì)算機(jī)系統(tǒng)的狀態(tài)中讀取或者計(jì)算的并且與所述活動(dòng)時(shí)段的至少一個(gè)給定點(diǎn)相對(duì)應(yīng)的稱為簽名(SGJ,SGR)的數(shù)據(jù)。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于對(duì)于從受管理的時(shí) 段的開始起執(zhí)行的指令的數(shù)目(NJ, NR)的評(píng)估結(jié)合所述計(jì)數(shù)器(PMC)而使用了至少一個(gè)系統(tǒng)調(diào)用指令作為同步障。
3. 根據(jù)權(quán)利要求1或2之一所述的方法,其特征在于它在由兩 個(gè)非確定性操作之間的 一連串確定性操作組成的活動(dòng)時(shí)段期間管理 任務(wù)。
4. 根據(jù)權(quán)利要求1至3之一所述的方法,其特征在于它管理在 稱為錄入處理器(pProX)的處理器中錄入的任務(wù)(TJ),以及它包 括存儲(chǔ)與稱為錄入時(shí)段(Sch3, SchJ)的所述任務(wù)的這一活動(dòng)時(shí)段 相對(duì)應(yīng)的錄入數(shù)據(jù),這一錄入數(shù)據(jù)包括所執(zhí)行指令的數(shù)目的至少一的所述簽名(SGJ)。
5. 根據(jù)權(quán)利要求1至4之一所述的方法,其特征在于它通過(guò)在 稱為處理器日志(J(iProX)的至少一個(gè)文件中以有序的方式存儲(chǔ)代 表了在處理器(nProX)中執(zhí)行的多個(gè)任務(wù)(TA, TB, TA)的一連 串活動(dòng)時(shí)段(Schl, Sch2, Sch3)的錄入的錄入數(shù)據(jù)來(lái)錄入所述處 理器(pProX)的使用,所述錄入數(shù)據(jù)包括針對(duì)這些時(shí)段中的各時(shí)段 的標(biāo)識(shí)所述所執(zhí)行任務(wù)(TJ)的數(shù)據(jù)(idJ)。
6. 根據(jù)權(quán)利要求5所述的方法,其特征在于它根據(jù)所述錄入數(shù) 據(jù),從與所述錄入處理器或者所述錄入系統(tǒng)在所述錄入時(shí)段開始時(shí)的狀態(tài)相對(duì)應(yīng)的狀態(tài)開始,通過(guò)在重放計(jì)算機(jī)系統(tǒng)內(nèi)管理由稱為重 放(pProZ)處理器的處理器執(zhí)行的稱為重放(TR)任務(wù)的任務(wù)來(lái)進(jìn) 行所述錄入時(shí)段(SchJ)的重放,所述方法也包括-受監(jiān)視的執(zhí)行階段,從所述重放時(shí)段的開始起執(zhí)行所述計(jì)數(shù)器 (PMC)所評(píng)估的數(shù)目(NR)的指令,所述數(shù)目小于或者等于所述 錄入時(shí)段的所述指令的數(shù)目的所述假設(shè)值(NJ)減去所述計(jì)數(shù)器的 所述相對(duì)誤差;-確認(rèn)階段,包括如下步驟的重復(fù)-在所述重》文中的給定點(diǎn)(TRIO, TRI2, TRI4)處中斷(46) 所述重放任務(wù)的執(zhí)行;-在所述錄入簽名(SGJ)和與重放中斷點(diǎn)相對(duì)應(yīng)的簽名(SGR) 之間進(jìn)行比較(47)測(cè)試。
7. 根據(jù)權(quán)利要求6所述的方法,其特征在于所述錄入簽名(SGJ) 包括稱為錄入指針的數(shù)據(jù)(IPJ),該數(shù)據(jù)代表了在所述錄入時(shí)段(SchJ)結(jié)束時(shí)所述錄入任務(wù)的指令指針的值(IPJX3),所述方法也包括在與所述錄入指針數(shù)據(jù)(IPJ)相對(duì)應(yīng)的所述重 放指令(BKI)上設(shè)置(42)斷點(diǎn)(BK)。
8. 根據(jù)權(quán)利要求6或7之一所述的方法,其特征在于對(duì)所述重 放任務(wù)(TR)的執(zhí)行的所述監(jiān)視特別地包括所述計(jì)數(shù)器(PMC)的 溢出,所述計(jì)數(shù)器被預(yù)先初始化以便確定必須從所述重放時(shí)段的開 始起執(zhí)行的指令的數(shù)目(NR),并且所述計(jì)數(shù)器的所述溢出引起了 所述重放任務(wù)的中斷(41 )。
9. 根據(jù)權(quán)利要求8所述的方法,其特征在于以某一裕度在所述 重放時(shí)段開始時(shí)初始化所述計(jì)數(shù)器(PMC )以便足夠早地溢出(41 ), 從而在所述計(jì)數(shù)器的所述溢出與已經(jīng)引起所述溢出的任務(wù)的中斷之 間存在延時(shí)時(shí)段的情況下,所述重放任務(wù)(TR)所執(zhí)行的指令的數(shù) 目(NR)小于或者等于所述錄入時(shí)段的所述指令的數(shù)目的所述假設(shè) 值(NJ)減去所述計(jì)數(shù)器的所述相對(duì)誤差。
10. 根據(jù)權(quán)利要求6至9之一所述的方法,其特征在于所述確認(rèn) 階段包括安全步驟,如果所述重放指令的數(shù)目(NR)超過(guò)所述錄 入指令的數(shù)目的所述假設(shè)值(NJ)加上給定的指令數(shù)目則發(fā)送錯(cuò)誤 信號(hào)。
11. 根據(jù)權(quán)利要求6至10之一所述的方法,其特征在于它在重 放處理器(pProZ)中通過(guò)使用在所述錄入處理器(pProX)中錄入 的一連串活動(dòng)時(shí)段(Schl,Sch2,Sch3 )的錄入數(shù)據(jù)的有序集合("ProX)來(lái)重放所述錄入處理器的使用。
12. 根據(jù)前述權(quán)利要求之一所述的方法,其特征在于它實(shí)現(xiàn)對(duì)與 多個(gè)錄入任務(wù)所訪問(wèn)的稱為目標(biāo)(ShMPi)資源的共享資源有關(guān)的一 連串歸屬獨(dú)占性訪問(wèn)的錄入,這一方法也發(fā)送或者存儲(chǔ)稱為資源日 志(JShmPi)的至少一個(gè)文件,該文件包括已經(jīng)獲得這些獨(dú)占性訪 問(wèn)的所述連續(xù)任務(wù)的至少 一 個(gè)標(biāo)識(shí)。
13. 根據(jù)權(quán)利要求1至12之一所述的管理方法,其特征在于它 管理在系統(tǒng)軟件內(nèi)實(shí)施的至少兩個(gè)應(yīng)用任務(wù)(TA, TB)的運(yùn)作,所 述系統(tǒng)軟件通過(guò)順序激活來(lái)管理所述任務(wù)(TA, TB)在具有并行結(jié) 構(gòu)的計(jì)算機(jī)系統(tǒng)中的執(zhí)行,所述并行結(jié)構(gòu)包括能夠在至少兩個(gè)算術(shù) 單元(^ProX, ^ProY)中同時(shí)執(zhí)行多個(gè)應(yīng)用任務(wù)的計(jì)算裝置,這兩 個(gè)應(yīng)用任務(wù)(TA, TB)訪問(wèn)至少一個(gè)共享資源(ShMPi),所迷方 法包括-在第一算術(shù)單元(pProX)中錄入這些任務(wù)中的一個(gè)任務(wù)或者 其它任務(wù)的第一串激活時(shí)段;以及-在第二算術(shù)單元(pProY)中錄入這些任務(wù)中的一個(gè)任務(wù)或者 其它任務(wù)的第二串激活時(shí)段;-以及錄入響應(yīng)于對(duì)訪問(wèn)所述目標(biāo)資源的請(qǐng)求(InstrA)而把對(duì) 所述目標(biāo)資源的稱為獨(dú)占性訪問(wèn)的訪問(wèn) 一 連串地歸屬到所述任務(wù)之 中的所謂訪問(wèn)任務(wù),即這樣的歸屬排除了在緊接于所述訪問(wèn)請(qǐng)求之后的所述訪問(wèn)任務(wù)的所述激活時(shí)段(SchA)的整個(gè)其余時(shí)段期間這 些任務(wù)中的另一任務(wù)對(duì)所述目標(biāo)資源(ShMPi)的任何訪問(wèn);所述方法也包括在稱為重放串行的有序結(jié)構(gòu)中將代表了各所述 算術(shù)單元中多個(gè)一連串激活時(shí)段的錄入數(shù)據(jù)(QJjaProX, QJ|aProY) 與代表了所述一連串歸屬獨(dú)占性訪問(wèn)的錄入數(shù)據(jù)(QJShmPi )相組合, 以便維持各任務(wù)(TA, TB, TC)內(nèi)所述一連串激活時(shí)段相對(duì)于所述 共享資源(ShmPi)而言的次序。
14. 根據(jù)權(quán)利要求13所述的方法,其特征在于在用于重放(TA,, TB,, TC,)所述錄入任務(wù)(TA, TB, TC)的所述錄入運(yùn)行的重放 計(jì)算機(jī)系統(tǒng)(UP2)中使用所述重^:串行數(shù)據(jù)。
15. 根據(jù)權(quán)利要求13或14之一所述的方法,其特征在于它包括 在所述重放計(jì)算機(jī)系統(tǒng)(UP2)內(nèi)虛擬化可由所述錄入任務(wù)在所述錄
16. 根據(jù)權(quán)利要求14至15之一所述的方法,其特征在于它實(shí)現(xiàn) 對(duì)于包括至少兩個(gè)任務(wù)的錄入應(yīng)用(APPJ)的運(yùn)作的稱為活動(dòng)復(fù)制 的復(fù)制,所述至少兩個(gè)任務(wù)在具有計(jì)算機(jī)網(wǎng)絡(luò)的并行結(jié)構(gòu)的稱為主 要節(jié)點(diǎn)的至少 一 個(gè)節(jié)點(diǎn)上執(zhí)行并且訪問(wèn)至少 一 個(gè)共享資源,這 一 復(fù) 制包括在重放系統(tǒng)上在至少一個(gè)重放應(yīng)用中重放源自于錄入數(shù)據(jù)的 重放串行,所述錄入數(shù)據(jù)在被生成時(shí)從所述主要節(jié)點(diǎn)被立即發(fā)送到 輔節(jié)點(diǎn)。
17. 根據(jù)權(quán)利要求16所述的方法,其特征在于它使包括至少兩 個(gè)任務(wù)的應(yīng)用可靠化,所述至少兩個(gè)任務(wù)在具有計(jì)算機(jī)網(wǎng)絡(luò)的并行 結(jié)構(gòu)的稱為主要節(jié)點(diǎn)的至少一個(gè)節(jié)點(diǎn)來(lái)執(zhí)行并且訪問(wèn)至少一個(gè)共享 資源,這一可靠化包括將服務(wù)從所述主要節(jié)點(diǎn)切換到在所述主要節(jié) 點(diǎn)內(nèi)檢測(cè)到故障或者給定事件時(shí)啟動(dòng)的取代所述主要節(jié)點(diǎn)的至少一 個(gè)輔節(jié)點(diǎn)。
18. 根據(jù)權(quán)利要求16所述的方法,其特征在于它實(shí)現(xiàn)通過(guò)在至 少一個(gè)輔節(jié)點(diǎn)之上執(zhí)行在主要節(jié)點(diǎn)之上執(zhí)行的目標(biāo)應(yīng)用(APPJ)的 活動(dòng)副本(APPR)來(lái)平衡或者調(diào)節(jié)計(jì)算機(jī)網(wǎng)絡(luò)內(nèi)的工作負(fù)荷,這種 負(fù)荷平衡包括將所述受管理的目標(biāo)應(yīng)用提供的全部或部分服務(wù)切換 到所述活動(dòng)副本。
19.一種實(shí)施根據(jù)權(quán)利要求1至18之一所述的方法的系統(tǒng)。
全文摘要
本發(fā)明涉及一種用于對(duì)在一個(gè)或者多個(gè)計(jì)算機(jī)處理器中、特別是在具有并行架構(gòu)的多處理器系統(tǒng)中執(zhí)行的任務(wù)的運(yùn)行進(jìn)行監(jiān)視和管理的透明和非入侵式方法。本發(fā)明提出一種用于在計(jì)算機(jī)處理器中 在計(jì)算機(jī)系統(tǒng)內(nèi)在稱為活動(dòng)時(shí)段(SchJ,SchR)的給定執(zhí)行時(shí)段期間管理稱為目標(biāo)任務(wù)的計(jì)算機(jī)任務(wù)的系統(tǒng)和方法,該計(jì)算機(jī)處理器具有監(jiān)視或者估計(jì)性能的裝置并且包括具有加上或者減去稱為相對(duì)誤差的給定可能誤差的計(jì)數(shù)器(PMC),這一過(guò)程包括在一方面使用所述計(jì)數(shù)器來(lái)評(píng)估直至所述活動(dòng)時(shí)段的至少一個(gè)給定點(diǎn)所執(zhí)行的指令的數(shù)目(NR,NJ);以及在另一方面生成從處理器或者計(jì)算機(jī)系統(tǒng)的狀態(tài)中讀取或者計(jì)算的并且與所述活動(dòng)時(shí)段的至少一個(gè)給定點(diǎn)相對(duì)應(yīng)的稱為簽名(SGJ,SGR)的數(shù)據(jù)。
文檔編號(hào)G06F11/34GK101103338SQ200680002251
公開日2008年1月9日 申請(qǐng)日期2006年1月24日 優(yōu)先權(quán)日2005年1月28日
發(fā)明者M·韋爾特 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司