欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持的制作方法

文檔序號(hào):6397251閱讀:164來源:國知局
專利名稱:增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持的制作方法
技術(shù)領(lǐng)域
本申請(qǐng)涉及計(jì)算機(jī)軟件開發(fā)。更特別地,本申請(qǐng)涉及提高執(zhí)行環(huán)境在應(yīng)用和所支持的運(yùn)行時(shí)間服務(wù)之間的集成的應(yīng)用編程接口(API)。
背景技術(shù)
在今天復(fù)雜的計(jì)算機(jī)程序和聯(lián)網(wǎng)環(huán)境中,通常非常需要代碼共享、可伸縮性及與其他跨平臺(tái)框架的集成。由主機(jī)應(yīng)用使用運(yùn)行時(shí)間(即,此后稱為“主機(jī)”)通常運(yùn)行應(yīng)用開發(fā)者寫出有跨平臺(tái)兼容性、提高的可伸縮性、普通類型系統(tǒng)、多語言支持、自動(dòng)存儲(chǔ)器管理等等特性的管理的代碼。運(yùn)行時(shí)間包括,例如普通語言運(yùn)行時(shí)間(CLR)、Java虛擬機(jī)(VM)和/或其類似。
多數(shù)主機(jī)包括管理的代碼和未管理的代碼。管理的代碼是在運(yùn)行時(shí)間的控制之下執(zhí)行的代碼。反之,未管理的代碼是在運(yùn)行時(shí)間之外執(zhí)行的代碼。未管理的代碼如普通對(duì)象模型(COM)組件、ActiveX接口和Win32API函數(shù)等。未管理的主機(jī)支持代碼被用來配置普通語言運(yùn)行時(shí)間,將其加載到進(jìn)程(即,正在執(zhí)行的程序)中并轉(zhuǎn)換改程序?yàn)楣芾淼拇a。
除了這些基本的交互,一旦進(jìn)程在運(yùn)行,主機(jī)和運(yùn)行時(shí)間之間的交互通常限制于主機(jī)控制運(yùn)行時(shí)間執(zhí)行一些任務(wù)。在一些情況下,主機(jī)可以接收事件或消息來指示請(qǐng)求的運(yùn)行時(shí)間任務(wù)已完成。主機(jī)/運(yùn)行時(shí)間這樣的受限交互表示在進(jìn)程執(zhí)行期間非常缺乏主機(jī)和運(yùn)行時(shí)間之間的集成。由于這些原因,主機(jī)和運(yùn)行時(shí)間可以說是表示進(jìn)程中本質(zhì)上獨(dú)立的實(shí)體。在主機(jī)和運(yùn)行時(shí)間之間如此缺乏執(zhí)行環(huán)境集成本質(zhì)上限制了主機(jī)應(yīng)用,使其對(duì)運(yùn)行時(shí)間提供的很多服務(wù)只有很少控制或沒有控制。
例如,假設(shè)主機(jī)使用合作的或非優(yōu)先線程,這通常需要主機(jī)至少知道運(yùn)行在主機(jī)的執(zhí)行環(huán)境中的所有線程。也假設(shè)運(yùn)行時(shí)間依賴于OS的非合作或優(yōu)先線程模型。(運(yùn)行時(shí)間通常依賴于操作系統(tǒng)(OS)線程、存儲(chǔ)器管理、同步、安全等等的實(shí)現(xiàn))。在此情況下,主機(jī)可以發(fā)送線程到運(yùn)行時(shí)間中。在這一點(diǎn),OS優(yōu)先任務(wù)會(huì)阻塞主機(jī)的非優(yōu)先進(jìn)程且/或主機(jī)會(huì)將任務(wù)移動(dòng)到完全不同的物理線程。主機(jī)線程退出運(yùn)行時(shí)間進(jìn)入到不屬于主機(jī)或運(yùn)行時(shí)間的代碼中會(huì)使得情況更糟,此時(shí)任何事情都會(huì)對(duì)主機(jī)線程發(fā)生而主機(jī)不知道。
這樣的非集成的主機(jī)/運(yùn)行時(shí)間線程管理會(huì)顯著降低主機(jī)運(yùn)行時(shí)間的性能和可伸縮性,會(huì)導(dǎo)致數(shù)據(jù)完整性的丟失、創(chuàng)建主機(jī)不能檢測(cè)到的死鎖,和/或?qū)е轮鳈C(jī)和系統(tǒng)不可預(yù)測(cè)的行為。
上述的例子展示了缺乏主機(jī)和運(yùn)行時(shí)間之間的執(zhí)行環(huán)境集成會(huì)破壞主機(jī)應(yīng)用所預(yù)期的實(shí)現(xiàn)。當(dāng)主機(jī)隨著時(shí)間調(diào)整線程、存儲(chǔ)器、同步和/或安全實(shí)現(xiàn)以提高可伸縮性和高性能時(shí)尤其如此。因此,雖然主機(jī)會(huì)需要得益于運(yùn)行時(shí)間的使用(如,跨平臺(tái)兼容性、降低編碼工作量等等),對(duì)主機(jī)特別調(diào)整的實(shí)現(xiàn)會(huì)與對(duì)應(yīng)的運(yùn)行時(shí)間服務(wù)不兼容。因此,主機(jī)可以只加載依賴于主機(jī)提供的服務(wù)的運(yùn)行時(shí)間,或通過直接訪問下層的OS服務(wù)完全忽略運(yùn)行時(shí)間服務(wù)。這樣的修補(bǔ)使得應(yīng)用設(shè)計(jì)者不能利用運(yùn)行時(shí)間系統(tǒng)服務(wù)設(shè)計(jì)提供的好處,導(dǎo)致產(chǎn)品的集成度和可移植性下降。
因此,非常需要提高在主機(jī)和運(yùn)行時(shí)間之間的執(zhí)行環(huán)境控制的系統(tǒng)和方法。

發(fā)明內(nèi)容
將對(duì)增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持的系統(tǒng)和方法進(jìn)行說明。在一個(gè)方面,運(yùn)行時(shí)間識(shí)別由主機(jī)應(yīng)用暴露的任何抽象接口。抽象接口對(duì)應(yīng)于由主機(jī)應(yīng)用實(shí)現(xiàn)的相應(yīng)的執(zhí)行環(huán)境功能。在運(yùn)行時(shí)間管理的代碼執(zhí)行期間并響應(yīng)于和識(shí)別出的相應(yīng)的執(zhí)行環(huán)境抽象關(guān)聯(lián)的動(dòng)作或事件,運(yùn)行時(shí)間調(diào)用特定的接口或?qū)?yīng)于一個(gè)特定的抽象接口的對(duì)象。這允許主機(jī)應(yīng)用定制/增強(qiáng)其執(zhí)行環(huán)境,將其作為所實(shí)現(xiàn)的抽象的功能,所述執(zhí)行環(huán)境包括運(yùn)行時(shí)間。


將引用

下面的詳細(xì)說明。在附圖中,組件引用編號(hào)最左邊的一位用來標(biāo)識(shí)該組件首次出現(xiàn)在其中的圖。
圖1為方框圖,展示可以在其中實(shí)現(xiàn)提供增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持的系統(tǒng)和方法的典型計(jì)算環(huán)境;圖2展示提供增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持的典型處理;圖3展示運(yùn)行時(shí)間和主機(jī)應(yīng)用存儲(chǔ)器抽象接口之間的典型結(jié)構(gòu)關(guān)系。為了便于說明,“抽象”指在主機(jī)應(yīng)用中由應(yīng)用開發(fā)者可選地實(shí)現(xiàn)的函數(shù)/方法。主機(jī)實(shí)現(xiàn)的函數(shù)是抽象的,因?yàn)樗举|(zhì)上替換若主機(jī)未實(shí)現(xiàn)該函數(shù)則運(yùn)行時(shí)間本該遵循的線程執(zhí)行。同時(shí),用于訪問主機(jī)實(shí)現(xiàn)的功能的應(yīng)用編程接口被稱為“抽象的”或“抽象接口”。
圖4展示運(yùn)行時(shí)間和主機(jī)應(yīng)用線程抽象接口之間的典型結(jié)構(gòu)關(guān)系;圖5展示從未管理的代碼到管理的代碼或從管理的代碼到未管理的代碼退出/反向退出和進(jìn)入/反向進(jìn)入管理的代碼的典型的管理的/未管理的代碼調(diào)用序列;及圖6為方框圖,展示運(yùn)行時(shí)間任務(wù)的典型任務(wù)調(diào)度,運(yùn)行時(shí)間任務(wù)被視為在OS線程上由主機(jī)應(yīng)用調(diào)度的構(gòu)造。
具體實(shí)施例方式
總述對(duì)增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持進(jìn)行說明。現(xiàn)有的在支持運(yùn)行時(shí)間的應(yīng)用(主機(jī)應(yīng)用)和運(yùn)行時(shí)間之間的集成本質(zhì)上受到限制,使得主機(jī)應(yīng)用對(duì)其執(zhí)行環(huán)境的相當(dāng)部分只有很少的控制,如果有的話。本發(fā)明通過本質(zhì)上提高主機(jī)和運(yùn)行時(shí)間之間的執(zhí)行環(huán)境集成來處理這樣的缺乏集成。用允許主機(jī)應(yīng)用實(shí)現(xiàn)和執(zhí)行控制和定制執(zhí)行環(huán)境功能、事件通知和運(yùn)行時(shí)間操作的多個(gè)層次的抽象接口來實(shí)現(xiàn)提高的集成。這樣的抽象包括例如,存儲(chǔ)器管理、線程、輸入/輸出(I/O)完成、同步、事件通知(如,當(dāng)線程進(jìn)入和離開運(yùn)行時(shí)間時(shí))服務(wù)抽象。
另外,運(yùn)行時(shí)間接口向運(yùn)行時(shí)間對(duì)主機(jī)應(yīng)用實(shí)現(xiàn)的特定方面提供實(shí)在的控制,所述特定方面包括事件通知。運(yùn)行時(shí)間的功能并不取決于主機(jī)應(yīng)用是否已決定實(shí)現(xiàn)這樣的增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持接口。
典型操作環(huán)境對(duì)附圖來說,其中類似的引用編號(hào)指類似的元件,本發(fā)明是作為實(shí)現(xiàn)在適合的計(jì)算環(huán)境中來展示的。雖然不是必須的,在計(jì)算機(jī)可執(zhí)行指令的一般上下文中對(duì)本發(fā)明進(jìn)行說明,計(jì)算機(jī)可執(zhí)行指令如由個(gè)人計(jì)算機(jī)執(zhí)行的程序模塊。程序模塊通常包括執(zhí)行特殊任務(wù)或?qū)崿F(xiàn)特殊抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。
圖1展示適合的計(jì)算環(huán)境100的例子,可以在其中(完整地或部分地)實(shí)現(xiàn)后面說明的增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持的系統(tǒng)、裝置和方法。典型計(jì)算環(huán)境100僅為適合的計(jì)算環(huán)境的一個(gè)例子且不應(yīng)視為對(duì)在此所述的系統(tǒng)和分的使用范圍或功能有任何限制。也不應(yīng)將計(jì)算環(huán)境100解釋為依賴于或需要計(jì)算環(huán)境100中所展示的組件任何一個(gè)或組件組合。
在此所述的方法和系統(tǒng)可以工作在大量的其他通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置中。適合于使用的眾所周知的計(jì)算系統(tǒng)、環(huán)境和/或配置包括,但不僅限于,個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)、包括上述的任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境,等等??蚣艿木o湊或子集版本也可以實(shí)現(xiàn)在資源有限的客戶機(jī)中,如移動(dòng)電話、個(gè)人數(shù)字助理、手持計(jì)算機(jī)或其他通訊/計(jì)算設(shè)備。本發(fā)明也可以實(shí)現(xiàn)在分布式計(jì)算環(huán)境中,其中任務(wù)由通過通訊網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備兩者。
如圖1所示,計(jì)算環(huán)境100包括形式為計(jì)算機(jī)102的通用計(jì)算設(shè)備。計(jì)算機(jī)102的組件包括但不僅限于,一個(gè)或多個(gè)處理器或處理單元104、系統(tǒng)存儲(chǔ)器106和總線108,總線108連接包括系統(tǒng)存儲(chǔ)器106到處理器104的各種系統(tǒng)組件。
系統(tǒng)總線108表示幾種總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍設(shè)備總線、加速圖形接口和使用各種總線結(jié)構(gòu)中的一種的處理器或本地總線。作為例子,而非限制,這樣的結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線、微通道結(jié)構(gòu)(MCA)總線、增強(qiáng)的ISA(EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)本地總線及亦稱為包廂總線的外圍組件互聯(lián)(PCI)總線。
計(jì)算機(jī)102通常包括各種計(jì)算機(jī)可讀媒體。這樣的媒體可以為計(jì)算機(jī)102能夠訪問的任何可用媒體,且它包括易失的和非易失的媒體、可移動(dòng)的和不可移動(dòng)的媒體。在圖1中,系統(tǒng)存儲(chǔ)器106包括形式為易失存儲(chǔ)器的計(jì)算機(jī)可讀媒體,如隨機(jī)訪問存儲(chǔ)器(RAM)110和/或非易失存儲(chǔ)器,如只讀存儲(chǔ)器(ROM)112。基本輸入/輸出系統(tǒng)(BIOS)114包含幫助在計(jì)算機(jī)102內(nèi)的元件之間傳輸信息,如在啟動(dòng)期間,的基本例程,BIOS 114被存儲(chǔ)在ROM 112中。RAM通常包含可由處理器104立即訪問和/或操作的數(shù)據(jù)和/或程序模塊。
計(jì)算機(jī)102可以進(jìn)一步包括其他可移動(dòng)/不可移動(dòng)、易失/非易失計(jì)算機(jī)存儲(chǔ)媒體。例如,圖1展示讀寫不可移動(dòng)、非易失磁媒體(未標(biāo)出且通常被稱為“硬盤”)的硬盤驅(qū)動(dòng)器116、讀寫可移動(dòng)、非易失磁盤120(如,“軟盤”)的磁盤驅(qū)動(dòng)器118,和讀寫可移動(dòng)、非易失光盤124,如CD-ROM/R/RW、DVD-ROM/R/RW/+R/RAM或其他光學(xué)媒體的光盤驅(qū)動(dòng)器122。硬盤驅(qū)動(dòng)器116、磁盤驅(qū)動(dòng)器118和光盤驅(qū)動(dòng)器12通過一個(gè)或多個(gè)接口126每個(gè)都連接到總線108。
驅(qū)動(dòng)器及關(guān)聯(lián)的計(jì)算機(jī)可讀媒體對(duì)計(jì)算機(jī)102提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的非易失存儲(chǔ)。雖然在此所述的典型環(huán)境使用硬盤、可移動(dòng)磁盤和可移動(dòng)光盤124,熟悉技術(shù)的人應(yīng)理解,也可以在典型操作環(huán)境中使用可以存儲(chǔ)能夠由計(jì)算機(jī)訪問的數(shù)據(jù)的其他類型的計(jì)算機(jī)可讀媒體,如盒式磁帶、閃存卡、數(shù)字視頻盤、隨機(jī)訪問存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)及其類似。
用戶可以通過如鍵盤140和定點(diǎn)設(shè)備142(如“鼠標(biāo)”)這樣的輸入設(shè)備輸入命令和信息到計(jì)算機(jī)102中。其他輸入設(shè)備(未展示)包括麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、串行口、掃描儀、相機(jī)等等。這些和其他輸入設(shè)備通過連接到總線108的用戶輸入接口144連接到處理單元104,但可以通過其他接口和總線結(jié)構(gòu)進(jìn)行連接,如并行口、游戲口,或通用串行總線(USB)。
顯示器146或其他類型的顯示設(shè)備也通過接口連接到總線108,如視頻適配器148。除了顯示器146,個(gè)人計(jì)算機(jī)通常包括其他外圍輸出設(shè)備(未展示),如揚(yáng)聲器和打印機(jī),它們也可以通過外圍輸出接口150連接。
計(jì)算機(jī)102可以使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)152的邏輯連接工作在聯(lián)網(wǎng)環(huán)境中。遠(yuǎn)程計(jì)算機(jī)152可以包括很多或所有在此相對(duì)于計(jì)算機(jī)102所述的元件和特性。圖1所示的邏輯連接為局域網(wǎng)(LAN)154和通用廣域網(wǎng)(WAN)156。這樣的聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò)、企業(yè)內(nèi)部互聯(lián)網(wǎng)和因特網(wǎng)上是很常見的。
當(dāng)用在LAN聯(lián)網(wǎng)環(huán)境中時(shí),計(jì)算機(jī)102通過網(wǎng)絡(luò)接口或適配器158連接到LAN 154。當(dāng)用在WAN聯(lián)網(wǎng)環(huán)境中時(shí),計(jì)算機(jī)通常包括調(diào)制解調(diào)器160或其他在WAN 156上建立通訊的方法。調(diào)制解調(diào)器160可以為內(nèi)置的或外置的,它通過用戶輸入接口144或其他適當(dāng)?shù)臋C(jī)制連接到系統(tǒng)總線108。
如圖1所示,是通過因特網(wǎng)的WAN的具體實(shí)現(xiàn)。在此,計(jì)算機(jī)102使用調(diào)制解調(diào)器160通過因特網(wǎng)162和至少一個(gè)遠(yuǎn)程計(jì)算機(jī)152建立通訊。
在聯(lián)網(wǎng)的環(huán)境中,相對(duì)于計(jì)算機(jī)102所述的程序模塊,或其部分,可以被存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。因此,如在圖1中所示,遠(yuǎn)程應(yīng)用程序164可以駐留在遠(yuǎn)程計(jì)算機(jī)162的存儲(chǔ)器設(shè)備上。應(yīng)理解,所示的網(wǎng)絡(luò)連接是示范性的且可以使用在計(jì)算機(jī)之間建立通訊連接的其他方法。
可以在硬盤、磁盤120、光盤124、ROM 112或RAM 110上存儲(chǔ)多個(gè)程序模塊,包括如,操作系統(tǒng)(OS)128、運(yùn)行時(shí)間130、主機(jī)應(yīng)用132(在此后稱為“主機(jī)”132)、其他程序模塊136和程序數(shù)據(jù)138。OS提供常規(guī)的功能,如文件管理、事件處理、進(jìn)程和線程、存儲(chǔ)器管理、用戶接口(如窗口、菜單、對(duì)話框等)、安全、驗(yàn)證、校驗(yàn)和/或其類似。
運(yùn)行時(shí)間130和主機(jī)應(yīng)用130暴露增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持抽象接口131,讓應(yīng)用開發(fā)者可以定制并緊密集成主機(jī)應(yīng)用和運(yùn)行時(shí)間之間的進(jìn)程執(zhí)行。為了便于討論,“抽象”指在主機(jī)應(yīng)用中由應(yīng)用開發(fā)者可選地實(shí)現(xiàn)的函數(shù)/方法。主機(jī)實(shí)現(xiàn)的函數(shù)是抽象的,因?yàn)樗举|(zhì)上替換若主機(jī)未實(shí)現(xiàn)該函數(shù)則運(yùn)行時(shí)間本該遵循的線程執(zhí)行。同時(shí),由主機(jī)132暴露的、讓運(yùn)行時(shí)間重定向服務(wù)到主機(jī)實(shí)現(xiàn)的功能的API和/或由運(yùn)行時(shí)間130暴露的、讓主機(jī)通知運(yùn)行時(shí)間主機(jī)動(dòng)作的API被稱為“抽象的”或“抽象接口”(即,抽象接口131)。
由主機(jī)實(shí)現(xiàn)的抽象接口131(此后稱為“運(yùn)行時(shí)間主機(jī)支持接口”(RHI)131)被稱為主機(jī)抽象接口(HAI)133。HAI被映射到存儲(chǔ)器、線程、I/O完成、同步和/或由主機(jī)提供的其他服務(wù)功能的任意組合。通過允許主機(jī)應(yīng)用定制和控制運(yùn)行時(shí)間130比現(xiàn)有實(shí)現(xiàn)更多的方面,RHI 131顯著地?cái)U(kuò)展在運(yùn)行時(shí)間和主機(jī)之間的這些現(xiàn)有接口的功能。和相當(dāng)受限且容易出問題的現(xiàn)有主機(jī)/運(yùn)行時(shí)間執(zhí)行環(huán)境集成相比,這本質(zhì)上地提供運(yùn)行時(shí)間130和主機(jī)132執(zhí)行模型之間的更緊密的執(zhí)行環(huán)境集成。
在運(yùn)行時(shí)間130和主機(jī)應(yīng)用132之間合作地交換HAI 133允許相應(yīng)的實(shí)體協(xié)商哪些函數(shù)由主機(jī)執(zhí)行,及對(duì)哪些函數(shù)進(jìn)行抽象以使得由運(yùn)行時(shí)間執(zhí)行它們。同樣,主機(jī)應(yīng)用可以定制其執(zhí)行環(huán)境。暴露的HAI進(jìn)一步允許運(yùn)行時(shí)間配置特定的主機(jī)執(zhí)行環(huán)境參數(shù),并向主機(jī)通知(如,通過提供的回叫)特殊的運(yùn)行時(shí)間事件(如,資源分配失敗、線程狀態(tài)等)。
運(yùn)行時(shí)間130暴露運(yùn)行時(shí)間接口(RI)134,由主機(jī)應(yīng)用132用來配置運(yùn)行時(shí)間操作、向運(yùn)行時(shí)間通知特定事件、在進(jìn)程執(zhí)行期間獲取附加信息等等。在進(jìn)程執(zhí)行期間,對(duì)RI的主機(jī)應(yīng)用調(diào)用是通過特定服務(wù)特定于主機(jī)的實(shí)現(xiàn)的一個(gè)或多個(gè)HAI 133重定向回主機(jī)應(yīng)用、傳遞給操作系統(tǒng)128來執(zhí)行、由運(yùn)行時(shí)間在本地進(jìn)行處理和/或發(fā)送到對(duì)象模型服務(wù)(即,“其他程序模塊”136)。
存儲(chǔ)器抽象接口運(yùn)行時(shí)間主機(jī)支持接口(RHI)131的存儲(chǔ)器管理部分●允許主機(jī)132提供通過其運(yùn)行時(shí)間130請(qǐng)求所有的存儲(chǔ)器分配的接口(即,暴露的主機(jī)應(yīng)用接口(HAI)133之一)。在一個(gè)實(shí)施例中,主機(jī)接口133提供替換OS存儲(chǔ)器API和標(biāo)準(zhǔn)C運(yùn)行時(shí)間分配例程兩者的方法。
●對(duì)主機(jī)132提供機(jī)制來抽象運(yùn)行時(shí)間130當(dāng)前從OS獲得的低存儲(chǔ)器通知。這向主機(jī)提供讓運(yùn)行時(shí)間130使更多附加存儲(chǔ)器可用的機(jī)制,例如,垃圾收集服務(wù)。
●允許運(yùn)行時(shí)間130向主機(jī)130通知特殊的分配失敗的結(jié)果,并進(jìn)一步允許主機(jī)定制運(yùn)行時(shí)間在分配失敗時(shí)應(yīng)采取的動(dòng)作。例如,若運(yùn)行時(shí)間卸載應(yīng)用域或使其運(yùn)行在“禁用”狀態(tài)。
下面的情景提供RHI 131的存儲(chǔ)器部分的典型使用。假設(shè)主機(jī)132工作在可配置數(shù)量的存儲(chǔ)器110內(nèi)(如,計(jì)算設(shè)備102上的部分或解決全部物理存儲(chǔ)器)。為了最大化性能,主機(jī)追蹤所有的存儲(chǔ)器分配并確保永不發(fā)生分頁(此例中的主機(jī)寧可存儲(chǔ)器分配失敗也不分頁到硬盤116)。為了準(zhǔn)確地追蹤所有的分配,主機(jī)控制運(yùn)行時(shí)間130調(diào)用暴露的主機(jī)抽象接口(HAI)133來分配存儲(chǔ)器。這使主機(jī)能夠在分頁發(fā)生之前指示運(yùn)行時(shí)間存儲(chǔ)器分配失敗。
線程抽象接口此部分詳述RHI 131的線程管理部分。這些線程管理主機(jī)支持API對(duì)OS線程的概念進(jìn)行抽象并本質(zhì)上使調(diào)度和執(zhí)行的單元由主機(jī)132來定義。這支持主機(jī)實(shí)現(xiàn)它們自己的基于纖維的調(diào)度機(jī)制。術(shù)語“任務(wù)”通常用來定義此抽象并用于區(qū)分單詞“線程”和特殊的主機(jī)應(yīng)用的執(zhí)行和調(diào)度單元。鑒于此,線程管理API●允許主機(jī)132提供接口133,運(yùn)行時(shí)間130用來創(chuàng)建并啟動(dòng)新任務(wù)(線程)。
●向主機(jī)132提供“重用”或共享任務(wù)的運(yùn)行時(shí)間實(shí)現(xiàn)的部分的機(jī)制。這提供可以由主機(jī)應(yīng)用使用以最小化主機(jī)實(shí)現(xiàn)的任務(wù)創(chuàng)建和設(shè)置操作的性能優(yōu)化。
●實(shí)現(xiàn)回叫以在任務(wù)進(jìn)入或離開可運(yùn)行狀態(tài)時(shí)通知運(yùn)行時(shí)間。當(dāng)調(diào)用離開可運(yùn)行狀態(tài)時(shí),主機(jī)API 133允許運(yùn)行時(shí)間130指定該任務(wù)應(yīng)盡快由主機(jī)132重新調(diào)度。
●向運(yùn)行時(shí)間130提供通知主機(jī)132給定任務(wù)不能移至不同的物理OS線程且不能在指定的時(shí)間窗口中阻塞其執(zhí)行的方法。
●允許主機(jī)132提供線程共享池的實(shí)現(xiàn),向運(yùn)行時(shí)間130提供使工作項(xiàng)排隊(duì)、設(shè)置及查詢線程共享池的大小的等等能力。
●向主機(jī)132和運(yùn)行時(shí)間130雙方提供“區(qū)域”在給定任務(wù)上已改變的通知。區(qū)域和軟件的本地化相關(guān)。運(yùn)行時(shí)間130包括當(dāng)前區(qū)域的概念,多數(shù)主機(jī)應(yīng)用132亦如此。這些通知接口允許運(yùn)行時(shí)間130和主機(jī)132互相通知區(qū)域是否在任一方被程序改變-從而雙方能保持一致。例如,如果區(qū)域在運(yùn)行時(shí)間一方被改變,那可能會(huì)影響到主機(jī)132實(shí)現(xiàn)的數(shù)據(jù)庫中的排序順序。
●允許運(yùn)行時(shí)間130延遲主機(jī)130取消給定任務(wù)。
●向運(yùn)行時(shí)間130(及用戶代碼)提供調(diào)整任務(wù)優(yōu)先級(jí)的方法。
下述情景提供RHI 131的線程管理部分的典型使用。假設(shè)特殊的主機(jī)應(yīng)用132實(shí)現(xiàn)“纖維模式”執(zhí)行。在纖維模式中,特殊的主機(jī)(如,SQL服務(wù)器)可以基于計(jì)算設(shè)備102上的處理器104的數(shù)量,或基于其他特定于主機(jī)的準(zhǔn)則創(chuàng)建一定數(shù)量的線程。然后主機(jī)在這些運(yùn)行用戶代碼(“其他程序模塊”136的部分)的線程上創(chuàng)建纖維。主機(jī)以合作的方式調(diào)度這些纖維(以主機(jī)的術(shù)語稱為非優(yōu)先的)-當(dāng)纖維由于某些操作而阻塞,那就“切換出”它且線程運(yùn)行另一個(gè)纖維。稍后線程將被重新調(diào)度并執(zhí)行-不一定在相同的線程上。當(dāng)運(yùn)行時(shí)間130通過主機(jī)支持API 134創(chuàng)建“任務(wù)”時(shí),它最終生成主機(jī)132上的纖維并由主機(jī)的調(diào)度器所理解。
I/O完成抽象接口本節(jié)詳述RHI 131的I/O完成管理部分,其中●主機(jī)132向運(yùn)行時(shí)間130提供HAI 133來綁定I/O完成端口的句柄。
●主機(jī)132向運(yùn)行時(shí)間130提供HAI 133來提供回叫。例如,在異步的I/O操作完成時(shí)由主機(jī)132調(diào)用的回叫。
●運(yùn)行時(shí)間130向主機(jī)132提供RI 134以在傳遞給運(yùn)行時(shí)間服務(wù)I/O例程的OVERLAPPED結(jié)構(gòu)的最后插入定制數(shù)據(jù)。OVERLAPPED結(jié)構(gòu)提供象數(shù)據(jù)一樣的文件指針位置。
同步如果運(yùn)行時(shí)間130通過HAI 133(即,通過主機(jī)應(yīng)用132的控制)創(chuàng)建一個(gè)或多個(gè)任務(wù),運(yùn)行時(shí)間也將通過對(duì)應(yīng)的HAI創(chuàng)建那些任務(wù)的同步對(duì)象。這確保主機(jī)不知到的情況下不對(duì)OS線程加鎖。這允許運(yùn)行時(shí)間130任務(wù)進(jìn)一步和主機(jī)線程調(diào)度機(jī)制集成并允許主機(jī)執(zhí)行死鎖檢測(cè)。在這一點(diǎn),RHI 131的同步管理部分允許運(yùn)行時(shí)間130通過HAI 133創(chuàng)建下面的同步(“sync”)基元關(guān)鍵部分、事件(手動(dòng)和自動(dòng)重置的)、旗語、讀取器/寫入器鎖和監(jiān)視器。
進(jìn)入和離開運(yùn)行時(shí)間的抽象接口運(yùn)行管理的代碼的線程可以離開運(yùn)行時(shí)間130來運(yùn)行未管理的代碼。對(duì)離開運(yùn)行時(shí)間130來運(yùn)行未管理的代碼的線程加的鎖不會(huì)通過RHI 131,從而它們不能和主機(jī)應(yīng)用132的線程及同步模型集成。因此,當(dāng)線程進(jìn)入或離開運(yùn)行時(shí)間130、相應(yīng)地進(jìn)入/離開未管理的代碼時(shí),運(yùn)行時(shí)間通過主機(jī)實(shí)現(xiàn)的回叫(由主機(jī)通過對(duì)應(yīng)的RI 134向運(yùn)行時(shí)間提供的回叫)通知主機(jī)應(yīng)用。鑒于此,運(yùn)行時(shí)間●通知主機(jī)132線程何時(shí)轉(zhuǎn)換到運(yùn)行時(shí)間130中及何時(shí)轉(zhuǎn)換出運(yùn)行時(shí)間130中。通過鉤連離開和進(jìn)入運(yùn)行時(shí)間的調(diào)用來實(shí)現(xiàn)這樣的通知,而不管代碼是否已在運(yùn)行時(shí)編譯(JIT)情景下或在本地映象編譯情景(如,ngen)下編譯。在一個(gè)實(shí)施例中,通知包括被調(diào)用的例程的地址。
●允許主機(jī)132指定對(duì)未管理的代碼的特殊函數(shù)調(diào)用且對(duì)應(yīng)的運(yùn)行時(shí)間重入不應(yīng)由運(yùn)行時(shí)間130對(duì)這樣的通知進(jìn)行鉤連。這樣的主機(jī)指定允許運(yùn)行時(shí)間以優(yōu)化的方式實(shí)現(xiàn)特殊的調(diào)用(如,內(nèi)嵌實(shí)現(xiàn)調(diào)用)。主機(jī)可以使用此接口來跳過它們“知道的”調(diào)用(即,為主機(jī)自身的實(shí)現(xiàn)或緊密集成的功能的部分的調(diào)用)的鉤連。
例如,這樣的主機(jī)實(shí)現(xiàn)的回叫允許運(yùn)行時(shí)間130發(fā)送“通知”(對(duì)鉤連的調(diào)用)到主機(jī)132,通知主機(jī)由于特殊的線程已退出運(yùn)行時(shí)間130到用戶代碼中,其行為不再可預(yù)測(cè)。響應(yīng)這樣的通知,主機(jī)132可以采取積極的步驟來確保特殊的線程不由主機(jī)132調(diào)度參與任何特定于主機(jī)的具體實(shí)現(xiàn)的非優(yōu)先調(diào)度活動(dòng),直到該線程返回運(yùn)行時(shí)間。
在一個(gè)實(shí)施例中,這樣的鉤連可以由主機(jī)132使用以調(diào)整處理器104的浮點(diǎn)狀態(tài)。主機(jī)132也可以使用RI 134來指示一個(gè)或多個(gè)函數(shù)調(diào)用不能由運(yùn)行時(shí)間鉤連,例如,以在主機(jī)調(diào)用數(shù)據(jù)訪問API時(shí)避免進(jìn)行運(yùn)行時(shí)間通知。
增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持的典型處理圖2展示增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持的典型處理。為了便于說明,引用圖1的特性來說明圖2的操作。雖然圖2展示操作204-212以特殊的編號(hào)順序,這些相應(yīng)的操作可以在邏輯上以任何順序作為主機(jī)應(yīng)用132的功能、運(yùn)行時(shí)間130交互、執(zhí)行環(huán)境的特性等等發(fā)生。
在塊202,在主機(jī)應(yīng)用132(圖1)已加載運(yùn)行時(shí)間130(圖1)到進(jìn)程中(即,啟動(dòng)時(shí)),運(yùn)行時(shí)間130確定任何主機(jī)實(shí)現(xiàn)的執(zhí)行環(huán)境抽象(即,主機(jī)支持的抽象)。為了說明,進(jìn)程由RAM 110(圖1)中相應(yīng)的主機(jī)132和運(yùn)行時(shí)間130組件表示。(特殊的抽象是否由主機(jī)支持對(duì)運(yùn)行時(shí)間如何執(zhí)行并不是至關(guān)重要的)。在一個(gè)實(shí)施例中,此操作由運(yùn)行時(shí)間對(duì)有指示感興趣的執(zhí)行環(huán)境抽象的列表的暴露的HAI 133請(qǐng)求/調(diào)用來實(shí)現(xiàn)。這樣的請(qǐng)求是作為圖1的“程序數(shù)據(jù)”138的部分來表示的。響應(yīng)于此請(qǐng)求/調(diào)用,主機(jī)向運(yùn)行時(shí)間130提供一個(gè)或多個(gè)特定于抽象的接口(HAI 133中的相應(yīng)API),通過此接口訪問主機(jī)實(shí)現(xiàn)的執(zhí)行環(huán)境抽象(如,存儲(chǔ)器、線程、同步、I/O完成、策略和/或其他實(shí)現(xiàn)的抽象)。
在塊204,響應(yīng)于對(duì)有關(guān)哪個(gè)(如果有的話)執(zhí)行環(huán)境抽象由主機(jī)應(yīng)用132實(shí)現(xiàn)/支持的信息的運(yùn)行時(shí)間請(qǐng)求,運(yùn)行時(shí)間130接收對(duì)應(yīng)于抽象的功能的HAI133的列表。這樣的HAI可以引用對(duì)象和/或接口。在塊206,運(yùn)行時(shí)間可以通過一個(gè)或多個(gè)接收的HAI配置抽象的功能實(shí)現(xiàn)。
在塊208,運(yùn)行時(shí)間130向主機(jī)應(yīng)用132通知一個(gè)或多個(gè)由運(yùn)行時(shí)間暴露的運(yùn)行時(shí)間接口134(RI)。在此實(shí)施例中,這樣的通知響應(yīng)于由主機(jī)應(yīng)用132發(fā)送到運(yùn)行時(shí)間130的請(qǐng)求。這樣的通知和請(qǐng)求是作為圖1的“程序數(shù)據(jù)”138的相應(yīng)部分表示的。這樣的RI允許主機(jī)通知運(yùn)行時(shí)間特定的事件并/或在進(jìn)程執(zhí)行期間獲取附加信息。在一個(gè)實(shí)施例中,RI為主機(jī)用來通知運(yùn)行時(shí)間特定的事件或在進(jìn)程執(zhí)行期間獲取附加信息的回叫。在塊210,運(yùn)行時(shí)間對(duì)應(yīng)于任何主機(jī)應(yīng)用配置請(qǐng)求、回叫請(qǐng)求、運(yùn)行時(shí)間數(shù)據(jù)和/或其類似。
在塊212,在管理的代碼執(zhí)行期并響應(yīng)于一個(gè)或多個(gè)和主機(jī)應(yīng)用抽象的功能關(guān)聯(lián)的動(dòng)作或事件,運(yùn)行時(shí)間至少調(diào)用一個(gè)特定的接口或?qū)?yīng)于特定的一個(gè)返回的HAI的對(duì)象。這樣的動(dòng)作和事件對(duì)應(yīng)于,例如,存儲(chǔ)器、線程/任務(wù)、I/O完成、同步、事件通知、垃圾收集(GC)的管理服務(wù)和/或其類似。
結(jié)論所述的系統(tǒng)和方法提供增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持。雖然所述系統(tǒng)和方法是以特定于結(jié)構(gòu)特性和方法操作的語言說明的,在后附的權(quán)利要求中定義的主題并不限制于所述的特定特性或操作。相反,特定的特性和操作是作為實(shí)現(xiàn)權(quán)利要求主題的典型形式來揭示的。
權(quán)利要求
1.一種用于增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持的方法,其特征在于,所述方法包括識(shí)別由主機(jī)應(yīng)用暴露的一個(gè)或多個(gè)主機(jī)抽象接口(HAI),所述一個(gè)或多個(gè)HAI對(duì)應(yīng)于相應(yīng)的由主機(jī)應(yīng)用支持的執(zhí)行環(huán)境抽象;在運(yùn)行時(shí)間管理的代碼執(zhí)行期間及響應(yīng)于和已識(shí)別的一個(gè)相應(yīng)的執(zhí)行環(huán)境抽象關(guān)聯(lián)的動(dòng)作或事件,由運(yùn)行時(shí)間調(diào)用至少一個(gè)特定的接口或?qū)?yīng)于特定的一個(gè)HAI的對(duì)象;及所述識(shí)別和調(diào)用的操作向主機(jī)應(yīng)用提供主機(jī)應(yīng)用可定制的運(yùn)行時(shí)間主機(jī)支持環(huán)境。
2.如權(quán)利要求1所述的方法,其特征在于,所述一個(gè)或多個(gè)執(zhí)行環(huán)境抽象對(duì)應(yīng)于存儲(chǔ)器、線程/任務(wù)、I/O完成、同步、運(yùn)行時(shí)間進(jìn)入/退出通知和/或垃圾收集(GC)的管理服務(wù)。
3.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定的接口或由主機(jī)應(yīng)用實(shí)現(xiàn)的對(duì)象請(qǐng)求存儲(chǔ)器分配。
4.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定的接口或?qū)ο蟀l(fā)送來自O(shè)S的低存儲(chǔ)器通知到主機(jī)應(yīng)用;及/或由運(yùn)行時(shí)間通過至少一個(gè)特定的接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用特殊的存儲(chǔ)器分配失敗的結(jié)果,并從而允許主機(jī)應(yīng)用定制運(yùn)行時(shí)間在存儲(chǔ)器分配失敗時(shí)應(yīng)采取的動(dòng)作。
5.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定的接口或由主機(jī)應(yīng)用實(shí)現(xiàn)的對(duì)象創(chuàng)建新的線程/任務(wù)。
6.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或由主機(jī)應(yīng)用實(shí)現(xiàn)的對(duì)象重用或共享任務(wù)的運(yùn)行時(shí)間實(shí)現(xiàn)的部分。
7.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο蠡蚬蚕硗ㄖ鳈C(jī)應(yīng)用任務(wù)不能被移到不同的物理OS且在指定的時(shí)間窗口中不能阻塞該任務(wù)的執(zhí)行。
8.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定對(duì)象或接口指示對(duì)主機(jī)應(yīng)用的回叫以通知運(yùn)行時(shí)間任務(wù)何時(shí)被移至可運(yùn)行或不可運(yùn)行的狀態(tài);及如果任務(wù)被移至不可運(yùn)行狀態(tài),由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笾付ㄈ蝿?wù)應(yīng)盡快由主機(jī)應(yīng)用重新調(diào)度。
9.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笫咕€程/任務(wù)在主機(jī)應(yīng)用實(shí)現(xiàn)的線程共享池中排隊(duì);由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笤O(shè)置主機(jī)應(yīng)用實(shí)現(xiàn)的線程共享池的大小;及/或由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο蟛樵冎鳈C(jī)應(yīng)用實(shí)現(xiàn)的線程共享池。
10.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括向主機(jī)應(yīng)用提供回叫以通知運(yùn)行時(shí)間任務(wù)已被移到不同的區(qū)域或?yàn)樵撊蝿?wù)改變區(qū)域;及/或由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用任務(wù)已被移到不同的區(qū)域或?yàn)樵撊蝿?wù)改變區(qū)域。
11.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笱舆t主機(jī)應(yīng)用取消任務(wù)。
12.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笳{(diào)整任務(wù)的優(yōu)先級(jí)。
13.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用任務(wù)/線程要離開運(yùn)行時(shí)間進(jìn)入未管理的代碼。
14.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用任務(wù)/線程要反向離開運(yùn)行時(shí)間進(jìn)入未管理的代碼。
15.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用任務(wù)/線程要從未管理的代碼進(jìn)入運(yùn)行時(shí)間。
16.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用任務(wù)/線程要從未管理的代碼反向進(jìn)入運(yùn)行時(shí)間。
17.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笾付▽?duì)一個(gè)或多個(gè)I/O完成端口上的服務(wù)請(qǐng)求可用的線程/任務(wù)的最大數(shù)量。
18.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο蠼壎ň浔絀/O完成端口或主機(jī)應(yīng)用。
19.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括向主機(jī)應(yīng)用提供運(yùn)行時(shí)間實(shí)現(xiàn)的回叫,所述運(yùn)行時(shí)間實(shí)現(xiàn)的回叫在異步I/O操作完成時(shí)由主機(jī)應(yīng)用調(diào)用。
20.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用進(jìn)一步包括向主機(jī)應(yīng)用提供運(yùn)行時(shí)間實(shí)現(xiàn)的回叫,所述運(yùn)行時(shí)間實(shí)現(xiàn)的回叫在異步I/O操作完成時(shí)由主機(jī)應(yīng)用調(diào)用;及所述提供運(yùn)行主機(jī)應(yīng)用在由主機(jī)應(yīng)用傳遞到運(yùn)行時(shí)間實(shí)現(xiàn)的回叫的結(jié)構(gòu)最后插入定制的數(shù)據(jù),所述定制數(shù)據(jù)提供狀態(tài)信息。
21.如權(quán)利要求1所述的方法,其特征在于所述調(diào)用進(jìn)一步包括通過至少一個(gè)特定接口或?qū)ο螽a(chǎn)生任務(wù);及所述方法進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο髮?duì)該任務(wù)創(chuàng)建一個(gè)或多個(gè)同步對(duì)象以本質(zhì)上確保主機(jī)應(yīng)用知道對(duì)該應(yīng)用所加的鎖,所述一個(gè)或多個(gè)同步對(duì)象包括關(guān)鍵部分、手動(dòng)和/或自動(dòng)重置事件、旗語、讀出器/寫入器鎖和/或任務(wù)監(jiān)視器。
22.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括由運(yùn)行時(shí)間通知主機(jī)應(yīng)用一個(gè)或多個(gè)由運(yùn)行時(shí)間暴露的運(yùn)行時(shí)間接口,所述運(yùn)行時(shí)間接口允許主機(jī)通知運(yùn)行時(shí)間特定的事件和/或在進(jìn)程執(zhí)行期間獲取附加的信息。
23.一種用于增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持的計(jì)算機(jī)可讀媒體,其特征在于,所述計(jì)算機(jī)可讀媒體包括由處理器執(zhí)行的計(jì)算機(jī)程序可執(zhí)行指令,所述計(jì)算機(jī)程序可執(zhí)行指令用于由運(yùn)行時(shí)間請(qǐng)求主機(jī)應(yīng)用來識(shí)別任何由主機(jī)應(yīng)用支持的執(zhí)行環(huán)境抽象;響應(yīng)于請(qǐng)求,接收一個(gè)或多個(gè)主機(jī)抽象接口(HAI);及在運(yùn)行時(shí)間管理的代碼執(zhí)行期間,由運(yùn)行時(shí)間調(diào)用至少一個(gè)特定的接口或?qū)?yīng)于特定的一個(gè)HAI的對(duì)象。
24.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述一個(gè)或多個(gè)執(zhí)行環(huán)境抽象對(duì)應(yīng)于主機(jī)實(shí)現(xiàn)的存儲(chǔ)器、線程/任務(wù)、I/O完成、同步、運(yùn)行時(shí)間進(jìn)入/退出通知和/或垃圾收集(GC)功能。
25.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于確定的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括由運(yùn)行時(shí)間發(fā)送接口標(biāo)識(shí)符(IID)到主機(jī)應(yīng)用的指令,所述IID對(duì)應(yīng)于特定于應(yīng)用的接口。
26.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定的接口或?qū)ο蟀l(fā)送來自O(shè)S的低存儲(chǔ)器通知到主機(jī)應(yīng)用的指令。
27.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定的接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用特殊的存儲(chǔ)器分配失敗的結(jié)果,并從而允許主機(jī)應(yīng)用定制運(yùn)行時(shí)間在存儲(chǔ)器分配失敗時(shí)應(yīng)采取的動(dòng)作的指令。
28.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定的接口或由主機(jī)應(yīng)用實(shí)現(xiàn)的對(duì)象創(chuàng)建新的線程/任務(wù)的指令。
29.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或由主機(jī)應(yīng)用實(shí)現(xiàn)的對(duì)象重用或共享任務(wù)的運(yùn)行時(shí)間實(shí)現(xiàn)的部分的指令。
30.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο蠡蚬蚕硗ㄖ鳈C(jī)應(yīng)用任務(wù)不能被移到不同的物理OS且在指定的時(shí)間窗口中不能阻塞該任務(wù)的執(zhí)行的指令。
31.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括指令用于由運(yùn)行時(shí)間通過至少一個(gè)特定對(duì)象或接口指示對(duì)主機(jī)應(yīng)用的回叫以通知運(yùn)行時(shí)間任務(wù)何時(shí)被移至可運(yùn)行或不可運(yùn)行的狀態(tài);及如果任務(wù)被移至不可運(yùn)行狀態(tài),由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笾付ㄈ蝿?wù)應(yīng)盡快由主機(jī)應(yīng)用重新調(diào)度。
32.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括指令用于由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笫咕€程/任務(wù)在主機(jī)應(yīng)用實(shí)現(xiàn)的線程共享池中排隊(duì);由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笤O(shè)置主機(jī)應(yīng)用實(shí)現(xiàn)的線程共享池的大?。患?或由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο蟛樵冎鳈C(jī)應(yīng)用實(shí)現(xiàn)的線程共享池。
33.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括向主機(jī)應(yīng)用提供回叫以通知運(yùn)行時(shí)間任務(wù)已被移到不同的區(qū)域或?yàn)樵撊蝿?wù)改變區(qū)域的指令。
34.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用任務(wù)已被移到不同的區(qū)域的指令。
35.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笱舆t主機(jī)應(yīng)用取消任務(wù)的指令。
36.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笳{(diào)整任務(wù)的優(yōu)先級(jí)的指令。
37.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用任務(wù)/線程要離開運(yùn)行時(shí)間進(jìn)入未管理的代碼的指令。
38.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用任務(wù)/線程要反向離開運(yùn)行時(shí)間進(jìn)入未管理的代碼的指令。
39.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用任務(wù)/線程要從未管理的代碼進(jìn)入運(yùn)行時(shí)間的指令。
40.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用任務(wù)/線程要從未管理的代碼反向進(jìn)入運(yùn)行時(shí)間的指令。
41.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笾付▽?duì)一個(gè)或多個(gè)I/O完成端口上的服務(wù)請(qǐng)求可用的線程/任務(wù)的最大數(shù)量的指令。
42.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο蠼壎ň浔絀/O完成端口或主機(jī)應(yīng)用的指令。
43.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括向主機(jī)應(yīng)用提供運(yùn)行時(shí)間實(shí)現(xiàn)的回叫,所述運(yùn)行時(shí)間實(shí)現(xiàn)的回叫在異步I/O操作完成時(shí)由主機(jī)應(yīng)用調(diào)用的指令。
44.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括指令用于向主機(jī)應(yīng)用提供運(yùn)行時(shí)間實(shí)現(xiàn)的回叫,所述運(yùn)行時(shí)間實(shí)現(xiàn)的回叫在異步I/O操作完成時(shí)由主機(jī)應(yīng)用調(diào)用;及所述提供運(yùn)行主機(jī)應(yīng)用在由主機(jī)應(yīng)用傳遞到運(yùn)行時(shí)間實(shí)現(xiàn)的回叫的結(jié)構(gòu)最后插入定制的數(shù)據(jù),所述定制數(shù)據(jù)提供狀態(tài)信息。
45.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于所述調(diào)用進(jìn)一步包括通過至少一個(gè)特定接口或?qū)ο螽a(chǎn)生任務(wù);及所述方法進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο髮?duì)該任務(wù)創(chuàng)建一個(gè)或多個(gè)同步對(duì)象以本質(zhì)上確保主機(jī)應(yīng)用知道對(duì)該應(yīng)用所加的鎖,所述一個(gè)或多個(gè)同步對(duì)象包括關(guān)鍵部分、手動(dòng)和/或自動(dòng)重置事件、旗語、讀出器/寫入器鎖和/或任務(wù)監(jiān)視器。
46.如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其特征在于,進(jìn)一步包括由運(yùn)行時(shí)間通知主機(jī)應(yīng)用一個(gè)或多個(gè)由運(yùn)行時(shí)間暴露的運(yùn)行時(shí)間接口,所述運(yùn)行時(shí)間接口允許主機(jī)通知運(yùn)行時(shí)間特定的事件和/或在進(jìn)程執(zhí)行期間獲取附加的信息的指令。
47.一種用于增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持的計(jì)算設(shè)備,其特征在于,所述計(jì)算設(shè)備包括連接到如權(quán)利要求23所述的計(jì)算機(jī)可讀媒體的處理器,所述處理器配置為執(zhí)行存儲(chǔ)在所述計(jì)算機(jī)可讀媒體上的計(jì)算機(jī)程序指令。
48.一種用于增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持的計(jì)算設(shè)備,其特征在于,所述計(jì)算設(shè)備包括處理器;連接到所述處理器的存儲(chǔ)器,所述存儲(chǔ)器包括由處理器執(zhí)行的計(jì)算機(jī)程序指令,所述計(jì)算機(jī)程序指令用于識(shí)別由主機(jī)應(yīng)用暴露的一個(gè)或多個(gè)主機(jī)抽象接口(HAI),所述一個(gè)或多個(gè)HAI對(duì)應(yīng)于相應(yīng)的由主機(jī)應(yīng)用支持的執(zhí)行環(huán)境抽象;在運(yùn)行時(shí)間管理的代碼執(zhí)行期間及響應(yīng)于和已識(shí)別的一個(gè)相應(yīng)的執(zhí)行環(huán)境抽象關(guān)聯(lián)的動(dòng)作或事件,由運(yùn)行時(shí)間調(diào)用至少一個(gè)特定的接口或?qū)?yīng)于特定的一個(gè)HAI的對(duì)象;及所述一個(gè)或多個(gè)執(zhí)行環(huán)境抽象對(duì)應(yīng)于存儲(chǔ)器、線程/任務(wù)、I/O完成、同步、運(yùn)行時(shí)間進(jìn)入/退出通知和/或垃圾收集(GC)的管理服務(wù)。
49.如權(quán)利要求48所述的計(jì)算設(shè)備,其特征在于,所述用于調(diào)用的計(jì)算機(jī)程序指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定的接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用特殊的存儲(chǔ)器分配失敗的結(jié)果,并從而允許主機(jī)應(yīng)用定制運(yùn)行時(shí)間在存儲(chǔ)器分配失敗時(shí)應(yīng)采取的動(dòng)作的指令。
50.如權(quán)利要求48所述的計(jì)算設(shè)備,其特征在于,所述用于調(diào)用的計(jì)算機(jī)程序指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定的接口或由主機(jī)應(yīng)用實(shí)現(xiàn)的對(duì)象創(chuàng)建新的線程/任務(wù)的指令。
51.如權(quán)利要求48所述的計(jì)算設(shè)備,其特征在于,所述用于調(diào)用的計(jì)算機(jī)程序指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或由主機(jī)應(yīng)用實(shí)現(xiàn)的對(duì)象重用或共享任務(wù)的運(yùn)行時(shí)間實(shí)現(xiàn)的部分的指令。
52.如權(quán)利要求48所述的計(jì)算設(shè)備,其特征在于,所述用于調(diào)用的計(jì)算機(jī)程序指令進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο蠡蚬蚕硗ㄖ鳈C(jī)應(yīng)用任務(wù)不能被移到不同的物理OS且在指定的時(shí)間窗口中不能阻塞該任務(wù)的執(zhí)行的指令。
53.如權(quán)利要求48所述的計(jì)算設(shè)備,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括指令用于由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笫咕€程/任務(wù)在主機(jī)應(yīng)用實(shí)現(xiàn)的線程共享池中排隊(duì);由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笤O(shè)置主機(jī)應(yīng)用實(shí)現(xiàn)的線程共享池的大??;及/或由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο蟛樵冎鳈C(jī)應(yīng)用實(shí)現(xiàn)的線程共享池。
54.如權(quán)利要求48所述的計(jì)算設(shè)備,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括指令用于由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笱舆t主機(jī)應(yīng)用取消任務(wù);及由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笳{(diào)整任務(wù)的優(yōu)先級(jí)。
55.如權(quán)利要求48所述的計(jì)算設(shè)備,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括指令用于由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用任務(wù)/線程要離開運(yùn)行時(shí)間進(jìn)入未管理的代碼;及由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用任務(wù)/線程要反向離開運(yùn)行時(shí)間進(jìn)入未管理的代碼。
56.如權(quán)利要求48所述的計(jì)算設(shè)備,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括指令用于由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用任務(wù)/線程要從未管理的代碼進(jìn)入運(yùn)行時(shí)間;及由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笸ㄖ鳈C(jī)應(yīng)用任務(wù)/線程要從未管理的代碼反向進(jìn)入運(yùn)行時(shí)間。
57.如權(quán)利要求48所述的計(jì)算設(shè)備,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括指令用于由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο蠼壎ň浔絀/O完成端口或主機(jī)應(yīng)用;及由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο笾付▽?duì)一個(gè)或多個(gè)I/O完成端口上的服務(wù)請(qǐng)求可用的線程/任務(wù)的最大數(shù)量。
58.如權(quán)利要求48所述的計(jì)算設(shè)備,其特征在于,所述用于調(diào)用的計(jì)算機(jī)可執(zhí)行指令進(jìn)一步包括指令用于向主機(jī)應(yīng)用提供運(yùn)行時(shí)間實(shí)現(xiàn)的回叫,所述運(yùn)行時(shí)間實(shí)現(xiàn)的回叫在異步I/O操作完成時(shí)由主機(jī)應(yīng)用調(diào)用;及所述提供運(yùn)行主機(jī)應(yīng)用在由主機(jī)應(yīng)用傳遞到運(yùn)行時(shí)間實(shí)現(xiàn)的回叫的結(jié)構(gòu)最后插入定制的數(shù)據(jù),所述定制數(shù)據(jù)提供狀態(tài)信息。
59.如權(quán)利要求48所述的計(jì)算設(shè)備,其特征在于,所述用于調(diào)用的計(jì)算機(jī)程序指令進(jìn)一步包括通過至少一個(gè)特定接口或?qū)ο螽a(chǎn)生任務(wù),且所述方法進(jìn)一步包括由運(yùn)行時(shí)間通過至少一個(gè)特定接口或?qū)ο髮?duì)該任務(wù)創(chuàng)建一個(gè)或多個(gè)同步對(duì)象以本質(zhì)上確保主機(jī)應(yīng)用知道對(duì)該應(yīng)用所加的鎖,所述一個(gè)或多個(gè)同步對(duì)象包括關(guān)鍵部分、手動(dòng)和/或自動(dòng)重置事件、旗語、讀出器/寫入器鎖和/或任務(wù)監(jiān)視器的指令。
60.一種增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持的軟件架構(gòu),其特征在于,所述軟件架構(gòu)包括應(yīng)用;及運(yùn)行時(shí)間,所述應(yīng)用配置為支持所述運(yùn)行時(shí)間;所述運(yùn)行時(shí)間暴露運(yùn)行時(shí)間應(yīng)用編程接口(RI),所述RI允許應(yīng)用向運(yùn)行時(shí)間指示主機(jī)抽象接口(HAI),所述HAI識(shí)別應(yīng)用抽象執(zhí)行環(huán)境功能;及所述運(yùn)行時(shí)間進(jìn)一步配置為控制在進(jìn)程執(zhí)行過程中的動(dòng)作和/或事件回到應(yīng)用以通過HAI的一個(gè)或多個(gè)部分實(shí)現(xiàn)應(yīng)用抽象執(zhí)行環(huán)境功能。
全文摘要
將對(duì)增強(qiáng)的運(yùn)行時(shí)間主機(jī)支持的系統(tǒng)和方法進(jìn)行說明。在一個(gè)方面,運(yùn)行時(shí)間識(shí)別由主機(jī)應(yīng)用暴露的任何抽象接口。抽象接口對(duì)應(yīng)于由主機(jī)應(yīng)用實(shí)現(xiàn)的相應(yīng)的執(zhí)行環(huán)境功能。在運(yùn)行時(shí)間管理的代碼執(zhí)行期間并響應(yīng)于和識(shí)別出的相應(yīng)的執(zhí)行環(huán)境抽象關(guān)聯(lián)的動(dòng)作或事件,運(yùn)行時(shí)間調(diào)用特定的接口或?qū)?yīng)于一個(gè)特定的抽象接口的對(duì)象。這允許主機(jī)應(yīng)用定制/增強(qiáng)其執(zhí)行環(huán)境,將其作為所實(shí)現(xiàn)的抽象的功能來,所述執(zhí)行環(huán)境包括運(yùn)行時(shí)間。
文檔編號(hào)G06F9/44GK1534457SQ20041003240
公開日2004年10月6日 申請(qǐng)日期2004年4月2日 優(yōu)先權(quán)日2003年4月2日
發(fā)明者W·劉, S·J·普拉茨切納, I·H·卡米克爾, P·A·卡林, C·W·布魯姆, M·K·本迪克森, B·西斯金, W 劉, 卡林, 卡米克爾, 布魯姆, 普拉茨切納, 本迪克森, 菇 申請(qǐng)人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
泸西县| 宜良县| 舞钢市| 昭觉县| 海林市| 德令哈市| 陆河县| 阜平县| 河曲县| 涟源市| 开远市| 平安县| 禄丰县| 北海市| 新乐市| 全州县| 沁源县| 江华| 韶关市| 六枝特区| 年辖:市辖区| 武清区| 潮州市| 多伦县| 富川| 兴和县| 正镶白旗| 德兴市| 潼关县| 兰坪| 台前县| 巴彦县| 砚山县| 伊金霍洛旗| 舞钢市| 边坝县| 富蕴县| 闵行区| 汤阴县| 龙井市| 沐川县|