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

使用緩存寫和強(qiáng)制串行化次序的事務(wù)存儲器的制作方法

文檔序號:6476837閱讀:132來源:國知局
專利名稱:使用緩存寫和強(qiáng)制串行化次序的事務(wù)存儲器的制作方法
使用緩存寫和強(qiáng)制串行化次序的事務(wù)存儲器北旦 冃牙、計(jì)算機(jī)的處理單元執(zhí)行來自指令的程序文本的指令流。每一指令指定它的 后繼者;該后繼者或者是后續(xù)指令,或者在分支或調(diào)用的情況下是某些其它指 令。所以處理器每次執(zhí)行一條指令(所謂的流水線化和"無序"處理器在其實(shí) 現(xiàn)中違反此做法,但保留這些語義)。程序一般編譯成具有特異的開始指令的 程序文本。例如在C程序中,"main"方法的第一條指令是特異的開始指令。 確定在此之后執(zhí)行的指令的序列的"處理器上下文"通常被稱為"控制線程"、 或簡稱為"線程"。程序在操作系統(tǒng)進(jìn)程中執(zhí)行,該進(jìn)程提供虛擬地址空間, 該虛擬地址空間允許每一進(jìn)程如同它具有對"虛擬"機(jī)器的所有存儲器的唯一 訪問那樣工作。該操作系統(tǒng)進(jìn)程除了提供虛擬地址空間以外還提供各種每個進(jìn) 程的操作資源,諸如文件描述符、以及一個或多個線程。傳統(tǒng)程序是單線程的 它們在進(jìn)程中僅使用單個控制線程來執(zhí)行。共享存儲器的多處理器具有共享對同一存儲器的訪問的若干處理器; 一個處理器的寫入可以被另一處理器通過后續(xù)讀取來觀察到。此類機(jī)器可以通過在 不同處理器上運(yùn)行若干不同程序來使用,其中每一程序在一個進(jìn)程中。在這種 模式中,因?yàn)檫@些進(jìn)程各自具有單獨(dú)的地址空間,所以并沒有真正地利用共享 存儲器。然而,在另一模式中,程序可以在它于其中執(zhí)行的進(jìn)程中創(chuàng)建若干不 同的控制線程,且這些線程可以同時在多個處理器上執(zhí)行并通過共享存儲器來 通信。(這種多線程、或并發(fā)程序還可以在單處理器上執(zhí)行,且一般而言程序 可以創(chuàng)建比存在的可用處理器更多的線程。操作系統(tǒng)的作業(yè)中的一個是調(diào)度可 運(yùn)行線程在可用處理器上的執(zhí)行。因此可以在任意指令處中斷正在運(yùn)行的線程 來允許另一線程恢復(fù)。)這種按照線程的同時交錯的指令執(zhí)行使得并發(fā)編程非常困難。作為類比, 設(shè)想已經(jīng)被分開一付卡,使得所有紅色牌在一堆中而所有黑色牌在第二堆中。 每一張牌表示一指令而每一堆表示一線程。使用橋牌中的洗牌技術(shù)將堆組合在都表示一種可能的執(zhí)行。程 序必須為所有這些可能的執(zhí)行正確地工作。在線程在并發(fā)計(jì)算環(huán)境中執(zhí)行時,需要機(jī)制來管理每一線程如何與諸如共享存儲器等系統(tǒng)資源交互。軟件事務(wù)存儲器(STM)是類似于數(shù)據(jù)庫事務(wù)的、用于在并發(fā)計(jì)算中控制對共享存儲器的訪問的并發(fā)控制機(jī)制。事務(wù)存儲器的上 下文中的事務(wù)是執(zhí)行一系列對共享存儲器的讀和寫的一段代碼,且它原子地執(zhí)行,整個事務(wù)如同它是在系統(tǒng)中執(zhí)行的唯一控制線程那樣執(zhí)行。如果事務(wù)Txl 觀察到事務(wù)Tx2的任何寫入,則它觀察到Tx2的所有寫入。事務(wù)存儲器的上下 文中的數(shù)據(jù)位置是被訪問的共享存儲器的特定段,如單個對象、高速緩存行(如 在0++中的)、頁、單個字等等。事務(wù)存儲器系統(tǒng)中的一種類型的并發(fā)性控制 鎖模式是樂觀并發(fā)性控制、或樂觀鎖定。使用樂觀并發(fā)性控制,系統(tǒng)嘗試冒著之后將檢測到?jīng)_突的風(fēng)險向前進(jìn)。事 務(wù)存儲器系統(tǒng)通常通過回退沖突事務(wù)中的一個并重新執(zhí)行它來執(zhí)行此類沖突 的自動解決。樂觀操作在與悲觀操作相比時是相對經(jīng)濟(jì)的,因?yàn)闃酚^操作僅僅 讀取且不涉及對共享位置的寫入(例如,獲得鎖)。顧名思義,樂觀操作的期 望是只有很少沖突。如果其結(jié)果原來是假的,則將存在已經(jīng)被浪費(fèi)的工作,且 系統(tǒng)必須隨后將它丟棄并嘗試解決沖突。樂觀并發(fā)性控制沒有明確解決的一個嚴(yán)重問題可以發(fā)生在私有化情形中。 私有化相關(guān)問題可以在程序具有執(zhí)行事務(wù)的并發(fā)線程時發(fā)生,這些事務(wù)訪問同 --共享存儲器位置,且這些事務(wù)中的一個私有化某一共享存儲器位置。私有化在事務(wù)執(zhí)行使共享存儲器位置僅可由該事務(wù)訪問的操作時發(fā)生。例如,如果對 某一對象O的唯一引用被存儲在某一全局可訪問隊(duì)列Q中,且由線程Tl執(zhí)行 的事務(wù)Txl執(zhí)行將對O的引用從Q中移除的操作,且將它存儲在本地變量Tl 中,則Txl已經(jīng)將O私有化為Tl 。使用STM的某些實(shí)現(xiàn),私有化可以導(dǎo)致非預(yù)期的結(jié)果發(fā)生。某些STM實(shí) 現(xiàn)已經(jīng)嘗試通過將樂觀讀與其中事務(wù)寫直接對存儲器位置執(zhí)行的"原地"寫相 組合來達(dá)成高性能,在使用這些技術(shù)來實(shí)現(xiàn)執(zhí)行私有化的程序時,以下情形是可能的。某一全局位置G包含指向共享數(shù)據(jù)結(jié)構(gòu)的唯一指針。兩個線程執(zhí)行嘗
試并發(fā)地訪問此數(shù)據(jù)結(jié)構(gòu)的事務(wù)。線程Tl執(zhí)行將讀取G的事務(wù)Txl,且如果 指針讀取是非空,則嘗試遞增該指針?biāo)赶虻臄?shù)據(jù)結(jié)構(gòu)中的整數(shù)。線程T2執(zhí) 行事務(wù)Tx2, Tx2將把G復(fù)制到線程局部變量,且將G設(shè)置為空。線程T2然 后在相信它已經(jīng)通過將G設(shè)置為空而成功地"私有化"了該數(shù)據(jù)結(jié)構(gòu)的情況下 經(jīng)由該線程局部指針變量來訪問該數(shù)據(jù)結(jié)構(gòu)。然而,使用樂觀讀和原地寫,一 個可能的執(zhí)行是Txl首先讀取G,從而觀察到非空值。現(xiàn)在Tx2完整地執(zhí)行。 Tx2已經(jīng)寫入了 Txl已經(jīng)讀取的位置G,因此"注定"Txl會異常中止,但是 這在Txl嘗試提交之前都不會被發(fā)現(xiàn)。所以Txl繼續(xù)執(zhí)行,并遞增數(shù)據(jù)結(jié)構(gòu)中 的字段。該遞增將在Txl提交失敗后被撤銷,但是從在線程T2中在Tx2之后 執(zhí)行的非事務(wù)代碼的角度來看,該寫和執(zhí)行"撤銷"操作的寫兩者都是"難以 理解"的,它們無理由地發(fā)生,且可能使得程序不正確地運(yùn)行。
另一類私有化相關(guān)的問題涉及"串行化異常"。如前所述,事務(wù)通過向編 程者提供并發(fā)事務(wù)以某種串行次序執(zhí)行的假象來簡化編程。具體而言,如果事 務(wù)Tx2的讀觀察到事務(wù)Txl的寫,則Tx2必須在Txl之后串行化。串行化異 常在事務(wù)以不同于它們的串行化次序的次序完成時發(fā)生。在程序釆用私有化特 別語言時,這可以使得在事務(wù)之一完成之后在線程中執(zhí)行的非事務(wù)代碼觀察到 "難以理解"的寫。
概述
公開了在軟件事務(wù)存儲器系統(tǒng)中支持緩存寫和強(qiáng)制串行化次序的各種技 術(shù)和方法。提供了用于管理事務(wù)的軟件事務(wù)存儲器系統(tǒng)。提供了執(zhí)行對于對象 的陰影副本的寫入和讀取并在提交期間確認(rèn)了相應(yīng)事務(wù)之后將內(nèi)容寫回該對 象的緩存寫處理。在為特定事務(wù)第一次獲得寫鎖時,為特定對象制作陰影副本。 對該陰影副本執(zhí)行寫。在提交期間確認(rèn)了特定事務(wù)之后,將內(nèi)容從陰影副本寫 入該特定對象。
提供了確保提交事務(wù)的次序匹配事務(wù)的抽象串行化次序的事務(wù)排序處理。 提供了表示已進(jìn)入提交處理的事務(wù)的第一數(shù)量的進(jìn)入提交計(jì)數(shù)器。提供了表示 已退出提交處理的事務(wù)第二數(shù)量的退出提交計(jì)數(shù)器。在特定事務(wù)進(jìn)入提交處理時,該系統(tǒng)原子地讀取并遞增進(jìn)入提交計(jì)數(shù)器且將從進(jìn)入提交計(jì)數(shù)器中讀取的 值分配為該特定事務(wù)的票數(shù)。在退出提交計(jì)數(shù)器匹配該特定事務(wù)的票數(shù)時,該 特定事務(wù)退出提交處理。
提供本概述以便以簡化形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些 概念。該概述不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在 用于幫助確定所要求保護(hù)的主題的范圍。
附圖簡述


圖1是一個實(shí)現(xiàn)的計(jì)算機(jī)系統(tǒng)的圖示。
圖2是在圖1的計(jì)算機(jī)系統(tǒng)上操作的一個實(shí)現(xiàn)的軟件事務(wù)存儲器應(yīng)用程序 的圖解視圖。
圖3是圖1的系統(tǒng)的一個實(shí)現(xiàn)的高級處理流程圖。
圖4是圖1的系統(tǒng)的一個實(shí)現(xiàn)的處理流程圖,其示出在將緩存寫用于軟件 事務(wù)存儲器系統(tǒng)時所涉及的高級階段。
圖5是圖1的系統(tǒng)的一個實(shí)現(xiàn)的處理流程圖,其示出在將緩存寫用于軟件 事務(wù)存儲器系統(tǒng)時所涉及的更詳細(xì)的階段。
圖6是圖1的系統(tǒng)的一個實(shí)現(xiàn)的處理流程圖,其示出在事務(wù)存儲器字中跟 蹤緩存寫信息時所涉及的各階段。
圖7是示出保持對于對象的陰影副本的引用和共享存儲器中的對象的事 務(wù)存儲器字的邏輯圖。
圖8是示出圖1的系統(tǒng)的一個實(shí)現(xiàn)的處理流程圖,其示出在確保事務(wù)以與 抽象串行化次序相同的次序提交時所涉及的高級階段。
圖9是示出圖1的系統(tǒng)的一個實(shí)現(xiàn)的處理流程圖,其示出在確保事務(wù)以與 抽象串行化次序相同的次序提交時所涉及的更詳細(xì)的階段。
詳細(xì)描述
為促進(jìn)對本發(fā)明的原理的理解,現(xiàn)將對圖中所示的各實(shí)施例加以參考,同 時也將用具體語言描述它們。不過,需要理解的是,并無意由此作出范圍上的 限制。對所述實(shí)施例的任何改變和進(jìn)一步更改,以及在此所述的原理的進(jìn)一步
8應(yīng)用都可以預(yù)期將是本領(lǐng)域技術(shù)人員通常能想到的。
該系統(tǒng)可以在一般上下文中被描述為軟件事務(wù)存儲器系統(tǒng),但是該系統(tǒng)還 用于除此之外的其它目的。在一個實(shí)現(xiàn)中,此處所描述的一個或多個技術(shù)可被
實(shí)現(xiàn)為諸如MICROSOFT .NET框架等框架程序內(nèi)的、或來自為開發(fā)者提供 開發(fā)軟件應(yīng)用程序的平臺任何其他類型的程序或服務(wù)的特征。在另一實(shí)現(xiàn)中, 此處所描述的一個或多個技術(shù)被實(shí)現(xiàn)為涉及開發(fā)在并發(fā)環(huán)境中執(zhí)行的應(yīng)用程 序的其它應(yīng)用程序的特征。
在一個實(shí)現(xiàn)中,提供了使用緩存寫處理來執(zhí)行對于對象的陰影副本的寫并 在提交期間確認(rèn)了相應(yīng)事務(wù)之后將內(nèi)容寫回該對象的軟件事務(wù)存儲器系統(tǒng)。在 另一個實(shí)現(xiàn)中,提供了確保提交事務(wù)的次序匹配事務(wù)的抽象串行化次序的事務(wù) 排序處理。事務(wù)通過給予編程者每一事務(wù)孤立地串行執(zhí)行的假象來簡化并發(fā)編 程。抽象串行化次序僅僅是事務(wù)看起來按其執(zhí)行的次序。它由事務(wù)所執(zhí)行的讀 和寫來確定。如果Txl和Tx2是都提交的事務(wù),且如果Tx2的讀觀察到由Txl 寫入的值,則Txl在抽象串行化次序中必須在Tx2之前。如果每一事務(wù)讀取另 一個事務(wù)寫入的值,則不能將它們串行化,且因此不能都提交,所以至少一個 必然會異常中止。如果都提交,如果每一事務(wù)必須在另一個事務(wù)之前,則--個 事務(wù)必然會異常中止。通過使用緩存寫處理和/或事務(wù)排序處理,至少避免了私 有化相關(guān)問題中的某一些。
如圖1所示,用于實(shí)現(xiàn)該系統(tǒng)的一個或多個部分的示例性計(jì)算機(jī)系統(tǒng)包括 諸如計(jì)算設(shè)備100等計(jì)算設(shè)備。在其最基本的配置中,計(jì)算設(shè)備100通常包括 至少一個處理單元102和存儲器104。取決于計(jì)算設(shè)備的確切配置和類型,存 儲器104可以是易失性的(如RAM)、非易失性的(如ROM、閃存等)或是 兩者的某種組合。該最基本配置在圖1中由虛線106來示出。
另外,設(shè)備100還可具有附加特征/功能。例如,設(shè)備100還可包含附加 存儲(可移動和/或不可移動),包括但不限于磁盤、光盤或磁帶。這樣的附加 存儲在圖1中由可移動存儲108和不可移動存儲110示出。計(jì)算機(jī)存儲介質(zhì)包 括以用于存儲諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的 任何方法或技術(shù)來實(shí)現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。存儲器 104、可移動存儲108和不可移動存儲110都是計(jì)算機(jī)存儲介質(zhì)的示例。計(jì)算機(jī)存儲介質(zhì)包括但不限于,RAM、 ROM、 EEPROM、閃存或其它存儲器技術(shù)、 CD-ROM、數(shù)字多功能盤(DVD)或其它光存儲、磁帶盒、磁帶、磁盤存儲或 其它磁存儲設(shè)備、或者可用于存儲所需信息并且可由設(shè)備100訪問的任何其它 介質(zhì)。任何這樣的計(jì)算機(jī)存儲介質(zhì)都可以是設(shè)備100的一部分。
計(jì)算設(shè)備100包括允許計(jì)算設(shè)備100與其它計(jì)算機(jī)/應(yīng)用程序114進(jìn)行通 信的一個或多個通信連接115。設(shè)備100還可以具有諸如鍵盤、鼠標(biāo)、筆、語 音輸入設(shè)備、觸摸輸入設(shè)備等輸入設(shè)備112。還可以包括諸如顯示器、揚(yáng)聲器、 打印機(jī)等輸出設(shè)備lll。這些設(shè)備在本領(lǐng)域中公知且無需在此處詳細(xì)討論。在 一實(shí)現(xiàn)中,計(jì)算設(shè)備100包括軟件事務(wù)存儲器應(yīng)用程序200。軟件事務(wù)存儲器 應(yīng)用程序200將在圖2中更詳細(xì)地描述。
現(xiàn)在轉(zhuǎn)向圖2,并繼續(xù)參考圖l,示出了在計(jì)算設(shè)備100上操作的軟件事 務(wù)存儲器應(yīng)用程序200。軟件事務(wù)存儲器應(yīng)用程序200是駐留在計(jì)算設(shè)備100 上的應(yīng)用程序中的一個。然而,可以理解,軟件事務(wù)存儲器應(yīng)用程序200可另 選地或另外地被具體化為一個或多個計(jì)算機(jī)上的計(jì)算機(jī)可執(zhí)行指令和/或與圖 l所示的不同的變型。另選地或另外地,軟件事務(wù)存儲器應(yīng)用程序200的一個 或多個部分可以是系統(tǒng)存儲器104的一部分、可以在其它計(jì)算機(jī)和/或應(yīng)用程序 115上、或可以是計(jì)算機(jī)軟件領(lǐng)域的技術(shù)人員能想到的其它此類變型。
軟件事務(wù)存儲器應(yīng)用程序200包括程序邏輯204,其負(fù)責(zé)執(zhí)行在此描述的 技術(shù)中的某一些或全部。程序邏輯204包括用于提供可用于管理多個事務(wù)的軟 件事務(wù)存儲器系統(tǒng)的邏輯206;用于提供對對象的陰影副本的寫和讀并在提交 期間在確認(rèn)了多個事務(wù)中的相應(yīng)事務(wù)之后將內(nèi)容寫回該對象的緩存寫處理的 邏輯208;用于提供確保提交多個事務(wù)的次序匹配這多個事務(wù)的抽象串行化次 序的事務(wù)排序處理的邏輯210;用于使緩存寫處理能在第一次獲得寫鎖時制作 對象中的特定一個的特定陰影副本且在陰影副本已經(jīng)存在的情況下訪問該陰 影副本的邏輯212;用于使事務(wù)排序處理能夠使用全局?jǐn)?shù)據(jù)結(jié)構(gòu)來確保提交次
序(例如,進(jìn)入提交計(jì)數(shù)器和退出提交計(jì)數(shù)器)的邏輯214;用于使事務(wù)排序
處理能夠允許相應(yīng)事務(wù)在進(jìn)入提交處理時原子地讀取和遞增進(jìn)入提交計(jì)數(shù)器
并將從進(jìn)入提交計(jì)數(shù)器讀取的值分配為相應(yīng)事務(wù)的票數(shù)的邏輯216;用于使事
務(wù)排序處理能夠在允許相應(yīng)事務(wù)在提交處理之后繼續(xù)之前使相應(yīng)的事務(wù)等待直到退出提交計(jì)數(shù)器匹配相應(yīng)事務(wù)的票數(shù)的邏輯218;用于通過使用緩存寫處 理和/或事務(wù)排序處理來避免私有化相關(guān)問題的邏輯220;以及其它用于操作應(yīng)
用程序的邏輯222。在一個實(shí)現(xiàn)中,程序邏輯204可用于通過編程,如使用對 程序邏輯204中的過程的單一調(diào)用而從另一程序調(diào)用。
現(xiàn)在轉(zhuǎn)向圖3-9,并繼續(xù)參考圖1-2,更詳細(xì)地描述了用于實(shí)現(xiàn)軟件事務(wù) 存儲器應(yīng)用程序200的一個或多個實(shí)現(xiàn)的各階段。圖3是軟件事務(wù)存儲器應(yīng)用 程序200的高級處理流程圖。在一種形式中,圖3的過程至少部分地在計(jì)算設(shè) 備100的操作邏輯中實(shí)現(xiàn)。該過程在起始點(diǎn)240處開始,在那里提供可用于管 理多個事務(wù)的軟件事務(wù)存儲器系統(tǒng)(階段242)。提供執(zhí)行對于對象的陰影副 本的寫并在確認(rèn)了多個事務(wù)中的相應(yīng)事務(wù)之后將內(nèi)容寫回該對象的緩存寫處 理(階段244)。提供確保提交多個事務(wù)的次序匹配這多個事務(wù)的抽象串行化 次序的事務(wù)排序處理(階段246)。通過提供緩存寫處理和/或事務(wù)排序處理, 可以避免某些私有化相關(guān)問題(階段248)。該過程在結(jié)束點(diǎn)250處結(jié)束。
圖4示出在將緩存寫用于軟件事務(wù)存儲器系統(tǒng)時所涉及的高級階段的一 個實(shí)現(xiàn)。在-種形式中,圖4的過程至少部分地在計(jì)算設(shè)備100的操作邏輯中 實(shí)現(xiàn)。該過程在起始點(diǎn)260處開始,在那里提供可用于管理多個事務(wù)的軟件事 務(wù)存儲器系統(tǒng)(階段262)。在為特定事務(wù)第一次獲得寫鎖時,為特定對象制 作陰影副本(階段264)。對該陰影副本執(zhí)行寫入和讀取(階段266)。以下 是在使用陰影副本的一個實(shí)現(xiàn)中如何執(zhí)行。的解釋,但是也可以使用其它讀和 寫的變型。如果讀是從非寫鎖定對象進(jìn)行的,則直接從該對象進(jìn)行讀。如果對 象被寫鎖定,則該鎖(例如,在事務(wù)存儲器字中)指向某一事務(wù)的日志中的陰 影副本。如果該鎖在某一其它事務(wù)的日志中,則存在沖突,且必須采取某一爭 用管理動作。如果它是當(dāng)前事務(wù)的日志,則從當(dāng)前事務(wù)所指向的陰影副本進(jìn)行 讀。在提交期間確認(rèn)了特定事務(wù)之后,將內(nèi)容從陰影副本寫入該特定對象(階 段268)。該過程在結(jié)束點(diǎn)270處結(jié)束。
圖5示出在將緩存寫用于軟件事務(wù)存儲器系統(tǒng)時所涉及的更詳細(xì)的階段 的--個實(shí)現(xiàn)。在一種形式中,圖5的過程至少部分地在計(jì)算設(shè)備100的操作邏 輯中實(shí)現(xiàn)。該過程開始于起始點(diǎn)280,在那里執(zhí)行事務(wù)的線程嘗試將值V寫入 對象O中的某一位置(階段281)。該事務(wù)因此需要獲取對象O上的寫鎖(階段282)。如果該對象未被寫鎖定(判定點(diǎn)284),則獲得寫鎖,且該事務(wù)創(chuàng) 建陰影副本并保持對它的引用(階段287)。如果該對象被寫鎖定(判定點(diǎn)284), 且該寫鎖由當(dāng)前事務(wù)持有(判定點(diǎn)285),則該事務(wù)保持對它的引用(階段288)。 在這些情況的任一個中,該事務(wù)將值V寫入0的陰影副本(階段290)。然而, 如果該對象被寫鎖定(判定點(diǎn)284),且該寫鎖不是由當(dāng)前事務(wù)持有而是由另 一事務(wù)持有(判定點(diǎn)285),則采取爭用管理動作(階段286)。該過程在結(jié) 束點(diǎn)292處結(jié)束。
圖6示出在事務(wù)存儲器字中跟蹤緩存寫入信息時所涉及的各階段的一個 實(shí)現(xiàn)。在一種形式中,圖6的過程至少部分地在計(jì)算設(shè)備100的操作邏輯中實(shí) 現(xiàn)。該過程開始于起始點(diǎn)310,在那里在特定對象的對象首部中提供事務(wù)存儲 器字(階段312)。如在圖7中更詳細(xì)地描述的,使用事務(wù)存儲器字來跟蹤鎖 類型和版本(階段314)。在寫鎖定狀態(tài),事務(wù)存儲器字保持指向?qū)懭罩緱l目 的指針,該日志條目包含陰影副本和指向?qū)ο蟮幕返闹羔?階段316)。執(zhí) 行對該陰影副本的寫入和讀取,且在事務(wù)已經(jīng)被確認(rèn)之后在提交處理時將陰影 副本值寫回對象(階段318)。該過程在結(jié)束點(diǎn)320處結(jié)束。
圖7是示出保持對指示對象已經(jīng)被擁有事務(wù)日志406的事務(wù)寫鎖定的寫日 志條目408的引用的事務(wù)存儲器字404的邏輯圖。該寫日志條目以固定大小的 首部410開始,該首部410包含原始TMW 412和對象基址414,其中原始TMW 是在對象被寫鎖定之前該對象的TMW值,而對象基址是指回被寫鎖定的對象 的指針。在首部之后的是陰影副本416,其用對象首部402之后的對象400的 內(nèi)容來初始化。事務(wù)將對此陰影副本進(jìn)行寫入和讀取,并在該事務(wù)提交時將其 經(jīng)更新的內(nèi)容寫回對象400。在另一實(shí)現(xiàn)中,事務(wù)存儲器字可以包含直接指向 陰影副本的指針;指向?qū)懭罩緱l目的開始的指針可以通過減去首部的大小(其 是常量)來恢復(fù)。事務(wù)存儲器字404存在于對象400的對象首部402中。
在對象未被寫鎖定時,事務(wù)存儲器字包括版本號和讀者(例如,悲觀讀者) 的列表/計(jì)數(shù)和/或指示符。在對象被寫鎖定時,事務(wù)存儲器字的寫鎖條目還保 持在該對象被寫鎖定之前讀取的TMW值。在一個實(shí)現(xiàn)中,讀者的列表/計(jì)數(shù)和 /或指示符包括在給定時間點(diǎn)訪問特定值的讀者(例如,悲觀)的數(shù)量的計(jì)數(shù)。 在另一實(shí)現(xiàn)中,讀者的列表/計(jì)數(shù)和/或指示符包括在給定時間點(diǎn)訪問特定值的
12讀者的列表/計(jì)數(shù)和/或指示符僅僅是指示存在于給定時間點(diǎn)訪問特定值的一個或多個讀者(例如,悲觀)的標(biāo)志或其它指示符。應(yīng)該理解,其它事務(wù)存儲器字屬性和/或其組合可以另選地或另外地用于在其它實(shí)現(xiàn)中指示版本號、寫鎖等等,以供事務(wù)存儲器系統(tǒng)使用來做出并發(fā)性控制決策。
圖8示出在確保事務(wù)以與抽象串行化次序相同的次序提交時所涉及的高
級階段的一個實(shí)現(xiàn)。在一種形式中,圖8的過程至少部分地在計(jì)算設(shè)備100的操作邏輯中實(shí)現(xiàn)。該過程在起始點(diǎn)420處開始,在那里提供可用于管理多個事務(wù)的軟件事務(wù)存儲器系統(tǒng)(階段422)。提供表示已經(jīng)進(jìn)入提交處理的事務(wù)的數(shù)量的進(jìn)入提交計(jì)數(shù)器(階段424)。提供表示已經(jīng)退出提交處理的事務(wù)的數(shù)量的退出提交計(jì)數(shù)器(階段426)。在特定事務(wù)進(jìn)入提交處理時,該事務(wù)原子地讀取并遞增進(jìn)入提交計(jì)數(shù)器且將從進(jìn)入提交計(jì)數(shù)器中讀取的值分配為特定事務(wù)的票數(shù)(階段428)。在退出提交計(jì)數(shù)器匹配該特定事務(wù)的票數(shù)時,允許該特定事務(wù)從提交處理中退出(階段430)。該過程在結(jié)束點(diǎn)432處結(jié)束。
圖9示出在確保事務(wù)以與抽象串行化次序相同的次序提交時所涉及的更詳細(xì)的階段的一個實(shí)現(xiàn)。在一種形式中,圖9的過程至少部分地在計(jì)算設(shè)備100的操作邏輯中實(shí)現(xiàn)。該過程開始于起始點(diǎn)450,在那里啟動事務(wù)(階段452)。該事務(wù)執(zhí)行讀和寫以及控制流(階段453)。如果該特定事務(wù)是只讀的(判定點(diǎn)454),則不必將該只讀事務(wù)限于以與抽象串行化次序相同的次序完成提交
(階段456),且該只讀事務(wù)可以繼而對讀進(jìn)行確認(rèn)來査看它是否可以提交(階段471)。此時該過程在結(jié)束點(diǎn)472結(jié)束。
如果該事務(wù)不時只讀的(判定點(diǎn)454),則必須將事務(wù)限于以與抽象串行化次序相同的次序來完成提交(階段458)。該事務(wù)原子地讀取并遞增全局進(jìn)入提交計(jì)數(shù)器并將從該進(jìn)入提交計(jì)數(shù)器中讀取的值分配為該特定事務(wù)的票數(shù)
(階段460)。該事務(wù)執(zhí)行提交處理(階段464)。在一個實(shí)現(xiàn)中,在提交處理期間,執(zhí)行以下步驟(1)確認(rèn)樂觀讀,從而確保所讀的位置仍未被寫鎖定,并確保它們與在最初讀取TMW時保持相同的版本號,以及(2)寫回陰影副本。該事務(wù)僅在全局退出提交計(jì)數(shù)器匹配局部票數(shù)時退出提交處理,且該事務(wù)遞增退出提交計(jì)數(shù)器(階段468)。在該事務(wù)退出提交處理之后,釋放寫和悲觀讀鎖(階段470)。該過程在結(jié)束點(diǎn)472處結(jié)束。
盡管用對結(jié)構(gòu)特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述具體特征或動作。相反,上述具體特征和動作是作為實(shí)現(xiàn)權(quán)利要求的示例形式公開的。落入在此所述和/或所附權(quán)利要求所描述的實(shí)現(xiàn)的精神的范圍內(nèi)的所有等效方案、更改和修正都期望受到保護(hù)。
例如,計(jì)算機(jī)軟件領(lǐng)域普通技術(shù)人員會認(rèn)識到在此討論的示例中所述的客戶機(jī)和/或服務(wù)器布置、用戶界面屏幕內(nèi)容、和/或數(shù)據(jù)布局可在一臺或多臺計(jì)算機(jī)上不同地組織,以包括比示例中所描繪的 少或更多的選項(xiàng)或特征。
權(quán)利要求
1.一種具有用于使得計(jì)算機(jī)執(zhí)行以下步驟的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述步驟包括提供可用于管理多個事務(wù)的軟件事務(wù)存儲器系統(tǒng);提供執(zhí)行對于對象的陰影副本的寫入和讀取并在提交期間在確認(rèn)了所述多個事務(wù)中的相應(yīng)事務(wù)之后將內(nèi)容寫回所述對象的緩存寫處理;以及提供確保提交所述多個事務(wù)的次序匹配所述多個事務(wù)的抽象串行化次序的事務(wù)排序處理。
2. 如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述緩存寫處理 可用于在第一次獲得寫鎖時制作所述對象中的特定一個的特定陰影副本。
3. 如權(quán)利要求2所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述緩存寫處理 可用于在所述特定陰影副本已經(jīng)存在的情況下訪問所述對象中的特定一個的 該特定陰影副本。
4. 權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述事務(wù)排序處理 可用于使用全局?jǐn)?shù)據(jù)結(jié)構(gòu)來確保提交所述事務(wù)的次序匹配所述抽象串行化次序。
5. 如權(quán)利要求4所述的計(jì)算可讀介質(zhì),其特征在于,所述全局?jǐn)?shù)據(jù)結(jié)構(gòu) 包括進(jìn)入提交計(jì)數(shù)器和退出提交計(jì)數(shù)器,所述進(jìn)入提交計(jì)數(shù)器表示已經(jīng)進(jìn)入提 交處理的事務(wù)的第一數(shù)量,而所述退出提交計(jì)數(shù)器表示己經(jīng)退出提交處理的事務(wù)的第二數(shù)量。
6. 如權(quán)利要求5所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,在相應(yīng)事務(wù)進(jìn)入 提交處理時,所述相應(yīng)事務(wù)原子地讀取并遞增所述進(jìn)入提交計(jì)數(shù)器,并將從所 述進(jìn)入提交計(jì)數(shù)器中讀取的值分配為所述相應(yīng)事務(wù)的票數(shù)。
7. 如權(quán)利要求6所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述相應(yīng)事務(wù)在 所述相應(yīng)事務(wù)被允許在提交處理之后繼續(xù)之前等待,直到所述退出提交計(jì)數(shù)器 匹配所述相應(yīng)事務(wù)的票數(shù)。
8. 如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述緩存寫處理 和所述事務(wù)排序處理的使用確保避免私有化相關(guān)問題。
9. 一種用于在軟件事務(wù)存儲器系統(tǒng)中提供緩存寫的方法,所述方法包括以下步驟提供可用于管理多個事務(wù)的軟件事務(wù)存儲器系統(tǒng); 在為特定事務(wù)首先獲得寫鎖時,制作特定對象的陰影副本; 執(zhí)行對所述陰影副本的寫入和讀取;以及在提交期間確認(rèn)了所述特定事務(wù)之后,將內(nèi)容從所述陰影副本寫入所述特 定對象。
10. 如權(quán)利要求9所述的方法,其特征在于,所述特定對象具有在對象首 部中的事務(wù)存儲器字,所述事務(wù)存儲器字可用于跟蹤鎖類型和版本。
11. 如權(quán)利要求IO所述的方法,其特征在于,所述事務(wù)存儲器字表示指 向所述陰影副本的指針。
12. 如權(quán)利要求9所述的方法,其特征在于,允許所述特定事務(wù)以與所述 特定事務(wù)被串行化的次序相同的次序從提交處理中退出。
13. 如權(quán)利要求12所述的方法,其特征在于,所述特定事務(wù)在所述特定 事務(wù)的票數(shù)匹配標(biāo)識應(yīng)被允許提交的下一事務(wù)的全局計(jì)數(shù)器之前不從提交處 理中退出。
14. 一種具有用于使得計(jì)算機(jī)執(zhí)行如權(quán)利要求9所述的步驟的計(jì)算機(jī)可執(zhí) 行指令的計(jì)算機(jī)可讀介質(zhì)。
15. —種用于確保以串行化次序提交軟件事務(wù)存儲器系統(tǒng)中的事務(wù)的方 法,所述方法包括以下步驟;提供可用于管理多個事務(wù)的軟件事務(wù)存儲器系統(tǒng); 提供表示已進(jìn)入提交處理的事務(wù)的第一數(shù)量的進(jìn)入提交計(jì)數(shù)器; 提供表示已退出提交處理的事務(wù)的第二數(shù)量的退出提交計(jì)數(shù)器; 在所述多個事務(wù)中的一特定事務(wù)進(jìn)入提交處理時,原子地讀取并遞增所述進(jìn)入提交計(jì)數(shù)器且將從所述進(jìn)入提交計(jì)數(shù)器中讀取的值分配為所述特定事務(wù)的票數(shù);以及在所述退出提交計(jì)數(shù)器匹配所述特定事務(wù)的票數(shù)時,提交所述特定事務(wù)。
16. 如權(quán)利要求15的方法,其特征在于,將緩存寫處理用于執(zhí)行對于對 象的陰影副本的寫入和讀取,直到所述特定事務(wù)提交。
17. 如權(quán)利要求16所述的方法,其特征在于,在第一次獲得寫鎖時制作特定對象的陰影副本。
18. 如權(quán)利要求17所述的方法,其特征在于,對所述特定對象的陰影副 本執(zhí)行寫入并從所述特定對象的陰影副本執(zhí)行讀取。
19. 如權(quán)利要求18所述的方法,其特征在于,在提交期間確認(rèn)了所述特定事務(wù)之后,將內(nèi)容從所述陰影副本寫入所述特定對象。
20. —種具有用于使得計(jì)算機(jī)執(zhí)行如權(quán)利要求15所述的步驟的計(jì)算機(jī)可 執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
全文摘要
公開了在軟件事務(wù)存儲器系統(tǒng)中支持緩存寫和強(qiáng)制串行化次序的各種技術(shù)和方法。提供了執(zhí)行對于對象的陰影副本的寫入并在提交期間確認(rèn)了相應(yīng)的事務(wù)之后將內(nèi)容寫回該對象的緩存寫處理。在為特定事務(wù)第一次獲得寫鎖時,制作特定對象的陰影副本。執(zhí)行對該陰影副本的寫入和讀取。在提交期間確認(rèn)了特定事務(wù)之后,將內(nèi)容從陰影副本寫入特定對象。提供確保提交事務(wù)的次序匹配該事務(wù)的抽象串行化次序的事務(wù)排序處理。事務(wù)在其票數(shù)匹配跟蹤應(yīng)該提交的下一事務(wù)的全局?jǐn)?shù)量之前不被允許提交。
文檔編號G06F12/14GK101652761SQ200880011509
公開日2010年2月17日 申請日期2008年3月13日 優(yōu)先權(quán)日2007年4月11日
發(fā)明者D·德特勒夫, G·格雷費(fèi), J·J·達(dá)菲, M·M·馬格魯?shù)? T·L·哈里斯, V·K·格羅弗 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
东山县| 汉源县| 来安县| 祁连县| 文山县| 岳池县| 靖州| 临漳县| 海城市| 昭觉县| 咸丰县| 阳信县| 筠连县| 新兴县| 海安县| 中宁县| 海晏县| 达尔| 楚雄市| 隆尧县| 南投市| 敦化市| 拉萨市| 任丘市| 闸北区| 乌兰察布市| 贵南县| 绿春县| 河池市| 义马市| 社旗县| 朝阳县| 申扎县| 太仆寺旗| 长海县| 黄浦区| 禄劝| 石渠县| 长兴县| 江陵县| 冷水江市|