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

共享和受管的存儲器統(tǒng)一訪問的制作方法_5

文檔序號:9383072閱讀:來源:國知局
象成為可能,并且因此以自然的方式直接讀和寫存儲器,從而最大化效率、提高正確性、并簡化程序員的任務(wù)。模型擴(kuò)展出僅DMA存儲器之外,并且還支持經(jīng)擴(kuò)展的類型鑄造語義以用于正常垃圾收集存儲器。
[0115]為了維護(hù)類型安全性,允許任意類型之間的類型鑄造是不可能或不合乎需要的。相反,存在約束這一擴(kuò)展的類型鑄造中能涉及的所允許的類型的集合的特定規(guī)則。然而,該規(guī)則相當(dāng)寬泛,且結(jié)果對DMA操作中通常涉及的數(shù)據(jù)種類完美地起作用。
[0116]在受管編程語言中,每當(dāng)存儲器被分配時,它被分配給定類型。該類型確定存儲器塊的不同部分的重要性以及可對該存儲器塊執(zhí)行的操作。該類型不能針對該存儲器塊改變,直至該存儲器變得不活動并通過垃圾收集過程回收。語言環(huán)境始終負(fù)責(zé)分配、類型化、以及回收存儲器塊。
[0117]類型鑄造是將一些存儲器當(dāng)作與受管環(huán)境所知的類型不同的類型的能力。類型鑄造在本機(jī)編程語言中是常見的,但受管語言通常不提供類型鑄造。相反,受管環(huán)境提供使得將一個類型的值復(fù)制到另一類型成為可能的類型轉(zhuǎn)換機(jī)制。例如,將整數(shù)值轉(zhuǎn)換成浮點(diǎn)值是可能的。然而,這總是通過復(fù)制來完成的一一原始存儲器位置保持不變。
[0118]根據(jù)本文描述的原理,類型鑄造被引入作為受管語言中的通用工具。約束被應(yīng)用以確保類型安全性得到保留,如稍后解釋的。
[0119]在受管操作系統(tǒng)中,用于I/O操作的存儲器必須是鎖定對象或?qū)S糜贗/O的存儲器區(qū)域。如上所述,將對象鎖定在存儲器中以防止它們移動是昂貴的且導(dǎo)致垃圾收集環(huán)境中的許多問題。本文描述的原理假借不可變緩沖區(qū)(如圖3A、3B和5的不可變緩沖區(qū)330)來使用專用I/O存儲器。
[0120]I/O存儲器在受管存儲器子系統(tǒng)的范圍之外。受管環(huán)境不控制這一存儲器的類型,并且因此從受管程序直接訪問這一種類的存儲器是不可能的。相反,通常將使用特殊連接(即,膠合)代碼以允許這一存儲器被使用顯式調(diào)用來讀或?qū)?。訪問這些I/o緩沖區(qū)內(nèi)的任何種類的結(jié)構(gòu)化數(shù)據(jù)涉及極其低效的代碼,或涉及將去往和來自I/o存儲器的數(shù)據(jù)復(fù)制到正常受管存儲器,這也是低效的。
[0121]考慮從網(wǎng)絡(luò)設(shè)備獲取的不可變緩沖區(qū)。在這一緩沖區(qū)中,存在保持聯(lián)網(wǎng)協(xié)議信息的TCP頭部。存在基本上兩種方式來在受管編程語言中使用TCP頭部中的數(shù)據(jù)。下表示出了這兩種方式以及每一方式中涉及的步驟。
[0122]典型受管環(huán)境
[0123]類型鑄造
[0124]確定緩沖區(qū)中TCP頭部的偏移。確定緩沖區(qū)中TCP頭部的偏移。
[0125]對于TCP頭部中的每一字段
[0126]通過類似Readlnt32或Readlntl6的API來讀取該字段。
[0127]將該字段存儲在本地臨時存儲中。將不可變緩沖區(qū)的適當(dāng)部分鑄造成TCP頭部對象。
[0128]在讀取了所有字段時,在受管堆中創(chuàng)建TCP頭部對象。這再次涉及顯式地復(fù)制TCP頭部中的每一字段,這一次是從本地存儲復(fù)制到堆存儲。訪問TCP頭部對象以執(zhí)行必要的任何動作。
[0129]訪問TCP頭部對象以執(zhí)行必要的任何動作。
[0130]使用類型鑄造比使用傳統(tǒng)方法獲得可使用的TCP頭部對象快得多。該新方法模仿本機(jī)操作環(huán)境中發(fā)生的事物,其中指針數(shù)學(xué)是可能的且在這一類型的場景中被頻繁利用。指針數(shù)學(xué)在受管編程語言中不是可用的,但類型安全類型鑄造給出了相同的功能。
[0131]傳統(tǒng)方法的各種變型(它們導(dǎo)致更多或更少開銷)是可能的。例如,所討論的存儲器緩沖區(qū)對程序員直接可用且因此可比通過使用讀/寫方法更高效地訪問是可能的。然而,在這種情況下,程序員仍然負(fù)責(zé)將字節(jié)序列轉(zhuǎn)換成更高級對象,這是冗長的、易錯的且執(zhí)行很差。
[0132]使類型鑄造成為可能并確保類型安全性被保留的是類型鑄造只對被設(shè)計成允許它的類型才是可能的。為了參與類型鑄造,各類型:1)是值類型(與引用類型相對),2)只包括支持類型鑄造的其他類型,3)不包括引用,4)被定義為使用特定存儲器布局,以及5)在其各字段中的任一者中容忍任何位模式。
[0133]這些約束意味著為了被用于類型鑄造,類型不能包含對其他對象的引用。結(jié)果是,這些約束完美地描述了被定義為表示數(shù)據(jù)格式(如TCP頭部)的類型以及其他這樣的數(shù)據(jù)結(jié)構(gòu)的廣大集合的特性。
[0134]如上所述,類型安全類型鑄造可被用來讀或?qū)懳挥谑芄艽鎯ζ鳝h(huán)境的范圍之外的I/O緩沖區(qū),且也可被用來將受管存儲器看作不同類型。具體而言,這一技術(shù)對將字節(jié)陣列改為看作一個或多個更豐富類型的實例是有用的。
[0135]圖13描繪正常受管字節(jié)陣列,它具有指向它的兩個不同的跨度并允許應(yīng)用將該陣列的各部分看作不同的類型??梢源朔绞絼?chuàng)建任何數(shù)量的跨度,每一跨度具有不同的類型。各跨度可自由重疊,可能引用同一存儲器區(qū)域作為不同的類型。
[0136]聲明任何位模式必須在其各字段中的任一者中是可容忍的規(guī)則對模型的可靠性而言是重要的。在使用類型鑄造時,以其他方式看起來正常的對象的實例被引入該環(huán)境,而無需執(zhí)行類型構(gòu)造器。通常,構(gòu)造器執(zhí)行輸入自變量的確認(rèn)并用于最終約束組成對象的所允許的值的集合。但使用類型鑄造,通過將現(xiàn)有存儲器跨度看作不同的類型來無中生有地創(chuàng)建對象是可能的。
[0137]將數(shù)據(jù)復(fù)制到受管堆中的不同對象的傳統(tǒng)方法提供了在數(shù)據(jù)被推送到受管對象的構(gòu)造器時確認(rèn)該數(shù)據(jù)的機(jī)會。這意味著在現(xiàn)實世界系統(tǒng)中,受管對象的無效版本從不存在于系統(tǒng)內(nèi),構(gòu)造器確保只有有效的版本可被創(chuàng)建。與此相反,使用類型鑄造,任何位模式可以出現(xiàn)。如果存在語義上無效的值,則它們可被檢測到,因為對象構(gòu)造不會發(fā)生。
[0138]對正確性問題的解決方案是在軟件中引入附加抽象層。具體而言,如果再次以讀取TCP頭部作為示例,可以想象開發(fā)人員已經(jīng)定義了兩個不同類型=RawTcpHeader (原始TCP 頭部)和 ValidTcpHeader (有效 TCP 頭部)。
[0139]輸入緩沖區(qū)中的數(shù)據(jù)將被類型鑄造成RawTcpHeader。給定該對象,AcquireValidTcpHeader (獲取有效TCP頭部)方法可被調(diào)用。這一方法將確認(rèn)RawTcpHeader中的各字段并且返回ValidTcpHeader的新實例,該新實例擔(dān)當(dāng)RawTcpHeader的平凡包裝器并將告知持有者它持有了保證有效的頭部。這全部在無需復(fù)制的情況下完成,僅創(chuàng)建了通過對象(它是ValidTcpHeader值類型)。
[0140] 本發(fā)明可以體現(xiàn)于其他具體形式,而不背離其精神或基本特征。所述實施例要被視為在全部方面僅僅為說明性的且非限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求書指示,而非由以上描述指示。在權(quán)利要求書的等價物的含義和范圍內(nèi)的所有變化應(yīng)被包含在其范圍內(nèi)。
【主權(quán)項】
1.一種系統(tǒng),包括: 具有多個受管存儲器部分的受管存儲器,每一受管存儲器部分對應(yīng)于受管計算實體; 位于所述受管存儲器之外的不可變緩沖區(qū),其中所述多個受管存儲器部分中的特定受管存儲器部分包括對應(yīng)的特定受管計算實體可訪問但其他計算實體不可訪問的一個或多個可被垃圾收集的對象,所述特定受管存儲器部分還包括對所述不可變緩沖區(qū)的一個或多個引用;以及 垃圾收集組件,被配置成管理所述特定受管存儲器部分中的一個或多個可被垃圾收集的對象,但還被配置成不對到所述不可變緩沖區(qū)的一個或多個引用執(zhí)行任何動作。2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述受管存儲器是受管堆。3.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述不可變緩沖區(qū)被保護(hù)以在所述不可變緩沖區(qū)的壽命期間免于改變其數(shù)據(jù)。4.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述不可變緩沖區(qū)被保護(hù)以在所述不可變緩沖區(qū)的壽命期間免于改變其物理地址。5.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述一個或多個引用中的至少一個是陣列元素。6.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述一個或多個引用中的至少一個包括所述不可變緩沖區(qū)的至少一部分的地址。7.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述特定受管存儲器部分是第一受管存儲器部分,并且所述特定計算實體是所述多個計算實體中的第一計算實體, 所述多個受管存儲器部分中的第二受管存儲器部分也包括能由對應(yīng)的第二計算實體訪問但不能由其他計算實體訪問的一個或多個可被垃圾收集的對象,所述第二受管存儲器部分還包括對所述不可變緩沖區(qū)的一個或多個引用。8.一種用于執(zhí)行垃圾收集的方法,包括: 審閱對應(yīng)于特定計算實體的特定受管存儲器部分的動作,其中受管存儲器包括多個受管存儲器部分,每一受管存儲器部分對應(yīng)于一計算實體; 在審閱包括對在所述受管存儲器之外的不可變緩沖區(qū)的引用的特定受管存儲器部分時遇到多個對象的動作; 當(dāng)遇到所述引用時,確定所述引用對應(yīng)于在所述受管存儲器之外的項的動作;以及 作為確定動作的結(jié)果,抑制對對應(yīng)于所述引用的項執(zhí)行垃圾收集的動作。9.如權(quán)利要求8所述的方法,其特征在于,所述受管存儲器的其他受管存儲器部分還包括對所述受管存儲器之外的項的引用。10.如權(quán)利要求8所述的方法,其特征在于,進(jìn)一步包括: 對不引用在所述受管存儲器部分之外的項的對象執(zhí)行垃圾收集的動作。
【專利摘要】一種受管存儲器,其中多個計算實體各自具有服從垃圾收集的對應(yīng)的實體專用部分。不可變緩沖區(qū)位于受管存儲器之外。對于給定的計算實體,對應(yīng)的受管存儲器部分包含能由特定的計算實體訪問但不能由其他多個計算實體訪問的實體專用對象。對于實體專用的受管存儲器部分中的一個或多個,該部分還包括對共享存儲器(諸如不可變緩沖區(qū))的引用。該引用被結(jié)構(gòu)化為被垃圾收集器忽略,盡管該引用可以表現(xiàn)為如受管存儲器部分中的正常對象那樣。因而,制造統(tǒng)一的存儲器訪問模型是可能的,在其中用于計算實體訪問受管存儲器中的常規(guī)對象的方法與該計算實體如何訪問共享存儲器類似。
【IPC分類】G06F12/02, G06F13/28
【公開號】CN105103136
【申請?zhí)枴緾N201480004068
【發(fā)明人】M·塔耶費(fèi)爾
【申請人】微軟技術(shù)許可有限責(zé)任公司
【公開日】2015年11月25日
【申請日】2014年1月3日
【公告號】CA2896518A1, EP2941707A1, US8966203, US20140195766, WO2014107554A1
當(dāng)前第5頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
云龙县| 武邑县| 南陵县| 余姚市| 仙游县| 乌拉特前旗| 高密市| 包头市| 广元市| 兴城市| 扎鲁特旗| 黄冈市| 永寿县| 康乐县| 玛多县| 梁河县| 且末县| 横山县| 六枝特区| 黑水县| 武夷山市| 怀远县| 图片| 沐川县| 昂仁县| 湄潭县| 北安市| 宜良县| 呼图壁县| 朝阳市| 台安县| 永州市| 特克斯县| 建昌县| 临海市| 城市| 昌黎县| 濮阳县| 洪雅县| 高清| 浑源县|