關(guān)于資源引用的壽命的聲明的制作方法
【專利說明】關(guān)于資源引用的壽命的聲明
[0001] 背景
[0002] 計算系統(tǒng)通過執(zhí)行軟件程序,獲得高級功能。程序包括以某種持久形式,諸如在硬 盤驅(qū)動器、光盤、拇指驅(qū)動器、閃存等等上保存的計算機可執(zhí)行指令。在執(zhí)行過程中,這樣的 計算機可執(zhí)行指令可以常常被加載到隨機存取存儲器中,并由計算系統(tǒng)的一個或多個處理 器執(zhí)行,導(dǎo)致計算系統(tǒng)執(zhí)行任務(wù)。
[0003] 在面向?qū)ο蟮木幊讨?,這些計算機可執(zhí)行指令被組織成通過函數(shù)調(diào)用進行交互, 并且可以具有一個或多個屬性的對象。受管理的代碼是在提供類型安全性(但也可以提供 存儲器管理和異常處理)的受管理的環(huán)境中運行的代碼。在受管理的代碼中,對象具有不 受限的壽命,沒有對存儲器的限制,訪問限制的方法涉及間接或額外的資源。
[0004] 系統(tǒng)級編程基于對于對整個系統(tǒng)中的資源(諸如對象)的訪問以及資源的壽命的 嚴密的并且有效率的管理。提供此嚴密管理的一種常見的方式是使用應(yīng)用程序編程接口 (API)來管理資源的壽命以及對資源的訪問。
【發(fā)明內(nèi)容】
[0005] 此處所描述的至少一些實施例涉及通過指定表示資源的引用的壽命來提高系統(tǒng) 編程中的安全性的語言擴展。根據(jù)語言擴展,壽命以這樣的方式引用特定作用域,以便編譯 器生成將引用的壽命強制為特定作用域的壽命的的函數(shù)(例如,不比其長)的計算機可執(zhí) 行指令。相應(yīng)地,可以預(yù)先指定資源壽命,以具有特定作用域。這會幫助執(zhí)行資源管理,因 為典型的受管理的語言程序可以允許資源無限地存在。此外,由于資源具有定義的有限壽 命,因此,它們可以更方便地在棧上(而不是在堆上)被分配,以便更高效的處理。
[0006] 本
【發(fā)明內(nèi)容】
并不旨在標識出所要求保護的主題的關(guān)鍵特征或必要特征,也不旨在 用于幫助確定所要求保護的主題的作用域。
[0007] 附圖簡述
[0008] 為了描述可以獲得本發(fā)明的上文所列舉的及其他優(yōu)點和特征的方式,下面將通過 參考附圖來呈現(xiàn)對各實施例的更具體的描述??梢岳斫?,這些附圖只描繪了示例實施例,并 且因此不被認為是對其作用域的限制,將通過使用附圖并利用附加特征和細節(jié)來描述和解 釋各實施例,在附圖中:
[0009] 圖1抽象地示出了可以在其中使用此處所描述的一些實施例的計算系統(tǒng);
[0010] 圖2示出了其中可以使用此處所描述的各實施例的系統(tǒng),系統(tǒng)包括類型定義生成 組件、類型定義訪問組件、以及編譯組件;
[0011] 圖3示出了用于聲明軟件程序中的特定引用具有有限壽命的方法的流程圖;以及
[0012] 圖4示出了用于編譯具有注釋的計算機程序的方法的流程圖。
【具體實施方式】
[0013] 根據(jù)此處所描述的各實施例,描述了通過指定表示資源的引用的壽命來提高系統(tǒng) 編程中的安全性的語言擴展。根據(jù)該語言擴展,壽命以這樣的方式引用特定作用域,其中編 譯器生成將引用的壽命強制為基于特定作用域的壽命(例如,不比其長)的計算機可執(zhí)行 指令。相應(yīng)地,可以預(yù)先指定資源壽命具有特定作用域。這會幫助執(zhí)行資源管理,因為典型 的受管理的語言程序可以允許資源無限制地存在。此外,由于資源具有定義的有限壽命,因 此,它們可以更方便地在棧上(而不是在堆上)被分配,以便更高效的處理。
[0014] 首先,將參考圖1來描述對計算系統(tǒng)的一些介紹性討論。然后,將參考圖2描述受 管理的代碼系統(tǒng)的原理。最后,將參考圖3和4描述定義引用壽命的語言擴展的原理。
[0015] 計算系統(tǒng)現(xiàn)在越來越多地采取多種多樣的形式。計算系統(tǒng)可以例如是手持式設(shè) 備、電器、膝上型計算機、臺式計算機、大型機、分布式計算系統(tǒng),或者甚至通常不被視為計 算系統(tǒng)的設(shè)備。在此說明書和權(quán)利要求書中,術(shù)語"計算系統(tǒng)"被廣泛地定義為包括其中包 括至少一個物理并且有形的處理器,以及能夠在其上具有可以由處理器執(zhí)行的計算機可執(zhí) 行指令的物理并且有形的存儲器的任何設(shè)備或系統(tǒng)(或其組合)。存儲器可以采取任何形 式,并可以取決于計算系統(tǒng)的特性和形式。計算系統(tǒng)可以分布在網(wǎng)絡(luò)環(huán)境中,并可包括多個 組分計算系統(tǒng)。
[0016] 如圖1所示,在其最基本的配置中,計算系統(tǒng)100通常包括至少一個處理單元102 和存儲器104。存儲器104可以是物理系統(tǒng)存儲器,該物理系統(tǒng)存儲器可以是易失性、非易 失性、或兩者的某種組合。此處也可以使用術(shù)語"存儲器"來指諸如物理存儲介質(zhì)之類的非 易失性大容量存儲。如果計算系統(tǒng)是分布式的,則處理、存儲器和/或存儲能力也可以是分 布式的。如此處所使用的,術(shù)語"可執(zhí)行模塊"或"可執(zhí)行組件"可以是指可以在計算系統(tǒng) 上執(zhí)行的軟件對象、路由,或方法。此處所描述的不同組件、模塊、引擎,以及服務(wù)可以實現(xiàn) 為在計算系統(tǒng)上執(zhí)行的對象或進程(例如,作為分開的線程)。
[0017] 在隨后的描述中,參考由一個或多個計算系統(tǒng)執(zhí)行的動作描述了各實施例。如果 這樣的動作是以軟件實現(xiàn)的,則執(zhí)行動作的相關(guān)聯(lián)計算系統(tǒng)的一個或多個處理器響應(yīng)于已 經(jīng)執(zhí)行了計算機可執(zhí)行指令來引導(dǎo)計算系統(tǒng)的操作。例如,這樣的計算機可執(zhí)行指令可以 在形成計算機程序產(chǎn)品的一個或多個計算機可讀介質(zhì)上實現(xiàn)。這樣的操作的示例涉及對數(shù) 據(jù)的操縱。計算機可執(zhí)行指令(以及被操縱的數(shù)據(jù))可以存儲在計算系統(tǒng)1〇〇的存儲器 104中。計算系統(tǒng)100還可包含允許計算系統(tǒng)100例如通過網(wǎng)絡(luò)110與其他消息處理器通 信的通信信道108。
[0018] 此處所描述的各實施例可包括或利用專用或通用計算機,該專用或通用計算機包 括諸如例如一個或多個處理器和系統(tǒng)存儲器等計算機硬件,如以下更詳細討論的。此處所 描述的各實施例還包括用于攜帶或存儲計算機可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理介質(zhì)和 其他計算機可讀介質(zhì)。這些計算機可讀介質(zhì)可以是通用或?qū)S糜嬎銠C系統(tǒng)能夠訪問的任何 可用介質(zhì)。存儲計算機可執(zhí)行指令的計算機可讀介質(zhì)是物理存儲介質(zhì)。攜帶計算機可執(zhí)行 指令的計算機可讀介質(zhì)是傳輸介質(zhì)。如此,作為示例,而不作為限制,本發(fā)明的實施例可以 包括至少兩個顯然不同種類的計算機可讀介質(zhì):計算機存儲介質(zhì)和傳輸介質(zhì)。
[0019] 計算機存儲介質(zhì)包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲、磁盤存儲或其他 磁存儲設(shè)備、或可用于存儲計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由 通用或?qū)S糜嬎銠C訪問的任何其他介質(zhì)。
[0020] "網(wǎng)絡(luò)"被定義為允許在計算機系統(tǒng)和/或模塊和/或其他電子設(shè)備之間傳輸電子 數(shù)據(jù)的一個或多個數(shù)據(jù)鏈路。當信息通過網(wǎng)絡(luò)或另一個通信連接(硬連線、無線、或者硬連 線或無線的組合)傳輸或提供給計算機時,該計算機將該連接適當?shù)匾暈閭鬏斀橘|(zhì)。傳輸 介質(zhì)可以包括可以用來攜帶所需要的以計算機可執(zhí)行的指令或數(shù)據(jù)結(jié)構(gòu)的形式存在的程 序代碼裝置并可以被通用或?qū)S糜嬎銠C訪問的網(wǎng)絡(luò)和/或數(shù)據(jù)鏈路。上述的組合也應(yīng)被包 括在計算機可讀介質(zhì)的作用域內(nèi)。
[0021] 此外,在到達各種計算機系統(tǒng)組件之后,計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的程 序代碼裝置可從傳輸介質(zhì)自動傳輸?shù)接嬎銠C存儲介質(zhì)(或反之亦然)。例如,通過網(wǎng)絡(luò)或 數(shù)據(jù)鏈路接收到的計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)可被緩存在網(wǎng)絡(luò)接口模塊(例如,"NIC") 內(nèi)的RAM中,然后最終被傳輸?shù)接嬎銠C系統(tǒng)RAM和/或計算機系統(tǒng)處的較不易失性的計算 機存儲介質(zhì)。因而,應(yīng)當理解,計算機存儲介質(zhì)可被包括在還利用(或甚至主要利用)傳輸 介質(zhì)的計算機系統(tǒng)組件中。
[0022] 計算機可執(zhí)行指令例如包括,當在處理器處執(zhí)行時使通用計算機、專用計算機、或 專用處理設(shè)備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。計算機可執(zhí)行指令可以是例如二進 制代碼、諸如匯編語言之類的中間格式指令、或甚至源代碼。盡管用結(jié)構(gòu)特征和/或方法動 作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述特 征或動作。相反,上述特征和動作是作為實現(xiàn)權(quán)利要求的示例形式而公開的。
[0023] 本領(lǐng)域的技術(shù)人員將理解,本發(fā)明可以在具有許多類型的計算機系統(tǒng)配置的網(wǎng)絡(luò) 計算環(huán)境中實踐,這些計算機系統(tǒng)配置包括個人計算機、臺式計算機、膝上型計算機、消息 處理器、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程消費電子設(shè)備、網(wǎng)絡(luò)PC、小型 計算機、大型計算機、移動電話、PDA、尋呼機、路由器、交換機等等。本發(fā)明也可在其中通過 網(wǎng)絡(luò)鏈接(或者通過硬連線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路,或者通過硬連線和無線數(shù)據(jù)鏈路的 組合)的本地和遠程計算機系統(tǒng)兩者都執(zhí)行任務(wù)的分布式系統(tǒng)環(huán)境中實施。在分布式系統(tǒng) 環(huán)境中,程序模塊可位于本地和遠程存儲器存儲設(shè)備中。
[0024] 系統(tǒng)編程中的主要挑戰(zhàn)是控制對資源的訪問。在面向?qū)ο蟮木幊讨?,資源是作為 對象暴露的。為了進行有效率的資源使用和存儲器分配,重要的是,資源不存活得比擁有資 源的代碼打算存活得長。常常,資源是為被預(yù)期為有限使用持續(xù)時間的對象提供的。然而, 在受管理的編程中,沒有什么能阻止組件無限地存儲資源,并因此任意延長其使用。例如, 資源可以這樣的方式被包裹,其中所有者撤銷對資源的有用的訪問,但是這充其量會導(dǎo)致 系統(tǒng)中的運行時故障。此處所描述的原理通過將壽命語義提供到類型系統(tǒng)中并在編譯時強 制執(zhí)行限制來解決此問題。
[0025] 被限定了作用域的引用是將引用的訪問限制到特定作用域的值。作用域是用于將 壽命指定到諸如對象、代碼塊或??蚣苤惖母拍畹姆椒?。被限定了作用域的引用可以與 具有可證明地比擁有該引用的項目短的壽命的作用域相關(guān)聯(lián),但是不與壽命長于擁有該引 用的項目的作用域相關(guān)聯(lián)。通過管理這些作用域,可以獲得被限定了作用域的引用不會存 活到超過系統(tǒng)中的某一點的保證。
[0026] 圖2示出了包括類型定義生成組件201、類型定義訪問組件202、以及編譯組件203 的系統(tǒng)200。
[0027] 類型定義生成組件201生成包括被限定了作用域的引用212的類型定義211,被限 定了作用域的引用212包括與特定作用域215相關(guān)聯(lián)214的引用213。作為示例,類型定義 生成組件201可以是創(chuàng)作軟件的組件,或可以是自動地生成代碼(諸如源代碼、中間代碼、 或機器代碼)的軟件的組件。關(guān)聯(lián)214可以是例如引用213的作用域215的注釋。作用域 215不定義引用212的訪問特權(quán),而是定義將被編譯器203強制