亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

受管代碼系統(tǒng)中的類型鑄造_2

文檔序號(hào):9383062閱讀:來源:國知局
038]而且,在到達(dá)各個(gè)計(jì)算機(jī)系統(tǒng)組件之際,形式為計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的程序代碼裝置可以從傳輸介質(zhì)被自動(dòng)傳輸至計(jì)算機(jī)存儲(chǔ)介質(zhì)(或反之亦然)。例如,通過網(wǎng)絡(luò)或數(shù)據(jù)鏈路接收到的計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)可被緩存在網(wǎng)絡(luò)接口控制器(例如,“NIC”)內(nèi)的RAM中,然后最終被傳輸?shù)接?jì)算機(jī)系統(tǒng)RAM和/或計(jì)算機(jī)系統(tǒng)處的較不易失性的計(jì)算機(jī)存儲(chǔ)介質(zhì)。因此,應(yīng)當(dāng)理解,計(jì)算機(jī)存儲(chǔ)介質(zhì)可以被包括在也(或甚至主要)利用傳輸介質(zhì)的計(jì)算機(jī)系統(tǒng)組件中。
[0039]計(jì)算機(jī)可執(zhí)行指令包括例如在處理器處執(zhí)行時(shí)使通用計(jì)算機(jī)、專用計(jì)算機(jī)或?qū)S锰幚碓O(shè)備執(zhí)行某一功能或一組功能的指令和數(shù)據(jù)。計(jì)算機(jī)可執(zhí)行指令可以是例如二進(jìn)制數(shù)、諸如匯編語言這樣的中間格式指令、或甚至是源代碼。盡管已經(jīng)用對(duì)于結(jié)構(gòu)特征和/或方法動(dòng)作特定的語言描述了主題,但是應(yīng)當(dāng)理解,在所附權(quán)利要求書中定義的主題不必要限于上述的特征或上述動(dòng)作。相反,所述特征和動(dòng)作被公開作為實(shí)現(xiàn)權(quán)利要求的示例形式。
[0040]本領(lǐng)域的技術(shù)人員將領(lǐng)會(huì),本發(fā)明可以在具有許多類型的計(jì)算機(jī)系統(tǒng)配置的網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)現(xiàn),包括個(gè)人計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、消息處理器、手持設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程的消費(fèi)者電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、移動(dòng)電話、PDA、尋呼機(jī)、路由器、交換機(jī)等等。本發(fā)明也可以在分布式系統(tǒng)環(huán)境中實(shí)現(xiàn),在分布式系統(tǒng)環(huán)境中,通過網(wǎng)絡(luò)鏈接(或通過硬線數(shù)據(jù)鏈路、或通過無線數(shù)據(jù)鏈路、或通過硬線和無線數(shù)據(jù)鏈路的組合)的本地和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)兩者均執(zhí)行任務(wù)。在分布式系統(tǒng)環(huán)境中,程序模塊可位于本地和遠(yuǎn)程的存儲(chǔ)器存儲(chǔ)設(shè)備兩者中。
[0041 ] 不可變可共享零復(fù)制批量數(shù)據(jù)
[0042]用于支持零復(fù)制的主要挑戰(zhàn)是傳統(tǒng)系統(tǒng)中的I/O接口,它們被定義成系統(tǒng)中的不同層之間的復(fù)制操作。讀應(yīng)用程序接口(API)接受應(yīng)用緩沖區(qū)作為輸入并用來自某一數(shù)據(jù)源的數(shù)據(jù)來填充它。類似地,寫API取得應(yīng)用緩沖區(qū)并將其內(nèi)容寫入某一數(shù)據(jù)目標(biāo)。讀/寫API的語義向應(yīng)用授予針對(duì)緩沖區(qū)對(duì)準(zhǔn)、分配空間和保持的完全自由。這一簡單模型具有若干固有限制:該模型不能表達(dá)非連續(xù)緩沖區(qū)或不能減少數(shù)據(jù)復(fù)制操作的數(shù)量。
[0043]許多操作系統(tǒng)支持存儲(chǔ)器映射文件作為一種機(jī)制來與各應(yīng)用共享文件系統(tǒng)緩沖區(qū)高速緩存中的各頁并避免與讀/寫接口相關(guān)聯(lián)的復(fù)制操作。特殊API已被添加到網(wǎng)絡(luò)接口以使用文件存儲(chǔ)器映射從文件系統(tǒng)緩沖區(qū)高速緩存直接發(fā)送數(shù)據(jù)來加速網(wǎng)絡(luò)話務(wù)。
[0044]存儲(chǔ)器映射的文件抽象缺少對(duì)隱藏緩沖區(qū)的底層對(duì)準(zhǔn)和稀疏布局的支持,并且需要各應(yīng)用直接處理并管理虛擬映射和邏輯數(shù)據(jù)視圖。例如,訪問偏移10處的文件的應(yīng)用需要在映射基虛擬地址上應(yīng)用指針?biāo)阈g(shù)來導(dǎo)出正確地址。在文件被映射時(shí)擴(kuò)展該文件需要應(yīng)用管理在其地址空間中可能不一定連續(xù)的附加視圖,且跨視圖訪問需要被該應(yīng)用處理。
[0045]避免在存儲(chǔ)器映射文件之間復(fù)制數(shù)據(jù)具有其他缺陷。確保存儲(chǔ)器映射文件和讀/寫操作之間的語義一致性需要1/0、存儲(chǔ)器以及文件系統(tǒng)之間的復(fù)雜協(xié)調(diào)。存儲(chǔ)器映射I/O施加同步完成的開銷,因?yàn)橛成涞轿募^(qū)的虛擬地址上的頁錯(cuò)誤未命中使線程停止,直至該頁在物理存儲(chǔ)器中可用為止。
[0046]寫時(shí)復(fù)制(copy-on-write)虛擬存儲(chǔ)器技術(shù)也被用來隱藏復(fù)制操作的成本。這些寫時(shí)復(fù)制技術(shù)基于以下假定來混合應(yīng)用和緩沖區(qū)高速緩存頁:應(yīng)用極少就地修改輸入緩沖區(qū)。這向文件系統(tǒng)給出了在無需復(fù)制的情況下對(duì)相同的物理頁進(jìn)行高速緩存的機(jī)會(huì)。對(duì)于一些工作負(fù)載,這一優(yōu)化可以避免以相當(dāng)?shù)膹?fù)雜度為代價(jià)的復(fù)制操作,尤其是在應(yīng)用和存儲(chǔ)棧處于不同保護(hù)域中時(shí)。在某些條件下在應(yīng)用緩沖區(qū)被正確地對(duì)準(zhǔn)時(shí),其他技術(shù)(如虛擬存儲(chǔ)器頁重新映射)對(duì)網(wǎng)絡(luò)接收路徑是有用的。
[0047]圖2示出用于提供不可變緩沖區(qū)的方法200的流程圖。圖3A示出其中填充緩沖區(qū)的過程發(fā)生的環(huán)境300A。圖3B示出在其中使經(jīng)填充的緩沖區(qū)不可變的環(huán)境300B。因此,現(xiàn)在將頻繁參考圖3A和3B來描述圖2的方法200。環(huán)境300A和300B可以發(fā)生在圖1的計(jì)算系統(tǒng)100內(nèi),但這并非是必需的。環(huán)境300A和300B可以是分布式的或者位于單個(gè)計(jì)算系統(tǒng)上。
[0048]獲取計(jì)算實(shí)體首先訪問要被用來填充緩沖區(qū)的源數(shù)據(jù)(動(dòng)作210)。源數(shù)據(jù)可以是任何數(shù)據(jù),但在一個(gè)實(shí)施例中,源數(shù)據(jù)包括需要大量計(jì)算資源來生成的大量批量數(shù)據(jù)。在本說明書和權(quán)利要求書中,“計(jì)算實(shí)體”是能處理計(jì)算系統(tǒng)中的數(shù)據(jù)的任何組件、模塊、方法、功能、進(jìn)程、處理器、或它們的組合。這樣的計(jì)算實(shí)體可以是分布式的或者駐留在單個(gè)計(jì)算機(jī)上。
[0049]獲取計(jì)算實(shí)體可以生成源數(shù)據(jù)中的全部或一些(動(dòng)作211)。作為替換或補(bǔ)充,獲取計(jì)算實(shí)體可以從數(shù)據(jù)源獲取源數(shù)據(jù)的全部或一些(動(dòng)作212)。例如,參考圖3A,獲取計(jì)算實(shí)體320從數(shù)據(jù)源310獲取(如箭頭301所表示的)源數(shù)據(jù)311。數(shù)據(jù)源可以例如是網(wǎng)絡(luò),或諸如盤等非易失性存儲(chǔ)設(shè)備。
[0050]獲取計(jì)算實(shí)體還獲取緩沖區(qū)(動(dòng)作220)。這一緩沖區(qū)獲取(220)被示為與源數(shù)據(jù)的獲取(動(dòng)作210)并行,因?yàn)楸疚拿枋龅脑淼淖顚挿悍矫娌恍枰魏蝿?dòng)作首先發(fā)生。然而,在一些系統(tǒng)中,一個(gè)動(dòng)作可以在另一個(gè)之前被獲取和/或這些動(dòng)作可以至少部分地同時(shí)發(fā)生。參考圖3A,獲取計(jì)算實(shí)體320獲取緩沖區(qū)330達(dá)以下程度:獲取計(jì)算實(shí)體隨后可以用數(shù)據(jù)填充緩沖區(qū)330。
[0051]不管獲取計(jì)算實(shí)體生成源數(shù)據(jù)還是從數(shù)據(jù)源接收源數(shù)據(jù)還是這兩者,獲取計(jì)算實(shí)體用數(shù)據(jù)填充緩沖區(qū)(動(dòng)作230)。參考圖3A,例如,獲取計(jì)算實(shí)體320將數(shù)據(jù)311填充到緩沖區(qū)330中(如箭頭302所表示的)。
[0052]緩沖區(qū)隨后被分類成不可變的(動(dòng)作240)。圖3B示出與圖3A的環(huán)境300A類似的環(huán)境300B,除了數(shù)據(jù)311被示為被保護(hù)在緩沖區(qū)330內(nèi)之外,它被示為具有斜紋邊界331,抽象地表示緩沖區(qū)330現(xiàn)在是不可變的。該分類保護(hù)填充在不可變緩沖區(qū)(例如,圖3B中的緩沖區(qū)330)中的數(shù)據(jù)(例如,數(shù)據(jù)311)在該不可變緩沖區(qū)的壽命期間免于改變,并且還保護(hù)不可變緩沖區(qū)在該不可變緩沖區(qū)的壽命期間免于改變其物理地址。因?yàn)檫@一不可變特性,對(duì)不可變數(shù)據(jù)的訪問可被給予任意數(shù)量的計(jì)算實(shí)體,而沒有沖突風(fēng)險(xiǎn),因?yàn)檫@些計(jì)算實(shí)體中的每一者只可觀察該數(shù)據(jù)。
[0053]在本機(jī)語言(如C或C++)環(huán)境中,這一不可變性可通過寫入處理器的存儲(chǔ)器管理單元(MMU)以限制處理器對(duì)存儲(chǔ)器的某些范圍的寫入來實(shí)現(xiàn)。這可能是相當(dāng)昂貴的,且對(duì)存儲(chǔ)器訪問的限制不是非常粒度化的,通常在相對(duì)大的頁級(jí)上實(shí)現(xiàn)。此外,這可能是昂貴的操作,且不能避免以下情況:以比頁級(jí)更小的粒度來執(zhí)行復(fù)制以向不同級(jí)隱藏?cái)?shù)據(jù)。
[0054]在受管環(huán)境(包括受管運(yùn)行時(shí)的環(huán)境)中,軟件被用來將存儲(chǔ)器聲明為不可變的并且實(shí)施該不可變性。此外,存儲(chǔ)器緩沖區(qū)的壽命可以通過使用計(jì)數(shù)來維護(hù),該計(jì)數(shù)在指向存儲(chǔ)器的新指針被給予實(shí)體時(shí)遞增,且在指向存儲(chǔ)器的指針不再被實(shí)體使用時(shí)遞減。在使用計(jì)數(shù)返回零時(shí),緩沖區(qū)是不可達(dá)的,且可被存儲(chǔ)器管理器收回。在一個(gè)實(shí)施例中,內(nèi)核向不同實(shí)體授予訪問存儲(chǔ)器的權(quán)限且維持使用計(jì)數(shù),而受管運(yùn)行時(shí)提供不可變存儲(chǔ)器的視圖、實(shí)施不可變性、以及提供對(duì)數(shù)據(jù)的約束。更多相關(guān)的受管環(huán)境在下文參考圖12描述。
[0055]圖4示出用于使用不可變緩沖區(qū)的方法的流程圖。首先,視圖組件供應(yīng)不可變緩沖區(qū)的靈活視圖(動(dòng)作401)并隨后在適當(dāng)時(shí)向不可變緩沖區(qū)的不同消費(fèi)者提供視圖(動(dòng)作402)。計(jì)算實(shí)體隨后可只通過其相應(yīng)視圖來訪問不可變緩沖區(qū)(動(dòng)作403)。例如,參考圖5的環(huán)境500,第一計(jì)算實(shí)體501通過第一視圖511訪問(如箭頭521所表示的)不可變緩沖區(qū)330,且第二計(jì)算實(shí)體502通過第二視圖512訪問(如箭頭522所表示的)不可變緩沖區(qū)330。省略號(hào)513示出了對(duì)于超過僅這兩個(gè)計(jì)算實(shí)體501和502,這可繼續(xù)。視圖511和512可以是不同視圖,但也可以是相同視圖。無論如何,視圖組件520能夠提供底層的不可變緩沖區(qū)330的不同視圖。在本說明書中,術(shù)語“第一”和“第二”僅被用來將一個(gè)項(xiàng)與另一項(xiàng)區(qū)分開,且不暗示任何次序、優(yōu)先級(jí)、位置、或重要性。
[0056]在一些實(shí)施例中,消費(fèi)來自不可變緩沖區(qū)的數(shù)據(jù)的計(jì)算實(shí)體在保護(hù)邊界或進(jìn)程邊界的不同側(cè)上。例如,圖5示出了通過它們的相應(yīng)視圖511和512來消費(fèi)數(shù)據(jù)的計(jì)算實(shí)體501和502實(shí)際上被邊界530分開。例如,計(jì)算實(shí)體501和502可以是不同進(jìn)程,在這種情況下,邊界530表示進(jìn)程之間的邊界。邊界530還可以是保護(hù)邊界,在這種情況下,一個(gè)計(jì)算實(shí)體不可在無需復(fù)制的情況下直接向另一計(jì)算實(shí)體提供數(shù)據(jù)。例如,計(jì)算實(shí)體501可以是操作系統(tǒng)內(nèi)的內(nèi)核組件,而計(jì)算實(shí)體502可以是諸如應(yīng)用組件等用戶模式組件。
[0057]通常,數(shù)據(jù)不會(huì)跨進(jìn)程和保護(hù)邊界共享,除非數(shù)據(jù)被復(fù)制。這樣的復(fù)制可花費(fèi)大量計(jì)算資源,尤其是在復(fù)制的數(shù)據(jù)量非常大的情況下,或者在數(shù)據(jù)的不同部分要跨這些邊界頻繁共享的情況下。本文描述的原理提供用于在無需復(fù)制的情況下跨進(jìn)程和保護(hù)邊界來共享數(shù)據(jù)的方便且靈活的機(jī)制。這因而改進(jìn)了操作系統(tǒng)的性能。
[0058]視圖提供者520所提供的視圖可以是細(xì)粒度的。例如,假定要從不可變緩沖區(qū)讀取的不可變數(shù)據(jù)是網(wǎng)絡(luò)數(shù)據(jù)。協(xié)議棧的各層可能各自對(duì)網(wǎng)絡(luò)數(shù)據(jù)的不同部分感興趣。網(wǎng)絡(luò)層組件(如因特網(wǎng)協(xié)議組件)可能對(duì)網(wǎng)絡(luò)層頭部感興趣,而應(yīng)用層組件可能僅對(duì)原始凈荷感興趣。在這兩層之間是對(duì)網(wǎng)絡(luò)數(shù)據(jù)的不同部分感興趣的不同組件。
[0059]本文描述的原理可被有效地應(yīng)用來處理這一網(wǎng)絡(luò)數(shù)據(jù),而無需復(fù)制網(wǎng)絡(luò)數(shù)據(jù)。例如,協(xié)議棧的最低層可能夠查看整個(gè)網(wǎng)絡(luò)分組。該最低層可處理該分組的最外面的頭部,并向協(xié)議棧的下一較高層組件返回視圖定義。視圖定義對(duì)網(wǎng)絡(luò)分組的整個(gè)范圍(除了最外分組之外)進(jìn)行定義。這一第二組件向視圖提供者520提供視圖定義,視圖提供者520將這一視圖提供給第二組件。因而,最低組件看到整個(gè)分組,而下一組件看到不帶有最外面的頭部的相同分組。這可以在根本不復(fù)制數(shù)據(jù)的情況下完成。相反,數(shù)據(jù)留在不可變緩沖區(qū)內(nèi)。這可被重復(fù),直至向最高應(yīng)
當(dāng)前第2頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1