本公開一般涉及可配置代碼指紋的領(lǐng)域。
背景技術(shù):
在本文中也被稱為指紋的代碼指紋是當(dāng)給定代碼段正在執(zhí)行時發(fā)生的特定處理器行為。這個處理器行為包括任何可辨別的行為,諸如分支預(yù)測命中和未命中的特定序列、數(shù)據(jù)高速緩存命中和未命中的特定序列、采用和未采用的分支指令的特定序列,和/或硬件可辨別的任何其它行為或模式。代碼指紋包括但不限于:用于各種高速緩存級別的數(shù)據(jù)高速緩存命中未命中序列、用于在給定高速緩存級別的給定指令的數(shù)據(jù)高速緩存命中未命中序列或用于代碼段或用于代碼段中特定分支集合的正確/不正確預(yù)測的序列,以及當(dāng)給定指令被執(zhí)行時分支采用/不采用歷史。
當(dāng)代碼在計(jì)算環(huán)境中被執(zhí)行時給定處理器可以辨別的代碼指紋的數(shù)量目前是受限的,因?yàn)樾枰煌愋偷挠布肀鎰e包括不同代碼指紋的不同類型的行為。因此,給定的處理器僅能辨別有限數(shù)量的代碼指紋,這會導(dǎo)致問題。例如,如果給定指紋的辨別在計(jì)算環(huán)境中不被支持,則運(yùn)行時環(huán)境無法確認(rèn)某個序列正在發(fā)生。
技術(shù)實(shí)現(xiàn)要素:
通過提供用于配置處理器以辨別代碼指紋的計(jì)算機(jī)程序產(chǎn)品,克服現(xiàn)有技術(shù)的缺點(diǎn)并提供附加的優(yōu)點(diǎn)。該計(jì)算機(jī)程序產(chǎn)品包括可由處理電路讀取并存儲由處理電路執(zhí)行以執(zhí)行方法的指令的存儲介質(zhì)。該方法包括例如:由處理器通過獲得描述事件類型或事件當(dāng)中至少一個的參數(shù)來定義代碼指紋,并且其中代碼指紋包括第一序列;由處理器將代碼指紋加載到處理器可訪問的寄存器中;與執(zhí)行程序同時,由處理器從寄存器獲得代碼指紋;由處理器通過將程序中的第二序列與第一序列進(jìn)行比較,以識別程序中的代碼指紋;以及基于識別,由處理器警告運(yùn)行時環(huán)境,其中程序正在該運(yùn)行時環(huán)境中執(zhí)行。
通過提供配置處理器以辨別代碼指紋的方法,克服現(xiàn)有技術(shù)的缺點(diǎn)并提供附加的優(yōu)點(diǎn)。該方法包括例如:由處理器通過獲得描述事件類型或事件當(dāng)中至少一個的參數(shù)來定義代碼指紋,并且其中代碼指紋包括第一序列;由處理器將代碼指紋加載到處理器可訪問的寄存器中;與執(zhí)行程序同時,由處理器從寄存器獲得代碼指紋;由處理器通過將程序中的第二序列與第一序列進(jìn)行比較,以識別程序中的代碼指紋;以及基于識別,由處理器警告運(yùn)行時環(huán)境,其中程序正在該運(yùn)行時環(huán)境中執(zhí)行。
通過提供用于配置處理器以辨別代碼指紋的系統(tǒng),克服現(xiàn)有技術(shù)的缺點(diǎn)并提供附加的優(yōu)點(diǎn)。該系統(tǒng)包括存儲器、與存儲器通信的一個或多個處理器以及可由一個或多個處理器經(jīng)由存儲器執(zhí)行以執(zhí)行方法的程序指令。該方法包括例如:由處理器通過獲得描述事件類型或事件當(dāng)中至少一個的參數(shù)來定義代碼指紋,并且其中代碼指紋包括第一序列;由處理器將代碼指紋加載到處理器可訪問的寄存器中;與執(zhí)行程序同時,由處理器從寄存器獲得代碼指紋;由處理器通過將程序中的第二序列與第一序列進(jìn)行比較,以識別程序中的代碼指紋;以及基于識別,由處理器警告運(yùn)行時環(huán)境,其中程序正在該運(yùn)行時環(huán)境中執(zhí)行。
本文還描述并要求保護(hù)與一個或多個方面相關(guān)的方法和系統(tǒng)。另外,本文還描述并可以要求保護(hù)與一個或多個方面相關(guān)的服務(wù)。
通過本文所述的技術(shù),附加的特征和優(yōu)點(diǎn)得以實(shí)現(xiàn)。其它實(shí)施例和方面在本文中詳細(xì)描述并被認(rèn)為是要求保護(hù)的各方面的一部分。例如,本發(fā)明的實(shí)施例的各方面還可以包括:由處理器獲得附加數(shù)據(jù)并利用架構(gòu)化的字典壓縮數(shù)據(jù)。壓縮可以包括由處理器按照字典條目進(jìn)行排名,而不執(zhí)行存儲器查找。
在本發(fā)明的實(shí)施例中,參數(shù)描述以下之一:加載類型事件或分支類型事件。在本發(fā)明的實(shí)施例中,獲得參數(shù)還包括從源獲得多個參數(shù)、將這多個參數(shù)保留在寄存器中,以及從寄存器中的多個參數(shù)中選擇參數(shù)。
在本發(fā)明的實(shí)施例中,第一序列包括已測序列,并且在本發(fā)明的實(shí)施例中,代碼指紋包括具有指令中的目標(biāo)地址的條件分支序列。
在本發(fā)明的實(shí)施例中,第二序列與第一序列的比較可以包括由處理器從第二寄存器獲得第二序列;以及由處理器比較第一序列與第二序列并確定第一序列和第二序列是相同的。
在本發(fā)明的實(shí)施例中,第二序列與第一序列的比較可以包括由處理器從第二寄存器獲得第二序列;以及由處理器比較第一序列與第二序列并確定第一序列和所述第二序列之間的漢明距離(hammingdistance)小于指定值。
在本發(fā)明的實(shí)施例中,警告包括由處理器觸發(fā)陷阱。在本發(fā)明的實(shí)施例中,警告包括當(dāng)由代碼指紋描述的特定處理器行為在給定地址發(fā)生時由處理器觸發(fā)陷阱。
在本發(fā)明的實(shí)施例中,識別還包括由處理器通過識別第二序列何時出現(xiàn)在程序中來從程序獲得第二序列,其中第二序列包括第一序列。
本發(fā)明的某些實(shí)施例的各方面還可以包括:由處理器定義新的代碼指紋,其中新的代碼指紋包括第三序列;由處理器將新的代碼指紋加載到處理器可訪問的寄存器中;以及與將新代碼指紋加載到寄存器中同時,將代碼指紋加載到歷史寄存器中。
附圖說明
一個或多個方面在說明書結(jié)尾處的權(quán)利要求中作為例子特別指出并明確要求保護(hù)。從下面結(jié)合附圖的詳細(xì)描述中,一個或多個方面的前述和目標(biāo)、特征和優(yōu)點(diǎn)是顯而易見的,其中:
圖1描繪了本發(fā)明的實(shí)施例的各方面;
圖2描繪了與本發(fā)明的實(shí)施例的各方面相關(guān)聯(lián)的工作流程;
圖3描繪了本發(fā)明的實(shí)施例的各方面;
圖4描繪了本發(fā)明的實(shí)施例的各方面;
圖5描繪了與本發(fā)明的實(shí)施例的各方面相關(guān)聯(lián)的工作流程;
圖6描繪了與本發(fā)明的實(shí)施例的各方面相關(guān)聯(lián)的工作流程;
圖7描繪了本發(fā)明的實(shí)施例的各方面;
圖8描繪了云計(jì)算節(jié)點(diǎn)的一個實(shí)施例;
圖9描繪了云計(jì)算環(huán)境的一個實(shí)施例;及
圖10描繪了抽象模型層的一個例子。
具體實(shí)施方式
其中相同的附圖標(biāo)記貫穿單獨(dú)的視圖指代相同或功能相似的元件并且被結(jié)合到說明書中并構(gòu)成其一部分的附圖進(jìn)一步示出本發(fā)明并且,與本發(fā)明的詳細(xì)描述一起,用來解釋本發(fā)明的原理。如本領(lǐng)域技術(shù)人員所理解的,提供附圖是為了便于理解并示出本發(fā)明的某些實(shí)施例的各方面。本發(fā)明不限于圖中所描繪的實(shí)施例。
如本領(lǐng)域技術(shù)人員所理解的,如貫穿本申請所提到的,程序代碼既包括軟件也包括硬件。例如,本發(fā)明的某些實(shí)施例中的程序代碼包括固定功能硬件,而其它實(shí)施例使用所描述的功能的基于軟件的實(shí)現(xiàn)方式。某些實(shí)施例組合這兩種類型的程序代碼。
本發(fā)明的某些實(shí)施例的各方面包括由至少一個處理器16(圖8)執(zhí)行的程序代碼40(參見圖8),其使得運(yùn)行時環(huán)境能夠配置這至少一個處理器來辨別指紋。本發(fā)明的某些實(shí)施例的這種可配置的指紋識別方面在計(jì)算技術(shù)中提供了優(yōu)點(diǎn),這是由于它通過擴(kuò)展給定指紋邏輯集合的功能性消除了多個專用指紋辨別功能的成本。本發(fā)明的這個方面代表對目前現(xiàn)有計(jì)算技術(shù)的改進(jìn),目前為了辨別一系列不同類型的指紋,在計(jì)算環(huán)境中需要一系列不同的硬件。
本發(fā)明的某些實(shí)施例的優(yōu)點(diǎn)是這些實(shí)施例包括可由運(yùn)行時環(huán)境配置以辨別一系列指紋的方面。利用這個功能,在本發(fā)明的某些實(shí)施例中由處理器執(zhí)行的程序代碼辨別一系列不同的程序行為。同樣,這個可配置方面代表對目前現(xiàn)有計(jì)算技術(shù)的改進(jìn),目前為了辨別一系列不同類型的指紋,在計(jì)算環(huán)境中需要一系列不同的硬件。
本發(fā)明的一些實(shí)施例的各方面可被用來驗(yàn)證某些代碼段已經(jīng)被優(yōu)化。在不包括本發(fā)明的各方面的計(jì)算機(jī)系統(tǒng)中,即時(jit)編譯器已經(jīng)優(yōu)化了代碼段,期望使得這個段引起采用/不采用分支指令的某個序列,或加載命中和未命中的某個序列。但是,由于支持每種類型的指紋功能的成本,這種計(jì)算機(jī)系統(tǒng)中的處理器可能僅提供對某種其它類型的指紋(例如,分支目標(biāo)命中/未命中等)的支持。因此,盡管有與這個代碼段相關(guān)聯(lián)的預(yù)期指紋,但這種計(jì)算機(jī)系統(tǒng)的運(yùn)行時環(huán)境將不能確認(rèn)預(yù)期引起某個分支被采用/不采用的序列的這個優(yōu)化正在發(fā)生。通過將本發(fā)明的某些實(shí)施例的各方面集成到這種計(jì)算機(jī)系統(tǒng)中,辨別指紋的實(shí)用程序可由運(yùn)行時環(huán)境配置,因此處理器不受這個較早的約束的限制并且可以利用本發(fā)明的各方面被配置為辨別這種優(yōu)化正在發(fā)生。
本發(fā)明的一些實(shí)施例的各方面可被用來使運(yùn)行時環(huán)境能夠?qū)崟r地識別某些類型的行為。本發(fā)明的實(shí)施例可以由運(yùn)行時環(huán)境配置,以辨別大范圍的指紋,由此使得大范圍的程序行為能夠被辨別。在其中本發(fā)明的這方面不可用的計(jì)算機(jī)系統(tǒng)中,當(dāng)運(yùn)行時環(huán)境例如嘗試確保數(shù)據(jù)高速緩存未命中在某個代碼段上從不或很少發(fā)生時,它可能無法做到這一點(diǎn),因?yàn)樘幚砥骺赡軆H辨別分支類型指紋。作為替代,這個運(yùn)行時環(huán)境可能需要l2數(shù)據(jù)高速緩存命中指紋來確保特定行為在發(fā)生,但處理器僅能提供l1數(shù)據(jù)高速緩存指紋。在這些例子中,由于處理器可以辨別什么的限制,所以編譯器必須使用識別期望行為的某種其它手段,或者,取決于計(jì)算機(jī)系統(tǒng)的約束及其包括重復(fù)硬件的能力,可能完全不能監(jiān)控期望的行為。因此,通過將本發(fā)明的各方面集成到計(jì)算機(jī)系統(tǒng)中,本發(fā)明的實(shí)施例可以為計(jì)算機(jī)系統(tǒng)提供可由運(yùn)行時環(huán)境配置的單個指紋功能,并且因此能夠識別大范圍的指紋,從而使得由處理器執(zhí)行的程序代碼能夠辨別大范圍的程序行為。
本發(fā)明的某些實(shí)施例的優(yōu)點(diǎn)在于,它們使計(jì)算機(jī)系統(tǒng)能夠包括單一類型的“通用”硬件。只需要一種類型的硬件,因?yàn)樗杀慌渲脼橛涗浐捅鎰e大范圍的指紋類型和歷史。因此,在本發(fā)明的某些實(shí)施例中,運(yùn)行時環(huán)境可以配置這個硬件來記錄和辨別比目前計(jì)算機(jī)系統(tǒng)中當(dāng)前可能的范圍更大的范圍的指紋,在目前計(jì)算機(jī)系統(tǒng)中,可以由給定硬件單元辨別的指紋的類型是靜態(tài)的。通過提供可配置的指紋辨別,本發(fā)明的某些實(shí)施例利用單個硬件集合而不是多個硬連線的指紋寄存器來辨別給定范圍的指紋。將這個功能集成到單個硬件中提供了對程序行為的更準(zhǔn)確的測量并且為程序代碼的改進(jìn)的優(yōu)化提供了機(jī)會。
圖1示出了本發(fā)明的實(shí)施例的某些方面。本發(fā)明的實(shí)施例包括配置寄存器100,其中運(yùn)行時環(huán)境可以配置為辨別表示不同代碼段和/或行為的一個或多個指紋,包括但不限于分支或加載指令類型的順序行為。在本發(fā)明的實(shí)施例中,配置寄存器100可以集成到處理器的硬件中,例如,在本發(fā)明的實(shí)施例中,配置寄存器100包括在處理單元16中的現(xiàn)場可編程門陣列(fpga)中。
在本發(fā)明的實(shí)施例中,配置寄存器100包括參數(shù)值140,參數(shù)值140包括事件110a-110n和事件類型120a-120n。這些參數(shù)值140指定在運(yùn)行時環(huán)境中程序代碼40可以辨別的行為(指紋)的類型。
在本發(fā)明的實(shí)施例中,事件110a-110n可在配置寄存器100中被包含第一組110中,并且事件類型120a-120n可在配置寄存器中被包括第二組120中。這些組指定代表本發(fā)明的某些非限制性實(shí)施例。事件110a-110n和事件類型120a-120b是可由程序代碼40用來指定要由處理器辨別的行為的參數(shù)值140。
如圖1所示,在本發(fā)明的實(shí)施例中,這些事件可以包括但不限于級別1(l1)加載數(shù)據(jù)高速緩存命中/未命中序列110a、級別2(l2)加載數(shù)據(jù)高速緩存命中/未命中序列110b、級別3(l3)加載數(shù)據(jù)高速緩存命中/未命中序列110c、分支方向序列110d、分支方向命中/未命中序列110e,以及分支目標(biāo)命中/未命中序列110f。本發(fā)明的實(shí)施例中的參數(shù)值140還可以包括附加事件110g-110n。
參考圖1,在本發(fā)明的實(shí)施例中,配置寄存器100還包括事件120a-120b。在這個例子中,事件包括加載類型事件(加載指令120a)和分支類型事件(分支指令120b)。本發(fā)明的實(shí)施例可以包括附加的事件類型120c-120n。
在本發(fā)明的實(shí)施例中,配置寄存器100還包括已測序列(measuredsequence)輸出寄存器130。如圖2中將描述的,程序代碼40(參見圖4)利用控制寄存器100的各個部分來配置訪問寄存器的處理器,以基于在控制寄存器100中定義的程序代碼40的行為來辨別指紋。
為了便于理解,圖2的工作流程200包括通過參考圖1的控制寄存器100的部分和圖8中計(jì)算機(jī)系統(tǒng)的部分示出了本發(fā)明的實(shí)施例的某些方面。如本領(lǐng)域技術(shù)人員所理解的,對這個特定實(shí)施例的參考不是作為對圖2中所描述的各方面的限制給出的,而僅僅示出了非限制性例子并且其被包括是為了便于理解。
參考圖2,在本發(fā)明的實(shí)施例中,程序代碼40選擇與事件類型和事件相關(guān)的參數(shù)來定義代碼指紋(210)。如圖1中所看到的,事件的類型可以包括但不限于加載類型事件和/或分支類型事件。基于選擇事件的類型,程序代碼40選擇一個或多個事件。例如,當(dāng)程序代碼40選擇加載類型事件時,程序代碼40還可以選擇這種類型的一個或多個事件,例如l1加載數(shù)據(jù)高速緩存命中/未命中序列110a、l2加載數(shù)據(jù)高速緩存命中/未命中序列110b和/或l3加載數(shù)據(jù)高速緩存命中/未命中序列110c,作為參數(shù)。類似地,當(dāng)程序代碼40選擇分支類型事件作為參數(shù)時,程序代碼40可以選擇分支事件(例如,分支方向序列110d、分支方向命中/未命中序列110e和分支目標(biāo)命中/未命中序列110f)。
在本發(fā)明的實(shí)施例中,在選擇參數(shù)之前,程序代碼40可以從包括軟件和/或硬件存儲器28(圖8)在內(nèi)的源獲得參數(shù)。程序代碼40可以從它獲得的參數(shù)中選擇某些參數(shù)。
返回圖2,在本發(fā)明的實(shí)施例中,程序代碼40將包括代碼指紋的一個或多個所選參數(shù)加載到寄存器中(220)。如本領(lǐng)域技術(shù)人員所理解的,圖2中所描述的一個或多個方面由處理器執(zhí)行,其中處理器執(zhí)行程序代碼40。例如,當(dāng)程序代碼40執(zhí)行時,處理器可以將包括代碼指紋的一個或多個所選參數(shù)加載到寄存器中。在本發(fā)明的實(shí)施例中,這個寄存器可以是測量序列輸出寄存器130。因此,返回到所討論的例子,當(dāng)程序代碼40選擇加載類型事件時,程序代碼將所選類型的加載事件(例如,l1加載數(shù)據(jù)高速緩存命中/未命中序列110a、l2加載數(shù)據(jù)高速緩存命中/未命中序列110b和/或l3加載數(shù)據(jù)高速緩存命中/未命中序列110c)加載到測量序列輸出寄存器130中。類似地,當(dāng)程序代碼40選擇分支類型事件時,程序代碼將所選類型的分支事件(分支方向序列110d、分支方向命中/未命中序列110e和分支目標(biāo)命中/未命中序列110f)加載到測量序列輸出寄存器130中。
在本發(fā)明的實(shí)施例中,如果配置寄存器100中的參數(shù)字段指定分支目標(biāo)命中/未命中序列,則所有無條件和直接(即,指令中具有目標(biāo)地址的序列)分支指令都將被命中。一些實(shí)施例可以忽略這種分支指令,并且在指紋中僅包括條件分支指令。
在本發(fā)明的實(shí)施例中,在程序執(zhí)行期間,可以被理解為基于硬件實(shí)施例(例如,配置的指紋硬件)的處理器的程序代碼40讀取寄存器(例如,已測序列寄存器),以識別寄存器中的代碼指紋(即,行為)(230)。本發(fā)明的一些實(shí)施例可以利用硬件(即,程序代碼術(shù)語將指代硬件、通過處理器執(zhí)行的動作),因?yàn)樵谝恍┣闆r下,軟件可能不具有對高速緩存命中/未命中比率的可見性,除非硬件(例如,配置的指紋辨別器)辨別出序列、進(jìn)行比較并導(dǎo)致輕量級中斷。
在本發(fā)明的實(shí)施例中,這種識別包括程序代碼40將寄存器中的序列(例如,加載到已測序列寄存器130中的程序代碼的序列)與第二寄存器(例如,期望序列寄存器)中的序列進(jìn)行比較。在本發(fā)明的實(shí)施例中,硬件,例如包括在計(jì)算系統(tǒng)的處理器中的硬件,比較這些序列。當(dāng)比較序列時,程序代碼40可以識別寄存器中相同的序列,和/或程序代碼40可以識別模糊匹配,這將在例如預(yù)期序列和已測序列之間的漢明距離小于指定值時發(fā)生。
基于識別寄存器中的指紋,程序代碼40警告運(yùn)行時環(huán)境指紋(即,行為)已被辨別出(240)。在本發(fā)明的實(shí)施例中,程序代碼40通過觸發(fā)陷阱來警告運(yùn)行時環(huán)境,其中陷阱包括但不限于輕量級陷阱,諸如ebb。在本發(fā)明的實(shí)施例中,當(dāng)由寄存器中的程序定義的行為在給定地址發(fā)生時,程序代碼40識別該行為。
在本發(fā)明的一些實(shí)施例中,基于在配置寄存器100中定義的行為,程序代碼40可以不將所選參數(shù)加載到寄存器中,寄存器包括但不限于測量序列輸出寄存器130。例如,如果程序代碼40選擇指定分支目標(biāo)命中/未命中序列的參數(shù),則所有無條件分支指令和在指令中具有目標(biāo)的所有分支指令將是命中。因此,如果不需要程序代碼40將無條件分支結(jié)果加載到測量序列輸出寄存器130中,因?yàn)樗鼈儗⑷敲校瑒t在本發(fā)明的實(shí)施例中,附加輸入(即,事件類型)可以被添加到第二組120。
圖3描繪了本發(fā)明的實(shí)施例,其中程序代碼40將直接分支而不是間接分支加載到寄存器中。如實(shí)施例中所示出的,第二組320包括分支指令120b(圖1)和直接分支指令320b,而不是代表分支類型事件的單個事件類型。在本發(fā)明的實(shí)施例中,間接分支指令不能被選擇為事件,因?yàn)槌绦虼a40(如上面所提到的,其可以被理解為硬件實(shí)施例)僅加載直接分支。直接分支指令包括具有指令中的目標(biāo)地址的條件分支(序列)。同時,間接分支指令包括具有寄存器中的目標(biāo)地址的條件分支(序列)。
圖4描繪了本發(fā)明的實(shí)施例,其提供了具有可配置指紋的配置寄存器400,寄存器包括多位參數(shù)的值的選定序列。這些值可以包括但不限于:所采用的分支目標(biāo)地址的序列、所采用的條件分支目標(biāo)地址的序列、加載或存儲的有效地址的序列和/或調(diào)用簽名寄存器值的序列。本發(fā)明的這個實(shí)施例包括在第一組410中的事件410a-410n,程序代碼40可以從中選擇來配置代碼指紋。雖然在圖4中未示出,但是在本發(fā)明的包括多位參數(shù)的所述實(shí)施例中,事件410將包括這些多位參數(shù),包括但不限于:采用的分支目標(biāo)地址的序列、采用的條件分支目標(biāo)地址的序列、加載或存儲的有效地址的序列和/或調(diào)用簽名寄存器值的序列。
本發(fā)明的這個實(shí)施例的優(yōu)點(diǎn)在于其維護(hù)在配置寄存器400中配置并在程序執(zhí)行期間由處理器識別的指紋的歷史記錄。在圖4的實(shí)施例中,輸出寄存器,測量序列輸出寄存器430a,是已測歷史緩沖器430的一部分。已測歷史緩沖器430包含被配置、加載在輸出寄存器中并在程序執(zhí)行期間由處理器執(zhí)行的程序代碼識別的指紋的歷史。當(dāng)程序代碼40將新的代碼指紋加載到測量序列輸出寄存器430a時,程序代碼40將測量序列輸出寄存器430a的內(nèi)容加載到第一最新歷史輸出寄存器430b,從而將這個寄存器的內(nèi)容加載到第二最新歷史輸出寄存器430c。程序代碼40相應(yīng)地移動(例如,降檔)已測歷史緩沖器430中的剩余寄存器的內(nèi)容。在本發(fā)明的實(shí)施例中,當(dāng)每次這種降檔發(fā)生時,程序可以將已測序列歷史緩沖器330與預(yù)期歷史緩沖器(未示出)進(jìn)行比較,并且如果已測序列歷史緩沖器330和預(yù)期序列歷史緩沖器之間的匹配發(fā)生時,程序代碼40可以警告程序,或者程序代碼40可以觸發(fā)另一個動作。
圖5描繪了與本發(fā)明的某些實(shí)施例(包括圖4所示的實(shí)施例)的各方面相關(guān)聯(lián)的工作流程500。
在本發(fā)明的實(shí)施例中,程序代碼40選擇包括至少一個事件的參數(shù)(例如,加載的地址、分支目標(biāo),調(diào)用簽名等)以定義代碼指紋(510)。在本發(fā)明的這個實(shí)施例中,每個事件包括多位值的序列。程序代碼40將包括多位值的序列的代碼指紋加載到處理器可訪問的寄存器中(520)。在程序執(zhí)行期間,程序代碼40識別包括指紋的序列何時發(fā)生(530)。程序代碼40警告運(yùn)行時環(huán)境序列已經(jīng)發(fā)生(540)。程序代碼40可以通過提供輕量級陷阱來警告運(yùn)行時環(huán)境。
如圖4中所繪出的,在本發(fā)明的實(shí)施例中,已測歷史緩沖器430包括多個寄存器,每個寄存器包含序列。在這個實(shí)施例中,程序代碼40識別的代碼指紋包括最近的“n”個多位指紋,例如最近的“n”個調(diào)用簽名。因此,在這個實(shí)施例中,當(dāng)程序代碼40(例如,硬件實(shí)施例中的處理器)確定所有n個最近觀察到的調(diào)用簽名與由程序代碼40配置的調(diào)用簽名序列相同時,程序代碼40生成輕量級中斷。
圖6也描繪了與本發(fā)明的實(shí)施例的各方面相關(guān)聯(lián)的工作流程600。在本發(fā)明的實(shí)施例中,處理器(例如,在處理器上執(zhí)行的程序代碼)從源獲得多個參數(shù)(602)。處理器將多個參數(shù)保存在寄存器中(605),并且從寄存器中的多個參數(shù)中選擇參數(shù)(608)。處理器獲得描述事件類型或事件當(dāng)中至少一個的參數(shù)(610)。在本發(fā)明的實(shí)施例中,處理器獲得加載類型事件或分支類型事件作為參數(shù)的一部分(609)。
在本發(fā)明的實(shí)施例中,當(dāng)處理器獲得多個參數(shù)(602)、保留多個參數(shù)(605)并從多個參數(shù)中選擇參數(shù)(608)時,本發(fā)明的這個實(shí)施例的這些方面可以是處理器獲得描述事件類型或事件當(dāng)中至少一個的參數(shù)(610)的一部分。
在本發(fā)明的實(shí)施例中,處理器獲得加載類型事件或分支類型事件作為參數(shù)的一部分(609)可以是處理器獲得描述事件類型或事件當(dāng)中至少一個的參數(shù)(610)的一部分。
代碼指紋包括第一序列,其可以是已測序列。在本發(fā)明的實(shí)施例中,代碼指紋包括具有指令中的目標(biāo)地址的條件分支序列。處理器將代碼指紋加載到處理器可訪問的寄存器中(620)。與執(zhí)行程序同時,處理器從寄存器獲得代碼指紋(630)。
處理器通過將程序中的第二序列與第一序列進(jìn)行比較來識別程序中的代碼指紋(640)。取決于本發(fā)明的實(shí)施例,當(dāng)處理器通過比較序列來識別代碼指紋時,它可以采取不同的方法來做到這一點(diǎn),其中一些在圖6中示出。例如,處理器可以比較第一序列與第二序列,以尋找匹配(642)。在處理器不尋找這種匹配的實(shí)施例中,當(dāng)處理器識別出代碼指紋時,處理器通過識別第二序列何時出現(xiàn)在程序中并且第二序列包括第一序列來從程序獲得第二序列(644)。
圖7示出了在一個例子中處理器如何通過識別第二序列何時出現(xiàn)在程序中并且第二序列包括第一序列來從程序獲得第二序列的例子(圖6,644)。在圖2中,程序代碼40配置已測序列710,如前所述。程序代碼40提供期望序列720,這是來自在計(jì)算機(jī)系統(tǒng)的運(yùn)行時環(huán)境中執(zhí)行的程序的序列。基于從程序代碼40接收期望序列720,處理器將期望序列720與作為已測序列710的指紋進(jìn)行比較。如果序列匹配735,則程序代碼40(處理器)生成警告。
取決于本發(fā)明的實(shí)施例,當(dāng)處理器比較第二序列與第一序列時,它可以尋找精確匹配或近似(即,模糊)匹配(646)。在本發(fā)明的實(shí)施例中,處理器通過從第二寄存器獲得第二序列、比較第一序列與第二序列并確定第一序列和第二序列是相同的來比較序列(648)。在本發(fā)明的實(shí)施例中,處理器通過從第二寄存器獲得第二序列、比較第一序列與第二序列并確定第一序列和第二序列之間的漢明距離包括小于指定值來比較序列(649)。
在本發(fā)明的實(shí)施例中,當(dāng)處理器通過識別第二序列何時出現(xiàn)在程序中并且第二序列包括第一序列來從程序獲得第二序列(644)、確定第一序列與第二序列是相同的(648)或者確定第一序列和第二序列之間的漢明距離包括小于特定值(649)時,本發(fā)明的這個實(shí)施例的這些方面可以各自單獨(dú)地包括處理器通過將程序中的第二序列與第一序列進(jìn)行比較來識別程序中的代碼指紋(640)。
基于識別代碼指紋,處理器警告程序正在執(zhí)行的運(yùn)行時環(huán)境(650)。在本發(fā)明的實(shí)施例中,處理器通過觸發(fā)輕量級陷阱來警告運(yùn)行時環(huán)境(652)。在本發(fā)明的實(shí)施例中,當(dāng)由代碼指紋描述的特殊處理器行為在給定地址發(fā)生時,處理器通過觸發(fā)輕量級陷阱來警告運(yùn)行時環(huán)境。
返回圖6,在本發(fā)明的實(shí)施例中,處理器定義新的代碼指紋;該新指紋包括第三序列(660)。處理器將新的代碼指紋加載到處理器可訪問的寄存器中(670)。與將新的代碼指紋加載到寄存器中同時,處理器將代碼指紋加載到歷史寄存器中(680)。本發(fā)明的某些實(shí)施例的這個方面早先在圖4中示出。如圖4中所示,在加載到(一個或多個)歷史寄存器中之后,處理器(也被稱為程序代碼)將觀察到的歷史實(shí)測值的集合與程序配置到可配置指紋辨別硬件中的程序的配置值的集合進(jìn)行比較。
一個或多個方面可以涉及云計(jì)算。
首先應(yīng)當(dāng)理解,盡管本公開包括關(guān)于云計(jì)算的詳細(xì)描述,但其中記載的技術(shù)方案的實(shí)現(xiàn)卻不限于云計(jì)算環(huán)境,而是能夠結(jié)合現(xiàn)在已知或以后開發(fā)的任何其它類型的計(jì)算環(huán)境而實(shí)現(xiàn)。
云計(jì)算是一種服務(wù)交付模式,用于對共享的可配置計(jì)算資源池進(jìn)行方便、按需的網(wǎng)絡(luò)訪問??膳渲糜?jì)算資源是能夠以最小的管理成本或與服務(wù)提供者進(jìn)行最少的交互就能快速部署和釋放的資源,例如可以是網(wǎng)絡(luò)、網(wǎng)絡(luò)帶寬、服務(wù)器、處理、內(nèi)存、存儲、應(yīng)用、虛擬機(jī)和服務(wù)。這種云模式可以包括至少五個特征、至少三個服務(wù)模型和至少四個部署模型。
特征包括:
按需自助式服務(wù):云的消費(fèi)者在無需與服務(wù)提供者進(jìn)行人為交互的情況下能夠單方面自動地按需部署諸如服務(wù)器時間和網(wǎng)絡(luò)存儲等的計(jì)算能力。
廣泛的網(wǎng)絡(luò)接入:計(jì)算能力可以通過標(biāo)準(zhǔn)機(jī)制在網(wǎng)絡(luò)上獲取,這種標(biāo)準(zhǔn)機(jī)制促進(jìn)了通過不同種類的瘦客戶機(jī)平臺或厚客戶機(jī)平臺(例如移動電話、膝上型電腦、個人數(shù)字助理pda)對云的使用。
資源池:提供者的計(jì)算資源被歸入資源池并通過多租戶(multi-tenant)模式服務(wù)于多重消費(fèi)者,其中按需將不同的實(shí)體資源和虛擬資源動態(tài)地分配和再分配。一般情況下,消費(fèi)者不能控制或甚至并不知曉所提供的資源的確切位置,但可以在較高抽象程度上指定位置(例如國家、州或數(shù)據(jù)中心),因此具有位置無關(guān)性。
迅速彈性:能夠迅速、有彈性地(有時是自動地)部署計(jì)算能力,以實(shí)現(xiàn)快速擴(kuò)展,并且能迅速釋放來快速縮小。在消費(fèi)者看來,用于部署的可用計(jì)算能力往往顯得是無限的,并能在任意時候都能獲取任意數(shù)量的計(jì)算能力。
可測量的服務(wù):云系統(tǒng)通過利用適于服務(wù)類型(例如存儲、處理、帶寬和活躍用戶帳號)的某種抽象程度的計(jì)量能力,自動地控制和優(yōu)化資源效用??梢员O(jiān)測、控制和報(bào)告資源使用情況,為服務(wù)提供者和消費(fèi)者雙方提供透明度。
服務(wù)模型如下:
軟件即服務(wù)(saas):向消費(fèi)者提供的能力是使用提供者在云基礎(chǔ)架構(gòu)上運(yùn)行的應(yīng)用??梢酝ㄟ^諸如網(wǎng)絡(luò)瀏覽器的瘦客戶機(jī)接口(例如基于網(wǎng)絡(luò)的電子郵件)從各種客戶機(jī)設(shè)備訪問應(yīng)用。除了有限的特定于用戶的應(yīng)用配置設(shè)置外,消費(fèi)者既不管理也不控制包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)、存儲、乃至單個應(yīng)用能力等的底層云基礎(chǔ)架構(gòu)。
平臺即服務(wù)(paas):向消費(fèi)者提供的能力是在云基礎(chǔ)架構(gòu)上部署消費(fèi)者創(chuàng)建或獲得的應(yīng)用,這些應(yīng)用利用提供者支持的程序設(shè)計(jì)語言和工具創(chuàng)建。消費(fèi)者既不管理也不控制包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)或存儲的底層云基礎(chǔ)架構(gòu),但對其部署的應(yīng)用具有控制權(quán),對應(yīng)用托管環(huán)境配置可能也具有控制權(quán)。
基礎(chǔ)架構(gòu)即服務(wù)(iaas):向消費(fèi)者提供的能力是消費(fèi)者能夠在其中部署并運(yùn)行包括操作系統(tǒng)和應(yīng)用的任意軟件的處理、存儲、網(wǎng)絡(luò)和其他基礎(chǔ)計(jì)算資源。消費(fèi)者既不管理也不控制底層的云基礎(chǔ)架構(gòu),但是對操作系統(tǒng)、存儲和其部署的應(yīng)用具有控制權(quán),對選擇的網(wǎng)絡(luò)組件(例如主機(jī)防火墻)可能具有有限的控制權(quán)。
部署模型如下:
私有云:云基礎(chǔ)架構(gòu)單獨(dú)為某個組織運(yùn)行。云基礎(chǔ)架構(gòu)可以由該組織或第三方管理并且可以存在于該組織內(nèi)部或外部。
共同體云:云基礎(chǔ)架構(gòu)被若干組織共享并支持有共同利害關(guān)系(例如任務(wù)使命、安全要求、政策和合規(guī)考慮)的特定共同體。共同體云可以由共同體內(nèi)的多個組織或第三方管理并且可以存在于該共同體內(nèi)部或外部。
公共云:云基礎(chǔ)架構(gòu)向公眾或大型產(chǎn)業(yè)群提供并由出售云服務(wù)的組織擁有。
混合云:云基礎(chǔ)架構(gòu)由兩個或更多部署模型的云(私有云、共同體云或公共云)組成,這些云依然是獨(dú)特的實(shí)體,但是通過使數(shù)據(jù)和應(yīng)用能夠移植的標(biāo)準(zhǔn)化技術(shù)或私有技術(shù)(例如用于云之間的負(fù)載平衡的云突發(fā)流量分擔(dān)技術(shù))綁定在一起。
云計(jì)算環(huán)境是面向服務(wù)的,特點(diǎn)集中在無狀態(tài)性、低耦合性、模塊性和語意的互操作性。云計(jì)算的核心是包含互連節(jié)點(diǎn)網(wǎng)絡(luò)的基礎(chǔ)架構(gòu)。
現(xiàn)在參考圖8,其中顯示了云計(jì)算節(jié)點(diǎn)的一個例子。圖1顯示的云計(jì)算節(jié)點(diǎn)10僅僅是適合的云計(jì)算節(jié)點(diǎn)的一個示例,不應(yīng)對本發(fā)明實(shí)施例的功能和使用范圍帶來任何限制。總之,云計(jì)算節(jié)點(diǎn)10能夠被用來實(shí)現(xiàn)和/或執(zhí)行以上所述的任何功能。
云計(jì)算節(jié)點(diǎn)10具有計(jì)算機(jī)系統(tǒng)/服務(wù)器12,其可與眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置一起操作。眾所周知,適于與計(jì)算機(jī)系統(tǒng)/服務(wù)器12一起操作的計(jì)算系統(tǒng)、環(huán)境和/或配置的例子包括但不限于:個人計(jì)算機(jī)系統(tǒng)、服務(wù)器計(jì)算機(jī)系統(tǒng)、瘦客戶機(jī)、厚客戶機(jī)、手持或膝上設(shè)備、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)個人電腦、小型計(jì)算機(jī)系統(tǒng)、大型計(jì)算機(jī)系統(tǒng)和包括上述任意系統(tǒng)的分布式云計(jì)算技術(shù)環(huán)境,等等。
計(jì)算機(jī)系統(tǒng)/服務(wù)器12可以在由計(jì)算機(jī)系統(tǒng)執(zhí)行的計(jì)算機(jī)系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語境下描述。通常,程序模塊可以包括執(zhí)行特定的任務(wù)或者實(shí)現(xiàn)特定的抽象數(shù)據(jù)類型的例程、程序、目標(biāo)程序、組件、邏輯、數(shù)據(jù)結(jié)構(gòu)等。計(jì)算機(jī)系統(tǒng)/服務(wù)器12可以在通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行任務(wù)的分布式云計(jì)算環(huán)境中實(shí)施。在分布式云計(jì)算環(huán)境中,程序模塊可以位于包括存儲設(shè)備的本地或遠(yuǎn)程計(jì)算系統(tǒng)存儲介質(zhì)上。
如圖8所示,云計(jì)算節(jié)點(diǎn)10中的計(jì)算機(jī)系統(tǒng)/服務(wù)器12以通用計(jì)算設(shè)備的形式表現(xiàn)。計(jì)算機(jī)系統(tǒng)/服務(wù)器12的組件可以包括但不限于:一個或者多個處理器或者處理單元16,系統(tǒng)存儲器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲器28和處理單元16)的總線18。
總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲器總線或者存儲器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(isa)總線,微通道體系結(jié)構(gòu)(mac)總線,增強(qiáng)型isa總線、視頻電子標(biāo)準(zhǔn)協(xié)會(vesa)局域總線以及外圍組件互連(pci)總線。
計(jì)算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是能夠被計(jì)算機(jī)系統(tǒng)/服務(wù)器12訪問的任意可獲得的介質(zhì),包括易失性和非易失性介質(zhì),可移動的和不可移動的介質(zhì)。
系統(tǒng)存儲器28可以包括易失性存儲器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存取存儲器(ram)30和/或高速緩存存儲器32。計(jì)算機(jī)系統(tǒng)/服務(wù)器12可以進(jìn)一步包括其它可移動/不可移動的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲介質(zhì)。僅作為舉例,存儲系統(tǒng)34可以用于讀寫不可移動的、非易失性磁介質(zhì)(圖1未顯示,通常稱為“硬盤驅(qū)動器”)。盡管圖1中未示出,可以提供用于對可移動非易失性磁盤(例如“軟盤”)讀寫的磁盤驅(qū)動器,以及對可移動非易失性光盤(例如cd-rom,dvd-rom或者其它光介質(zhì))讀寫的光盤驅(qū)動器。在這些情況下,每個驅(qū)動器可以通過一個或者多個數(shù)據(jù)介質(zhì)接口與總線18相連。存儲器28可以包括至少一個程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個)程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實(shí)施例的功能。
具有一組(至少一個)程序模塊42的程序/實(shí)用工具40,可以存儲在存儲器28中,這樣的程序模塊42包括但不限于操作系統(tǒng)、一個或者多個應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序模塊42通常執(zhí)行本發(fā)明所描述的實(shí)施例中的功能和/或方法。
計(jì)算機(jī)系統(tǒng)/服務(wù)器12也可以與一個或多個外部設(shè)備14(例如鍵盤、指向設(shè)備、顯示器24等)通信,還可與一個或者多個使得用戶能與該計(jì)算機(jī)系統(tǒng)/服務(wù)器12交互的設(shè)備通信,和/或與使得該計(jì)算機(jī)系統(tǒng)/服務(wù)器12能與一個或多個其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(i/o)接口22進(jìn)行。并且,計(jì)算機(jī)系統(tǒng)/服務(wù)器12還可以通過網(wǎng)絡(luò)適配器20與一個或者多個網(wǎng)絡(luò)(例如局域網(wǎng)(lan),廣域網(wǎng)(wan)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20通過總線18與計(jì)算機(jī)系統(tǒng)/服務(wù)器12的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,其它硬件和/或軟件模塊可以與計(jì)算機(jī)系統(tǒng)/服務(wù)器12一起操作,包括但不限于:微代碼、設(shè)備驅(qū)動器、冗余處理單元、外部磁盤驅(qū)動陣列、raid系統(tǒng)、磁帶驅(qū)動器以及數(shù)據(jù)備份存儲系統(tǒng)等。
現(xiàn)在參考圖9,其中顯示了示例性的云計(jì)算環(huán)境50。如圖所示,云計(jì)算環(huán)境50包括云計(jì)算消費(fèi)者使用的本地計(jì)算設(shè)備可以與其相通信的一個或者多個云計(jì)算節(jié)點(diǎn)10,本地計(jì)算設(shè)備例如可以是個人數(shù)字助理(pda)或移動電話54a,臺式電腦54b、筆記本電腦54c和/或汽車計(jì)算機(jī)系統(tǒng)54n。云計(jì)算節(jié)點(diǎn)10之間可以相互通信??梢栽诎ǖ幌抻谌缟纤龅乃接性啤⒐餐w云、公共云或混合云或者它們的組合的一個或者多個網(wǎng)絡(luò)中將云計(jì)算節(jié)點(diǎn)10進(jìn)行物理或虛擬分組(圖中未顯示)。這樣,云的消費(fèi)者無需在本地計(jì)算設(shè)備上維護(hù)資源就能請求云計(jì)算環(huán)境50提供的基礎(chǔ)架構(gòu)即服務(wù)(iaas)、平臺即服務(wù)(paas)和/或軟件即服務(wù)(saas)。應(yīng)當(dāng)理解,圖9顯示的各類計(jì)算設(shè)備54a-n僅僅是示意性的,云計(jì)算節(jié)點(diǎn)10以及云計(jì)算環(huán)境50可以與任意類型網(wǎng)絡(luò)上和/或網(wǎng)絡(luò)可尋址連接的任意類型的計(jì)算設(shè)備(例如使用網(wǎng)絡(luò)瀏覽器)通信。
現(xiàn)在參考圖10,其中顯示了云計(jì)算環(huán)境50(圖8)提供的一組功能抽象層。首先應(yīng)當(dāng)理解,圖9所示的組件、層以及功能都僅僅是示意性的,本發(fā)明的實(shí)施例不限于此。如圖3所示,提供下列層和對應(yīng)功能:
硬件和軟件層60包括硬件和軟件組件。硬件組件的例子包括大型機(jī)61;基于risc(精簡指令集計(jì)算機(jī))體架結(jié)構(gòu)的服務(wù)器62;服務(wù)器63;刀片服務(wù)器64;存儲設(shè)備65;以及網(wǎng)絡(luò)和聯(lián)網(wǎng)組件66。在一些實(shí)施例中,軟件組件包括網(wǎng)絡(luò)應(yīng)用服務(wù)器軟件67和數(shù)據(jù)庫軟件68。
虛擬層70提供一個抽象層,該層可以提供下列虛擬實(shí)體的例子:虛擬服務(wù)器71、虛擬存儲72、虛擬網(wǎng)絡(luò)73(包括虛擬私有網(wǎng)絡(luò))、虛擬應(yīng)用和操作系統(tǒng)74,以及虛擬客戶端75。
在一個示例中,管理層80可以提供下述功能,這可以包括在計(jì)算機(jī)系統(tǒng)的vpd位置維護(hù)vpd。資源供應(yīng)功能81:提供用于在云計(jì)算環(huán)境中執(zhí)行任務(wù)的計(jì)算資源和其它資源的動態(tài)獲?。挥?jì)量和定價功能82:在云計(jì)算環(huán)境內(nèi)對資源的使用進(jìn)行成本跟蹤,并為此提供帳單和發(fā)票。在一個例子中,該資源可以包括應(yīng)用軟件許可。安全功能:為云的消費(fèi)者和任務(wù)提供身份認(rèn)證,為數(shù)據(jù)和其它資源提供保護(hù)。用戶門戶功能83:為消費(fèi)者和系統(tǒng)管理員提供對云計(jì)算環(huán)境的訪問。服務(wù)水平管理功能84:提供云計(jì)算資源的分配和管理,以滿足必需的服務(wù)水平。服務(wù)水平協(xié)議(sla)計(jì)劃和履行功能85:為根據(jù)sla預(yù)測的對云計(jì)算資源未來需求提供預(yù)先安排和供應(yīng)。
工作負(fù)載層90提供云計(jì)算環(huán)境可能實(shí)現(xiàn)的功能的示例。在該層中,可提供的工作負(fù)載或功能的示例包括:地圖繪制與導(dǎo)航91;軟件開發(fā)及生命周期管理92;虛擬教室的教學(xué)提供93;數(shù)據(jù)分析處理94;交易處理95;以及警告運(yùn)行時環(huán)境序列已在環(huán)境中正在執(zhí)行的代碼中發(fā)生。
在此參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖圖示和/或框圖描述了本發(fā)明的各方面。應(yīng)當(dāng)理解,流程圖圖示和/或框圖的每個方框以及流程圖圖示和/或框圖中的方框的組合可以由計(jì)算機(jī)可讀程序指令來實(shí)現(xiàn)。
這些計(jì)算機(jī)可讀程序指令可以被提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,以產(chǎn)生機(jī)器,使得經(jīng)由計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令創(chuàng)建用于實(shí)現(xiàn)在流程圖和/或框圖的一個或多個方框中指定的功能/動作的單元。這些計(jì)算機(jī)可讀程序指令還可以存儲在計(jì)算機(jī)可讀存儲介質(zhì)中,其可以指示計(jì)算機(jī)、可編程數(shù)據(jù)處理裝置和/或其它設(shè)備以特定方式工作,使得其中存儲有指令的計(jì)算機(jī)可讀存儲介質(zhì)包括實(shí)現(xiàn)在流程圖和/或框圖的一個或多個方框中指定的功能/動作的各方面的指令的制造品。
計(jì)算機(jī)可讀程序指令還可以加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上,以使得一系列操作步驟在計(jì)算機(jī)、其它可編程裝置或其它設(shè)備上執(zhí)行,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,使得在計(jì)算機(jī)、其它可編程裝置或其它設(shè)備上執(zhí)行的指令實(shí)現(xiàn)在流程圖和/或框圖的一個或多個方框中指定的功能/動作。
附圖中的流程圖和框圖示出了根據(jù)本發(fā)明的各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個方框可以代表指令的模塊、段或部分,其包括用于實(shí)現(xiàn)指定的(一個或多個)邏輯功能的一條或多條可執(zhí)行指令。在一些替代實(shí)現(xiàn)中,在方框中標(biāo)注的功能可以不按照附圖中所標(biāo)注的次序發(fā)生。例如,取決于所涉及的功能,連續(xù)示出的兩個方框?qū)嶋H上可以基本同時執(zhí)行,或者這些方框有時候可以以相反的次序執(zhí)行。還應(yīng)當(dāng)指出,框圖和/或流程圖圖示中的每個方框以及框圖和/或流程圖圖示中的方框的組合可以由執(zhí)行指定功能或動作的基于專用硬件的系統(tǒng)來實(shí)現(xiàn),或者執(zhí)行專用硬件和計(jì)算機(jī)指令的組合。
除了以上所述,一個或多個方面可以由提出(offer)對客戶環(huán)境的管理的服務(wù)提供商來提供、提出、部署、管理、服務(wù)等。例如,服務(wù)提供商可以創(chuàng)建、維護(hù)、支持等為一個或多個客戶執(zhí)行一個或多個方面的計(jì)算機(jī)代碼和/或計(jì)算機(jī)基礎(chǔ)設(shè)施。作為例子,作為回報(bào),服務(wù)提供商可以依據(jù)訂閱和/或費(fèi)用協(xié)議從客戶接收付款。另外或作為替代,服務(wù)提供商可以通過向一個或多個第三方銷售廣告內(nèi)容來接收付款。
在一方面,可以部署用于執(zhí)行一個或多個實(shí)施例的應(yīng)用。作為一個例子,應(yīng)用的部署包括提供可操作為執(zhí)行一個或多個實(shí)施例的計(jì)算機(jī)基礎(chǔ)設(shè)施。
作為另一方面,可以部署計(jì)算基礎(chǔ)設(shè)施,包括將計(jì)算機(jī)可讀代碼集成到計(jì)算系統(tǒng)中,其中代碼與計(jì)算系統(tǒng)結(jié)合能夠執(zhí)行一個或多個實(shí)施例。
作為另一方面,可以提供用于集成計(jì)算基礎(chǔ)設(shè)施的過程,包括將計(jì)算機(jī)可讀代碼集成到計(jì)算機(jī)系統(tǒng)中。計(jì)算機(jī)系統(tǒng)包括計(jì)算機(jī)可讀介質(zhì),其中計(jì)算機(jī)介質(zhì)包括一個或多個實(shí)施例。代碼與計(jì)算機(jī)系統(tǒng)結(jié)合能夠執(zhí)行一個或多個實(shí)施例。
雖然上面描述了各種實(shí)施例,但這些僅僅是例子。例如,其它體系架構(gòu)的計(jì)算環(huán)境可被用來結(jié)合并使用一個或多個實(shí)施例。另外,可以使用不同的指令、指令格式、指令字段和/或指令值。許多變體是可能的。
另外,其它類型的計(jì)算環(huán)境可以受益并被使用。作為例子,適于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)是可用的,其包括直接或通過系統(tǒng)總線間接耦合到存儲器元件的至少兩個處理器。存儲器元件包括例如在程序代碼的實(shí)際執(zhí)行期間采用的本地存儲器、大容量存儲器以及高速緩沖存儲器,其中高速緩沖存儲器提供至少一些程序代碼的臨時存儲,以便減少在執(zhí)行期間必須從大容量存儲器檢索代碼的次數(shù)。
輸入/輸出或i/o設(shè)備(包括但不限于鍵盤、顯示器、定向設(shè)備、dasd、磁帶、cd、dvd、拇指驅(qū)動器和其它存儲介質(zhì)等)可以直接或通過中間i/o控制器耦合到系統(tǒng)。網(wǎng)絡(luò)適配器也可以耦合到系統(tǒng),以使得數(shù)據(jù)處理系統(tǒng)能夠通過中間私有或公共網(wǎng)絡(luò)耦合到其它數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲設(shè)備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡只是幾種可用類型的網(wǎng)絡(luò)適配器。
本文所使用的術(shù)語僅僅是為了描述特定的實(shí)施例,而不意在是限制性的。如本文所使用的,除非上下文另有明確指示,否則單數(shù)形式“一”、“一個”和“該”也意在包括復(fù)數(shù)形式。還應(yīng)當(dāng)理解,當(dāng)在本說明書中使用時,術(shù)語“包括”和/或“包含”指定所述特征、整數(shù)、步驟、操作、元件和/或組件的存在,但不排除一個或多個其它特征、整數(shù)、步驟、操作、元件、組件和/或其組合的存在或添加。
如果有的話,以下權(quán)利要求中的所有單元或步驟加功能元件的對應(yīng)結(jié)構(gòu)、材料、動作和等同物意在包括用于與其它要求保護(hù)的元件相結(jié)合執(zhí)行功能的任何結(jié)構(gòu)、材料或動作,如具體要求保護(hù)的。已經(jīng)出于說明和描述的目的給出了一個或多個實(shí)施例的描述,但并不意在是詳盡的或限于所公開的形式。許多修改和變化對于本領(lǐng)域普通技術(shù)人員將是顯而易見的。實(shí)施例的選擇和描述是為了最好地解釋各個方面和實(shí)際應(yīng)用,并使本領(lǐng)域的其他普通技術(shù)人員能夠理解具有適于預(yù)期的特定用途的各種修改的各種實(shí)施例。