專(zhuān)利名稱(chēng):關(guān)于程序代碼轉(zhuǎn)換的管理進(jìn)程文件系統(tǒng)的方法及設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明主要涉及計(jì)算機(jī)及計(jì)算機(jī)軟件的領(lǐng)域,更具體地講,涉及可用在 例如轉(zhuǎn)換? 1用進(jìn)程文件系統(tǒng)的程序代碼的代碼轉(zhuǎn)換器、仿真器及加速器中的 程序代碼轉(zhuǎn)換方法及設(shè)備。
背景技術(shù):
在整個(gè)嵌入式及非嵌入式CPU市場(chǎng)中常見(jiàn)的有指令集架構(gòu)(ISA),其含 有多種軟件,能被"加速,,以提高性能或被"轉(zhuǎn)換,,至各種可能的處理器以 提供更好的成本/性能效益,只要這些處理器能夠透明地存取相關(guān)的軟件即 可。然而,目前主要的CPU架構(gòu)在時(shí)間上鎖定其ISA而無(wú)法提高性能與擴(kuò)大 市場(chǎng),因此"合成CPU,,的共同架構(gòu)會(huì)有幫助。
常希望能將針對(duì)第一類(lèi)型的計(jì)算機(jī)處理器("主體"(subject)處理器) 而寫(xiě)的程序代碼在第二類(lèi)型的處理器("目標(biāo)"處理器)上運(yùn)行。于此,仿真 器或轉(zhuǎn)換器用來(lái)執(zhí)行程序代碼的轉(zhuǎn)換,使得主體程序可在目標(biāo)處理器上運(yùn)行。 第WO00/22521號(hào)PCT申請(qǐng)揭露程序代碼轉(zhuǎn)換方法及設(shè)備以促進(jìn)此類(lèi)加速、 轉(zhuǎn)換及共同架構(gòu)的能力,這些將為本發(fā)明的實(shí)施例所利用。
在某些操作系統(tǒng)中,特別包括類(lèi)似Unix的操作系統(tǒng),會(huì)提供進(jìn)程文件系 統(tǒng)??捎梢粋€(gè)進(jìn)程使用進(jìn)程文件系統(tǒng)以存取關(guān)于其它進(jìn)程及關(guān)于處理器所提 供的硬件環(huán)境的信息。例如,來(lái)自太陽(yáng)微系統(tǒng)公司(Sun Microsystems Inc.) 的所羅斯(Solaris)操作系統(tǒng)提供進(jìn)程文件系統(tǒng),其包含在稱(chēng)為/proc的目錄 中的虛擬文件系統(tǒng)。在進(jìn)程運(yùn)行時(shí)由操作系統(tǒng)動(dòng)態(tài)建立/proc的內(nèi)容與結(jié)構(gòu), 通常為每一個(gè)現(xiàn)存的進(jìn)程產(chǎn)生并維持一個(gè)子目錄。
提供如上所述的進(jìn)程文件系統(tǒng)可能會(huì)使程序代碼轉(zhuǎn)換復(fù)雜化。舉三個(gè)明 顯的例子。第一,若目標(biāo)操作系統(tǒng)不提供進(jìn)程文件系統(tǒng),但主體代碼引用進(jìn) 程文件系統(tǒng),則會(huì)有固有不兼容性。
第二,若目標(biāo)操作系統(tǒng)確實(shí)提供進(jìn)程文件系統(tǒng),其配置與操作仍可能會(huì)
與主體代碼所引用的進(jìn)程文件系統(tǒng)不兼容。第三,若目標(biāo)操作系統(tǒng)確實(shí)提供兼容的進(jìn)程文件系統(tǒng),則可能難以區(qū)分 轉(zhuǎn)換器進(jìn)程與目標(biāo)進(jìn)程文件系統(tǒng)中的其它進(jìn)程。
允許關(guān)于主體進(jìn)程的信息整合至目標(biāo)操作系統(tǒng)的進(jìn)程文件系統(tǒng)的一種作 法是變更目標(biāo)處理器的操作系統(tǒng)。變更目標(biāo)操作系統(tǒng)可改變目標(biāo)進(jìn)程文件系
統(tǒng)建構(gòu)與管理的方式,并且通過(guò)建立內(nèi)核(kernel)模塊并將其插入至目標(biāo)操 作系統(tǒng)中來(lái)實(shí)現(xiàn),或通過(guò)直接變更目標(biāo)操作系統(tǒng)的源代碼來(lái)實(shí)現(xiàn)。然而,變 更目標(biāo)操作系統(tǒng)是難度很高的工作,且可能使目標(biāo)操作系統(tǒng)變得不穩(wěn)定。
提供關(guān)于主體程序代碼的轉(zhuǎn)換管理進(jìn)程文件系統(tǒng)的方法??膳渲媚軐⒅?體代碼轉(zhuǎn)換為目標(biāo)代碼的轉(zhuǎn)換器,而得以識(shí)別出主體程序中對(duì)主體進(jìn)程文件
系統(tǒng)的引用,并產(chǎn)生目標(biāo)代碼。所產(chǎn)生的目標(biāo)代碼能使轉(zhuǎn)換器以與主體處理 器的預(yù)期行為 一致的方式引用并提供進(jìn)程信息。
本發(fā)明的優(yōu)選實(shí)施例使轉(zhuǎn)換器能方便地管理主體進(jìn)程信息,而不需變更 目標(biāo)操作系統(tǒng)。這可避免目標(biāo)操作系統(tǒng)的不穩(wěn)定,并允許轉(zhuǎn)換器在轉(zhuǎn)換期間 正確地處理潛在不穩(wěn)定的主體進(jìn)程的行為。
本發(fā)明可由此改善進(jìn)行程序代碼轉(zhuǎn)換時(shí)的性能。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,提供在權(quán)利要求中所提出的設(shè)備及方法。根據(jù)從屬權(quán)利要 求以及以下描述,本發(fā)明的優(yōu)選特征將會(huì)清楚。
在一個(gè)示例性方面中,提供一種計(jì)算機(jī)設(shè)備,包含目標(biāo)處理器以及轉(zhuǎn) 換器進(jìn)程,響應(yīng)于接收的在主體處理器上執(zhí)行的主體代碼指令建立該轉(zhuǎn)換器 進(jìn)程;其中,該轉(zhuǎn)換器進(jìn)程配置成(a)以有關(guān)建立的轉(zhuǎn)換器進(jìn)程的信息填 充進(jìn)程數(shù)據(jù)結(jié)構(gòu),以及(b)響應(yīng)于接收的主體代碼中對(duì)主體進(jìn)程文件系統(tǒng)中 的信息的引用而引用步驟(a)的進(jìn)程數(shù)據(jù)結(jié)構(gòu)。
該轉(zhuǎn)換器進(jìn)程可配置成響應(yīng)于接收的各主體代碼指令建立另外的轉(zhuǎn)換器 進(jìn)程,其中,當(dāng)在主體處理器上執(zhí)行該主體代碼指令時(shí),該主體代碼指令將 建立主體進(jìn)程。多個(gè)轉(zhuǎn)換器進(jìn)程的各轉(zhuǎn)換器進(jìn)程可填充及引用共同的進(jìn)程數(shù) 據(jù)結(jié)構(gòu)。進(jìn)程數(shù)據(jù)結(jié)構(gòu)適當(dāng)?shù)匕铝兄换騼烧?a)各轉(zhuǎn)換器進(jìn)程可訪 問(wèn)的目錄,以及(b)各轉(zhuǎn)換器進(jìn)程可訪問(wèn)的共享的內(nèi)存區(qū)域。該計(jì)算機(jī)設(shè)備 可進(jìn)一步包含審核器,所述審核器配置成檢查其信息存在于進(jìn)程數(shù)據(jù)結(jié)構(gòu)中 的轉(zhuǎn)換器進(jìn)程的狀態(tài),并從該進(jìn)程數(shù)據(jù)結(jié)構(gòu)移除關(guān)于不再運(yùn)行的轉(zhuǎn)換器進(jìn)程
6的信息。
在另 一示例性方面中,提供一種關(guān)于程序代碼轉(zhuǎn)換的管理進(jìn)程文件系統(tǒng) 的方法,該程序代碼轉(zhuǎn)換將在主體處理器上執(zhí)行的主體代碼轉(zhuǎn)換成在目標(biāo)處 理器上執(zhí)行的目標(biāo)代碼,該方法包含下列步驟(a)響應(yīng)于接收的主體代碼 指令建立轉(zhuǎn)換器進(jìn)程,其中,當(dāng)在主體處理器上執(zhí)行該主體代碼指令時(shí),該 主體代碼指令將建立主體進(jìn)程;(b)以關(guān)于響應(yīng)于接收的主體代碼而建立的
一個(gè)或多個(gè)轉(zhuǎn)換器進(jìn)程的信息填充轉(zhuǎn)換器進(jìn)程可訪問(wèn)的進(jìn)程數(shù)據(jù)結(jié)構(gòu);以及
(c)響應(yīng)于在接收的主體代碼中對(duì)主體進(jìn)程文件系統(tǒng)中的信息的引用而引用
步驟(b)中填充的數(shù)據(jù)結(jié)構(gòu)。
該方法可進(jìn)一步包含下列步驟檢查其信息存儲(chǔ)于該進(jìn)程數(shù)據(jù)結(jié)構(gòu)中的 進(jìn)程的狀態(tài),以及從該進(jìn)程數(shù)據(jù)結(jié)構(gòu)移除關(guān)于不再運(yùn)行的轉(zhuǎn)換器進(jìn)程的信息, 例如,周期性地執(zhí)行檢查其信息存儲(chǔ)于該數(shù)據(jù)結(jié)構(gòu)中的進(jìn)程的狀態(tài)。該方法 可進(jìn)一步包含下列步驟(d)通過(guò)記錄已對(duì)進(jìn)程數(shù)據(jù)結(jié)構(gòu)中的信息作出引用 的轉(zhuǎn)換器進(jìn)程的識(shí)別符并記錄其信息已被引用的轉(zhuǎn)換器進(jìn)程的識(shí)別符,來(lái)記 錄該引用。該方法可進(jìn)一步包含下列步驟當(dāng)其信息被引用的轉(zhuǎn)換器進(jìn)程不 再運(yùn)行時(shí)從該進(jìn)程數(shù)據(jù)結(jié)構(gòu)移除于步驟(d)所記錄的數(shù)據(jù)。
在另一方面中,提供一種計(jì)算機(jī)可讀介質(zhì),其上記錄有可由計(jì)算機(jī)實(shí)施 以執(zhí)行關(guān)于從在主體處理器上執(zhí)行的主體代碼轉(zhuǎn)換成在目標(biāo)處理器上執(zhí)行的 目標(biāo)代碼的程序代碼轉(zhuǎn)換的管理進(jìn)程文件系統(tǒng)的方法的指令,該方法包含下 列步驟(a)響應(yīng)于接收的主體代碼指令建立轉(zhuǎn)換器進(jìn)程,其中,當(dāng)在主體 處理器上執(zhí)行該主體代碼指令時(shí),該主體代碼指令將建立主體進(jìn)程;(b)以 關(guān)于響應(yīng)于接收的主體代碼而建立的 一 個(gè)或多個(gè)轉(zhuǎn)換器進(jìn)程的信息填充轉(zhuǎn)換 器進(jìn)程可訪問(wèn)的進(jìn)程數(shù)據(jù)結(jié)構(gòu);以及(c)響應(yīng)于在接收的主體代碼中對(duì)主體 進(jìn)程文件系統(tǒng)中的信息的引用而引用步驟(b)中填充的數(shù)據(jù)結(jié)構(gòu)。
在另一方面中,提供一種轉(zhuǎn)換器設(shè)備,配置成接收在主體處理器上執(zhí)行
成(a)以關(guān)于響應(yīng)于接收的主體代碼而建立的一個(gè)或多個(gè)轉(zhuǎn)換器進(jìn)程的信 息填充進(jìn)程數(shù)據(jù)結(jié)構(gòu),以及(b)響應(yīng)于在接收的主體代碼中對(duì)主體進(jìn)程文件 系統(tǒng)中的信息的引用而引用步驟(a)的進(jìn)程數(shù)據(jù)結(jié)構(gòu)。
提供依照根據(jù)本發(fā)明的用于程序代碼轉(zhuǎn)換的改良架構(gòu)的各種實(shí)施例可實(shí) 現(xiàn)的各種方面及優(yōu)點(diǎn)的總結(jié),作為幫助本領(lǐng)域技術(shù)人員更迅速理解本發(fā)明的詳細(xì)討論的介紹,因此并不意圖以任何方式限制權(quán)利要求的范疇。
包含在此說(shuō)明書(shū)中并構(gòu)成說(shuō)明書(shū)的一部分的附圖示出目前較佳實(shí)施例, 并如下描述
圖1為示出本發(fā)明實(shí)施例可應(yīng)用于其中的設(shè)備的方框圖2為本發(fā)明實(shí)施例所利用的轉(zhuǎn)換器單元的示意圖3為示出本發(fā)明實(shí)施例所利用的設(shè)備的方框圖4為示出本發(fā)明示例實(shí)施例所利用的通訊信道的示意圖;以及
圖5為示出根據(jù)本發(fā)明示例實(shí)施例的管理進(jìn)程文件系統(tǒng)的方法的示意圖。
具體實(shí)施例方式
明人認(rèn)為最佳的實(shí)施本發(fā)明的模式。然而,對(duì)本領(lǐng)域技術(shù)人員而言各種變更 是顯而易見(jiàn)的,因?yàn)橐言诖颂貏e限定了本發(fā)明的主要原則以提供改善的程序 代碼轉(zhuǎn)換方法和設(shè)備。
參照?qǐng)D1,主體程序17意圖在具有主體處理器3的主體運(yùn)算平臺(tái)1上執(zhí) 行。然而,目標(biāo)運(yùn)算平臺(tái)10用來(lái)經(jīng)由執(zhí)行程序代碼轉(zhuǎn)換的轉(zhuǎn)換器單元19執(zhí) 行主體程序17。轉(zhuǎn)換器單元19執(zhí)行從主體代碼17至目標(biāo)代碼21的代碼轉(zhuǎn) 換,使得目標(biāo)代碼21可在目標(biāo)運(yùn)算平臺(tái)10上執(zhí)行。
如本領(lǐng)域技術(shù)人員所熟悉地,主體處理器3具有一組主體寄存器5。主 體內(nèi)存8保持主體代碼17及主體操作系統(tǒng)2等等。類(lèi)似地,圖1的示例目標(biāo) 運(yùn)算平臺(tái)10包含具有多個(gè)目標(biāo)寄存器15的目標(biāo)處理器13以及內(nèi)存18,該 內(nèi)存18存儲(chǔ)多個(gè)運(yùn)算組件,包括目標(biāo)操作系統(tǒng)20、主體代碼17、轉(zhuǎn)換器代 碼19及轉(zhuǎn)換的目標(biāo)代碼21。目標(biāo)運(yùn)算平臺(tái)IO通常為應(yīng)用微處理器之計(jì)算機(jī) 或其它適合的計(jì)算機(jī)。
在一個(gè)實(shí)施例中,轉(zhuǎn)換器代碼19為最佳化或非最佳化地將一個(gè)主體指令 集架構(gòu)(ISA)的主體代碼轉(zhuǎn)換成另一 ISA的轉(zhuǎn)換的目標(biāo)代碼的仿真器。在 另一實(shí)施例中,轉(zhuǎn)換器19作為加速器,用于執(zhí)行程序代碼最佳化而將主體代 碼轉(zhuǎn)換成目標(biāo)代碼。
8轉(zhuǎn)換器代碼19為實(shí)現(xiàn)轉(zhuǎn)換器的源代碼的適當(dāng)編譯的版本,并與操作系統(tǒng)
20—同在目標(biāo)處理器13上運(yùn)行??衫斫獾綀D1中所示的結(jié)構(gòu)僅為示例性的, 例如,根據(jù)實(shí)施例的軟件、方法及進(jìn)程可以以駐留在操作系統(tǒng)20之內(nèi)或之下 的代碼來(lái)實(shí)現(xiàn)。主體代碼17、轉(zhuǎn)換器代碼19、操作系統(tǒng)20及內(nèi)存18的存儲(chǔ) 機(jī)制可以為本領(lǐng)域技術(shù)人員已知的任何類(lèi)型。
在根據(jù)圖l的設(shè)備中,在運(yùn)行期間,動(dòng)態(tài)執(zhí)行程序代碼轉(zhuǎn)換,以在目標(biāo) 代碼21運(yùn)行的同時(shí)在目標(biāo)架構(gòu)IO上執(zhí)行。即,轉(zhuǎn)換器19與轉(zhuǎn)換的目標(biāo)代碼 21并行運(yùn)行。經(jīng)過(guò)轉(zhuǎn)換器19運(yùn)行目標(biāo)代碼17會(huì)涉及以交錯(cuò)的方式執(zhí)行的兩 種不同的代碼轉(zhuǎn)換器代碼19及目標(biāo)代碼21。因此,根據(jù)存儲(chǔ)的轉(zhuǎn)換的程 序的主體代碼17,在運(yùn)行期間由轉(zhuǎn)換器代碼19來(lái)產(chǎn)生目標(biāo)代碼21。
在一個(gè)實(shí)施例中,轉(zhuǎn)換器單元19仿真主體架構(gòu)1的相關(guān)部分,如主體處 理器3,尤其是主體寄存器5,同時(shí)實(shí)際上在目標(biāo)處理器13上將主體程序17 作為目標(biāo)代碼21執(zhí)行。在該優(yōu)選實(shí)施例中,提供至少一個(gè)全局寄存器庫(kù)27 (亦稱(chēng)為全局寄存器組27或抽象寄存器組27)。在多處理器環(huán)境中,根據(jù)主 體處理器的架構(gòu)可隨意提供多個(gè)的抽象寄存器組27。由轉(zhuǎn)換器19及目標(biāo)代 碼21的組件來(lái)提供主體狀態(tài)的表示。即,轉(zhuǎn)換器19在各種明確的編程語(yǔ)言 裝置(如變量及/或?qū)ο?中存儲(chǔ)主體狀態(tài)。相反地,轉(zhuǎn)換的目標(biāo)代碼21在 目標(biāo)寄存器15及內(nèi)存位置18 (它們由目標(biāo)代碼21的目標(biāo)指令操縱)中隱含 地提供主體處理器狀態(tài)。例如,全局寄存器庫(kù)27的低級(jí)表示僅為分配的內(nèi)存 區(qū)域。然而,在轉(zhuǎn)換器19的源代碼中,全局寄存器庫(kù)27為可以以較高級(jí)存 取并操縱的數(shù)據(jù)數(shù)組或?qū)ο蟆?br>
術(shù)語(yǔ)"基本塊,,為本領(lǐng)域技術(shù)人員所知?;緣K為具有確切進(jìn)入點(diǎn)與確 切離開(kāi)點(diǎn)的一段代碼,其將塊代碼限制于單一控制路徑。因此,基本塊為控 制流的有效基礎(chǔ)單位。適當(dāng)?shù)?,轉(zhuǎn)換器19將主體代碼17分成多個(gè)基本塊,
其中各基本塊為在單一進(jìn)入點(diǎn)的第一個(gè)指令到單一離開(kāi)點(diǎn)的最后一個(gè)指令 (如跳轉(zhuǎn)、調(diào)用或分支指令)之間的順序指令集。轉(zhuǎn)換器19可選擇這些基本 塊之一 (塊模式)或選擇一組基本塊(組塊模式)。組塊適當(dāng)?shù)匕灰暈閱?個(gè)單位的兩個(gè)或更多個(gè)基本塊。此外,轉(zhuǎn)換器可形成等同塊(iso-blocks),其 表示相同的主體代碼的基本塊,但進(jìn)入條件不同。
在優(yōu)選實(shí)施例中,根據(jù)主體指令序列產(chǎn)生中間表示(IR)樹(shù),作為從原 始主體程序17產(chǎn)生目標(biāo)代碼21的進(jìn)程的一部分。IR樹(shù)為主體程序所計(jì)算的表達(dá)及執(zhí)行的操作的抽象表示。之后,根據(jù)IR樹(shù)產(chǎn)生目標(biāo)代碼21。 IR節(jié)點(diǎn)
的集合實(shí)際上為有向無(wú)環(huán)圖(DAG),但常俗稱(chēng)為"樹(shù)"。
如本領(lǐng)域技術(shù)人員可理解地,在一個(gè)實(shí)施例中,使用如C+十的面向?qū)ο?的編程語(yǔ)言來(lái)實(shí)現(xiàn)轉(zhuǎn)換器19。例如,將IR節(jié)點(diǎn)實(shí)現(xiàn)為C十+對(duì)象,將對(duì)其它 節(jié)點(diǎn)的引用實(shí)現(xiàn)為對(duì)與那些其它節(jié)點(diǎn)相應(yīng)的C+十對(duì)象的C+十引用。因此,將 IR樹(shù)實(shí)現(xiàn)為IR節(jié)點(diǎn)對(duì)象的集合,含有各種相互的引用。
此外,在目前所討論的實(shí)施例中,IR產(chǎn)生使用一組抽象寄存器定義,其 對(duì)應(yīng)于主體程序17意圖于其上運(yùn)行的主體架構(gòu)的特定特征。例如,對(duì)于主體 架構(gòu)上的各物理寄存器(即圖1的物理寄存器5)存在唯一的抽象寄存器定 義。因此,轉(zhuǎn)換器中的抽象寄存器定義可實(shí)現(xiàn)為含有對(duì)IR節(jié)點(diǎn)對(duì)象(即IR 樹(shù))的引用的C十+對(duì)象。所述一組抽象寄存器定義引用的所有IR樹(shù)的集合稱(chēng) 為工作IR森林(因?yàn)?森林"含有多個(gè)抽象寄存器根,每個(gè)根引用一個(gè)IR 樹(shù))。這些IR樹(shù)及其它進(jìn)程適當(dāng)?shù)匦纬赊D(zhuǎn)換器19的一部分。
圖2更詳細(xì)描繪在目標(biāo)運(yùn)算平臺(tái)IO上運(yùn)行時(shí)的轉(zhuǎn)換器19。如上所述, 轉(zhuǎn)換器19的前端包括解碼器單元191,其對(duì)主體程序17目前所需的區(qū)段解 碼,以提供多個(gè)主體代碼塊171a、 171b、 171c (通常每個(gè)主體代碼塊含有主 體代碼的一個(gè)基本塊),并且還可提供與各主體塊及其中所含的主體指令有關(guān) 的解碼器信息172,其將協(xié)助轉(zhuǎn)換器19的后續(xù)操作。在一些實(shí)施例中,在轉(zhuǎn) 換器19的核心中的IR單元192從解碼的主體指令產(chǎn)生中間表示(IR),并可 執(zhí)行與中間表示有關(guān)的最佳化。作為轉(zhuǎn)換器19后端一部分的編碼器193產(chǎn)生 (植入)可由目標(biāo)處理器13執(zhí)行的目標(biāo)代碼21。在此簡(jiǎn)單的示例中,產(chǎn)生 三個(gè)目標(biāo)代碼塊211a至211c,以在目標(biāo)平臺(tái)IO上執(zhí)行與在主體平臺(tái)1上執(zhí) 行主體代碼塊171a至171c等效的工作。并且,編碼器193可針對(duì)一些或全 部的目標(biāo)代碼塊211a至211c產(chǎn)生頭部代碼和/或尾部代碼212,代碼212執(zhí) 行例如設(shè)定目標(biāo)塊將操作于其中的環(huán)境以及適當(dāng)時(shí)將控制傳送給轉(zhuǎn)換器19 的功能。
圖3為描繪本發(fā)明實(shí)施例所利用的設(shè)備的更詳細(xì)的示意圖。在圖3中所 示的示例中,轉(zhuǎn)換器19配置成執(zhí)行Solaris至Linux的轉(zhuǎn)換。然而,將于后詳 述,本發(fā)明還可用在針對(duì)最佳化與加速的目的而執(zhí)行的轉(zhuǎn)換,例如從Linux 至Linux或Solaris至Solaris的4爭(zhēng)4灸。
在圖3中所示的Solaris至Linux的實(shí)施例中,目標(biāo)處理器13包含進(jìn)程
10文件系統(tǒng)20a作為目標(biāo)操作系統(tǒng)20的一部分,但將于后詳述,在主體代碼17 對(duì)進(jìn)程文件系統(tǒng)進(jìn)行引用時(shí)并非絕對(duì)或的確一般地使用目標(biāo)處理器13的進(jìn) 程文件系統(tǒng)20a。
主體代碼17包含第一主體可執(zhí)行文件17a,其可轉(zhuǎn)換成第一目標(biāo)代碼 21a。第一主體可執(zhí)行文件17a含有若在主體處理器上執(zhí)行則建立至少一個(gè)進(jìn) 程的指令。當(dāng)?shù)谝晦D(zhuǎn)換器進(jìn)程19a遇到主體可執(zhí)行文件17a中的建立進(jìn)程的 指令時(shí),在轉(zhuǎn)換器進(jìn)程19a可訪問(wèn)的進(jìn)程數(shù)據(jù)結(jié)構(gòu)190中產(chǎn)生相應(yīng)的條目。
主體代碼17可含當(dāng)在主體處理器執(zhí)行時(shí)會(huì)建立多于一個(gè)進(jìn)程的指令。圖 3還顯示可第二轉(zhuǎn)換器進(jìn)程19b。第二轉(zhuǎn)換器進(jìn)程19b用于將第二主體可執(zhí)行 文件17b轉(zhuǎn)換成目標(biāo)代碼21b。
可在轉(zhuǎn)換器進(jìn)程工作之前通過(guò)主體代碼的第一塊初始化進(jìn)程數(shù)據(jù)結(jié)構(gòu) 190,或替代地當(dāng)在主體代碼的第一塊中遇到第一主體代碼指令時(shí)初始化進(jìn)程 數(shù)據(jù)結(jié)構(gòu)190。
在示例實(shí)施例中,進(jìn)程數(shù)據(jù)結(jié)構(gòu)190包含可訪問(wèn)在目標(biāo)處理器13上運(yùn)行 的轉(zhuǎn)換器進(jìn)程的目錄。在其它示例實(shí)施例中,進(jìn)程數(shù)據(jù)結(jié)構(gòu)190可包含可訪 問(wèn)在目標(biāo)處理器13上運(yùn)行的轉(zhuǎn)換器進(jìn)程的共享內(nèi)存區(qū)域。進(jìn)程數(shù)據(jù)結(jié)構(gòu)190 含有進(jìn)程識(shí)別符。
轉(zhuǎn)換器進(jìn)程配置成識(shí)別主體代碼17中與主體進(jìn)程文件系統(tǒng)有關(guān)的特定 指令,并且仿真將由主體進(jìn)程文件系統(tǒng)提供的所需功能。轉(zhuǎn)換器進(jìn)程使用進(jìn) 程數(shù)據(jù)結(jié)構(gòu)190來(lái)實(shí)現(xiàn)上述處理。
例如,主體可執(zhí)行文件17a可請(qǐng)求在主體進(jìn)程文件系統(tǒng)中具有條目的進(jìn) 程的細(xì)節(jié)。當(dāng)主體代碼在主體處理器上運(yùn)行時(shí),該請(qǐng)求通常作為引用主體進(jìn) 程文件系統(tǒng)中的信息的前驅(qū)被執(zhí)行。
在主體處理器在Solaris下運(yùn)行的示例實(shí)施例中,主體可執(zhí)行文件17a可 調(diào)用函數(shù)
getdents (/proc/)
響應(yīng)此指令,轉(zhuǎn)換器進(jìn)程19a配置成從進(jìn)程數(shù)據(jù)結(jié)構(gòu)190提供相應(yīng)的信 息。進(jìn)程數(shù)據(jù)結(jié)構(gòu)190已被初始化并被填充有與各建立的主體進(jìn)程有關(guān)的信 息。例如,轉(zhuǎn)換器進(jìn)程可建立目錄/tmp/pds以包含進(jìn)程信息,并且各轉(zhuǎn)換器 進(jìn)程可以以用于正被轉(zhuǎn)換的各主體進(jìn)程的進(jìn)程識(shí)別符的形式向該目錄填充進(jìn) 程信息。為了方便,進(jìn)程數(shù)據(jù)結(jié)構(gòu)190可配置成使得存儲(chǔ)在進(jìn)程數(shù)據(jù)結(jié)構(gòu)中的進(jìn) 程識(shí)別符直接對(duì)應(yīng)于主體代碼進(jìn)程識(shí)別符。在其它示例實(shí)施例中,進(jìn)程數(shù)據(jù) 結(jié)構(gòu)包含用于各個(gè)進(jìn)程的文件,該文件包含進(jìn)程識(shí)別符以及與該進(jìn)程有關(guān)的 信息。
在此示例中的轉(zhuǎn)換器進(jìn)程19a可接著執(zhí)行目標(biāo)函數(shù)
getdents (/tmp/pds),其將從進(jìn)程數(shù)據(jù)結(jié)構(gòu)返回相關(guān)的進(jìn)程識(shí)別符。
轉(zhuǎn)換器進(jìn)程針對(duì)各進(jìn)程在目錄/tmp/pds中建立通訊套接字。為了方便,轉(zhuǎn)換 器進(jìn)程配置成將對(duì)應(yīng)于相關(guān)的進(jìn)程識(shí)別符的名字分配給每一個(gè)套接字。
一旦獲得相關(guān)的進(jìn)程識(shí)別符,主體代碼17a就可能引用一個(gè)進(jìn)程。例如, 轉(zhuǎn)換器進(jìn)程19a可能會(huì)遇到主體指令,例如
open (/proc/ {process—identifier}/ctl)
其中,{process—identifier}為主體可執(zhí)行文件17a預(yù)期運(yùn)行的進(jìn)程的識(shí)別 符。在示例實(shí)施例中,{process—identifier)可為由第二轉(zhuǎn)換器進(jìn)程19b轉(zhuǎn)換的 進(jìn)程的識(shí)別符。若例如遇到并如上所述處置先前主體代碼getdents (/proc/) 指令,則主體代碼17可預(yù)期運(yùn)行進(jìn)程。
轉(zhuǎn)換器進(jìn)程識(shí)別出open (開(kāi)啟)指令與/proc進(jìn)程文件系統(tǒng)有關(guān),并引用 進(jìn)程數(shù)據(jù)結(jié)構(gòu)190來(lái)處置此指令。然而,在嘗試訪問(wèn)進(jìn)程數(shù)據(jù)結(jié)構(gòu)190之前, 在示例實(shí)施例中,轉(zhuǎn)換器進(jìn)程19a配置成驗(yàn)證將^C引用的進(jìn)程仍在運(yùn)行中。
轉(zhuǎn)換器進(jìn)程19a無(wú)法控制遇到主體getdents (/proc/)指令以及引用響應(yīng) 于先前getdents (/proc/)指令而提供的信息的主體指令之間的時(shí)間段。此外, 當(dāng)遇到引用主體進(jìn)程的主體指令時(shí),轉(zhuǎn)換器進(jìn)程19a無(wú)法依賴(lài)進(jìn)程數(shù)據(jù)結(jié)構(gòu) 190中識(shí)別出的主體進(jìn)程仍在運(yùn)行中。
例如,在進(jìn)程數(shù)據(jù)結(jié)構(gòu)190中識(shí)別出的進(jìn)程可能在提供其進(jìn)程識(shí)別符之 后意外崩潰。因此,在轉(zhuǎn)換器進(jìn)程19a根據(jù)進(jìn)程凄史據(jù)結(jié)構(gòu)190取得進(jìn)程識(shí)別 符列表以及后續(xù)使用識(shí)別符之間的時(shí)間段中,進(jìn)程識(shí)別符列表可能變?yōu)檫^(guò)期。
針對(duì)在主體代碼17中每一個(gè)對(duì)另 一進(jìn)程的引用,轉(zhuǎn)換器進(jìn)程還可配置成 驗(yàn)證所引用的進(jìn)程仍在運(yùn)行中。在示例實(shí)施例中,轉(zhuǎn)換器進(jìn)程19a可通過(guò)檢 查進(jìn)程數(shù)據(jù)結(jié)構(gòu)190中的進(jìn)程的套接字來(lái)執(zhí)行此驗(yàn)證。
延續(xù)上述示例,轉(zhuǎn)換器進(jìn)程19a配置成在繼續(xù)下一主體指令之前,驗(yàn)證 叩en指令所引用的進(jìn)程仍在運(yùn)行中。 一旦開(kāi)啟所引用的進(jìn)程,主體代碼就可
12接著執(zhí)行另外的工作,如停止進(jìn)程。此操作的典型主體代碼指令為 write ( fd, PCSTOP );其中,fd為識(shí)別涉及的進(jìn)程的文件描述符。 同樣地,為使轉(zhuǎn)換器進(jìn)程19a正確地仿真此主體指令,所涉及的進(jìn)程必 須實(shí)際上正在運(yùn)行中。因此,轉(zhuǎn)換器進(jìn)程19a配置成再次檢查所涉及的進(jìn)程 的狀態(tài)。若所涉及的進(jìn)程仍如預(yù)期般正在運(yùn)行,則轉(zhuǎn)換器進(jìn)程19a可請(qǐng)求轉(zhuǎn) 換所涉及的進(jìn)程的轉(zhuǎn)換器進(jìn)程執(zhí)行停止。
在示例實(shí)施例中,轉(zhuǎn)換器進(jìn)程19a請(qǐng)求轉(zhuǎn)換器進(jìn)程19b來(lái)執(zhí)行停止。 雖然圖3中所示的示例實(shí)施例包含引用進(jìn)程數(shù)據(jù)結(jié)構(gòu)190以控制在第二 轉(zhuǎn)換器進(jìn)程19b下運(yùn)行的進(jìn)程的第一轉(zhuǎn)換器進(jìn)程19a,但可能存在轉(zhuǎn)換器進(jìn)程 引用進(jìn)程數(shù)據(jù)結(jié)構(gòu)中與本身有關(guān)的數(shù)據(jù)的情況。例如,進(jìn)程數(shù)據(jù)結(jié)構(gòu)可包含 關(guān)于進(jìn)程的內(nèi)存映射的信息,并且轉(zhuǎn)換器可遇到主體指令,例如
open( /proc/{process—identifier}/map ),其中,所涉及的{process—identifier} 為自引用。
若在任何時(shí)候,轉(zhuǎn)換器實(shí)例確定所引用的進(jìn)程意外停止運(yùn)行,則轉(zhuǎn)換器 進(jìn)程可返回出錯(cuò)通知。由轉(zhuǎn)換器提供的出錯(cuò)通知可以與當(dāng)主體程序在主體處 理器上本地運(yùn)行時(shí)預(yù)期的行為一致。
為了維持進(jìn)程數(shù)據(jù)結(jié)構(gòu)190中的信息,轉(zhuǎn)換器進(jìn)程可配置成審核存在于 進(jìn)程數(shù)據(jù)結(jié)構(gòu)190中的識(shí)別符。此審核可由一個(gè)轉(zhuǎn)換器進(jìn)程代表所有轉(zhuǎn)換器 進(jìn)程來(lái)執(zhí)行,或可由各轉(zhuǎn)換器進(jìn)程執(zhí)行以分散審核的工作量。替代地,可由 轉(zhuǎn)換器外部的模塊來(lái)執(zhí)行審核,該模塊操作以維持運(yùn)行在目標(biāo)處理器上的所 有轉(zhuǎn)換器進(jìn)程的進(jìn)程數(shù)據(jù)結(jié)構(gòu)。此種模塊可包含圖3中所示的審核器195。
審核器195可識(shí)別出在第一轉(zhuǎn)換器進(jìn)程下運(yùn)行的進(jìn)程正引用在第二轉(zhuǎn)換 器進(jìn)程下運(yùn)行的進(jìn)程。例如,當(dāng)?shù)谝晦D(zhuǎn)換器進(jìn)程遇到諸如write (fd, PCSTOP) 的主體指令時(shí),審核器195記錄在第一轉(zhuǎn)換器進(jìn)程下運(yùn)行的進(jìn)程正引用在第 二轉(zhuǎn)換器進(jìn)程下運(yùn)行的進(jìn)程。若write (寫(xiě)入)指令經(jīng)由審核器195傳輸至第 二轉(zhuǎn)換器進(jìn)程,則可很方便地實(shí)現(xiàn)上述處理。便利地,審核器195可將這些 引用記錄在進(jìn)程數(shù)據(jù)結(jié)構(gòu)190中。
可使用如上所述的套接字經(jīng)由圖4中所示的通路便利地傳輸轉(zhuǎn)換器進(jìn) 程、審核器及進(jìn)程數(shù)據(jù)結(jié)構(gòu)之間的訊息。
若所引用的進(jìn)程仍在運(yùn)行,則第二轉(zhuǎn)換器進(jìn)程從第 一轉(zhuǎn)換器進(jìn)程接收訊 息,并通知第一轉(zhuǎn)換器進(jìn)程確認(rèn)所引用的進(jìn)程已經(jīng)正確地停止。也可經(jīng)由審
13核器195便利地發(fā)送此通知。審核器195可接著刪除在第一轉(zhuǎn)換器進(jìn)程下運(yùn) 行的進(jìn)程引用在第二轉(zhuǎn)換器進(jìn)程下運(yùn)行的進(jìn)程的記錄。此記錄的刪除幫助轉(zhuǎn) 換器進(jìn)程及審核器正確處理現(xiàn)存的進(jìn)程及不穩(wěn)定的進(jìn)程,將于后詳述。
若當(dāng)接收到引用時(shí)所引用的進(jìn)程正在退出,則第二轉(zhuǎn)換器進(jìn)程丟棄傳入 的訊息,并且不依照第一轉(zhuǎn)換器進(jìn)程的請(qǐng)求來(lái)執(zhí)行停止。然而,第二轉(zhuǎn)換器 進(jìn)程配置成向?qū)徍似?95通知進(jìn)程的退出,即,進(jìn)程將很快停止運(yùn)行。這使 審核器接著執(zhí)行以下處理從進(jìn)程數(shù)據(jù)結(jié)構(gòu)移除所停止的進(jìn)程的細(xì)節(jié)、向第 一轉(zhuǎn)換器進(jìn)程通知所引用的進(jìn)程已經(jīng)退出;以及刪除在第 一轉(zhuǎn)換器進(jìn)程下運(yùn) 行的進(jìn)程引用在第二轉(zhuǎn)換器進(jìn)程下運(yùn)行的進(jìn)程的記錄。從審核器195傳送至 第 一轉(zhuǎn)換器進(jìn)程的通知允許第 一轉(zhuǎn)換器進(jìn)程返回正確的出錯(cuò)訊息,向主體代 碼確認(rèn)不會(huì)執(zhí)行write指令。
若在任何時(shí)間,所引用的進(jìn)程崩潰,則不會(huì)接收到從第一轉(zhuǎn)換器進(jìn)程所 發(fā)送的訊息。第一轉(zhuǎn)換器進(jìn)程不知道所引用的進(jìn)程已崩潰,并且一直等待來(lái) 自第二轉(zhuǎn)換器進(jìn)程的響應(yīng)。在這種情況中,審核器195可為第一轉(zhuǎn)換器進(jìn)程 解決此問(wèn)題。審核器195配置成檢查在進(jìn)程之間傳送的訊息的記錄,并且檢 查記錄在進(jìn)程數(shù)據(jù)結(jié)構(gòu)中的進(jìn)程是否正在運(yùn)行中。若審核器195檢測(cè)到進(jìn)程
不再運(yùn)行,則^v進(jìn)程數(shù)據(jù)結(jié)構(gòu)移除關(guān)于該進(jìn)程的信息,并且移除第一進(jìn)程已
引用第二進(jìn)程的記錄。審核器195可接著將通知返回到第一轉(zhuǎn)換器進(jìn)程以確 認(rèn)所引用的進(jìn)程已不再運(yùn)行。從審核器195傳送給第一轉(zhuǎn)換器進(jìn)程的通知允 許第一轉(zhuǎn)換器進(jìn)程返回正確的出錯(cuò)訊息,向主體代碼確認(rèn),因?yàn)樗玫倪M(jìn)
程已不再運(yùn)行,所以不會(huì)執(zhí)行write指令。
審核器195可配置成周期性地檢查進(jìn)程數(shù)據(jù)結(jié)構(gòu)中關(guān)于已不再運(yùn)行的進(jìn) 程的訊息的記錄,并且移除這些陳舊的記錄。審核器195可在進(jìn)程間已傳送 特定數(shù)量的訊息之后替代地或額外地執(zhí)行此種檢查。
為了幫助進(jìn)一步了解本發(fā)明的實(shí)施例,提供圖5的示例方法圖。在步驟 SlOl,響應(yīng)于接收的主體代碼指令,當(dāng)該指令在主體處理器上執(zhí)行時(shí)建立轉(zhuǎn) 換器進(jìn)程。在步驟S102,已建立的轉(zhuǎn)換器進(jìn)程向可訪問(wèn)的進(jìn)程數(shù)據(jù)結(jié)構(gòu)填充 關(guān)于在步驟S101建立的轉(zhuǎn)換器進(jìn)程的信息。在步驟S103,響應(yīng)于在接收的 主體代碼中對(duì)主體進(jìn)程文件系統(tǒng)中的信息的引用,引用在步驟S102所填充的
數(shù)據(jù)結(jié)構(gòu)。
在此所述的示例實(shí)施例對(duì)于轉(zhuǎn)換器中的程序代碼的轉(zhuǎn)換特別有效,其中,
14主體處理器與目標(biāo)處理器不同。然而,即使主體處理器與目標(biāo)處理器在具有 兼容的進(jìn)程文件系統(tǒng)的操作系統(tǒng)下操作,例如當(dāng)主體操作系統(tǒng)與目標(biāo)操作系 統(tǒng)為相同類(lèi)型時(shí),仍可能期望轉(zhuǎn)換器進(jìn)程訪問(wèn)其它轉(zhuǎn)換器進(jìn)程。
在此所述的示例實(shí)施例建立并維持用于轉(zhuǎn)換器進(jìn)程的進(jìn)程數(shù)據(jù)結(jié)構(gòu),該 進(jìn)程數(shù)據(jù)結(jié)構(gòu)可使得主體代碼中對(duì)于主體進(jìn)程文件系統(tǒng)的引用能被正確地處 置。通過(guò)在進(jìn)程數(shù)據(jù)結(jié)構(gòu)中周期性地檢查進(jìn)程狀態(tài)并且移除,或者相反地標(biāo) 記那些不再運(yùn)行的進(jìn)程,轉(zhuǎn)換器能夠正確地處理主體代碼中對(duì)已經(jīng)退出或崩 潰的進(jìn)程的引用。
如前述,若將^^皮轉(zhuǎn)換的主體代碼含有潛在不穩(wěn)定的進(jìn)程,則本發(fā)明特別 有效。從轉(zhuǎn)換器的角度來(lái)看,修改目標(biāo)操作系統(tǒng)來(lái)區(qū)分目標(biāo)進(jìn)程文件系統(tǒng)中 的主體進(jìn)程及目標(biāo)進(jìn)程不能容易地使不穩(wěn)定的進(jìn)程被正確地識(shí)別和處理。然 而,在此所述的示例實(shí)施例可便利地解決此問(wèn)題。
示例實(shí)施例利用轉(zhuǎn)換器來(lái)識(shí)別并處置在程序代碼轉(zhuǎn)換期間對(duì)主體進(jìn)程文 件系統(tǒng)的引用。轉(zhuǎn)換器提供方便的機(jī)制,以辨識(shí)并處置主體代碼中與主體進(jìn) 程文件系統(tǒng)有關(guān)的指令與函數(shù)調(diào)用。然而,應(yīng)了解到在其它實(shí)施例中,可以 以其它方式實(shí)現(xiàn)用于識(shí)別及處置此種指令與函數(shù)調(diào)用的機(jī)制。例如,目標(biāo)處 理器可設(shè)置有變更的系統(tǒng)目錄或不執(zhí)行所有的系統(tǒng)調(diào)用。當(dāng)識(shí)別到相關(guān)指令 時(shí),可利用任何適合的機(jī)制來(lái)打斷主體程序代碼的控制流??山又鴮⒖刂屏?轉(zhuǎn)換成適合實(shí)行本發(fā)明的代碼。
除了在此所述的示例實(shí)施例之外,還可在分離的才莫塊中實(shí)現(xiàn)本發(fā)明,如 與轉(zhuǎn)換器一起使用的硬件模塊等。模塊可提供在此描述的與轉(zhuǎn)換器進(jìn)程有關(guān) 的功能,但以與執(zhí)行程序代碼轉(zhuǎn)換的單元在邏輯上分離的實(shí)體方式存在。如 上所述,轉(zhuǎn)換器的實(shí)施例對(duì)于在目標(biāo)操作系統(tǒng)及主體操作系統(tǒng)不同的環(huán)境中 執(zhí)行程序代碼轉(zhuǎn)換特別有效。轉(zhuǎn)換器的實(shí)施例也對(duì)于為了加速或仿真目的而 執(zhí)行程序代碼轉(zhuǎn)換特別有效,例如,通過(guò)使用進(jìn)程數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)從特定操作 系統(tǒng)的代碼到在相同操作系統(tǒng)下運(yùn)行但有另外的控制級(jí)的程序代碼轉(zhuǎn)換。
在此所用的術(shù)語(yǔ)"轉(zhuǎn)換器"及"轉(zhuǎn)換器進(jìn)程"應(yīng)被解讀成涵蓋可在代碼 轉(zhuǎn)換期間操作的相關(guān)設(shè)備,如仿真器、加速器或解析器。詳言之,可使用在 此所引用的轉(zhuǎn)換器進(jìn)程。
本發(fā)明的設(shè)備及方法的不同特征在上述實(shí)施例中的每一 個(gè)中被分別描 述。然而,本發(fā)明發(fā)明人的全部意圖在于,在此所述的各實(shí)施例的單獨(dú)的方
15面可與在此所述的其它實(shí)施例結(jié)合。
在此所述的方法關(guān)于程序代碼轉(zhuǎn)換,并且對(duì)于提供主體程序代碼至目標(biāo) 代碼的動(dòng)態(tài)二元轉(zhuǎn)換的運(yùn)行期間的轉(zhuǎn)換器特別有效。本發(fā)明還延伸至作為配 置成執(zhí)行在此所界定的任何方法的計(jì)算機(jī)系統(tǒng)的一部分操作的轉(zhuǎn)換器設(shè)備。 并且,本發(fā)明延伸至計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì),其上記錄有計(jì)算機(jī)可實(shí)現(xiàn)以執(zhí) 行在此所界定的任何方法的指令。
本發(fā)明的至少一些實(shí)施例可單獨(dú)用專(zhuān)門(mén)硬件建構(gòu)而成,并且在此所用的 術(shù)語(yǔ),如"模塊"或"單元"可包括,但不限于硬件裝置,如執(zhí)行特定任務(wù)
的現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)或?qū)S眉呻娐?ASIC)。替代地,本發(fā)明的 組件可配置為駐留在可尋址的存儲(chǔ)介質(zhì)上并且配置為在一個(gè)或多個(gè)處理器上 執(zhí)行。因此,在一些實(shí)施例中,本發(fā)明的功能組件可包括,諸如軟件組件、 面向?qū)ο蟮能浖M件、類(lèi)組件和任務(wù)組件的組件、進(jìn)程、函數(shù)、屬性、過(guò)程、 子程序、程序代碼段、驅(qū)動(dòng)程序、固件、微碼、電路、數(shù)據(jù)、數(shù)據(jù)庫(kù)、數(shù)據(jù) 結(jié)構(gòu)、表、數(shù)組和變量。此外,雖然已參照在此討論的組件、模塊及單元來(lái) 描述優(yōu)選實(shí)施例,但是這些功能組件可結(jié)合成更少的組件或分成額外的組件。
本領(lǐng)域技術(shù)人員將理解到,以上描述的示例實(shí)施例的各種應(yīng)用和修改可 在不脫離本發(fā)明的范圍與精神的情況下來(lái)配置。因此,應(yīng)了解到,在權(quán)利要 求的范圍之內(nèi),可以以在此特別描述之外的方式實(shí)施本發(fā)明。
雖然已顯示并描述了 一些優(yōu)選實(shí)施例,但是本領(lǐng)域技術(shù)人員將理解到, 在不脫離權(quán)利要求限定的本發(fā)明的范圍的情況下,可進(jìn)行各種改變和修改。
需要注意,與本說(shuō)明書(shū)同時(shí)提交或者在本說(shuō)明書(shū)之前提交的與本申請(qǐng)相 關(guān)的并且對(duì)公眾檢閱本說(shuō)明書(shū)公開(kāi)的所有印刷物和文檔,其內(nèi)容通過(guò)引用包 含于此。
本說(shuō)明書(shū)(包括權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征和/或所公開(kāi)
少 一些這樣的特征和/或步驟互相排斥的組合。
本說(shuō)明書(shū)(包括權(quán)利要求、摘要和附圖)中公開(kāi)的每一特征可以被起到相 同、等同或相似目的的可選特征來(lái)替換,除非另外明確地聲明。因此,除非 另外明確地聲明,所公開(kāi)的每一特征僅是一類(lèi)等同或相似特征的一個(gè)示例。
本發(fā)明不限于前述實(shí)施例的細(xì)節(jié)。本發(fā)明擴(kuò)展至本說(shuō)明書(shū)(包括權(quán)利要
16合,或者擴(kuò)展至所公開(kāi)的任何方法或處理的步驟中的任何新穎的步驟或任何 新穎的步驟組合。
權(quán)利要求
1、一種計(jì)算機(jī)設(shè)備,包含目標(biāo)處理器;以及轉(zhuǎn)換器進(jìn)程,響應(yīng)于接收的在主體處理器上執(zhí)行的主體代碼指令建立該轉(zhuǎn)換器進(jìn)程,其中,該轉(zhuǎn)換器進(jìn)程配置成(a)以有關(guān)建立的轉(zhuǎn)換器進(jìn)程的信息填充進(jìn)程數(shù)據(jù)結(jié)構(gòu);以及(b)響應(yīng)于接收的主體代碼中對(duì)主體進(jìn)程文件系統(tǒng)中的信息的引用而引用步驟(a)的進(jìn)程數(shù)據(jù)結(jié)構(gòu)。
2、 如權(quán)利要求1所述的計(jì)算機(jī)設(shè)備,其中,該轉(zhuǎn)換器進(jìn)程配置成響應(yīng)于 接收的各主體代碼指令建立另外的轉(zhuǎn)換器進(jìn)程,其中,當(dāng)在主體處理器上執(zhí) 行該主體代碼指令時(shí),該主體代碼指令將建立主體進(jìn)程。
3、 如權(quán)利要求2所述的計(jì)算機(jī)設(shè)備,其中,各轉(zhuǎn)換器進(jìn)程為權(quán)利要求l 所述的轉(zhuǎn)換器進(jìn)程。
4、 如權(quán)利要求3所述的計(jì)算機(jī)設(shè)備,其中,各轉(zhuǎn)換器進(jìn)程填充并且引用 共同的進(jìn)程數(shù)據(jù)結(jié)構(gòu)。
5、 如權(quán)利要求4所述的計(jì)算機(jī)設(shè)備,其中,該進(jìn)程數(shù)據(jù)結(jié)構(gòu)包含下列之 一或兩者(a)各轉(zhuǎn)換器進(jìn)程可訪問(wèn)的目錄;以及(b)各轉(zhuǎn)換器進(jìn)程可訪問(wèn) 的共享的內(nèi)存區(qū)域。
6、 如權(quán)利要求1所述的計(jì)算機(jī)設(shè)備,其中,該轉(zhuǎn)換器進(jìn)程配置成以各轉(zhuǎn) 換器進(jìn)程的進(jìn)程識(shí)別符填充該進(jìn)程數(shù)據(jù)結(jié)構(gòu),該進(jìn)程識(shí)別符分配給響應(yīng)于接 收的主體代碼指令在主體處理器上執(zhí)行時(shí)建立的主體進(jìn)程。
7、 如權(quán)利要求1所述的計(jì)算機(jī)設(shè)備,進(jìn)一步包含審核器,該審核器配 置成檢查其信息存在于進(jìn)程數(shù)據(jù)結(jié)構(gòu)中的轉(zhuǎn)換器進(jìn)程的狀態(tài),并從進(jìn)程數(shù)據(jù) 結(jié)構(gòu)移除關(guān)于不再運(yùn)行的轉(zhuǎn)換器進(jìn)程的信息。
8、 如權(quán)利要求7所述的計(jì)算機(jī)設(shè)備,其中,該審核器配置成周期性地檢 查其信息存在于進(jìn)程lt據(jù)結(jié)構(gòu)中的轉(zhuǎn)換器進(jìn)程的狀態(tài)。
9、 如權(quán)利要求7所述的計(jì)算機(jī)設(shè)備,其中,該審核器包含轉(zhuǎn)換器進(jìn)程的 部分。
10、 如權(quán)利要求1所述的計(jì)算機(jī)設(shè)備,進(jìn)一步包含審核器,其中,該審核器配置成在進(jìn)程數(shù)據(jù)結(jié)構(gòu)中記錄對(duì)信息已作出的引用。
11、 如權(quán)利要求10所述的計(jì)算機(jī)設(shè)備,其中,該審核器配置成記錄作出引用的轉(zhuǎn)換器進(jìn)程的識(shí)別符、以及信息被引用的轉(zhuǎn)換器進(jìn)程的關(guān)聯(lián)的識(shí)別符。
12、 如權(quán)利要求11所述的計(jì)算機(jī)設(shè)備,其中,該審核器配置成在進(jìn)程數(shù)據(jù)結(jié)構(gòu)中記錄所述識(shí)別符。
13、 如權(quán)利要求12所述的計(jì)算機(jī)設(shè)備,其中,該審核器配置成當(dāng)確定其 信息被引用的進(jìn)程已不再運(yùn)行時(shí)從進(jìn)程數(shù)據(jù)結(jié)構(gòu)移除所記錄的數(shù)據(jù)。
14、 如權(quán)利要求1所述的計(jì)算機(jī)設(shè)備,其中,當(dāng)轉(zhuǎn)換器進(jìn)程退出時(shí),該 轉(zhuǎn)換器進(jìn)程從進(jìn)程數(shù)據(jù)結(jié)構(gòu)移除關(guān)于自身的信息。
15、 如權(quán)利要求1所述的計(jì)算機(jī)設(shè)備,其中,該目標(biāo)處理器與用于執(zhí)行 接收的主體代碼的主體處理器為相同類(lèi)型。
16、 如權(quán)利要求1所述的計(jì)算機(jī)設(shè)備,其中,該轉(zhuǎn)換器進(jìn)程配置成產(chǎn)生 在目標(biāo)處理器上執(zhí)行的目標(biāo)代碼指令。
17、 一種關(guān)于程序代碼轉(zhuǎn)換的管理進(jìn)程文件系統(tǒng)的方法,該程序代碼轉(zhuǎn) 換將在主體處理器上執(zhí)行的主體代碼轉(zhuǎn)換成在目標(biāo)處理器上執(zhí)行的目標(biāo)代 碼,該方法包含下列步驟(a) 響應(yīng)于接收的主體代碼指令建立轉(zhuǎn)換器進(jìn)程,其中,當(dāng)在主體處理 器上執(zhí)行該主體代碼指令時(shí),該主體代碼指令將建立主體進(jìn)程;(b) 以關(guān)于響應(yīng)于接收的主體代碼而建立的 一個(gè)或多個(gè)轉(zhuǎn)換器進(jìn)程的信 息填充轉(zhuǎn)換器進(jìn)程可訪問(wèn)的進(jìn)程數(shù)據(jù)結(jié)構(gòu);以及(c) 響應(yīng)于在接收的主體代碼中對(duì)主體進(jìn)程文件系統(tǒng)中的信息的引用而 引用步驟(b)中填充的數(shù)據(jù)結(jié)構(gòu)。
18、 如權(quán)利要求17所述的方法,其中,在步驟(b)中填充的進(jìn)程數(shù)據(jù) 結(jié)構(gòu)為轉(zhuǎn)換器數(shù)據(jù)結(jié)構(gòu)。
19、 如權(quán)利要求17所述的方法,進(jìn)一步包含下列步驟;險(xiǎn)查其信息存儲(chǔ) 于該進(jìn)程數(shù)據(jù)結(jié)構(gòu)中的進(jìn)程的狀態(tài),以及從該進(jìn)程數(shù)據(jù)結(jié)構(gòu)移除關(guān)于不再運(yùn) 行的轉(zhuǎn)換器進(jìn)程的信息。
20、 如權(quán)利要求19所述的方法,其中,周期性地執(zhí)行檢查其信息存儲(chǔ)于 該進(jìn)程數(shù)據(jù)結(jié)構(gòu)中的進(jìn)程的狀態(tài)的步驟。
21、 如權(quán)利要求17所述的方法,進(jìn)一步包含下列步驟符并記錄其信息已被引用的轉(zhuǎn)換器進(jìn)程的識(shí)別符,來(lái)記錄該引用。
22、 如權(quán)利要求21所述的方法,進(jìn)一步包含下列步驟當(dāng)其信息被引用 的轉(zhuǎn)換器進(jìn)程不再運(yùn)行時(shí),從該進(jìn)程數(shù)據(jù)結(jié)構(gòu)移除于步驟(d )所記錄的數(shù)據(jù)。
23、 如權(quán)利要求17所述的方法,進(jìn)一步包含從該進(jìn)程數(shù)據(jù)結(jié)構(gòu)移除關(guān) 于不再運(yùn)行的進(jìn)程的信息。
24、 一種計(jì)算機(jī)可讀介質(zhì),其上記錄有可由計(jì)算機(jī)實(shí)施以執(zhí)行如權(quán)利要 求17所述的方法的指令。
25、 一種轉(zhuǎn)換器設(shè)備,配置成接收在主體處理器上執(zhí)行的主體代碼并產(chǎn) 生在目標(biāo)處理器上執(zhí)行的目標(biāo)代碼,其中,該轉(zhuǎn)換器配置成(a)以關(guān)于響應(yīng)于接收的主體代碼而建立的一個(gè)或多個(gè)轉(zhuǎn)換器進(jìn)程的信 息填充進(jìn)程數(shù)據(jù)結(jié)構(gòu);以及(b )響應(yīng)于在4妄收的主體代碼中對(duì)主體進(jìn)程文件系統(tǒng)中的信息的引用而 引用步驟(a)的進(jìn)程數(shù)據(jù)結(jié)構(gòu)。
全文摘要
一種在動(dòng)態(tài)二元轉(zhuǎn)換器中將主體代碼轉(zhuǎn)換成目標(biāo)代碼期間管理對(duì)主體進(jìn)程文件系統(tǒng)的引用的技術(shù)。由轉(zhuǎn)換器接收在主體處理器上執(zhí)行的主體代碼,并且產(chǎn)生在目標(biāo)處理器上執(zhí)行的對(duì)應(yīng)的目標(biāo)代碼。轉(zhuǎn)換器配置成建立、填充及維持進(jìn)程數(shù)據(jù)結(jié)構(gòu),以便能由轉(zhuǎn)換器產(chǎn)生代碼,在轉(zhuǎn)換器中有效地處置對(duì)主體進(jìn)程文件系統(tǒng)的主體引用。
文檔編號(hào)G06F9/45GK101558382SQ200780036737
公開(kāi)日2009年10月14日 申請(qǐng)日期2007年10月1日 優(yōu)先權(quán)日2006年10月2日
發(fā)明者詹姆士·威廉·沃克, 賴(lài)安·詹森·考克斯 申請(qǐng)人:特蘭斯蒂有限公司