国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      多任務(wù)虛擬機(jī)的堆組織的制作方法

      文檔序號(hào):6570755閱讀:253來(lái)源:國(guó)知局
      專利名稱:多任務(wù)虛擬機(jī)的堆組織的制作方法
      多任務(wù)虛擬機(jī)的堆組織
      背景技術(shù)
      堆組織(heap organization)是可以用于為由多任務(wù)虛擬機(jī)并發(fā)執(zhí)行的 多個(gè)任務(wù)存儲(chǔ)數(shù)據(jù)的存儲(chǔ)區(qū)。所述數(shù)據(jù)可以包括用于所有任務(wù)的程序?qū)ο?和元數(shù)據(jù)。
      常規(guī)上,有兩類堆組織,即共享堆和分離堆。對(duì)于共享堆類型,多任 務(wù)虛擬機(jī)可以使用單個(gè)堆來(lái)存儲(chǔ)可由所有任務(wù)訪問(wèn)的數(shù)據(jù)。對(duì)于分離堆類 型,多任務(wù)虛擬機(jī)可以使用邏輯上分離的多個(gè)堆??梢苑峙涿總€(gè)分離堆來(lái) 存儲(chǔ)僅可由單個(gè)任務(wù)訪問(wèn)的數(shù)據(jù)。


      在附圖中,通過(guò)示例而非限制來(lái)說(shuō)明本文闡述的發(fā)明。為了使說(shuō)明簡(jiǎn) 潔清楚,附圖中所示的元件并不一定是按照比例繪制的。例如,為了清楚, 某些元件的尺寸相對(duì)于其它元件的尺寸可能會(huì)被放大。此外,在認(rèn)為適當(dāng) 的情況下,在多張附圖中重復(fù)使用了附圖標(biāo)記,以表示對(duì)應(yīng)或類似的元件。
      圖1示出了包括多任務(wù)虛擬機(jī)的計(jì)算平臺(tái)的實(shí)施例;
      圖2示出了多任務(wù)虛擬機(jī)的實(shí)施例;
      圖3示出了圖2的多任務(wù)虛擬機(jī)中的堆組織的實(shí)施例;
      圖4示出了將任務(wù)堆添加到圖3的堆組織中的方法的實(shí)施例;
      圖5示出了從圖3的堆組織回收任務(wù)堆的方法的實(shí)施例;
      圖6示出了圖2的多任務(wù)虛擬機(jī)中的堆組織的另一個(gè)實(shí)施例;以及
      圖7示出了圖2的多任務(wù)虛擬機(jī)中的堆組織的又一個(gè)實(shí)施例。
      具體實(shí)施例方式
      下面的說(shuō)明描述了用于多任務(wù)虛擬機(jī)的堆組織的技術(shù)。在以下說(shuō)明中, 為了提供對(duì)本發(fā)明的更透徹的理解,闡述了許多具體細(xì)節(jié),諸如邏輯實(shí)現(xiàn)、 偽代碼、指定操作數(shù)的方法、資源分區(qū)/共享/復(fù)制實(shí)現(xiàn)、系統(tǒng)組件的類型和相互關(guān)系、以及邏輯分區(qū)/集成選擇。但不使用這些具體細(xì)節(jié)也可以實(shí)踐 本發(fā)明。在其它實(shí)例中,沒(méi)有詳細(xì)示出控制結(jié)構(gòu)、門(mén)級(jí)電路和完整的軟件 指令序列,以免對(duì)本發(fā)明造成模糊。本領(lǐng)域技術(shù)人員借助于該說(shuō)明書(shū)就可 以實(shí)現(xiàn)適合的功能,而無(wú)需不當(dāng)?shù)膶?shí)驗(yàn)。
      說(shuō)明書(shū)中提到的"一個(gè)實(shí)施例"、"實(shí)施例"和"示例性實(shí)施例"等表 示所述的實(shí)施例可以包括特定的特征、結(jié)構(gòu)或特點(diǎn),但并不是每個(gè)實(shí)施例 都必須要包括所述特定的特征、結(jié)構(gòu)或特點(diǎn)。此外,這種短語(yǔ)并不一定指 代同一實(shí)施例。而且,當(dāng)結(jié)合某一實(shí)施例描述該特定的特征、結(jié)構(gòu)或特點(diǎn) 時(shí),結(jié)合其它實(shí)施例(不管是否明確說(shuō)明)來(lái)實(shí)現(xiàn)這樣的特征、結(jié)構(gòu)或特 點(diǎn)也被認(rèn)為是在本領(lǐng)域技術(shù)人員的知識(shí)范圍內(nèi)。
      可以以硬件、固件、軟件或它們的任意組合來(lái)實(shí)現(xiàn)本發(fā)明的實(shí)施例。 還可以將本發(fā)明的實(shí)施例實(shí)現(xiàn)為存儲(chǔ)在機(jī)器可讀介質(zhì)上的指令,所述指令 可由一個(gè)或多個(gè)處理器讀取和執(zhí)行。機(jī)器可讀介質(zhì)可以包括以機(jī)器(例如, 計(jì)算裝置)可讀的形式存儲(chǔ)或傳輸信息的任何機(jī)制。例如,機(jī)器可讀介質(zhì) 可以包括只讀存儲(chǔ)器(ROM);隨機(jī)存取存儲(chǔ)器(RAM);磁盤(pán)存儲(chǔ)媒體; 光存儲(chǔ)媒體;閃存裝置;和電、光、聲或其它形式的傳播信號(hào)(例如載波、 紅外信號(hào)、數(shù)字信號(hào)等)等。
      圖1示出了包括多任務(wù)虛擬機(jī)的計(jì)算平臺(tái)10的實(shí)施例。計(jì)算平臺(tái)10 的示例可以包括個(gè)人計(jì)算機(jī)、工作站、服務(wù)器計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)、 移動(dòng)電話、以及游戲機(jī)。
      計(jì)算平臺(tái)IO可以包括一個(gè)或多個(gè)處理器101、存儲(chǔ)器102、芯片組103、 1/0裝置104、固件105和可能的其它組件。 一個(gè)或多個(gè)處理器101可以經(jīng) 由諸如處理器總線之類的一條或多條總線可通信地耦合到各個(gè)組件(例如 芯片組103)??梢詫⑻幚砥?01實(shí)現(xiàn)為在適當(dāng)?shù)募軜?gòu)(例如包括,由位于 加州Santa Clara的英特爾公司出品的英特爾^至強(qiáng)TM、英特爾 奔騰TM、 英特爾^安騰w架構(gòu))下的具有一個(gè)或多個(gè)可以執(zhí)行代碼的處理核心的集 成電路(IC)。
      存儲(chǔ)器102可以存儲(chǔ)多個(gè)軟件應(yīng)用1021、多任務(wù)虛擬機(jī)1022和操作 系統(tǒng)1023的形式的指令和數(shù)據(jù)。存儲(chǔ)器102的示例可以包括以下半導(dǎo)體裝 置之一或其任意組合例如,同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)裝置、RAMBUS動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(RDRAM)裝置、雙倍數(shù)據(jù)速率(DDR) 存儲(chǔ)器裝置、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、以及閃存裝置。
      可以從諸如I/O裝置106之類的任何適當(dāng)裝置輸入多個(gè)軟件應(yīng)用1021。 在其它實(shí)施例中,還可以通過(guò)計(jì)算平臺(tái)IO中的其它組件來(lái)生成軟件應(yīng)用。 軟件應(yīng)用1021的示例可以包括JAVA應(yīng)用(例如JAVA.class文件)、.NET 應(yīng)用(例如.NET代碼)、或可能的其它編程語(yǔ)言形式的應(yīng)用。
      多任務(wù)虛擬機(jī)1022可以運(yùn)行在操作系統(tǒng)1023之上,以并發(fā)執(zhí)行多個(gè) 軟件應(yīng)用1021。每個(gè)軟件應(yīng)用1021可以包括一個(gè)或多個(gè)任務(wù),每個(gè)任務(wù) 可以代表單個(gè)軟件應(yīng)用1021的一個(gè)實(shí)例化。在JAVA虛擬機(jī)中,如果兩個(gè) "任務(wù)"共享相同的類路徑(即,類文件的相同有序表),則這兩個(gè)"任務(wù)" 可以屬于一個(gè)應(yīng)用。
      多任務(wù)虛擬機(jī)1022的示例可以包括由位于加州Santa Clara的Sun微 系統(tǒng)公司出品的多任務(wù)JAVA虛擬機(jī)、以及由位于華盛頓州Redmond的 Microsoff公司出品的多任務(wù).NET虛擬機(jī)。操作系統(tǒng)1023可以包括但不限 于不同版本的Linux 、 Microsoft Windows 、和諸如¥乂\¥0&5@之類的實(shí) 時(shí)操作系統(tǒng)等。
      在一個(gè)實(shí)施例中,芯片組103可以提供在一個(gè)或多個(gè)處理器101、存 儲(chǔ)器102、和諸如1/0裝置104和固件105之類的其它組件之間的一條或 多條通信路徑。芯片組103可以包括存儲(chǔ)器控制中心1031、輸入/輸出控 制中心1032和固件中心1033。
      在一個(gè)實(shí)施例中,存儲(chǔ)器控制中心1031可以提供到處理器總線(其可 與處理器101連接)和到適當(dāng)裝置(諸如存儲(chǔ)器102)的通信鏈路。存儲(chǔ) 器控制中心102可以耦合到I/O控制中心1032,以提供到計(jì)算平臺(tái)的I/O 裝置104的接口。 1/0裝置104的示例可以包括鍵盤(pán)、鼠標(biāo)、網(wǎng)絡(luò)接口、 存儲(chǔ)裝置、照相機(jī)、藍(lán)牙裝置和天線。
      在一個(gè)實(shí)施例中,存儲(chǔ)器控制中心1031可以經(jīng)由輸入/輸出控制中心 1032可通信地耦合到固件中心1033。固件中心1033可以耦合到固件105, 所述固件可以存儲(chǔ)BIOS例程和/或EFI例程,所述BIOS例程在系統(tǒng)啟動(dòng) 期間被計(jì)算平臺(tái)執(zhí)行,以初始化處理器101、芯片組103、以及該計(jì)算平臺(tái) 的其它組件,所述EFI例程使固件105與計(jì)算機(jī)平臺(tái)的操作系統(tǒng)通過(guò)接口進(jìn)行連接并提供用于引導(dǎo)該操作系統(tǒng)的標(biāo)準(zhǔn)環(huán)境。
      其它的實(shí)施例可以實(shí)現(xiàn)用于計(jì)算平臺(tái)10的結(jié)構(gòu)的其它技術(shù)。例如,多
      任務(wù)虛擬機(jī)1022可以在虛擬機(jī)的一個(gè)實(shí)例化中執(zhí)行一個(gè)軟件應(yīng)用1021。 換句話說(shuō),多任務(wù)虛擬機(jī)1022可以在虛擬機(jī)的一個(gè)實(shí)例化中并發(fā)地執(zhí)行屬 于一個(gè)應(yīng)用的多個(gè)任務(wù),并且所述多個(gè)任務(wù)是該應(yīng)用的各個(gè)實(shí)例化。
      圖2示出了圖1的多任務(wù)虛擬機(jī)1022的實(shí)施例。根據(jù)該實(shí)施例,多任 務(wù)虛擬機(jī)1022可以包括加載器201、執(zhí)行引擎202、堆組織203、堆管理 器204和可能的其它組件。
      加載器201可以加載來(lái)自各種資源的文件(包括類、接口、本地方法)。 例如,加載器201可以加載來(lái)自多任務(wù)虛擬機(jī)廠商、程序員和任何第三方 的多個(gè)軟件應(yīng)用1021、庫(kù)、運(yùn)行時(shí)環(huán)境變量、以及可能的其它文件。庫(kù)可 以包括向用戶程序提供基本功能的各種函數(shù)和例程,例如自舉(bootstrap) 類庫(kù)和非自舉類庫(kù)。運(yùn)行時(shí)環(huán)境變量可以包括用于幫助多任務(wù)虛擬機(jī)尋找
      應(yīng)用資源的配置。加載器的示例可以包括類加載器、本地方法接口、和可 能的其它加載模塊。
      執(zhí)行引擎202可以并發(fā)執(zhí)行與軟件應(yīng)用1021相關(guān)聯(lián)的多個(gè)任務(wù)。更具 體而言,執(zhí)行引擎202可以并發(fā)地解釋(translate)軟件應(yīng)用并執(zhí)行經(jīng)解釋的 代碼。
      堆組織203可以存儲(chǔ)用于多任務(wù)虛擬機(jī)1022的數(shù)據(jù),例如元數(shù)據(jù)和程 序?qū)ο蟆T獢?shù)據(jù)可以包括關(guān)于從加載器201或其它組件加載的文件(例如, 軟件應(yīng)用、庫(kù)、運(yùn)行時(shí)環(huán)境變量等)、來(lái)自執(zhí)行引擎202的文件的經(jīng)解釋的 代碼、以及可能的其它數(shù)據(jù)的信息。元數(shù)據(jù)的示例可以包括JAVA類、方 法、字段、字節(jié)碼、JIT (即時(shí))代碼等的虛擬機(jī)內(nèi)部表示。程序?qū)ο罂梢?包括在執(zhí)行所加載的文件時(shí)生成的對(duì)象。程序?qū)ο蟮氖纠梢园ㄓ脩舳?義的類加載器和類文件的實(shí)例。
      例如在加載器201的幫助下,堆管理器204可以管理堆組織203。
      圖3示出了圖2的堆組織203的實(shí)施例。
      堆組織203可以包括多個(gè)在邏輯上分開(kāi)的堆,其中每個(gè)堆可以包括多 個(gè)邏輯上鄰接的存儲(chǔ)塊,在兩個(gè)堆之間沒(méi)有塊重疊。
      在圖3的實(shí)施例中,堆組織203可以包括系統(tǒng)堆301、多個(gè)應(yīng)用堆302^、以及多個(gè)任務(wù)堆303,.N。
      系統(tǒng)堆可以存儲(chǔ)可由多任務(wù)虛擬機(jī)1022執(zhí)行的所有任務(wù)共享的系統(tǒng) 數(shù)據(jù)。在系統(tǒng)堆中存儲(chǔ)的數(shù)據(jù)的壽命(lifespan)可以與多任務(wù)虛擬機(jī)1022 的一個(gè)實(shí)例化相同。系統(tǒng)數(shù)據(jù)的示例可以包括全局共享庫(kù)(例如自舉類庫(kù)、 全局共享運(yùn)行時(shí)環(huán)境、平臺(tái)定義信息)的元數(shù)據(jù)、與多任務(wù)虛擬機(jī)的實(shí)例 化具有相同壽命的程序?qū)ο?例如在執(zhí)行自舉類程序時(shí)生成的對(duì)象)、和用 于該系統(tǒng)的可能的其它數(shù)據(jù)。在圖3的實(shí)施例中,系統(tǒng)堆301是單例的 (singleton),并不會(huì)被回收(reclaim)甚至壓縮。
      可以將應(yīng)用堆302,.w中的每一個(gè)分配給多個(gè)軟件應(yīng)用1021中的每個(gè) "活(live)"應(yīng)用,其中"活"應(yīng)用可以具有由多任務(wù)虛擬機(jī)1022執(zhí)行的 至少一個(gè)任務(wù)。任務(wù)可以是其應(yīng)用的實(shí)例化。應(yīng)用堆302,—w中的每一個(gè)可 以存儲(chǔ)可由屬于該應(yīng)用并和該應(yīng)用持續(xù)同樣壽命的所有任務(wù)訪問(wèn)的應(yīng)用數(shù) 據(jù)。對(duì)于JAVA虛擬機(jī)規(guī)范,如果兩個(gè)"任務(wù)"屬于一個(gè)應(yīng)用,則這兩個(gè) "任務(wù)"可以共享相同的類路徑,即它們可以共享類文件的相同有序表。 有鑒于此,應(yīng)用可以代表用于其任務(wù)的可執(zhí)行二進(jìn)制代碼(binaries)(包 括動(dòng)態(tài)加載的二進(jìn)制代碼)和運(yùn)行時(shí)環(huán)境。
      在應(yīng)用堆302^的每一個(gè)中存儲(chǔ)的應(yīng)用數(shù)據(jù)可以包括應(yīng)用的元數(shù)據(jù)和 可以與該應(yīng)用具有相同壽命的程序?qū)ο?。該?yīng)用的元數(shù)據(jù)的示例可以包括 關(guān)于應(yīng)用類文件、應(yīng)用類文件的經(jīng)解釋的代碼、應(yīng)用庫(kù)和用于解釋并執(zhí)行 應(yīng)用類文件的運(yùn)行時(shí)環(huán)境變量、以及用于該應(yīng)用的可能的其它數(shù)據(jù)的信息。 程序?qū)ο蟮氖纠梢园ó?dāng)初始化應(yīng)用類文件時(shí)生成的對(duì)象。在圖3的實(shí) 施例中,如果該應(yīng)用的最后一個(gè)任務(wù)被終止,則可以回收該應(yīng)用堆。
      可以將任務(wù)堆303^中的每一個(gè)分配給由多任務(wù)虛擬機(jī)1022執(zhí)行的每 個(gè)"活"任務(wù)。任務(wù)堆303,.w中的每一個(gè)可以存儲(chǔ)僅可由相關(guān)任務(wù)訪問(wèn)的 任務(wù)數(shù)據(jù),這意味著禁止由其它任務(wù)來(lái)訪問(wèn)該任務(wù)數(shù)據(jù)。任務(wù)數(shù)據(jù)可以具 有和相關(guān)任務(wù)相同的壽命。任務(wù)數(shù)據(jù)的示例可以包括當(dāng)執(zhí)行該任務(wù)時(shí)生成 的程序?qū)ο蠛陀糜趫?zhí)行該任務(wù)的運(yùn)行時(shí)環(huán)境變量。在圖3的實(shí)施例中,如 果相關(guān)任務(wù)被終止,則可以回收任務(wù)堆。
      如圖3所示,任務(wù)可以訪問(wèn)在其任務(wù)堆中存儲(chǔ)的任務(wù)數(shù)據(jù)和在系統(tǒng)堆 中存儲(chǔ)的系統(tǒng)數(shù)據(jù)。任務(wù)還可以訪問(wèn)在該任務(wù)所屬的應(yīng)用的應(yīng)用堆中存儲(chǔ)的應(yīng)用數(shù)據(jù)。由于一個(gè)應(yīng)用可以具有由多任務(wù)虛擬機(jī)1022正執(zhí)行的多于一 個(gè)的任務(wù),因此一個(gè)應(yīng)用堆可以具有與其綁定的多于一個(gè)的任務(wù)堆。例如, 應(yīng)用堆302i可以具有與其綁定的兩個(gè)任務(wù)堆303,-3032。但是,任務(wù)無(wú)法訪 問(wèn)在該任務(wù)不屬于的其它應(yīng)用的其它應(yīng)用堆中存儲(chǔ)的其它應(yīng)用數(shù)據(jù)。
      其它實(shí)施例可以實(shí)現(xiàn)用于圖3的堆組織203的結(jié)構(gòu)的其它技術(shù)。例如, 如果多任務(wù)虛擬機(jī)1022在一個(gè)實(shí)例期間執(zhí)行一個(gè)應(yīng)用1023,則堆組織203 可以包括用于存儲(chǔ)系統(tǒng)數(shù)據(jù)和應(yīng)用數(shù)據(jù)的系統(tǒng)堆、以及用于存儲(chǔ)任務(wù)數(shù)據(jù) 的多個(gè)任務(wù)堆。
      圖4示出了將任務(wù)堆添加到如圖3所示的堆組織203中的方法的實(shí)施例。
      在塊401中,堆管理器204或其它適當(dāng)?shù)难b置可以確定為多任務(wù)虛擬 機(jī)1022執(zhí)行的任務(wù)創(chuàng)建任務(wù)堆。在塊402中,堆管理器204或其它適當(dāng)?shù)?裝置可以確定該任務(wù)所屬的應(yīng)用。如上所述,應(yīng)用可以代表用于其任務(wù)的 可執(zhí)行二進(jìn)制代碼(包括動(dòng)態(tài)加載的二進(jìn)制代碼)和運(yùn)行時(shí)環(huán)境,因此, 堆管理器204或其它適當(dāng)?shù)难b置可以通過(guò)自檢(introspect)該任務(wù)的可執(zhí) 行二進(jìn)制代碼和運(yùn)行時(shí)環(huán)境來(lái)確定該應(yīng)用。
      在塊403,堆管理器204或其它適當(dāng)?shù)难b置可以確定是否有應(yīng)用堆已 被分配給該應(yīng)用。在塊403的一個(gè)實(shí)施例中,堆管理器204或其它適當(dāng)?shù)?裝置可以維護(hù)記錄著所有"活"應(yīng)用的一個(gè)"活"應(yīng)用表。每個(gè)"活"應(yīng) 用可以具有由多任務(wù)虛擬機(jī)1022執(zhí)行的至少一個(gè)任務(wù),因此每個(gè)"活"應(yīng) 用可以被分配有應(yīng)用堆。通過(guò)這種方式,如果該應(yīng)用被列在"活"應(yīng)用表 中,則堆管理器204或其它適當(dāng)?shù)难b置可以確定應(yīng)用堆已被分配給該應(yīng)用, 而如果沒(méi)有列出,則可以確定應(yīng)用堆還沒(méi)有被分配給該應(yīng)用。
      如果該應(yīng)用還沒(méi)被分配有應(yīng)用堆,則在塊404中,堆管理器204或其 它適當(dāng)?shù)难b置可以為該應(yīng)用創(chuàng)建應(yīng)用堆。在塊405中,堆管理器203或其 它適當(dāng)?shù)难b置可以將應(yīng)用數(shù)據(jù)加載到該應(yīng)用堆中。應(yīng)用數(shù)據(jù)可以包括該應(yīng) 用的元數(shù)據(jù)和與該應(yīng)用具有相同壽命的程序?qū)ο蟆?br> 在塊406中,堆管理器203或其它適當(dāng)?shù)难b置可以標(biāo)記出所創(chuàng)建的應(yīng) 用堆的存在。在塊408的一個(gè)實(shí)施例中,堆管理器203或其它適當(dāng)?shù)难b置 可以將與該應(yīng)用堆相對(duì)應(yīng)的應(yīng)用添加到"活"應(yīng)用表中。在塊407中,堆管理器203或其它適當(dāng)?shù)难b置可以將該在務(wù)綁定到在 塊404中創(chuàng)建的應(yīng)用堆,從而該任務(wù)可以訪問(wèn)該應(yīng)用堆中的應(yīng)用數(shù)據(jù)。在 塊407的一個(gè)實(shí)施例中,堆管理器203或其它適當(dāng)?shù)难b置可以將該任務(wù)添 加到為該應(yīng)用維護(hù)的、記錄著屬于該應(yīng)用的并由多任務(wù)虛擬機(jī)1022執(zhí)行的 每個(gè)任務(wù)的"活"任務(wù)表中。
      隨后,在塊408中,堆管理器203或其它適當(dāng)?shù)难b置可以為由多任務(wù) 虛擬機(jī)1022執(zhí)行的該任務(wù)創(chuàng)建任務(wù)堆。可以通過(guò)將任務(wù)堆地址、應(yīng)用堆地 址和系統(tǒng)堆地址添加到該任務(wù)的棧中來(lái)創(chuàng)建任務(wù)堆,從而該任務(wù)可以訪問(wèn) 這些堆中的數(shù)據(jù)。最后,在塊409中,多任務(wù)虛擬機(jī)1022的執(zhí)行引擎202 可以在該任務(wù)的任務(wù)堆上運(yùn)行該任務(wù)。
      返回到塊403,如果已經(jīng)將應(yīng)用堆分配給了與該任務(wù)相對(duì)應(yīng)的應(yīng)用, 則堆管理器203或其它適當(dāng)?shù)难b置可以在塊407中將該任務(wù)綁定到該應(yīng)用 堆,在塊408中為該任務(wù)創(chuàng)建任務(wù)堆,從而在塊409中,執(zhí)行引擎202可 以在該任務(wù)的任務(wù)堆上運(yùn)行該任務(wù)。
      圖5示出了從堆組織203回收任務(wù)堆的方法的實(shí)施例。
      在塊501中,例如當(dāng)執(zhí)行引擎202完成任務(wù)的執(zhí)行時(shí),該任務(wù)可以被 終止。在塊502中,堆管理器203或其它適當(dāng)?shù)难b置可以釋放分配給該任 務(wù)的任務(wù)堆。在塊502的一個(gè)實(shí)施例中,堆管理器203可以將該任務(wù)堆的 存儲(chǔ)區(qū)域作為整體返還給操作系統(tǒng)。隨后,在塊503中,堆管理器203或 其它適當(dāng)?shù)难b置可以確定該任務(wù)是否是其所屬的應(yīng)用的最后一個(gè)任務(wù)。堆 管理器203或其它適當(dāng)?shù)难b置可以以各種方式實(shí)現(xiàn)塊203,例如,通過(guò)檢
      查上述的為該應(yīng)用維護(hù)的"活"任務(wù)表來(lái)確定該任務(wù)是否是"活"任務(wù)表 中的最后一個(gè)任務(wù)。
      如果該任務(wù)不是該應(yīng)用的最后一個(gè)任務(wù),則在塊506中,堆管理器203 或其它適當(dāng)?shù)难b置可以將該任務(wù)與分配給該應(yīng)用的應(yīng)用堆解除綁定。可以 通過(guò)從為該應(yīng)用維護(hù)的"活"任務(wù)表中刪除該任務(wù)來(lái)實(shí)現(xiàn)解除綁定。然而, 如果該任務(wù)是該應(yīng)用的最后一個(gè)任務(wù),則在塊504中,堆管理器203或其 它適當(dāng)?shù)难b置可以回收該應(yīng)用的應(yīng)用堆。堆管理器203或其它適當(dāng)?shù)难b置 可以以各種方式實(shí)現(xiàn)塊504,例如,通過(guò)將該應(yīng)用堆的存儲(chǔ)區(qū)域作為整體 返還給操作系統(tǒng)。隨后,在塊505中,例如通過(guò)從上述"活"應(yīng)用表中刪
      13除對(duì)應(yīng)的應(yīng)用,堆管理器203或其它適當(dāng)?shù)难b置可以標(biāo)記該應(yīng)用堆的回收。 圖6示出了圖2的堆組織203的另一個(gè)實(shí)施例。
      堆組織203可以包括多個(gè)應(yīng)用堆601^和多個(gè)任務(wù)堆602^。可以將 應(yīng)用堆601^中的每一個(gè)分配給一個(gè)應(yīng)用1021。每個(gè)應(yīng)用堆可以包括僅可 由屬于該應(yīng)用并和該應(yīng)用持續(xù)相同壽命的(多個(gè))任務(wù)訪問(wèn)的系統(tǒng)數(shù)據(jù)和 應(yīng)用數(shù)據(jù)。系統(tǒng)數(shù)據(jù)可以包括全局共享庫(kù)和全局共享運(yùn)行時(shí)環(huán)境的元數(shù)據(jù) 和程序?qū)ο?,?yīng)用數(shù)據(jù)可以包括應(yīng)用類、應(yīng)用庫(kù)和應(yīng)用運(yùn)行時(shí)環(huán)境的元數(shù) 據(jù)和程序?qū)ο蟆?br> 可以將任務(wù)堆602lN中的每一個(gè)分配給由多任務(wù)虛擬機(jī)執(zhí)行的每個(gè)任 務(wù)。每個(gè)任務(wù)堆可以存儲(chǔ)僅可由相關(guān)任務(wù)訪問(wèn)的、并和相關(guān)任務(wù)持續(xù)相同 壽命的任務(wù)數(shù)據(jù)。任務(wù)數(shù)據(jù)可以包括該任務(wù)的程序?qū)ο蠛瓦\(yùn)行時(shí)環(huán)境???以將任務(wù)堆602^中的每一個(gè)綁定到應(yīng)用堆601^其中之一,從而該任務(wù) 能夠訪問(wèn)任務(wù)堆和應(yīng)用任務(wù)中的數(shù)據(jù)。
      其它實(shí)施例可以實(shí)現(xiàn)用于圖6的堆組織的結(jié)構(gòu)的其它技術(shù)。例如,可 以將系統(tǒng)數(shù)據(jù)復(fù)制到每個(gè)任務(wù)堆602^中,而不復(fù)制到每個(gè)應(yīng)用堆601^ 中。
      圖7示出了圖2的堆組織203的又一個(gè)實(shí)施例。
      如圖所示,堆組織203可以包括系統(tǒng)堆701和多個(gè)任務(wù)堆702^。系 統(tǒng)堆701可以存儲(chǔ)可由多任務(wù)虛擬機(jī)1022執(zhí)行的全部任務(wù)訪問(wèn)的、并和多 任務(wù)虛擬機(jī)1022的實(shí)例化持續(xù)相同壽命的系統(tǒng)數(shù)據(jù)。系統(tǒng)數(shù)據(jù)可以包括全 局共享庫(kù)和全局共享運(yùn)行時(shí)環(huán)境變量的元數(shù)據(jù)、以及與該多任務(wù)虛擬機(jī)的 實(shí)例化持續(xù)相同壽命的程序?qū)ο?、以及可能的其它系統(tǒng)數(shù)據(jù)。
      可以將任務(wù)堆702卜n中的每一個(gè)分配給由多任務(wù)虛擬機(jī)1022執(zhí)行的每 個(gè)任務(wù)。每個(gè)任務(wù)堆可以存儲(chǔ)僅可由相關(guān)任務(wù)訪問(wèn)的任務(wù)數(shù)據(jù)和應(yīng)用數(shù)據(jù)。 應(yīng)用數(shù)據(jù)可以包括應(yīng)用類、應(yīng)用庫(kù)和運(yùn)行時(shí)環(huán)境的元數(shù)據(jù)和程序?qū)ο?,?及該應(yīng)用的可能的其它數(shù)據(jù)。任務(wù)數(shù)據(jù)可以包括該任務(wù)的程序?qū)ο蠛瓦\(yùn)行 時(shí)環(huán)境變量。
      盡管已經(jīng)結(jié)合某些實(shí)施例描述了本發(fā)明,但應(yīng)當(dāng)理解,可以采取各種 修改和變更,而不偏離本領(lǐng)域技術(shù)人員所很容易理解的本發(fā)明的精神和范 圍。這樣的修改和變更被認(rèn)為是涵蓋在本發(fā)明和所附權(quán)利要求的范圍內(nèi)。
      權(quán)利要求
      1、一種多任務(wù)虛擬機(jī),包括執(zhí)行引擎,用于并發(fā)執(zhí)行多個(gè)任務(wù);多個(gè)堆,其耦合到所述執(zhí)行引擎,其中,所述多個(gè)堆包括系統(tǒng)堆,用于存儲(chǔ)可由所述多個(gè)任務(wù)訪問(wèn)的系統(tǒng)數(shù)據(jù);以及任務(wù)堆,其被分配給所述多個(gè)任務(wù)中的一個(gè)任務(wù),以存儲(chǔ)僅可由所分配的任務(wù)訪問(wèn)的任務(wù)數(shù)據(jù)。
      2、 如權(quán)利要求1所述的多任務(wù)虛擬機(jī),其中,所述系統(tǒng)數(shù)據(jù)包括全局 共享庫(kù)和全局共享運(yùn)行時(shí)環(huán)境變量的系統(tǒng)元數(shù)據(jù)。
      3、 如權(quán)利要求1所述的多任務(wù)虛擬機(jī),其中,所述系統(tǒng)數(shù)據(jù)包括程序 對(duì)象,所述程序?qū)ο蟮膲勖c所述多任務(wù)虛擬機(jī)的壽命相同。
      4、 如權(quán)利要求1所述的多任務(wù)虛擬機(jī),其中,所述任務(wù)數(shù)據(jù)包括程序 對(duì)象,所述程序?qū)ο蟮膲勖c所分配的任務(wù)的壽命相同。
      5、 如權(quán)利要求1所述的多任務(wù)虛擬機(jī),其中,所述多個(gè)堆還包括 應(yīng)用堆,其被分配給應(yīng)用,以存儲(chǔ)所述應(yīng)用的應(yīng)用數(shù)據(jù),其中,所述應(yīng)用數(shù)據(jù)僅可由所述多個(gè)任務(wù)中與所述應(yīng)用相關(guān)聯(lián)的至少一個(gè)任務(wù)來(lái)訪 問(wèn)。
      6、 如權(quán)利要求5所述的多任務(wù)虛擬機(jī),其中,所述應(yīng)用數(shù)據(jù)包括應(yīng)用 類文件、應(yīng)用庫(kù)和應(yīng)用運(yùn)行時(shí)環(huán)境變量的應(yīng)用元數(shù)據(jù)。
      7、 如權(quán)利要求5所述的多任務(wù)虛擬機(jī),其中,所述應(yīng)用數(shù)據(jù)包括程序 對(duì)象,所述程序?qū)ο蟮膲勖c所述應(yīng)用的壽命相同。
      8、 如權(quán)利要求l所述的多任務(wù)虛擬機(jī),還包括堆管理器,用于如果所分配的任務(wù)被終止則回收所述任務(wù)堆。
      9、 如權(quán)利要求5所述的多任務(wù)虛擬機(jī),還包括堆管理器,用于如果與所述應(yīng)用相關(guān)聯(lián)的所述至少一個(gè)任務(wù)被終止則 回收所述應(yīng)用堆。
      10、 一種多任務(wù)虛擬機(jī),包括-執(zhí)行引擎,用于并發(fā)執(zhí)行多個(gè)任務(wù);多個(gè)堆,其耦合到所述執(zhí)行引擎,其中,所述多個(gè)堆包括任務(wù)堆,其被分配給所述多個(gè)任務(wù)中的一個(gè)任務(wù),以存儲(chǔ)僅可由所分配的任務(wù)訪問(wèn)的任務(wù)數(shù)據(jù);以及應(yīng)用堆,其被分配給應(yīng)用,以存儲(chǔ)僅可由所述多個(gè)任務(wù)中的至少一個(gè)任務(wù)訪問(wèn)的應(yīng)用數(shù)據(jù),其中,所述至少一個(gè)任務(wù)與所述應(yīng)用相關(guān)聯(lián)并包括所分配的任務(wù)。
      11、 如權(quán)利要求10所述的多任務(wù)虛擬機(jī),其中,所述應(yīng)用數(shù)據(jù)包括全 局共享庫(kù)和全局共享運(yùn)行時(shí)環(huán)境變量的系統(tǒng)元數(shù)據(jù),以及應(yīng)用類文件、應(yīng)用庫(kù)和應(yīng)用運(yùn)行時(shí)環(huán)境變量的應(yīng)用元數(shù)據(jù)。
      12、 如權(quán)利要求10所述的多任務(wù)虛擬機(jī),其中,所述應(yīng)用數(shù)據(jù)包括應(yīng) 用類文件、應(yīng)用庫(kù)和應(yīng)用運(yùn)行時(shí)環(huán)境變量的應(yīng)用元數(shù)據(jù),并且其中,所述 任務(wù)數(shù)據(jù)包括全局共享庫(kù)和全局共享運(yùn)行時(shí)環(huán)境變量的系統(tǒng)元數(shù)據(jù)。
      13、 如權(quán)利要求10所述的多任務(wù)虛擬機(jī),其中,所述應(yīng)用數(shù)據(jù)包括程 序?qū)ο?,所述程序?qū)ο蟮膲勖c所述應(yīng)用的壽命相同。
      14、 如權(quán)利要求10所述的多任務(wù)虛擬機(jī),其中,所述任務(wù)數(shù)據(jù)包括程 序?qū)ο?,所述程序?qū)ο蟮膲勖c所述任務(wù)的壽命相同。
      15、 如權(quán)利要求10所述的多任務(wù)虛擬機(jī),還包括堆管理器,用于如果所述任務(wù)被終止則回收所述任務(wù)堆。
      16、 如權(quán)利要求10所述的多任務(wù)虛擬機(jī),還包括堆管理器,用于如果與所述應(yīng)用相關(guān)聯(lián)的所述至少一個(gè)任務(wù)被終止則 回收所述應(yīng)用堆。
      17、 一種多任務(wù)虛擬機(jī)的方法,包括提供被分配給多個(gè)任務(wù)中的一個(gè)任務(wù)的任務(wù)堆,其中,所述任務(wù)堆存 儲(chǔ)僅可由所分配的任務(wù)訪問(wèn)的任務(wù)數(shù)據(jù);以及確定是否存在被分配給應(yīng)用的應(yīng)用堆,其中,所述應(yīng)用堆存儲(chǔ)僅可由 所述多個(gè)任務(wù)中的至少一個(gè)任務(wù)訪問(wèn)的應(yīng)用數(shù)據(jù),其中,所述至少一個(gè)任 務(wù)與所述應(yīng)用相關(guān)聯(lián)并包括所分配的任務(wù)。
      18、 如權(quán)利要求17所述的方法,其中,所述確定還包括確定與所分配的任務(wù)相關(guān)聯(lián)的所述應(yīng)用;以及確定所述應(yīng)用是否存在于活應(yīng)用表中,所述活應(yīng)用表記錄具有由所述 多任務(wù)虛擬機(jī)執(zhí)行的所述多個(gè)任務(wù)中的至少一個(gè)任務(wù)的每個(gè)應(yīng)用。
      19、 如權(quán)利要求17所述的方法,還包括如果所述應(yīng)用堆并不存在于所述多任務(wù)虛擬機(jī)中,則提供所述應(yīng)用堆。
      20、 如權(quán)利要求17所述的方法,還包括標(biāo)記所述應(yīng)用堆的存在。
      21、 如權(quán)利要求20所述的方法,其中,所述標(biāo)記還包括將所述應(yīng)用添加到活應(yīng)用表中,所述活應(yīng)用表記錄具有由所述多任務(wù) 虛擬機(jī)執(zhí)行的所述多個(gè)任務(wù)中的至少一個(gè)任務(wù)的每個(gè)應(yīng)用。
      22、 如權(quán)利要求17所述的方法,還包括將所分配的任務(wù)綁定到所述應(yīng)用堆,使得所分配的任務(wù)能夠訪問(wèn)在所述應(yīng)用堆中存儲(chǔ)的應(yīng)用數(shù)據(jù)。
      23、 如權(quán)利要求22所述的方法,其中,所述綁定還包括將所分配的任務(wù)添加到所述應(yīng)用的活任務(wù)表中,其中,所述活任務(wù)表 記錄與所述應(yīng)用相關(guān)聯(lián)的并由所述多任務(wù)虛擬機(jī)執(zhí)行的每個(gè)任務(wù)。
      24、 一種包括多個(gè)指令的機(jī)器可讀介質(zhì),所述多個(gè)指令當(dāng)被執(zhí)行時(shí)使多任務(wù)處理機(jī)從所述多任務(wù)虛擬機(jī)回收被分配給多個(gè)任務(wù)中的一個(gè)任務(wù)的任務(wù)堆,其中,所述任務(wù)堆存儲(chǔ)僅可由所分配的任務(wù)訪問(wèn)的任務(wù)數(shù)據(jù);以及確定是否從所述多任務(wù)虛擬機(jī)回收被分配給應(yīng)用的應(yīng)用堆,其中,所 述應(yīng)用堆存儲(chǔ)僅可由所述多個(gè)任務(wù)中的至少一個(gè)任務(wù)訪問(wèn)的應(yīng)用數(shù)據(jù),其 中,所述至少一個(gè)任務(wù)與所述應(yīng)用相關(guān)聯(lián)并包括所分配的任務(wù)。
      25、 如權(quán)利要求24所述的機(jī)器可讀介質(zhì),其中,使所述多任務(wù)虛擬機(jī) 確定是否回收所述應(yīng)用堆的多個(gè)指令還使所述多任務(wù)虛擬機(jī)確定所分配的任務(wù)是否是活任務(wù)表中列出的最后一個(gè)任務(wù),所述活任 務(wù)表記錄與所述應(yīng)用相關(guān)聯(lián)的并由所述多任務(wù)虛擬機(jī)執(zhí)行的每個(gè)任務(wù);以 及如果所分配的任務(wù)是所述活任務(wù)表中的最后一個(gè)任務(wù),則確定回收所 述應(yīng)用堆。
      26、 如權(quán)利要求24所述的方法,其中,所述多個(gè)指令還使所述多任務(wù) 虛擬機(jī)響應(yīng)于確定不回收所述應(yīng)用堆,將所分配的任務(wù)與所述應(yīng)用堆解除綁定。
      27、 如權(quán)利要求26所述的方法,其中,使所述多任務(wù)虛擬機(jī)將所述任 務(wù)解除綁定的多個(gè)指令還使所述多任務(wù)虛擬機(jī)從活任務(wù)表中刪除所分配的任務(wù),所述活任務(wù)表記錄與所述應(yīng)用相關(guān)聯(lián)的并由所述多任務(wù)虛擬機(jī)執(zhí)行的每個(gè)任務(wù)。
      28、 如權(quán)利要求24所述的方法,其中,所述多個(gè)指令還使所述多任務(wù) 虛擬機(jī)從所述多任務(wù)虛擬機(jī)回收所述應(yīng)用堆;以及 標(biāo)記所述應(yīng)用堆的回收。
      29、 如權(quán)利要求28所述的方法,其中,使所述多任務(wù)虛擬機(jī)標(biāo)記所述 回收的多個(gè)指令還使所述虛擬機(jī)從活應(yīng)用表中刪除所述應(yīng)用,所述活應(yīng)用表記錄具有由所述多任務(wù)虛 擬機(jī)執(zhí)行的所述多個(gè)任務(wù)中的至少一個(gè)任務(wù)的每個(gè)應(yīng)用。
      全文摘要
      本文描述了多任務(wù)虛擬機(jī)的堆組織。堆組織可以包括用于并發(fā)執(zhí)行多個(gè)任務(wù)的執(zhí)行引擎和與該執(zhí)行引擎相耦合的多個(gè)堆。在一些實(shí)施例中,所述多個(gè)堆可以包括系統(tǒng)堆和與該系統(tǒng)堆相分離的任務(wù)堆。系統(tǒng)堆可以存儲(chǔ)可由所述多個(gè)任務(wù)訪問(wèn)的系統(tǒng)數(shù)據(jù)。任務(wù)堆可以存儲(chǔ)僅可由所述多個(gè)任務(wù)中的一個(gè)任務(wù)訪問(wèn)的任務(wù)數(shù)據(jù)。
      文檔編號(hào)G06F9/44GK101484876SQ200680055340
      公開(kāi)日2009年7月15日 申請(qǐng)日期2006年7月14日 優(yōu)先權(quán)日2006年7月14日
      發(fā)明者B·陳, G·吳, J·彭, P·郭, X·周, Z·英 申請(qǐng)人:英特爾公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1