專利名稱::竊取中斷向量的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明一般涉及改進(jìn)的數(shù)據(jù)處理系統(tǒng)。更特別地,本發(fā)明涉及用于從操作系統(tǒng)竊取(stealing)中斷矢量以獲得對所有系統(tǒng)資源的訪問的計(jì)算機(jī)實(shí)現(xiàn)方法、系統(tǒng)、和計(jì)算機(jī)可用程序代碼。
背景技術(shù):
:如今,計(jì)算機(jī)系統(tǒng)已經(jīng)演化為可以在很多不同設(shè)置下看到的極其復(fù)雜的設(shè)備。通常,計(jì)算機(jī)系統(tǒng)包括硬件(例如半導(dǎo)體、電路板等)和軟件(例如計(jì)算機(jī)程序)的組合。特定計(jì)算機(jī)系統(tǒng)上硬件和軟件的組合限定計(jì)算環(huán)境。因此,不同硬件平臺和不同操作系統(tǒng)(OS)提供不同計(jì)算環(huán)境。隨著半導(dǎo)體工藝和計(jì)算機(jī)架構(gòu)的發(fā)展將計(jì)算機(jī)硬件性能推向更高,更復(fù)雜的計(jì)算機(jī)軟件程序已經(jīng)被發(fā)展以診斷地測試這些硬件元件。然而,大多數(shù)OS不允許測試程序以特權(quán)或分區(qū)管理器模式運(yùn)行。此外,大多數(shù)OS不允許測試程序訪問實(shí)際存儲器(realmemory)。因此,為了用戶程序測試所有可能的計(jì)算機(jī)狀態(tài)和資源,測試程序必須具有避開這些OS限制的能力。當(dāng)前對這些OS限制問題的解決方案包括測試程序簡單地不在OS上運(yùn)行或測試程序只使用OS將給予該測試程序測試的那么多的系統(tǒng)資源。不在OS上運(yùn)行的測試程序以匯編語言編寫,并被直接加載到存儲器或高速緩存器中。此外,這些類型的測試程序獨(dú)立于任何OS地運(yùn)行且無權(quán)訪問標(biāo)準(zhǔn)OS服務(wù),諸如虛擬存儲器管理和調(diào)度,這可能是不利的。相反,在OS上方運(yùn)行的測試程序只可向OS請求存儲器和資源。通過僅能夠向OS請求存儲器和資源,大多數(shù)計(jì)算機(jī)功能不在這些類型的測試程序的范圍內(nèi)。結(jié)果,這些類型的測試程序必須依靠間接地影響OS來以特權(quán)或分區(qū)管理器模式執(zhí)行某代碼,以便測試那些范圍之外的區(qū)域。另一相關(guān)解決方案是具有定制OS,其中定制OS具有內(nèi)置的測試功能,以允許測試程序訪問整個(gè)計(jì)算機(jī)。利用該類測試程序的不利方面是必須維護(hù)完全獨(dú)立的os。結(jié)果,需要額外解決方案來允許測試程序在現(xiàn)有OS上運(yùn)行且還允許對所有計(jì)算機(jī)資源的訪問。因此,提供一種改進(jìn)的計(jì)算機(jī)執(zhí)行方法、系統(tǒng)、和計(jì)算機(jī)可用程序代碼來從OS竊取中斷矢量以允許測試程序訪問所有系統(tǒng)資源是有益的。
發(fā)明內(nèi)容所示實(shí)施例提供了一種計(jì)算機(jī)執(zhí)行方法、系統(tǒng)、和計(jì)算機(jī)可用程序代碼來從操作系統(tǒng)竊取中斷矢量。定制中斷處理程序擴(kuò)展程序(custominterrupthandlerextensions),皮從內(nèi)核模塊拷貝到分配的存儲器塊中。而且,操作系統(tǒng)中斷處理程序被從中斷矢量存儲器位置拷貝到分配的存儲器塊中的保留空間中。響應(yīng)于將操作系統(tǒng)中斷處理程序拷貝到分配的存儲器塊的保留空間中,來自內(nèi)核模塊的定制中斷處理程序被拷貝到中斷矢量存儲器位置中操作系統(tǒng)中斷處理程序之上。定制中斷處理程序在被拷貝到中斷矢量存儲器位置后處理操作系統(tǒng)所接收的所有中斷。本發(fā)明的新特征在所附權(quán)利要求中給出。然而,通過結(jié)合附圖參考下面對說明性實(shí)施例的詳細(xì)說明將更好地理解本發(fā)明自身以及優(yōu)選的使用方式、其他目標(biāo)和優(yōu)點(diǎn),其中圖l是其中可實(shí)現(xiàn)說明性實(shí)施例的數(shù)據(jù)處理系統(tǒng)的圖示;圖2是其中可實(shí)現(xiàn)說明性實(shí)施例的數(shù)據(jù)處理系統(tǒng)的方框圖;圖3是按照一個(gè)說明性實(shí)施例的數(shù)據(jù)處理系統(tǒng)的部件的方框圖;圖4是按照一個(gè)說明性實(shí)施例將OS中斷處理程序拷貝到保留存儲器空間的示例性圖示;圖5是按照一個(gè)說明性實(shí)施例將定制中斷處理程序拷貝到OS中斷處理程序之上的示例性示圖;圖6是按照一個(gè)說明性實(shí)施例在從OS竊取中斷矢量后的最終存儲器映射的示例性圖示;圖7是按照本發(fā)明一個(gè)說明性實(shí)施例的用于從OS竊取中斷矢量的示例性過程的流程圖;以及圖8是按照一個(gè)說明性實(shí)施例用于處理OS中斷的示例性過程的流程圖。具體實(shí)施方式現(xiàn)在參考附圖,特別是圖1-2,提供了其中可實(shí)現(xiàn)說明性實(shí)施例的數(shù)據(jù)處理環(huán)境的示意圖。應(yīng)該理解,圖l-2僅是示例性的,而非要斷言或暗示對于其中可以實(shí)現(xiàn)不同實(shí)施例的環(huán)境的限制。對所示的環(huán)境可做出許多修改。圖1示出其中可實(shí)現(xiàn)說明性實(shí)施例的數(shù)據(jù)處理系統(tǒng)的圖示。計(jì)算機(jī)100包括系統(tǒng)單元102、視頻顯示終端104、鍵盤106、可包括軟驅(qū)和其他類型的永久和可移動存儲介質(zhì)的存儲設(shè)備108、以及鼠標(biāo)110。附加輸入設(shè)備可被包括到個(gè)人計(jì)算機(jī)100中。附加輸入設(shè)備的例子可包括例如操縱桿、觸摸板、觸摸屏、跟蹤球、和麥克風(fēng)。計(jì)算機(jī)100可以是任何合適的計(jì)算機(jī),諸如作為位于紐約Armonk的國際商業(yè)機(jī)器公司的產(chǎn)品的IBMeServer計(jì)算機(jī)或IntelliStation⑧計(jì)算機(jī)。雖然示圖顯示的是個(gè)人計(jì)算機(jī),但其他實(shí)施例可以以其他類型的數(shù)據(jù)處理系統(tǒng)實(shí)現(xiàn)。例如,其他實(shí)施例可在網(wǎng)絡(luò)計(jì)算機(jī)中實(shí)現(xiàn)。計(jì)算機(jī)100優(yōu)選地還包括圖形用戶界面(GUI),其中圖形用戶界面可借助于駐存在計(jì)算機(jī)100內(nèi)工作的計(jì)算機(jī)可讀介質(zhì)中的系統(tǒng)軟件實(shí)現(xiàn)。然后,圖2示出其中可實(shí)現(xiàn)說明性實(shí)施例的數(shù)據(jù)處理系統(tǒng)的方框圖。數(shù)據(jù)處理系統(tǒng)200是實(shí)現(xiàn)說明性實(shí)施例的處理的代碼或指令可以位于其中的計(jì)算機(jī)的例子,諸如圖1中的計(jì)算機(jī)IOO。在所示例子中,數(shù)據(jù)處理系統(tǒng)200釆用包括北橋和存儲器控制中心(NB/MCH)202與南橋和輸入/輸出(I/O)控制中心(SB/ICH)204的集線架構(gòu)(hubarchitecture)。處理單元206、主存儲器208、和圖形處理器210被耦接到NB/MCH202。處理單元206可包含一個(gè)或多個(gè)處理器,甚至可以利用一個(gè)或多個(gè)異構(gòu)處理器系統(tǒng)實(shí)現(xiàn)。圖形處理器210可以例如通過加速圖形端口(AGP)耦接到NB/MCH202。在所示例子中,局域網(wǎng)(LAN)適配器212被耦接到SB/ICH204、音頻適配器216、鍵盤和鼠標(biāo)適配器220、調(diào)制解調(diào)器222、只讀存儲器(ROM)224、通用串行總線(USB)和其他端口232。PCI/PCIe設(shè)備234也通過總線238耦接到SB/ICH204。硬盤驅(qū)動器(HDD)226和CD-ROM230通過總線240耦接到SB/ICH204。PCI/PCIei更備例如可以包括以太網(wǎng)適配器、附加卡(add-incard)和用于筆記本電腦的PC卡。PCI使用插件總線控制器(cardbuscontroller),而PCIe不使用。ROM224例如可以是閃存(flash)二進(jìn)制輸入/輸出系統(tǒng)(BIOS:binaryinput/outputsystem)。硬盤驅(qū)動器226和CD-ROM驅(qū)動器230例如可以使用集成驅(qū)動器件電子技術(shù)(IDE)或串行高級技術(shù)連接(SATA)接口。超級I/O(SIO)設(shè)備236可以被耦接到南橋和I/O控制中心204。操作系統(tǒng)運(yùn)行在處理單元206上。該操作系統(tǒng)協(xié)調(diào)和控制圖2中數(shù)據(jù)處理系統(tǒng)200內(nèi)的各組件。操作系統(tǒng)可以是市場上可獲得的操作系統(tǒng),諸如MicrosoftWindowsXP。Microsoft⑧和WindowsXP⑧是Microsoft公司在美國、其他國家或二者的商標(biāo)??商鎿Q地,操作系統(tǒng)例如可以是作為IBM⑧公司所提供的產(chǎn)品的高級交互執(zhí)行體(AIX)操作系統(tǒng)。面向?qū)ο蟮木幊滔到y(tǒng)、諸如JavaTM編程系統(tǒng)可以與操作系統(tǒng)結(jié)合運(yùn)行,并且提供從在數(shù)據(jù)處理系統(tǒng)200上執(zhí)行的應(yīng)用程序或JavaTM程序?qū)Σ僮飨到y(tǒng)的調(diào)用。JavaTM和所有基于Java^的商標(biāo)是SunMicrosystems^>司在美國和其他國家或二者的商標(biāo)。用于操作系統(tǒng)、面向?qū)ο蟮木幊滔到y(tǒng)和應(yīng)用程序或程序的指令位于存儲裝置、諸如硬盤驅(qū)動器(HDD)226上。這些指令可以被加載到主存儲器208中以供處理單元206執(zhí)行。說明性實(shí)施例的處理可以由處理單元206利用計(jì)算機(jī)實(shí)現(xiàn)指令來執(zhí)行,其中計(jì)算機(jī)實(shí)現(xiàn)指令可以位于存儲器中。存儲器的例子可以是主存儲器208、只讀存儲器(ROM)224,或在一個(gè)或多個(gè)外圍裝置中。圖1和圖2中所示的硬件可以根據(jù)示例性實(shí)施例的實(shí)施而變化。作為圖1和圖2中所示的硬件的附加或替代,可以使用其他內(nèi)部硬件或外圍裝置,諸如閃存、等效非易失性存儲器、或光盤驅(qū)動等等。此外,示例性實(shí)施例的處理可以應(yīng)用于多處理器數(shù)據(jù)處理系統(tǒng)。圖2中所示的系統(tǒng)和組件可以與所示的示例性例子不同。在一些示例性例子中,數(shù)據(jù)處理系統(tǒng)200可以是個(gè)人數(shù)字助理(PDA)。個(gè)人數(shù)字助理通常配備有閃存以提供非易失性存儲器來存儲操作系統(tǒng)文件和/或用戶產(chǎn)生的數(shù)據(jù)。此外,數(shù)據(jù)處理系統(tǒng)200可以是平板電腦(tabletcomputer)、便攜式計(jì)算機(jī)或電話裝置。圖2中所示的其他組件可以不同于所示的示例性例子。例如,總線系統(tǒng)可以包括一個(gè)或多個(gè)總線,諸如系統(tǒng)總線、1/0總線和PCI總線。當(dāng)然,可以利用提供連接到通信組織(fabric)或架構(gòu)的不同裝系k。此外,通信單元可以:括一個(gè)或多個(gè)^于^i二接收:據(jù)"i置,諸如調(diào)制解調(diào)器222或LAN網(wǎng)絡(luò)適配器212。此外,存儲器例如可以是主存儲器208或諸如在NB/MCH202中發(fā)現(xiàn)的高速緩存器。此外,處理單元可以包括一個(gè)或多個(gè)處理器或CPU。而且,示例性實(shí)施例可以在邏輯分區(qū)的數(shù)據(jù)處理系統(tǒng)中被實(shí)現(xiàn)。圖l和圖2中所示的例子并不意味著暗示架構(gòu)限制。此外,示例性實(shí)施例提供了計(jì)算機(jī)實(shí)施方法、設(shè)備和計(jì)算機(jī)可用程序代碼,用于編譯源代碼和用于執(zhí)行代碼。參考所示實(shí)施例描述的方法可以在數(shù)據(jù)處理系統(tǒng)中執(zhí)行,諸如圖1中所示的數(shù)據(jù)處理系統(tǒng)100或圖2中所示的數(shù)據(jù)處理系統(tǒng)200。說明性實(shí)施例提供了一種計(jì)算機(jī)執(zhí)行方法、系統(tǒng)和計(jì)算機(jī)可用程序代碼,用于從操作系統(tǒng)、例如高級互動執(zhí)行體程序操作系統(tǒng)竊取中斷矢量。響應(yīng)于超級用戶、諸如具有對數(shù)據(jù)處理系統(tǒng)的根訪問權(quán)限(rootaccess)的系統(tǒng)管理員在數(shù)據(jù)處理系統(tǒng)中的操作系統(tǒng)上安裝內(nèi)核模塊,內(nèi)核模塊分配數(shù)據(jù)處理系統(tǒng)中實(shí)際存儲器的連續(xù)(contiguous)塊,并將定制中斷處理程序擴(kuò)展程序從內(nèi)核模塊拷貝到分配的存儲器塊中。此外,內(nèi)核模塊從架構(gòu)化的(architected)中斷矢量存儲器位置將操作系統(tǒng)中斷處理程序拷貝到保留的空間中。保留的空間直接位于分配的存儲器塊中每個(gè)定制中斷處理程序擴(kuò)展程序矢量位置之后。響應(yīng)于將操作系統(tǒng)中斷處理程序拷貝到分配的存儲器塊中的保留空間中,內(nèi)核模塊將定制中斷處理程序從內(nèi)核模塊拷貝到架構(gòu)化的中斷矢量存儲器位置中操作系統(tǒng)中斷處理程序之上。定制中斷處理程序在被拷貝到中斷矢量存儲器位置中之后處理操作系統(tǒng)所接收的所有中斷。然后,響應(yīng)于操作系統(tǒng)接收到中斷,與該中斷相關(guān)聯(lián)的定制中斷處理程序中的一個(gè)開始處理該中斷。與該中斷相關(guān)聯(lián)的定制中斷處理程序保存基本寄存器狀態(tài),并跳轉(zhuǎn)到定制中斷處理程序擴(kuò)展程序之一。該定制中斷處理程序擴(kuò)展程序與該定制中斷處理程序相對應(yīng).然后,特殊處理。響應(yīng)于確定定制中斷處理程序擴(kuò)展程序要求特殊處理,^制中斷處理程序擴(kuò)展程序繼續(xù)定制中斷代碼以例如執(zhí)行用于測試所有數(shù)據(jù)處理系統(tǒng)資源的測試程序。隨后,定制中斷處理程序擴(kuò)展程序從中斷返回。中斷是指示需要改變處理單元的執(zhí)行的信號。對于中斷信號的正常響應(yīng)是在中斷矢量處開始執(zhí)行中斷處理程序。中斷處理程序保存處理單元的執(zhí)行狀態(tài)并啟動上下文切換。中斷矢量是中斷處理程序的存儲器地址或到中斷矢量表中的索引。中斷矢量表包含中斷處理程序的存儲器地址。中斷矢量表將中斷處理程序與中斷請求相關(guān)聯(lián)。當(dāng)一個(gè)中斷將處理單元中斷時(shí),處理單元查詢中斷矢量表中的中斷處理程序,并將控制轉(zhuǎn)移到中斷處理程序。說明性實(shí)施例允許測試程序在OS上方運(yùn)行,同時(shí)允許測試程序訪問任何和/或所有系統(tǒng)硬件資源,諸如實(shí)際存儲器、高速緩存器、和寄存器以便測試。然而,應(yīng)該注意,可替換的說明性實(shí)施例可僅允許測試程序訪問系統(tǒng)硬件資源的指定部分。說明性實(shí)施例通過從os竊取中斷矢量的控制并以允許測試程序完全訪問系統(tǒng)的定制中斷處理程序取代被竊取的OS中斷處理程序而為測試程序提供對系統(tǒng)資源的全部訪問權(quán)限。當(dāng)測試程序不要求定制中斷處理時(shí),定制中斷處理程序擴(kuò)展程序僅將控制傳遞到OS中斷處理程序,就好像定制中斷處理程序和定制中斷處理程序擴(kuò)展程序沒有出現(xiàn)一樣。換句話說,OS不知道定制中斷處理程序和定制中斷處理程序擴(kuò)展程序的存在。通過在定制中斷處理程序擴(kuò)展程序中引入某些鉤子函數(shù)(hook),測試程序可進(jìn)入任何機(jī)器狀態(tài),并有權(quán)訪問所有機(jī)器資源而無需OS知道。結(jié)果,用戶例如可使用說明性實(shí)施例來周期地跟蹤特定中斷或周期地監(jiān)視特權(quán)或分區(qū)管理器模式的處理器專用寄存器值。說明性實(shí)施例包括由超級用戶安裝在OS上的內(nèi)核模塊或內(nèi)核擴(kuò)展程序形式的軟件程序、取代OS中斷處理程序的定制中斷處理程序、和從定制中斷矢量調(diào)用的實(shí)際擴(kuò)展程序代碼。應(yīng)該指出,程序開發(fā)人員必須以以下方式編寫內(nèi)核模塊,即內(nèi)核模塊具有關(guān)于該內(nèi)核模塊將在其上運(yùn)行的系統(tǒng)硬件架構(gòu)和OS的知識。在os接收到中斷后,定制中斷處理程序?yàn)樵撎囟ㄖ袛鄡H保存少量重要寄存器,然后跳轉(zhuǎn)到定制中斷處理程序擴(kuò)展程序。定制中斷處理程序擴(kuò)展程序判斷中斷是發(fā)生在測試內(nèi)部,還是被調(diào)用以開始測試,還是被os處理。如果中斷發(fā)生在測試內(nèi)部或被調(diào)用以開始測試,則中斷處理程序跳轉(zhuǎn)到用于處理這些類型的測試情形的代碼。如果中斷被os處理,則先前被使用的處理器寄存器被恢復(fù),并且執(zhí)行路徑通過落入原始OS中斷處理程序中而如正常那樣繼續(xù)。因此,說明性實(shí)施例允許os中斷處理程序在測試程序不執(zhí)行對系統(tǒng)資源的測試時(shí)如正常那樣繼續(xù)處理中斷。此外,說明性實(shí)施例使測試程序運(yùn)行在os上方,而沒有os的知識和限制,同時(shí)保持對所有系統(tǒng)資源的訪問權(quán)限。說明性實(shí)施例相對于無OS(no-OS)測試程序方法具有優(yōu)勢,因?yàn)闇y試程序除了編寫測試代碼和執(zhí)行測試之外不需要擔(dān)心任何事情,這是因?yàn)镺S負(fù)責(zé)測試程序的存儲器需求和調(diào)度。而且,說明性實(shí)施例可允許多個(gè)測試程序同時(shí)在OS下運(yùn)行,這可在系統(tǒng)測試中提供更多功能性。而且,說明性實(shí)施例相比于專用測試OS方法具有優(yōu)勢,因?yàn)檎f明性實(shí)施例不要求維護(hù)另一完整OS。而且,說明性實(shí)施例可利用現(xiàn)有OS的所有功能?,F(xiàn)在參考圖3,根據(jù)一個(gè)說明性實(shí)施例示出了表示數(shù)據(jù)處理系統(tǒng)各部件的方框圖。數(shù)據(jù)處理系統(tǒng)300例如可在圖2的數(shù)據(jù)處理系統(tǒng)200中實(shí)現(xiàn)。然而,應(yīng)該注意,圖3中描繪的例子僅用于說明目的,而非暗示對說明性實(shí)施例的任何架構(gòu)限制。換句話說,說明性實(shí)施例可包括更多或更少的部件,并可包括對于完成從OS竊取中斷矢量以允許件。在圖3的例子中,數(shù)據(jù)處理系統(tǒng)300包括OS302、應(yīng)用編程接口(API)304、應(yīng)用程序306、和GUI308。此外,數(shù)據(jù)處理系統(tǒng)300還包括處理單元310、312、和314,例如圖2中的處理單元206。OS302運(yùn)行在處理器上,諸如處理單元310、312、和/或314,并提供數(shù)據(jù)處理系統(tǒng)300內(nèi)部件的高級控制。應(yīng)該指出,說明性實(shí)施例可駐存在OS302上。例如,超級用戶,諸如具有對數(shù)據(jù)處理系統(tǒng)300的根訪問權(quán)限的系統(tǒng)管理員可在OS302上安裝內(nèi)核模塊316。內(nèi)核模塊316是擴(kuò)展內(nèi)核線程的功能性以執(zhí)行一個(gè)說明性實(shí)施例的過程的軟件模塊。而且,內(nèi)核模塊316包括OS中斷矢量竊取代碼318。OS中斷矢量竊取代碼318是按照說明性實(shí)施例的過程竊取OS中斷矢量的代碼。內(nèi)核模塊316利用OS中斷矢量竊取代碼318來從OS302竊取中斷矢量處的OS中斷處理程序,以允許測試程序訪問任何和/或所有數(shù)據(jù)處理系統(tǒng)300資源。在超級用戶在OS302上安裝內(nèi)核模塊316后,OS中斷矢量竊取代碼318使用其對于OS302和數(shù)據(jù)處理系統(tǒng)300的架構(gòu)的了解來執(zhí)行以下步驟。首先,OS中斷矢量竊取代碼318分配足夠大以至于可以包含所有現(xiàn)有OS中斷處理程序和定制中斷處理程序擴(kuò)展程序代碼的實(shí)際存儲器的連續(xù)塊。在分配實(shí)際存儲器塊后,OS中斷矢量竊取代碼318將定制中斷處理程序擴(kuò)展程序代碼拷貝到這個(gè)分配的存儲器塊中,其中在每個(gè)定制中斷處理程序擴(kuò)展程序后具有空間來放置用于該特定中斷的被竊取的OS中斷處理程序。隨后,OS中斷矢量竊取代碼318為數(shù)據(jù)處理系統(tǒng)中每個(gè)處理單元,諸如處理單元310、312、和314調(diào)用內(nèi)核線程。然后,OS中斷矢量竊取代碼318使處理單元310、312、和314的每個(gè)內(nèi)核線程執(zhí)行同步處理單元例程。因此,所有內(nèi)核線程同步,并禁用外部中斷。此后,OS中斷矢量竊取代碼318指示內(nèi)核線程之一、諸如主處理單元內(nèi)核線程將每個(gè)OS中斷處理程序從相應(yīng)中斷矢量拷貝到OS儲器塊。隨后,OS中斷矢量竊取代碼318使用該主處理單元內(nèi)核線程將定制中斷處理程序拷貝到中斷處理程序存儲器位置中OS中斷處理程序之上。然后,拷貝內(nèi)核線程發(fā)出信號通知其他內(nèi)核線程拷貝任務(wù)完成。在拷貝任務(wù)完成后,OS中斷矢量竊取代碼318再次同步所有內(nèi)核線程,并重新4吏能外部中斷。然后,除了啟動(starting)內(nèi)核線程之外的所有內(nèi)核現(xiàn)成終止。此時(shí),定制中斷處理程序位于中斷矢量存儲器位置中,且用于每個(gè)中斷的定制中斷處理程序擴(kuò)展程序代碼在實(shí)際存儲器的連續(xù)塊中直接位于OS中斷處理程序代碼前面。定制中斷程序擴(kuò)展程序代碼以該方式位于OS中斷處理程序代碼前面,使得如果中斷被傳遞到OS302,則定制中斷處理程序擴(kuò)展程序代碼恢復(fù)所有先前使用的寄存器,且無中斷^l理程i,就好象定制中斷處理程序代碼和定制^斷處理程序擴(kuò)展程序代碼從未存在那樣。API304允許數(shù)據(jù)處理系統(tǒng)300的用戶利用標(biāo)準(zhǔn)相容接口(standardconsistentinterface)調(diào)用系統(tǒng)能力,而無需考慮特定功能如何實(shí)現(xiàn),其中數(shù)據(jù)處理系統(tǒng)300的用戶可以是個(gè)體或軟件例程。應(yīng)件的測試程序。然而,應(yīng)該指出,應(yīng)用程序306可表示任何類型的軟件應(yīng)用程序或程序,并也可表示多個(gè)應(yīng)用程序和/或程序。數(shù)據(jù)處理系統(tǒng)300的用戶利用GUI308與駐存在數(shù)據(jù)處理系統(tǒng)300內(nèi)的程序和應(yīng)用程序、例如OS302和應(yīng)用程序306交互。GUI308是結(jié)合可移動窗口和圖標(biāo)的基于圖形的用戶接口,其可被顯示在顯示屏上并由用戶輸入設(shè)備操縱。例如,GUI308可被顯示在視頻顯示終端104上,并通過圖1中的鍵盤106和鼠標(biāo)110操縱。通常,GUI308是用戶與計(jì)算機(jī)、諸如數(shù)據(jù)處理系統(tǒng)300交互的標(biāo)準(zhǔn)方式。現(xiàn)在參考圖4,按照一個(gè)說明性實(shí)施例描述將OS中斷處理程序拷貝到保留的存儲器空間的一個(gè)示例性說明。OS中斷處理程序拷貝過程400包括架構(gòu)化中斷矢量存儲器位置402、定制中斷矢量404、和連續(xù)的實(shí)際存儲器塊406。架構(gòu)化中斷矢量存儲器位置402包括用于中斷矢量1到6的OS中斷處理程序408。中斷矢量1到6分別包含OS中斷處理程序4081到6。而且,定制中斷矢量404包括用于中斷矢量1到6的定制中斷處理程序409。定制中斷矢量4041到6分別包含定制中斷處理程序4091到6。連續(xù)的實(shí)際存儲器塊406是大到足以存儲所有定制中斷處理程序擴(kuò)展程序和OS中斷處理程序的連續(xù)的實(shí)際存儲器塊。此外,連續(xù)的實(shí)際存儲器塊406被包含在易失性存儲器設(shè)備中,例如圖2中的主存儲器208或另一隨機(jī)存取存儲器(RAM)設(shè)備中。連續(xù)的實(shí)際存儲器塊406包括用于中斷矢量1到6的定制中斷處理程序擴(kuò)展程序410和保留的空間412s中斷矢量1到6分別包含定制中斷處理程序擴(kuò)展程—序4101到6。保留的空間412是為OS中斷處理程序4081到6保留的空間。OS中斷處理程序4081到6分別與定制中斷處理程序擴(kuò)展程序4101到6相關(guān)聯(lián)。說明性實(shí)施例在保留的空間412中將每個(gè)OS中斷處理程序4081到6拷貝在其相關(guān)聯(lián)的定制中斷處理程序擴(kuò)展程序4101到6之下。參考圖5,按照一個(gè)說明性實(shí)施例繪出了將定制中斷處理程序拷貝在OS中斷處理程序之上的一個(gè)示例性說明。定制中斷處理程序拷貝過程500包括架構(gòu)化中斷矢量存儲器位置502、定制中斷矢量504、和連續(xù)的實(shí)際存儲器塊506。架構(gòu)化中斷矢量存儲器位置502包括用于矢量1到6的OS中斷處理程序508。中斷矢量1到6分別包含OS中斷處理程序5081到6。定制中斷矢量504包括用于定制中斷矢量1到6的定制中斷處理程序509。定制中斷矢量5041到6分別包含定制中斷處理程序5091到6。定制中斷處理程序5091到6分別與OS中斷處理程序5081到6相關(guān)聯(lián)。說明性實(shí)施例將定制中斷處理程序5091到6在架構(gòu)化中斷矢量存儲器位置502中拷貝在OS中斷處理程序5081到6之上。在說明性實(shí)施例將用于矢量1到6的OS中斷處理程序408在圖4中保留的空間412中拷貝在其相關(guān)聯(lián)的用于矢量1到6的定制中斷處理程序擴(kuò)展程序410后之后,連續(xù)的實(shí)際存儲器塊506包含用于矢量1到6的定制中斷處理程序擴(kuò)展程序510和用于矢量1到6的OS中斷處理程序512。用于矢量1到6的OS中斷處理程序512分別是用于矢量1到6的OS中斷處理程序508的復(fù)制副本。參考圖6,按照一個(gè)說明性實(shí)施例示出了在從OS竊取中斷矢量之后的最后存儲器映射的一個(gè)示例性示圖。最后存儲器映射600包括架構(gòu)化中斷矢量存儲器位置602、定制中斷矢量604、和連續(xù)的實(shí)際存儲器塊606。在圖5中說明性實(shí)施例將用于矢量1到6的定制中斷處理程序509拷貝在用于矢量1到6的OS中斷處理程序508之上后,架構(gòu)化中斷矢量存儲器位置602包含用于矢量1到6的定制中斷處理程序608,而非用于矢量1到6的OS中斷處理程序,例如圖5中架構(gòu)化中斷矢量存儲器位置502中用于矢量1到6的OS中斷處理程序508。用于矢量1到6的定制中斷處理程序608分別是用于矢量1到6的定制中斷處理程序609的復(fù)制副本。連續(xù)的實(shí)際存儲器塊606包含用于矢量1到6的定制中斷處理程序擴(kuò)展程序610和用于矢量1到6的OS中斷處理程序612,諸如圖5中的連續(xù)的實(shí)際存儲器塊506。應(yīng)該指出,定制中斷處理程序608處理所有中斷。然后,定制中斷處理程序608跳轉(zhuǎn)到相關(guān)聯(lián)的定制中斷處理程序擴(kuò)展程序610,在那里如果需要,則定制處理繼續(xù)??商鎿Q地,中斷狀態(tài)被恢復(fù),且OS中斷處理程序612將中斷處理為正常。參考圖7,按照一個(gè)說明性實(shí)施例示出了說明從OS竊取中斷矢量的一個(gè)示例性過程的流程圖表示。圖7中所示的過程可在內(nèi)核模塊中執(zhí)行,例如圖3中的內(nèi)核模塊316。當(dāng)超級用戶、諸如對系統(tǒng)具有根訪問權(quán)限的系統(tǒng)管理員將內(nèi)核模塊安裝在OS、諸如圖3中的OS302上時(shí),過程開始(步驟702)。在超級用戶在步驟702中安裝內(nèi)核模塊之后,內(nèi)核模塊分配一塊實(shí)際存儲器,諸如圖4中的連續(xù)的實(shí)際存儲器塊406(步驟704)。隨后,內(nèi)核模塊將中斷矢量的定制中斷處理程序擴(kuò)展程序、諸如圖4中用于矢量1到6的定制中斷處理程序擴(kuò)展程序410拷貝到實(shí)際存儲器的被分配塊中(步驟706)。然后,內(nèi)核模塊將中斷矢量的OS中斷處理程序、諸如圖4中的用于矢量1到6的OS中斷處理程序408拷貝到實(shí)際存儲器的被分配塊中,且每個(gè)都直接在保留的空間、諸如圖4中的保留的空間412中其相應(yīng)定制中斷處理程序擴(kuò)展程序后面(步驟708)。然而,應(yīng)該指出,在一個(gè)可替換實(shí)施例中,如果內(nèi)核模塊被加載到實(shí)際存儲器中,則步驟708可能不需要被執(zhí)行。內(nèi)核模塊可被加載到實(shí)際存儲器中,例如通過執(zhí)行到操作系統(tǒng)內(nèi)核的"竊用(hack)"。然后,內(nèi)核模塊為系統(tǒng)中每個(gè)中央處理單元、諸如圖3中的處理單元310、312、和314生成內(nèi)核線程,并將所生成的內(nèi)核線程綁定(bind)到其相關(guān)聯(lián)的中央處理單元(步驟710)。隨后,內(nèi)核模塊使內(nèi)核線程同步,禁用每個(gè)內(nèi)核線程中的外部中斷,然后再次使內(nèi)核線程同步(步驟712)。然后,系統(tǒng)中的每個(gè)中央處理單元判斷該中央處理單元是否是主中央處理單元(步驟714)。如果中央處理單元是主中央處理單元,即步驟714的"是"輸出,則內(nèi)核模塊使用主中央處理單元中的創(chuàng)建的內(nèi)核線程來將中斷矢量的定制中斷處理程序、諸如圖5中的用于矢量1到6的定制中斷處理程序509在架構(gòu)化中斷矢量存儲器位置、諸如圖5中的架構(gòu)化中斷矢量存儲器位置502中拷貝在OS中斷處理程序之上(步驟716)。隨后,主中央處理單元中的創(chuàng)建的內(nèi)核線程向其他的相應(yīng)的中央處理單元中的創(chuàng)建的內(nèi)核線程發(fā)送信號通知將定制中斷處理程序拷貝在中斷矢量的OS中斷處理程序之上已經(jīng)完成(步驟718)。然而,過程進(jìn)入步驟720。再回到步驟714,如果中央處理單元不是主中央處理單元,即步驟714的"否,,輸出,則中央處理單元判斷主中央處理單元是否完成了對中斷矢量的中斷處理程序的拷貝(步驟720)。如果主中央處理單元沒有完成對中斷矢量的中斷處理程序的拷貝,即步驟720的"否"輸出,則過程返回到步驟720,其中中央處理單元等待主中央處理單元完成拷貝過程。如果主中央處理單元完成了對中斷矢量的中斷處理程序的拷貝,即步驟720的"是"輸出,則內(nèi)核模塊恢復(fù)每個(gè)內(nèi)核線程中的外部中斷,并退出內(nèi)核線程(步驟722)。然后,過程終止?,F(xiàn)在參考圖8,按照一個(gè)說明性實(shí)施例示出了處理OS中斷的一個(gè)示例性過程的流程圖。圖8中所示的過程可在某矢量處的定制中斷處理程序中執(zhí)行,諸如圖6中用于矢量1的定制中斷處理程序608。當(dāng)OS、諸如圖3中的OS302接收到中斷時(shí),過程開始(步驟802)。在OS接收到中斷后,該矢量處的定制中斷處理程序開始處理該中斷(步驟804)。然后,該矢量處的定制中斷處理程序保存基本寄存器的狀態(tài)(步驟806)。然后,該矢量處的定制中斷處理程序跳轉(zhuǎn)到與該中斷相關(guān)聯(lián)的某矢量處的定制中斷處理程序擴(kuò)展程序,諸如圖6中的矢量1處的定制中斷處理程序擴(kuò)展程序610(步驟808)。在跳轉(zhuǎn)到定制中斷處理程序擴(kuò)展程序后,定制中斷處理程序擴(kuò)展程序判斷該中斷處理程序擴(kuò)展程序是否要求特別處理,諸如系統(tǒng)資源測試(步驟810)。如果不要求特殊處理,即步驟810的"否"輸出,則定制中斷處理程序擴(kuò)展程序?qū)⒒炯拇嫫骰謴?fù)到其在中斷時(shí)的狀態(tài)(步驟812)。然后,定制中斷處理程序擴(kuò)展程序短相對跳轉(zhuǎn)到某矢量處的OS中斷處理程序,諸如圖6中矢量1處的OS中斷處理程序612,或如果OS中斷處理程序直接在定制中斷處理程序擴(kuò)展程序之后則僅僅繼續(xù)執(zhí)行(步驟814)。隨后,定制中斷處理程序擴(kuò)展程序從中斷返回(步驟816)。該過程然后終止。再回到步驟810,如果要求特殊處理,即步驟810的"是"輸出,則定制中斷處理程序擴(kuò)展程序繼續(xù)到定制中斷代碼(步驟818)。在步驟818中的定制中斷代碼完成后返回到定制中斷處理程序擴(kuò)展程序之后,定制中斷處理程序擴(kuò)展程序判斷定制中斷處理程序擴(kuò)展程序是否繼續(xù)到OS中斷處理程序(步驟820)。如果定制中斷處理程序擴(kuò)展程序繼續(xù)到OS中斷處理程序,即步驟820的"是"輸出,則過程返回到步驟812,其中定制中斷處理程序擴(kuò)展程序?qū)⒒炯拇嫫骰謴?fù)為其在中斷時(shí)的狀態(tài)。如果定制中斷處理程序擴(kuò)展程序不繼續(xù)到OS中斷處理程序,即步驟820的"否,,輸出,則過程返回到步驟816,其中定制中斷處理程序擴(kuò)展程序從中斷返回。因此,說明性實(shí)施例提供了一種計(jì)算機(jī)實(shí)現(xiàn)的方法、系統(tǒng)、和計(jì)算機(jī)可用程序代碼,用于從OS竊取中斷矢量以允許測試程序訪問所有系統(tǒng)資源。本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或包含硬件和軟件元素二者的實(shí)施例的形式。在一個(gè)優(yōu)選實(shí)施例中,本發(fā)明以軟件實(shí)現(xiàn),其包括但不限于固件、駐存軟件、微代碼等。而且,本發(fā)明可釆用可從提供由計(jì)算機(jī)或任何指令執(zhí)行系統(tǒng)使用或與其結(jié)合的程序代碼的計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)訪問的計(jì)算機(jī)程序產(chǎn)品的形式。為了本說明書的目的,計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可以是可包含、存儲、通信、傳播、或轉(zhuǎn)移由指令執(zhí)行系統(tǒng)、裝置、或設(shè)備使用或與其結(jié)合的程序的任何有形裝置以便。介質(zhì)可以是電子、磁、光學(xué)、電磁、紅外、或半導(dǎo)體系統(tǒng)(或裝置或設(shè)備)或傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的例子包括半導(dǎo)體或固態(tài)存儲器、磁帶、可移動計(jì)算機(jī)盤、隨機(jī)存取存儲器(RAM)、ROM、硬磁盤、和光盤。光盤的當(dāng)前例子包括緊湊盤-只讀存儲器(CD-ROM)、緊湊盤-讀/寫(CD-R/W)、和DVD。過系統(tǒng)總線間接地耦接到存儲器元件的至少一個(gè)^處理器。存儲器^件可包括在程序代碼實(shí)際執(zhí)行期間所使用的本地存儲器、大容量存儲器、和為至少某些程序代碼提供臨時(shí)存儲以便減少在執(zhí)行過程中必須從大容量存儲器檢索代碼的次數(shù)的高速緩存存儲器。輸入/輸出或I/O設(shè)備(包括但不限于鍵盤、顯示器、指點(diǎn)設(shè)備等)可直接地或通過中間的1/0控制器耦接到系統(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)卡僅是當(dāng)前可用的幾種網(wǎng)絡(luò)適配器。本發(fā)明的說明書是為了說明和介紹的目的而提供的,而不是為了窮舉或限制到所公開形式的發(fā)明。許多修改和變化對本領(lǐng)域技術(shù)人員來說是顯而易見的。選擇并介紹了實(shí)施例,以便最好地解釋本發(fā)明的原理、實(shí)踐應(yīng)用,并使本領(lǐng)域的其他技術(shù)人員能夠理解本發(fā)明的具有適于所考慮的特定應(yīng)用的多種修改的多種實(shí)施例。權(quán)利要求1.一種用于從操作系統(tǒng)竊取中斷矢量的計(jì)算機(jī)實(shí)現(xiàn)方法,所述計(jì)算機(jī)實(shí)現(xiàn)方法包括將定制中斷處理程序擴(kuò)展程序從內(nèi)核模塊拷貝到分配的存儲器塊中;將操作系統(tǒng)中斷處理程序從中斷矢量存儲器位置拷貝到所述分配的存儲器塊中的保留空間中;響應(yīng)于將所述操作系統(tǒng)中斷處理程序拷貝到所述分配的存儲器塊中的所述保留空間中,將定制中斷處理程序從所述內(nèi)核模塊拷貝在所述中斷矢量存儲器位置中所述操作系統(tǒng)中斷處理程序之上,其中所述定制中斷處理程序在被拷貝到所述中斷矢量存儲器位置中之后處理操作系統(tǒng)所接收的所有中斷。2.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)方法,還包括響應(yīng)于操作系統(tǒng)接收到中斷,從與所述中斷相關(guān)聯(lián)的定制中斷處理程序中的一個(gè)定制中斷處理程序跳轉(zhuǎn)到所述定制中斷處理程序擴(kuò)展程序中的一個(gè)定制中斷處理程序擴(kuò)展程序,其中所述一個(gè)定制中斷處理程序擴(kuò)展程序與所述一個(gè)定制中斷處理程序相對應(yīng);判斷所述一個(gè)定制中斷處理程序擴(kuò)展程序是否要求特殊處理;響應(yīng)于確定所述一個(gè)定制中斷處理程序擴(kuò)展程序要求特殊處理,繼續(xù)到定制中斷代碼;以及從所述中斷返回。3.如權(quán)利要求2所述的計(jì)算機(jī)實(shí)現(xiàn)方法,還包括響應(yīng)于確定所述一個(gè)定制中斷處理程序擴(kuò)展程序不要求特殊處理,將寄存器恢復(fù)為所述中斷時(shí)的狀態(tài),其中所述寄存器在一個(gè)或多個(gè)處理單元中。4.如權(quán)利要求3所述的計(jì)算機(jī)實(shí)現(xiàn)方法,還包括為所述一個(gè)或多個(gè)處理單元中的每一個(gè)生成內(nèi)核線程,以為所述一個(gè)或多個(gè)處理單元中的每一個(gè)形成生成的內(nèi)核線程,其中主處理單量存儲器位置中所述操作系統(tǒng)中斷處理程序之上。5.如權(quán)利要求4所述的計(jì)算機(jī)實(shí)現(xiàn)方法,還包括禁用每個(gè)生成的內(nèi)核線程中的外部中斷;判斷主處理單元是否完成了將所述定制中斷處理程序拷貝在所述操作系統(tǒng)中斷處理程序之上;以及響應(yīng)于確定主處理單元完成了將所述定制中斷處理程序拷貝在所述操作系統(tǒng)中斷處理程序之上,恢復(fù)所述外部中斷。6.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中所述分配的存儲器塊大到足以存儲所述定制中斷處理程序擴(kuò)展程序和所述操作系統(tǒng)中斷處理程序。7,如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中所述保留空間在所述分配的存儲器塊中直接位于每個(gè)所述定制中斷處理程序后面。8.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中所述分配的存儲器塊被包含在實(shí)際存儲器設(shè)備內(nèi),且實(shí)際存儲器設(shè)備是易失性存儲器設(shè)備。9.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中所述分配的存儲器塊是連續(xù)的存儲器塊。10.如權(quán)利要求l所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中每個(gè)所述操作系統(tǒng)中斷處理程序與一個(gè)定制中斷處理程序擴(kuò)展程序相關(guān)聯(lián)。11.如權(quán)利要求l所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中定制中斷代碼執(zhí)行測試程序以測試系統(tǒng)資源,且定制中斷代碼包括訪問最低層系統(tǒng)資源的鉤子函數(shù)。12.如權(quán)利要求5所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中由內(nèi)核模塊執(zhí)行所述拷貝、生成、禁用、判斷主處理單元是否完成拷貝、以及恢復(fù)步13.如權(quán)利要求12所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中所述內(nèi)核模塊包括操作系統(tǒng)中斷矢量竊取代碼。14.如權(quán)利要求2所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中由定制中斷處理程序執(zhí)行所述跳轉(zhuǎn)、判斷是否要求特殊處理、繼續(xù)、和返回步驟。15.如權(quán)利要求11所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中超級用戶將所述內(nèi)核模塊安裝在操作系統(tǒng)上。16.如權(quán)利要求l所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中操作系統(tǒng)是高級互動執(zhí)行體操作系統(tǒng)。17.—種用于從操作系統(tǒng)竊取中斷矢量的數(shù)據(jù)處理系統(tǒng),包括總線系統(tǒng);連接到所述總線系統(tǒng)的存儲設(shè)備,其中所述存儲設(shè)備包括一組指令;以及連接到所述總線系統(tǒng)的處理單元,其中所述處理單元執(zhí)行所述一組指令以將定制中斷處理程序擴(kuò)展程序從內(nèi)核模塊拷貝到分配的存儲器塊中;將操作系統(tǒng)中斷處理程序從中斷矢量存儲器位置拷貝到分配的存儲器塊的保留空間中;響應(yīng)于將操作系統(tǒng)中斷處理程序拷貝到分配的存儲器塊中的保留空間中,將定制中斷處理程序從內(nèi)核模塊拷貝在中斷矢量存儲器位置中操作系統(tǒng)中斷處理程序之上,其中定制中斷處理程序在被拷貝到中斷矢量存儲器位置中之后處理操作系統(tǒng)所接收的所有中斷。全文摘要一種用于從操作系統(tǒng)竊取中斷矢量的系統(tǒng)。定制中斷處理程序擴(kuò)展程序被從內(nèi)核模塊拷貝到被分配的存儲器塊中。而且,操作系統(tǒng)中斷處理程序被從中斷矢量存儲器位置拷貝到被分配的存儲器塊中的保留空間中。響應(yīng)于將操作系統(tǒng)中斷處理程序拷貝到被分配的存儲器塊中的保留空間中,來自內(nèi)核模塊的定制中斷處理程序被拷貝在中斷矢量存儲器位置中操作系統(tǒng)中斷處理程序之上。定制中斷處理程序在被拷貝到中斷矢量存儲器位置中之后處理操作系統(tǒng)所接收的所有中斷。文檔編號G06F9/46GK101320338SQ20081009539公開日2008年12月10日申請日期2008年5月5日優(yōu)先權(quán)日2007年6月4日發(fā)明者A·A·帕特拉斯庫,B·L·希羅德,S·卡普爾,S·阿拉帕蒂申請人:國際商業(yè)機(jī)器公司