持久程序執(zhí)行的制作方法
【專(zhuān)利說(shuō)明】持久程序執(zhí)行 WW] 背景
[0002] 長(zhǎng)期運(yùn)行的程序可在設(shè)及處理的事件之間具有大量的時(shí)間段。為了保留資源,程 序可被要求在各事件之間保存其狀態(tài),W便程序能夠被關(guān)閉并且從存儲(chǔ)器中移除直到接收 到適用于該程序的下一事件??蒞運(yùn)么做來(lái)為要在計(jì)算資源上執(zhí)行的其他程序騰出空間, 或者出于其他理由。為了容適保存狀態(tài)的要求,程序員可W編寫(xiě)與處理事件相結(jié)合地將狀 態(tài)保存至存儲(chǔ)的代碼。程序員還可編寫(xiě)在接收到新事件時(shí)從存儲(chǔ)加載該狀態(tài)并且用恰適動(dòng) 作來(lái)恢復(fù)的代碼。運(yùn)對(duì)于程序員而言是很麻煩的。
[0003] 此處要求保護(hù)的主題不限于解決任何缺點(diǎn)或僅在諸如上述環(huán)境運(yùn)樣的環(huán)境中操 作的各實(shí)施例。相反,提供該背景僅用于例示其中可實(shí)現(xiàn)所述一些實(shí)施例的一個(gè)示例性技 術(shù)領(lǐng)域。
[0004] 概述 陽(yáng)〇化]簡(jiǎn)言之,本文所描述的主題內(nèi)容的各方面設(shè)及持久程序執(zhí)行。在各方面,描述了一 種當(dāng)程序等待要完成的異步操作時(shí)允許該程序從存儲(chǔ)器中被移除的機(jī)制。當(dāng)接收到對(duì)異步 操作的響應(yīng)時(shí),完成數(shù)據(jù)被存儲(chǔ)在歷史中,程序被重新執(zhí)行,并且歷史中的完成數(shù)據(jù)被用來(lái) 完成該異步操作。W上動(dòng)作可W被重復(fù),直到歷史中不再有任何異步操作為待決完成。
[0006] 提供本概述是為了簡(jiǎn)要地標(biāo)識(shí)在W下詳細(xì)描述中進(jìn)一步描述的主題的一些方面。 本概述并不旨在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要 求保護(hù)的主題的范圍。
[0007] 除非上下文清楚地指出,否則短語(yǔ)"本文所描述的主題"指的是【具體實(shí)施方式】中描 述的主題。術(shù)語(yǔ)"方面"應(yīng)被當(dāng)作"至少一個(gè)方面"。標(biāo)識(shí)【具體實(shí)施方式】中所描述的主題的 各方面不旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征。
[0008] 上述各方面和此處所描述的主題的其它方面是借助于示例說(shuō)明的,并且不受附圖 限制,附圖中相同的標(biāo)號(hào)指示相似的元素。
[0009] 附圖簡(jiǎn)述
[0010] 圖1是表示其中可結(jié)合本文所描述的主題的各方面的示例性通用計(jì)算環(huán)境的框 圖;
[0011] 圖2是概括地表示根據(jù)本文所述的主題內(nèi)容的各方面的用于持久程序執(zhí)行的示 例性組件的框圖;
[0012] 圖3-4是概括地表示根據(jù)本文所述的主題內(nèi)容的各方面的用于獲得來(lái)自程序的 異步操作W及對(duì)其的響應(yīng)而可進(jìn)行的示例性動(dòng)作的流程圖;
[0013] 圖5是概括地表示根據(jù)本文所述的主題內(nèi)容的各方面的可在向執(zhí)行環(huán)境提供代 碼中進(jìn)行的示例性動(dòng)作的流程圖;W及
[0014] 圖6是概括地表示根據(jù)本文所述的主題內(nèi)容的各方面的可針對(duì)功能調(diào)用程序而 進(jìn)行的示例性動(dòng)作的流程圖。 陽(yáng)〇1引詳細(xì)描述
[0016] 定義
[0017] 如本文所使用的,術(shù)語(yǔ)"包括"及其變體要被當(dāng)作開(kāi)放式術(shù)語(yǔ),表示"包括但不限 于"。除非上下文另外清楚地指示出,否則術(shù)語(yǔ)"或"要被當(dāng)作"和/或"。術(shù)語(yǔ)"基于"要被 當(dāng)作"至少部分地基于"。術(shù)語(yǔ)"一個(gè)實(shí)施例"和"一實(shí)施例"要被當(dāng)作"至少一個(gè)實(shí)施例"。 術(shù)語(yǔ)"另一實(shí)施例"要被當(dāng)作"至少一個(gè)其他實(shí)施例"。
[0018] 如本文所使用的,諸如"一"和"該"等術(shù)語(yǔ)包括了一個(gè)或多個(gè)所指示的項(xiàng)或動(dòng)作。 具體而言,在權(quán)利要求書(shū)中,對(duì)某一項(xiàng)的引用一般表示存在至少一個(gè)運(yùn)樣的項(xiàng),并且對(duì)一動(dòng) 作的引用表示執(zhí)行該動(dòng)作的至少一個(gè)實(shí)例。
[0019] 本文中有時(shí)可使用術(shù)語(yǔ)"第一"、"第二"、"第等等。在沒(méi)有附加上下文的情況 下,權(quán)利要求中對(duì)運(yùn)些術(shù)語(yǔ)的使用不意在暗示排序,而是用于標(biāo)識(shí)的目的。例如,短語(yǔ)"第一 版本"和"第二版本"不一定意味著第一版本是真正的第一個(gè)版本或是在第二版本之前創(chuàng)建 的,或甚至是第一版本是在第二版本之前被請(qǐng)求或操作的。相反,運(yùn)些措辭用來(lái)標(biāo)識(shí)不同的 版本。
[0020] 標(biāo)題僅是為了方便;關(guān)于給定話題的信息可在其標(biāo)題指示該話題的章節(jié)之外被尋 找到。
[0021] 其他顯式或隱式的定義可被包括在下文中。
[0022] 示例性操作環(huán)境
[0023] 圖1例示出可在其上實(shí)現(xiàn)本文所述的主題的各方面的合適的計(jì)算系統(tǒng)環(huán)境100的 示例。計(jì)算系統(tǒng)環(huán)境100僅為合適的計(jì)算環(huán)境的一個(gè)示例,并非旨在對(duì)本文所述的主題的 各方面的使用范圍或功能提出任何限制。也不應(yīng)該將計(jì)算環(huán)境100解釋為對(duì)示例性操作環(huán) 境100中示出的任一組件或其組合有任何依賴(lài)性或要求。
[0024] 本文所描述的主題的各方面可與眾多其他通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置一起 操作??蛇m用于本文所述的主題的各方面的已知計(jì)算系統(tǒng)、環(huán)境或配置的示例包括個(gè)人計(jì) 算機(jī)、服務(wù)器計(jì)算機(jī)(無(wú)論是在裸機(jī)上還是作為虛擬機(jī))、手持式或膝上型設(shè)備、多處理器 系統(tǒng)、基于微控制器的系統(tǒng)、機(jī)頂盒、可編程和不可編程消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算 機(jī)、大型計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)、游戲設(shè)備、打印機(jī)、包括機(jī)頂盒、媒體中屯、或其它電器 的家電設(shè)備、嵌入汽車(chē)或附連到汽車(chē)的計(jì)算設(shè)備、其他移動(dòng)設(shè)備、包括蜂窩電話、無(wú)線電話 和有線電話的電話設(shè)備、包括任何上述系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。
[0025] 本文所述的主題的各方面可在由計(jì)算機(jī)執(zhí)行的諸如程序模塊等計(jì)算機(jī)可執(zhí)行指 令的一般上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類(lèi)型 的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。本文所述的主題的各方面也可W在其中任務(wù)由通過(guò) 通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境中實(shí)現(xiàn)。在分布式計(jì)算環(huán)境中,程序 模塊可W位于包括存儲(chǔ)器存儲(chǔ)設(shè)備的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
[00%] 作為替代或補(bǔ)充,本文所述的功能可至少部分地由一個(gè)或多個(gè)硬件邏輯組件來(lái)執(zhí) 行。例如且并非限制,可使用的硬件邏輯組件的說(shuō)明性類(lèi)型包括現(xiàn)場(chǎng)可編程口陣列(FPGA)、 程序?qū)S眉呻娐罚ˋSIC)、程序?qū)S脴?biāo)準(zhǔn)產(chǎn)品(ASS巧、片上系統(tǒng)(SOC)、復(fù)雜可編程邏輯器 件(CPLD)等等。
[0027] 參考圖1,用于實(shí)現(xiàn)本文所述的主題的各方面的示例性系統(tǒng)包括計(jì)算機(jī)110形式 的通用計(jì)算設(shè)備。計(jì)算機(jī)可包括能夠執(zhí)行指令的任何電子設(shè)備。計(jì)算機(jī)110的各組件可包 括處理單元120、系統(tǒng)存儲(chǔ)器130、W及將包括系統(tǒng)存儲(chǔ)器在內(nèi)的各個(gè)系統(tǒng)組件禪合至處理 單元120的一個(gè)或多個(gè)系統(tǒng)總線(由系統(tǒng)總線121表示)。系統(tǒng)總線121可W是若干類(lèi)型 的總線結(jié)構(gòu)中的任一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線和使用各種總線體系 結(jié)構(gòu)中的任一種的局部總線。作為示例,而非限制,運(yùn)樣的架構(gòu)包括工業(yè)標(biāo)準(zhǔn)架構(gòu)(ISA)總 線、微通道架構(gòu)(MCA)總線、增強(qiáng)型ISA巧ISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總 線、也稱(chēng)為夾層(Mezzanine)總線的外圍部件互連(PCI)總線、擴(kuò)展外圍部件互連(PCI-X) 總線、高級(jí)圖形端口(AGP)、W及PCIExpress(PCIe)D
[0028] 處理單元120可W連接到硬件安全設(shè)備122。安全設(shè)備122可W存儲(chǔ)并能夠生成 密鑰,所述密鑰可用于保護(hù)計(jì)算機(jī)110的各個(gè)方面。在一個(gè)實(shí)施例中,安全設(shè)備122可W包 括可信平臺(tái)模塊燈PM)忍片、TPM安全設(shè)備等等。
[0029] 計(jì)算機(jī)110通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可W是能由計(jì)算機(jī) 110訪問(wèn)的任何可用介質(zhì),并包含易失性和非易失性介質(zhì)W及可移動(dòng)和不可移動(dòng)介質(zhì)兩者。 作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。
[0030] 計(jì)算機(jī)存儲(chǔ)介質(zhì)包括W用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其 它數(shù)據(jù)等信息的任何方法或技術(shù)來(lái)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì) 算機(jī)存儲(chǔ)介質(zhì)包括:^1、301、66?1?01、固態(tài)存儲(chǔ)、閃存或其它存儲(chǔ)器技術(shù)、〔0-1?01、數(shù)字多功 能盤(pán)值VD)或其它光盤(pán)存儲(chǔ)、磁盒、磁帶、磁盤(pán)存儲(chǔ)或其它磁存儲(chǔ)設(shè)備、或可W用來(lái)儲(chǔ)存所 期望的信息并可由計(jì)算機(jī)110訪問(wèn)的任意其它介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)不包括通信介質(zhì)。
[0031] 通信介質(zhì)通常W諸如載波或其他傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來(lái)體現(xiàn)計(jì)算機(jī)可讀 指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),并包括任何信息傳送介質(zhì)。術(shù)語(yǔ)"已調(diào)制數(shù)據(jù)信號(hào)" 是指使得W在信號(hào)中編碼信息的方式來(lái)設(shè)置或改變其一個(gè)或多個(gè)特性的信號(hào)。作為示例 而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接線連接,W及無(wú)線介質(zhì),諸如聲學(xué)、 RF、紅外線和其他無(wú)線介質(zhì)。上述的任意組合也應(yīng)包含在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。
[0032] 系統(tǒng)存儲(chǔ)器130包括易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì),如只 讀存儲(chǔ)器(ROM) 131和隨機(jī)存取存儲(chǔ)器(RAM) 132。包含諸如在啟動(dòng)期間幫助在計(jì)算機(jī)110 內(nèi)的元件之間傳輸信息的基本例程的基本輸入/輸出系統(tǒng)133度IO巧通常存儲(chǔ)在ROM131 中。RAM132通常包含處理單元120可立即訪問(wèn)和/或當(dāng)前正在操作的數(shù)據(jù)和/或程序模 塊。作為示例而非限制,圖1例示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程 序數(shù)據(jù)137。
[0033] 計(jì)算機(jī)110也可W包括其他可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介 質(zhì)。僅作為示例,圖1例示出了從不可移動(dòng)非易失性磁介質(zhì)中讀取或向其寫(xiě)入的硬盤(pán)驅(qū)動(dòng) 器141,從可移動(dòng)非易失性磁盤(pán)152中讀取或向其寫(xiě)入的磁盤(pán)驅(qū)動(dòng)器151,W及從諸如CD R0M、DVD或其他光學(xué)介質(zhì)等可移動(dòng)非易失性光盤(pán)156中讀取或向其寫(xiě)入的光盤(pán)驅(qū)動(dòng)器155。 可W在該示例性操作環(huán)境中使用的其他可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ) 介質(zhì)包括磁帶盒、閃存卡和其他固態(tài)存儲(chǔ)設(shè)備、數(shù)字多功能盤(pán)、其他光盤(pán)、數(shù)字錄像帶、固態(tài) RAM、固態(tài)ROM等等。硬盤(pán)驅(qū)動(dòng)器141可通過(guò)接口 140連接至系統(tǒng)總線121,而磁盤(pán)驅(qū)動(dòng)器 151和光盤(pán)驅(qū)動(dòng)器155可通過(guò)諸如接口 15