專利名稱:在加鎖消息中傳遞受保護(hù)數(shù)據(jù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的一個(gè)實(shí)施例涉及采用加鎖機(jī)制來保護(hù)數(shù)據(jù)的通信和計(jì)算機(jī)系統(tǒng),具體而言,一個(gè)實(shí)施例涉及在加鎖消息中傳遞受保護(hù)數(shù)據(jù);更具體而言,一個(gè)實(shí)施例涉及通過利用獨(dú)立于存儲(chǔ)機(jī)制的鎖管理器在加鎖消息中傳遞受保護(hù)數(shù)據(jù)來繞開固有(native)存儲(chǔ)裝置。
背景技術(shù):
在很多多處理器環(huán)境中,通過共享全局存儲(chǔ)器來提供處理器間通信。一般通過鎖來保護(hù)到該存儲(chǔ)器的訪問。通過代碼臨界區(qū)耦合了到這些資源的訪問的等待時(shí)間,所述等待時(shí)間包括獲得鎖、讀數(shù)據(jù)、寫數(shù)據(jù)和最終釋放鎖。注意,除非明確說明,否則本文中描述或引用的任何內(nèi)容都不應(yīng)被視為本申請(qǐng)的現(xiàn)有技術(shù)。
圖1示出了一種這樣的現(xiàn)有手段,其示出了3個(gè)請(qǐng)求者如何請(qǐng)求和獲得對(duì)受保護(hù)數(shù)據(jù)的訪問。注意,如圖1所示,鎖管理器獨(dú)立于存儲(chǔ)機(jī)制,因?yàn)樗粡钠涔逃写鎯?chǔ)裝置訪問受鎖保護(hù)的數(shù)據(jù)。事實(shí)上,圖1的鎖管理器從不傳遞或處理受保護(hù)數(shù)據(jù)的值。
如圖所示,每個(gè)請(qǐng)求者都向鎖管理器發(fā)送請(qǐng)求,鎖管理器通過向請(qǐng)求者之一發(fā)送許可消息來提供到受保護(hù)數(shù)據(jù)的獨(dú)立訪問。然后,被許可的請(qǐng)求者讀受保護(hù)數(shù)據(jù),執(zhí)行其處理,將受保護(hù)數(shù)據(jù)寫回存儲(chǔ)器,然后發(fā)送釋放請(qǐng)求到鎖管理器,以指示它已經(jīng)完成了對(duì)受保護(hù)數(shù)據(jù)的處理。這一過程重復(fù)進(jìn)行,下一請(qǐng)求者被許可訪問數(shù)據(jù)。因此,在代碼臨界區(qū)中可能出現(xiàn)大量的等待時(shí)間,尤其是當(dāng)多個(gè)處理器在單個(gè)鎖隊(duì)列之后排隊(duì)時(shí)。對(duì)依賴于處理器單元中的緩存來提供臨時(shí)存儲(chǔ)和提供直接處理器間通信以便傳輸數(shù)據(jù)的處理器而言,也存在大量等待時(shí)間。
此外,一種已知系統(tǒng)包括I/O子系統(tǒng)中的鎖管理器,其允許消息包括加鎖和數(shù)據(jù)存儲(chǔ)請(qǐng)求。這允許I/O子系統(tǒng)中的請(qǐng)求者代理進(jìn)程接收具有鎖請(qǐng)求和I/O請(qǐng)求的消息。在響應(yīng)中,該代理進(jìn)程向鎖管理器請(qǐng)求鎖,并且響應(yīng)于許可,其進(jìn)行對(duì)應(yīng)于I/O請(qǐng)求及其固有存儲(chǔ)裝置的相應(yīng)I/O請(qǐng)求。當(dāng)受保護(hù)數(shù)據(jù)位于另一子系統(tǒng)中時(shí),該手段可減少一些消息和等待時(shí)間,但是響應(yīng)于每個(gè)許可,I/O固有存儲(chǔ)裝置仍會(huì)被訪問。
發(fā)明內(nèi)容
本發(fā)明公開了用于在加鎖消息中傳遞受保護(hù)數(shù)據(jù)的方法、設(shè)備、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)可讀介質(zhì)、機(jī)制和裝置等。使用鎖來保護(hù)數(shù)據(jù),受保護(hù)數(shù)據(jù)有時(shí)被包括在加鎖消息中,這可以減少整體處理等待時(shí)間,和/或減少訪問受保護(hù)數(shù)據(jù)的固有存儲(chǔ)裝置的帶寬需要和/或存儲(chǔ)操作數(shù)。例如,在一個(gè)實(shí)施例中,鎖管理器接收來自每個(gè)請(qǐng)求者的鎖請(qǐng)求,并選擇性地許可這些鎖請(qǐng)求。當(dāng)鎖被高度競(jìng)爭(zhēng)或至少有兩個(gè)訪問數(shù)據(jù)的請(qǐng)求未決時(shí),受保護(hù)數(shù)據(jù)一般在加鎖消息中被傳遞。鎖管理器通過在許可消息中指示請(qǐng)求者將受保護(hù)數(shù)據(jù)包括在其釋放消息中來發(fā)起序列。然后,鎖管理器把在釋放消息中接收到的該數(shù)據(jù)拷貝到其對(duì)下一請(qǐng)求者的許可消息中。雖然該操作可能需要鎖管理器臨時(shí)存儲(chǔ)接收到的包括受保護(hù)數(shù)據(jù)的釋放消息,但是它在等待例如接收下一請(qǐng)求時(shí)并不在本地緩存或存儲(chǔ)受保護(hù)數(shù)據(jù)。如果沒有其他請(qǐng)求者在等待,則許可消息包括對(duì)不發(fā)送受保護(hù)數(shù)據(jù)的指示,因此請(qǐng)求者一般將該受保護(hù)數(shù)據(jù)存儲(chǔ)在存儲(chǔ)裝置中,使其可在將來被訪問。
一個(gè)實(shí)施例包括被配置為控制經(jīng)由鎖對(duì)受保護(hù)數(shù)據(jù)的訪問的鎖管理器,所述受保護(hù)數(shù)據(jù)被維護(hù)在獨(dú)立于鎖管理器的固有存儲(chǔ)裝置中。鎖管理器不從固有存儲(chǔ)裝置訪問受保護(hù)數(shù)據(jù),而是將接收到的受保護(hù)數(shù)據(jù)拷貝到被發(fā)送到下一請(qǐng)求者的許可消息中。鎖管理器被配置為接收來自多個(gè)請(qǐng)求者的對(duì)鎖的鎖請(qǐng)求,選擇性地許可鎖請(qǐng)求,這包括從鎖管理器傳遞許可到多個(gè)請(qǐng)求者,并且至少一個(gè)被傳遞的許可包括受保護(hù)數(shù)據(jù)。
在一個(gè)實(shí)施例中,至少一個(gè)被傳遞的許可不包括受保護(hù)數(shù)據(jù)。在一個(gè)實(shí)施例中,每個(gè)被傳遞的許可都包括對(duì)受保護(hù)數(shù)據(jù)是否被一起傳遞的指示。在一個(gè)實(shí)施例中,每個(gè)被傳遞的許可都包括對(duì)受保護(hù)數(shù)據(jù)是否被請(qǐng)求利用相應(yīng)的鎖釋放被發(fā)送到鎖管理器的指示。在一個(gè)實(shí)施例中,每個(gè)鎖請(qǐng)求都包括對(duì)多個(gè)請(qǐng)求者中相應(yīng)的那一個(gè)是否將接受來自鎖管理器的受保護(hù)數(shù)據(jù)的指示。
一個(gè)實(shí)施例包括控制對(duì)維護(hù)在獨(dú)立于鎖管理器的固有存儲(chǔ)裝置中的受保護(hù)數(shù)據(jù)的訪問的鎖管理器。該鎖管理器不從固有存儲(chǔ)裝置訪問受保護(hù)數(shù)據(jù)。鎖管理器接收對(duì)用于控制對(duì)受保護(hù)數(shù)據(jù)的訪問的鎖釋放,其中接收到的釋放包括受保護(hù)數(shù)據(jù)。響應(yīng)于接收到鎖釋放,要被許可鎖的下一請(qǐng)求者被識(shí)別。受保護(hù)數(shù)據(jù)被從釋放拷貝到許可消息中,包括受保護(hù)數(shù)據(jù)的許可消息被發(fā)送到下一請(qǐng)求者。在一個(gè)實(shí)施例中,許可消息包括這樣的指示如果另一請(qǐng)求者正在等待鎖,則指示受保護(hù)數(shù)據(jù)被請(qǐng)求在與該許可消息相對(duì)應(yīng)的釋放消息中被發(fā)送到鎖管理器,否則指示受保護(hù)數(shù)據(jù)不被請(qǐng)求在釋放消息中被發(fā)送到鎖管理器。
一個(gè)實(shí)施例包括控制對(duì)維護(hù)在獨(dú)立于鎖管理器的固有存儲(chǔ)裝置中的受保護(hù)數(shù)據(jù)的訪問的鎖管理器。鎖管理器不從固有存儲(chǔ)裝置訪問受保護(hù)數(shù)據(jù)。鎖管理器接收來自第一請(qǐng)求者和第二請(qǐng)求者的對(duì)控制對(duì)受保護(hù)數(shù)據(jù)的訪問的鎖的鎖請(qǐng)求。鎖管理器發(fā)送不包括受保護(hù)數(shù)據(jù)的第一許可消息到第一請(qǐng)求者,并且響應(yīng)于識(shí)別出一個(gè)或多個(gè)請(qǐng)求者正在第一請(qǐng)求者之后等待鎖,對(duì)返回受保護(hù)數(shù)據(jù)的指示被包括在許可消息中。然后,對(duì)鎖的包括受保護(hù)數(shù)據(jù)的第一釋放消息從第一請(qǐng)求者被接收到。
在一個(gè)實(shí)施例中,第二許可消息被發(fā)送到第二請(qǐng)求者,其中第二許可消息包括受保護(hù)數(shù)據(jù)和對(duì)是否在第二釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示。在一個(gè)實(shí)施例中,響應(yīng)于識(shí)別出另一請(qǐng)求者正在等待訪問鎖,第二許可消息包括對(duì)在第二釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示。在一個(gè)實(shí)施例中,響應(yīng)于識(shí)別出另一請(qǐng)求者不在等待訪問鎖,第二許可消息包括對(duì)不在第二釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示。在一個(gè)實(shí)施例中,第二許可消息包括不在第二釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示,響應(yīng)于不在第二釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示,第二請(qǐng)求者存儲(chǔ)受保護(hù)數(shù)據(jù),并且不將受保護(hù)數(shù)據(jù)包括在第二釋放消息中。
所附權(quán)利要求具體列出了本發(fā)明的特征。結(jié)合附圖,從下面的詳細(xì)描述可最好地理解本發(fā)明及其優(yōu)點(diǎn),在附圖中圖1示出了用于使用鎖來保護(hù)對(duì)數(shù)據(jù)的訪問的現(xiàn)有手段;圖2示出了在一個(gè)實(shí)施例中使用的用于保護(hù)對(duì)數(shù)據(jù)的訪問的手段,其中受保護(hù)數(shù)據(jù)與加鎖消息結(jié)合起來傳遞;圖3示出了一個(gè)實(shí)施例中使用的加鎖消息;圖4A-B示出了一個(gè)實(shí)施例中使用的鎖管理器過程;圖4C示出了一個(gè)實(shí)施例中使用的請(qǐng)求者過程;以及圖5A示出了一個(gè)實(shí)施例的包括鎖管理器和多個(gè)請(qǐng)求者的系統(tǒng);以及圖5B示出了一個(gè)實(shí)施例中使用的用于實(shí)現(xiàn)鎖管理器和/或一個(gè)或多個(gè)請(qǐng)求者的系統(tǒng)或組件。
具體實(shí)施例方式
本發(fā)明公開了用于在加鎖消息中傳遞受保護(hù)數(shù)據(jù)的方法、設(shè)備、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)可讀介質(zhì)、機(jī)制和裝置等。
這里描述的實(shí)施例包括各種元素和限定,其中沒有任何元素或限定應(yīng)被認(rèn)為是必不可少的元素或限定。每個(gè)權(quán)利要求自身都記載了本發(fā)明的一個(gè)完整的方面。此外,所描述的一些實(shí)施例可能包括但不限于系統(tǒng)、網(wǎng)絡(luò)、集成電路芯片、嵌入式處理器、ASIC、方法和包含指令的計(jì)算機(jī)可讀介質(zhì)等。一個(gè)或多個(gè)系統(tǒng)、設(shè)備、組件等可包括一個(gè)或多個(gè)實(shí)施例,其可包括由相同或不同的系統(tǒng)、設(shè)備、組件等執(zhí)行的要求的一些元素或限定。下文描述的實(shí)施例體現(xiàn)了本發(fā)明的范圍和精神中的各個(gè)方面和配置,附圖示出了示例性和非限制性的配置。
在這里使用的術(shù)語“分組”是指所有類型的分組,或信息或數(shù)據(jù)的任何其他單元,包括但不限于固定長(zhǎng)度信元和可變長(zhǎng)度分組,其中的每一個(gè)都可以或不可以被分割為更小的分組或信元。這里使用的術(shù)語“分組”還指分組本身或分組指示,例如但不限于分組或分組頭部的全部或部分、數(shù)據(jù)結(jié)構(gòu)值、指針或索引,或者是分組的直接或間接標(biāo)識(shí)及其相關(guān)信息的任何其他部分。例如,路由器通常對(duì)分組的一個(gè)或多個(gè)字段(尤其是頭部)執(zhí)行操作,因此在分組頭部被操作時(shí),分組的主體常常存儲(chǔ)在獨(dú)立存儲(chǔ)器中,并且基于分組(在本例中是分組頭部)處理的結(jié)果,整個(gè)分組被轉(zhuǎn)發(fā)或丟棄,等等。此外,這些分組可能包含一種或多種信息,包括但不限于語音、數(shù)據(jù)、視頻和音頻信息。這里一般使用術(shù)語“項(xiàng)目”來指分組或任何其他信息或數(shù)據(jù)單元或段、設(shè)備、組件、元件或任何其他實(shí)體。短語“處理分組”和“分組處理”一般指基于分組內(nèi)容(例如分組頭部或其他字段)來執(zhí)行一些步驟或動(dòng)作,這些步驟或動(dòng)作可以也可以不包括修改、存儲(chǔ)、丟棄和/或轉(zhuǎn)發(fā)分組和/或相關(guān)數(shù)據(jù)。
術(shù)語“系統(tǒng)”在這里一般用來描述任何數(shù)量的組件、元件、子系統(tǒng)、設(shè)備、分組交換元件、分組交換機(jī)、路由器、網(wǎng)絡(luò)、計(jì)算機(jī)和/或通信設(shè)備或機(jī)制,或者是其多個(gè)組件的組合。術(shù)語“計(jì)算機(jī)”在這里一般用來描述任何數(shù)量的計(jì)算機(jī),包括但不限于個(gè)人計(jì)算機(jī)、嵌入式處理元件和系統(tǒng)、控制邏輯、ASIC、芯片、工作站、大型計(jì)算機(jī)等。術(shù)語“處理元件”在這里一般用來描述任何類型的處理機(jī)制或設(shè)備,例如處理器、ASIC、現(xiàn)場(chǎng)可編程門陣列、計(jì)算機(jī)等。術(shù)語“設(shè)備”在這里一般用來描述任何類型的機(jī)制,包括計(jì)算機(jī)或系統(tǒng)或其組件。術(shù)語“任務(wù)”和“過程”在這里一般用于描述任何類型的運(yùn)行程序,包括但不限于計(jì)算機(jī)進(jìn)程、任務(wù)、線程、執(zhí)行應(yīng)用、操作系統(tǒng)、用戶進(jìn)程、設(shè)備驅(qū)動(dòng)器、固有代碼、機(jī)器或其他語言等等,并且可以是交換和/或不交互的、本地和/或遠(yuǎn)程執(zhí)行的、在前臺(tái)和/或后臺(tái)執(zhí)行的、在用戶和/或操作系統(tǒng)地址空間中執(zhí)行的、庫例程和/或獨(dú)立應(yīng)用,并且不限于任何特定的存儲(chǔ)器分區(qū)技術(shù)。圖中示出的步驟、連接和信號(hào)及信息處理包括但不限于任何塊和流程圖和消息序列圖,并且一般可以相同或不同的串行或并行方式執(zhí)行,和/或由不同組件和/或進(jìn)程、線程等執(zhí)行,和/或通過不同的連接并結(jié)合其他實(shí)施例中的其他功能執(zhí)行,除非這使得實(shí)施例不能實(shí)現(xiàn),或者明確或明顯需要某個(gè)順序(例如對(duì)于讀值、處理值的順序來說,在處理值之前必須先獲取值,但是在讀操作之前、同時(shí)和/或之后也可執(zhí)行一些相關(guān)處理)。此外,術(shù)語“識(shí)別”一般用來描述用于直接或間接斷言某事的任何方式或機(jī)制,其可包括但不限于接收、從存儲(chǔ)器取得、確定、定義、計(jì)算、生成,等等。
此外,術(shù)語“網(wǎng)絡(luò)”和“通信機(jī)制”在這里一般用來描述一個(gè)或多個(gè)網(wǎng)絡(luò)、通信介質(zhì)或通信系統(tǒng),包括但不限于因特網(wǎng)、專用或公共電話、蜂窩電話、無線、衛(wèi)星、有線、局域、城域和/或廣域網(wǎng)、線纜、電連接、總線等等,以及諸如消息傳遞、進(jìn)程間通信、共享存儲(chǔ)器等內(nèi)部通信機(jī)制。術(shù)語“消息”在這里一般用來描述一段信息,其可能是也可能不是,但是一般是經(jīng)由一個(gè)或多個(gè)任何類型的通信機(jī)制傳遞的。
術(shù)語“存儲(chǔ)機(jī)制”包括任何類型的存儲(chǔ)器、存儲(chǔ)設(shè)備或用于以任何格式維護(hù)指令或數(shù)據(jù)的其他機(jī)制?!坝?jì)算機(jī)可讀介質(zhì)”是一個(gè)可擴(kuò)展術(shù)語,包括任何存儲(chǔ)器、存儲(chǔ)設(shè)備、存儲(chǔ)機(jī)制和其他存儲(chǔ)和信令機(jī)制,包括諸如網(wǎng)絡(luò)接口卡和其中的緩沖器等接口和設(shè)備,以及任何通信設(shè)備和被發(fā)送接收的信令,以及計(jì)算機(jī)化的系統(tǒng)可翻譯、接收和/或發(fā)送的其他當(dāng)前和發(fā)展中的技術(shù)。術(shù)語“存儲(chǔ)器”包括任何隨機(jī)訪問存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、閃存、集成電路,和/或其他存儲(chǔ)器組件或元件。術(shù)語“存儲(chǔ)設(shè)備”包括任何固態(tài)存儲(chǔ)介質(zhì)、盤驅(qū)動(dòng)器、磁盤、聯(lián)網(wǎng)服務(wù)、磁帶驅(qū)動(dòng)器和其他存儲(chǔ)設(shè)備。存儲(chǔ)器和存儲(chǔ)設(shè)備可存儲(chǔ)要由處理元件和/或控制邏輯執(zhí)行的計(jì)算機(jī)可讀指令,以及由處理元件和/或控制邏輯操縱的數(shù)據(jù)。術(shù)語“數(shù)據(jù)結(jié)構(gòu)”是一個(gè)可擴(kuò)展術(shù)語,指任何數(shù)據(jù)元素、變量、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫,和/或可被應(yīng)用于數(shù)據(jù)以便輔助翻譯數(shù)據(jù)或?qū)ζ鋱?zhí)行操作的一個(gè)或多個(gè)組織機(jī)制,例如但不限于存儲(chǔ)器位置或設(shè)備、集合、隊(duì)列、樹、堆、列表、鏈表、數(shù)組、表、指針,等等。數(shù)據(jù)結(jié)構(gòu)一般被維護(hù)在存儲(chǔ)機(jī)制中。術(shù)語“指針”和“鏈接”在這里一般用來指用于引用或標(biāo)識(shí)其他元件、組件或?qū)嶓w的某些機(jī)制,可包括但不限于引用存儲(chǔ)器或其他存儲(chǔ)機(jī)制或其中的位置、數(shù)據(jù)結(jié)構(gòu)中的索引、值,等等。
術(shù)語“一個(gè)實(shí)施例”在這里用于引用特定實(shí)施例,其中每次提到“一個(gè)實(shí)施例”時(shí)可能是指不同的實(shí)施例,在這里描述相關(guān)特征、元件和/或限定時(shí)重復(fù)使用該術(shù)語并不建立每個(gè)實(shí)施例都必須包括的相關(guān)特征、元件和/或限制的累積集合,但是一個(gè)實(shí)施例一般可包括所有這些特征、元件和/或限定。此外,短語“用于xxx的裝置”一般包括包含用于執(zhí)行xxx的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
此外,術(shù)語“第一”、“第二”等在這里一般用來指不同的單元(例如第一元件、第二元件)。在這里使用這些術(shù)語不一定是意味著某種順序,例如一個(gè)單元或事件發(fā)生或出現(xiàn)在另一個(gè)之前,而是提供了一種區(qū)分特定元件的機(jī)制。此外,對(duì)名詞單數(shù)的使用是非限制性的,其使用一般包括一個(gè)或多個(gè)特定對(duì)象,而非僅僅一個(gè)(例如使用“存儲(chǔ)器”一詞一般是指一個(gè)或多個(gè)存儲(chǔ)器,而無需指定“一個(gè)或多個(gè)存儲(chǔ)器”或“至少一個(gè)存儲(chǔ)器”等)。此外,短語“基于x”和“響應(yīng)于x”用來指引起或?qū)е履呈碌捻?xiàng)目x的最小集合,其中“x”是可擴(kuò)展的,而且不一定描述被執(zhí)行操作的項(xiàng)目的完整列表。此外,短語“耦合到”用來指兩個(gè)元件或設(shè)備之間某種級(jí)別的直接或間接連接,并且耦合的一個(gè)或多個(gè)設(shè)備修改或不修改被耦合的信號(hào)或被傳遞的信息。術(shù)語“子集”用來指一個(gè)集合的所有元素全體或其中的一些的群組。術(shù)語“子樹”用來指樹的全部或部分。此外,術(shù)語“或”在這里用來指對(duì)相關(guān)項(xiàng)目中的一個(gè)或多個(gè)(包括全部)的選擇。此外,過渡性術(shù)語“包括”是“含有”、“包含”或“特征在于”的同義詞,它可以是封閉式的也可以是開放式的,而且不排除額外的、未記載的元件或方法步驟。
鎖可以用于很多目的。例如,Williams等人于2003年11月12日提交的題為“Using Ordered Locking Mechanisms to Maintain Sequences of ItemsSuch as Packets”的美國(guó)專利申請(qǐng)10/706,704中描述了鎖的一種應(yīng)用,該申請(qǐng)通過引用結(jié)合于此。
本發(fā)明公開了用于在加鎖消息中傳遞受保護(hù)數(shù)據(jù)的方法、設(shè)備、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)可讀介質(zhì)、機(jī)制和裝置等。使用鎖來保護(hù)數(shù)據(jù),受保護(hù)數(shù)據(jù)有時(shí)被包括在加鎖消息中,這可以減少整體處理等待時(shí)間,和/或減少訪問受保護(hù)數(shù)據(jù)的固有存儲(chǔ)裝置的帶寬需要和/或存儲(chǔ)操作數(shù)。例如,在一個(gè)實(shí)施例中,鎖管理器接收來自每個(gè)請(qǐng)求者的鎖請(qǐng)求,并選擇性地許可這些鎖請(qǐng)求。當(dāng)鎖被高度競(jìng)爭(zhēng)或至少有兩個(gè)訪問數(shù)據(jù)的請(qǐng)求未決時(shí),受保護(hù)數(shù)據(jù)一般在加鎖消息中被傳遞。鎖管理器通過在許可消息中指示請(qǐng)求者將受保護(hù)數(shù)據(jù)包括在其釋放消息中來發(fā)起序列。然后,鎖管理器把在釋放消息中接收到的該數(shù)據(jù)拷貝到其對(duì)下一請(qǐng)求者的許可消息中。雖然該操作可能需要鎖管理器臨時(shí)存儲(chǔ)接收到的包括受保護(hù)數(shù)據(jù)的釋放消息,但是它在等待例如接收下一請(qǐng)求時(shí)并不在本地緩存或存儲(chǔ)受保護(hù)數(shù)據(jù)。如果沒有其他請(qǐng)求者在等待,則許可消息包括不發(fā)送受保護(hù)數(shù)據(jù)的指示,因此請(qǐng)求者一般將該受保護(hù)數(shù)據(jù)存儲(chǔ)在存儲(chǔ)裝置中,使其可在將來被訪問。
一個(gè)實(shí)施例包括被配置為控制經(jīng)由鎖對(duì)受保護(hù)數(shù)據(jù)的訪問的鎖管理器,所述受保護(hù)數(shù)據(jù)被維護(hù)在獨(dú)立于鎖管理器的固有存儲(chǔ)裝置中。鎖管理器不從固有存儲(chǔ)裝置訪問受保護(hù)數(shù)據(jù),而是將接收到的受保護(hù)數(shù)據(jù)拷貝到被發(fā)送到下一請(qǐng)求者的許可消息中。鎖管理器被配置為接收來自多個(gè)請(qǐng)求者的對(duì)鎖的鎖請(qǐng)求,選擇性地許可鎖請(qǐng)求,這包括從鎖管理器傳遞許可到多個(gè)請(qǐng)求者,并且至少一個(gè)被傳遞的許可包括受保護(hù)數(shù)據(jù)。
在一個(gè)實(shí)施例中,至少一個(gè)被傳遞的許可不包括受保護(hù)數(shù)據(jù)。在一個(gè)實(shí)施例中,每個(gè)被傳遞的許可都包括對(duì)受保護(hù)數(shù)據(jù)是否被一起傳遞的指示。在一個(gè)實(shí)施例中,每個(gè)被傳遞的許可都包括對(duì)受保護(hù)數(shù)據(jù)是否被請(qǐng)求利用相應(yīng)的鎖釋放被發(fā)送到鎖管理器的指示。在一個(gè)實(shí)施例中,每個(gè)鎖請(qǐng)求都包括對(duì)多個(gè)請(qǐng)求者中相應(yīng)的那一個(gè)是否將接受來自鎖管理器的受保護(hù)數(shù)據(jù)的指示。
一個(gè)實(shí)施例包括控制對(duì)維護(hù)在獨(dú)立于鎖管理器的固有存儲(chǔ)裝置中的受保護(hù)數(shù)據(jù)的訪問的鎖管理器。該鎖管理器不從固有存儲(chǔ)裝置訪問受保護(hù)數(shù)據(jù)。鎖管理器接收對(duì)用于控制對(duì)受保護(hù)數(shù)據(jù)的訪問的鎖釋放,其中接收到的釋放包括受保護(hù)數(shù)據(jù)。響應(yīng)于接收到鎖釋放,要被許可鎖的下一請(qǐng)求者被識(shí)別。受保護(hù)數(shù)據(jù)被從釋放拷貝到許可消息中,包括受保護(hù)數(shù)據(jù)的許可消息被發(fā)送到下一請(qǐng)求者。在一個(gè)實(shí)施例中,許可消息包括這樣的指示如果另一請(qǐng)求者正在等待鎖,則指示受保護(hù)數(shù)據(jù)被請(qǐng)求在與該許可消息相對(duì)應(yīng)的釋放消息中被發(fā)送到鎖管理器,否則指示受保護(hù)數(shù)據(jù)不被請(qǐng)求在釋放消息中被發(fā)送到鎖管理器。
一個(gè)實(shí)施例包括控制對(duì)維護(hù)在獨(dú)立于鎖管理器的固有存儲(chǔ)裝置中的受保護(hù)數(shù)據(jù)的訪問的鎖管理器。鎖管理器不從固有存儲(chǔ)裝置訪問受保護(hù)數(shù)據(jù)。鎖管理器接收來自第一請(qǐng)求者和第二請(qǐng)求者的對(duì)控制對(duì)受保護(hù)數(shù)據(jù)的訪問的鎖的鎖請(qǐng)求。鎖管理器發(fā)送不包括受保護(hù)數(shù)據(jù)的第一許可消息到第一請(qǐng)求者,并且響應(yīng)于識(shí)別出一個(gè)或多個(gè)請(qǐng)求者正在第一請(qǐng)求者之后等待鎖,對(duì)返回受保護(hù)數(shù)據(jù)的指示被包括在許可消息中。然后,鎖的包括受保護(hù)數(shù)據(jù)的第一釋放消息從第一請(qǐng)求者被接收到。
在一個(gè)實(shí)施例中,第二許可消息被發(fā)送到第二請(qǐng)求者,其中第二許可消息包括受保護(hù)數(shù)據(jù)和對(duì)是否在第二釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示。在一個(gè)實(shí)施例中,響應(yīng)于識(shí)別出另一請(qǐng)求者正在等待訪問鎖,第二許可消息包括對(duì)在第二釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示。在一個(gè)實(shí)施例中,響應(yīng)于識(shí)別出沒有另一請(qǐng)求者正在等待訪問鎖,第二許可消息包括對(duì)不在第二釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示。在一個(gè)實(shí)施例中,第二許可消息包括不在第二釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示,響應(yīng)于不在第二釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示,第二請(qǐng)求者存儲(chǔ)受保護(hù)數(shù)據(jù),并且不將受保護(hù)數(shù)據(jù)包括在第二釋放消息中。
一個(gè)實(shí)施例提供了通過連接到很多處理器的鎖機(jī)制的間接進(jìn)程間通信繞行通道。這些處理器一般通過共享的全局存儲(chǔ)器進(jìn)行通信,并且使用鎖來實(shí)現(xiàn)一致性。在某些條件下,數(shù)據(jù)可通過加鎖消息傳送,而不必通過共享的全局存儲(chǔ)器。通過鎖機(jī)制,數(shù)據(jù)可被捎帶應(yīng)答到鎖釋放消息,并且可被捎帶應(yīng)答到鎖許可消息。數(shù)據(jù)不在鎖機(jī)制中存儲(chǔ)很長(zhǎng)時(shí)間。加鎖消息一般包括用于指示何時(shí)條件適于使用繞行通道的控制信號(hào)。這實(shí)現(xiàn)了可能要被繞過的共享存儲(chǔ)器位置的一致性。
當(dāng)要求將數(shù)據(jù)捎帶應(yīng)答到加鎖消息時(shí),繞行通道可以與加鎖消息通道串行或并行,只要存在加鎖消息到繞行數(shù)據(jù)的強(qiáng)綁定即可。在一個(gè)實(shí)施例中,當(dāng)請(qǐng)求鎖時(shí),請(qǐng)求消息包括是否希望通過繞行通道接受數(shù)據(jù)的指示。當(dāng)鎖被最終許可時(shí),許可消息指示它在繞行通道中是否有數(shù)據(jù),以及在鎖隊(duì)列中在它之后是否有希望通過繞行通道接受數(shù)據(jù)的條目。如果許可指示繞行通道中存在數(shù)據(jù),則臨界區(qū)可跳過讀全局共享存儲(chǔ)器位置,而是使用來自繞行通道的數(shù)據(jù)。
如果許可指示鎖隊(duì)列中的下一條目希望接受來自繞行通道的數(shù)據(jù),則代碼臨界區(qū)可跳過寫全局共享存儲(chǔ)器位置,并通過繞行通道來發(fā)送數(shù)據(jù)。代碼臨界區(qū)可以總是通過繞行通道來發(fā)送數(shù)據(jù),希望鎖隊(duì)列中的新來者可使用該數(shù)據(jù),但是如果它不是很確定的話,它必須首先寫全局共享存儲(chǔ)器。當(dāng)鎖被釋放時(shí),在釋放消息中作出繞行通道中是否有數(shù)據(jù)的指示。在鎖機(jī)制中,繞行通道中的數(shù)據(jù)一般不被存儲(chǔ)在存儲(chǔ)器中,相反,它僅從釋放消息被拷貝(可能使用臨時(shí)存儲(chǔ)位置或檢測(cè)器)并被附加到后續(xù)的許可消息。
返回附圖,圖2示出了在一個(gè)實(shí)施例中用來保護(hù)對(duì)數(shù)據(jù)的訪問的手段,其中受保護(hù)數(shù)據(jù)與加鎖消息被結(jié)合起來傳遞。鎖管理器200接收來自請(qǐng)求者-A 204、請(qǐng)求者-B 206和請(qǐng)求者-C 208的鎖請(qǐng)求211-213。注意,鎖管理器200獨(dú)立于存儲(chǔ)機(jī)制/受保護(hù)數(shù)據(jù)202,因?yàn)樗粡钠涔逃写鎯?chǔ)裝置訪問存儲(chǔ)的受鎖保護(hù)數(shù)據(jù)202,如圖2所示。
這種鎖請(qǐng)求的一個(gè)示例是圖3所示的鎖請(qǐng)求消息300。如圖所示,請(qǐng)求消息300包括關(guān)于哪個(gè)鎖被請(qǐng)求的指示301、請(qǐng)求者標(biāo)識(shí)302,以及關(guān)于請(qǐng)求者是否支持加鎖消息中的受保護(hù)數(shù)據(jù)的指示303。當(dāng)然,一個(gè)實(shí)施例使用另一通信機(jī)制和/或值301-303中的一些、全部或不使用值301-303。此外,對(duì)某些字段示出的位數(shù)僅是示例性的。
為了說明,圖2的描述將假設(shè)所有請(qǐng)求者將總是支持加鎖消息中的受保護(hù)數(shù)據(jù)(因此不需要指示303)。在一個(gè)實(shí)施例中,當(dāng)所有請(qǐng)求者不總是支持在加鎖消息中傳遞受保護(hù)數(shù)據(jù)時(shí),鎖管理器200將僅在下一請(qǐng)求者支持時(shí)才請(qǐng)求受保護(hù)數(shù)據(jù),并將受保護(hù)數(shù)據(jù)在加鎖消息中提供給支持的請(qǐng)求者。
圖3還示出了在一個(gè)實(shí)施例中使用的許可消息310,以及在一個(gè)實(shí)施例中使用的釋放消息320。如圖所示,許可消息310包括標(biāo)識(shí)鎖的鎖標(biāo)識(shí)311、用于包括受保護(hù)數(shù)據(jù)的字段312、關(guān)于字段312是否被填充以受保護(hù)數(shù)據(jù)的指示313,以及關(guān)于是否作出繞開固有存儲(chǔ)裝置以獲得受保護(hù)數(shù)據(jù)的顯式請(qǐng)求的指示314。
在一個(gè)實(shí)施例中,如果設(shè)置了固有存儲(chǔ)裝置繞過請(qǐng)求,則請(qǐng)求者必須在相應(yīng)的釋放消息中返回受保護(hù)數(shù)據(jù)的最近值,在發(fā)送釋放之前,請(qǐng)求者可能或可能沒把受保護(hù)數(shù)據(jù)存儲(chǔ)在其固有存儲(chǔ)裝置中(即固有存儲(chǔ)裝置中的受保護(hù)數(shù)據(jù)可能是也可能不是最近的值)。如果固有存儲(chǔ)裝置繞過請(qǐng)求指示未被設(shè)置,則請(qǐng)求者必須在發(fā)送釋放之前將受保護(hù)數(shù)據(jù)的最近值存儲(chǔ)在其固有存儲(chǔ)裝置中,釋放可能包括也可能不包括受保護(hù)數(shù)據(jù)的值,如果它包括這樣的值,它就是受保護(hù)數(shù)據(jù)的最近值。在這種情況下,將值存儲(chǔ)在固有存儲(chǔ)裝置中是很重要的,因?yàn)殒i管理器在等待下一請(qǐng)求者時(shí)將不緩存、向固有存儲(chǔ)裝置寫或維護(hù)受保護(hù)數(shù)據(jù)的值。如果請(qǐng)求者在接收到包含受保護(hù)數(shù)據(jù)的釋放消息時(shí)不是正在等待,則鎖管理器丟棄受保護(hù)數(shù)據(jù),因此下一請(qǐng)求者將需要從固有存儲(chǔ)裝置獲取受保護(hù)數(shù)據(jù)。
當(dāng)?shù)芥i管理器的帶寬不成問題或者用于受保護(hù)數(shù)據(jù)的位字段總被分配和發(fā)送從而它也可被填充以受保護(hù)數(shù)據(jù)時(shí),任選地或總是在釋放消息中發(fā)送受保護(hù)數(shù)據(jù)可能是特別有用的。因此,如果鎖管理器接收到包括受保護(hù)數(shù)據(jù)的釋放消息,則它知道它可以將受保護(hù)數(shù)據(jù)發(fā)送到下一請(qǐng)求者,因?yàn)樗ㄊ鼙Wo(hù)數(shù)據(jù)的最近值。如果在許可時(shí)沒有其他請(qǐng)求者正在等待鎖(因此對(duì)返回受保護(hù)數(shù)據(jù)的請(qǐng)求一般不被包括在許可消息中),而當(dāng)接收到任選地包括受保護(hù)數(shù)據(jù)的釋放消息時(shí)請(qǐng)求者正在等待鎖,這可能是特別有用的。在此情形下,等待的請(qǐng)求者可接收受保護(hù)數(shù)據(jù),而不必從受保護(hù)數(shù)據(jù)的固有存儲(chǔ)位置獲取它。
圖3還示出了釋放消息320,其包括標(biāo)識(shí)鎖的鎖指示321、用于包括受保護(hù)數(shù)據(jù)的字段322、關(guān)于字段322是否被填充以受保護(hù)數(shù)據(jù)的指示323。當(dāng)然,在保持本發(fā)明的范圍和精神的情況下,實(shí)施例也可使用很多不同的消息、消息中的字段,以及這些消息和字段的語義。
返回圖2所示的處理,鎖管理器200(一般根據(jù)接收順序)選擇接收到的鎖請(qǐng)求之一,并在接收到鎖釋放之前將其他請(qǐng)求排隊(duì)。為了說明,鎖管理器200將依次處理鎖請(qǐng)求211、212和213。
響應(yīng)于鎖請(qǐng)求211,鎖管理器200準(zhǔn)備和發(fā)送(211)許可到請(qǐng)求者-A204。響應(yīng)于一個(gè)或多個(gè)未決的其他鎖請(qǐng)求,鎖管理器200將對(duì)把受保護(hù)數(shù)據(jù)包括在相應(yīng)的釋放消息中的指示(例如對(duì)繞過固有存儲(chǔ)裝置的主動(dòng)請(qǐng)求)包括在許可中。響應(yīng)于該許可,請(qǐng)求者-A 204一般從一般對(duì)于所有請(qǐng)求者204-208都可用的共享存儲(chǔ)器讀(222)和接收(223)受鎖保護(hù)數(shù)據(jù)202。在完成對(duì)受保護(hù)數(shù)據(jù)的處理之后,請(qǐng)求者-A 204響應(yīng)于對(duì)把受保護(hù)數(shù)據(jù)包括在釋放消息中的請(qǐng)求,向鎖管理器200傳遞(225)具有受保護(hù)數(shù)據(jù)的最近值的鎖釋放。
響應(yīng)于接收到鎖釋放和受保護(hù)數(shù)據(jù),鎖管理器200準(zhǔn)備包括從接收到的釋放拷貝的接收到的受保護(hù)數(shù)據(jù)的許可,并發(fā)送(231)許可到請(qǐng)求者-B 206。響應(yīng)于一個(gè)或多個(gè)未決的其他鎖請(qǐng)求,鎖管理器200還將對(duì)把受保護(hù)數(shù)據(jù)包括在相應(yīng)的釋放消息中的指示包括在許可中。響應(yīng)于該許可,請(qǐng)求者-B 206基于在許可消息中接收到的受保護(hù)數(shù)據(jù)進(jìn)行處理(232)。注意,它不需要讀存儲(chǔ)的受鎖保護(hù)數(shù)據(jù)202,因?yàn)槠渥罱当话ㄔ谠S可中。此外注意,至少在一個(gè)實(shí)施例中,受保護(hù)數(shù)據(jù)的當(dāng)前值可以不同于存儲(chǔ)的受鎖保護(hù)數(shù)據(jù)202的值。在完成對(duì)受保護(hù)數(shù)據(jù)的處理之后,請(qǐng)求者-B206響應(yīng)于對(duì)把受保護(hù)數(shù)據(jù)包括在釋放消息中的請(qǐng)求,向鎖管理器200傳遞(233)具有受保護(hù)數(shù)據(jù)的最近值的鎖釋放。
響應(yīng)于接收到鎖釋放和受保護(hù)數(shù)據(jù),鎖管理器200準(zhǔn)備包括從接收到的釋放拷貝的接收到的受保護(hù)數(shù)據(jù)的許可,并發(fā)送(241)許可到請(qǐng)求者-C 208。響應(yīng)于沒有未決的鎖請(qǐng)求,鎖管理器200還將對(duì)把保護(hù)數(shù)據(jù)必須被寫入其固有存儲(chǔ)裝置中(例如并且受保護(hù)數(shù)據(jù)可以或可以不包括在相應(yīng)的釋放消息中)的指示(例如對(duì)繞過固有存儲(chǔ)裝置的非主動(dòng)請(qǐng)求)包括在對(duì)該受保護(hù)數(shù)據(jù)的許可中。響應(yīng)于該許可,請(qǐng)求者-C 208基于在許可消息中接收到的受保護(hù)數(shù)據(jù)進(jìn)行處理(242)。注意,它不需要讀存儲(chǔ)的受鎖保護(hù)數(shù)據(jù)202,因?yàn)槠渥罱当话ㄔ谠S可中。在完成對(duì)受保護(hù)數(shù)據(jù)的處理之后,請(qǐng)求者-C 208響應(yīng)于對(duì)不把受保護(hù)數(shù)據(jù)包括在釋放消息中的請(qǐng)求,將受保護(hù)數(shù)據(jù)的當(dāng)前值寫(243)到存儲(chǔ)的受鎖保護(hù)數(shù)據(jù)202,并向鎖管理器200傳遞(244)可能沒有受保護(hù)數(shù)據(jù)的最近值的鎖釋放。
圖4A-B示出了在一個(gè)實(shí)施例中使用的鎖管理器過程。先看圖4A,過程開始于過程塊400,并進(jìn)行到過程塊402,接收鎖請(qǐng)求。在過程塊404確定如果鎖處于鎖定狀態(tài),則在過程塊408,鎖請(qǐng)求被排隊(duì)。否則在過程塊406,許可被傳遞到請(qǐng)求者,并且鎖被標(biāo)記為處于鎖定狀態(tài)。過程在過程塊410處結(jié)束。
圖4B的流程圖的過程開始于過程塊420,并進(jìn)行到過程塊422,接收鎖釋放。在過程塊424確定如果沒有未決的請(qǐng)求,則在過程塊426,鎖被標(biāo)記為處于未鎖定狀態(tài);過程在過程塊444處結(jié)束。
否則,在過程塊428,(一般從鎖隊(duì)列的頭部或基于某些其他方法)識(shí)別對(duì)許可的下一鎖請(qǐng)求。在過程塊430確定如果沒有另一未決請(qǐng)求,則在過程塊432,設(shè)置對(duì)在相應(yīng)的釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示(即繞過固有存儲(chǔ)裝置請(qǐng)求指示);否則在過程塊434清除這一指示。
在過程塊436確定如果在接收到的鎖釋放中接收到受保護(hù)數(shù)據(jù),則在過程塊438,受保護(hù)數(shù)據(jù)被從接收到的釋放消息拷貝到許可消息,并且設(shè)置對(duì)受保護(hù)數(shù)據(jù)被包括在許可消息中的指示。否則,在過程塊440,一般在許可消息中包括對(duì)受保護(hù)數(shù)據(jù)沒有被傳遞的指示。在過程塊442,許可消息被發(fā)送到識(shí)別出的下一鎖請(qǐng)求者,過程在過程塊444處結(jié)束。
圖4C示出了一個(gè)實(shí)施例中使用的請(qǐng)求者過程。過程開始于過程塊450,并進(jìn)行到過程塊452,接收許可。在過程塊454處確定如果包括受保護(hù)數(shù)據(jù),則在過程塊456處基于接收到的受保護(hù)數(shù)據(jù)執(zhí)行處理。否則,在過程塊458處,從存儲(chǔ)裝置獲取受保護(hù)數(shù)據(jù),并基于獲取的受保護(hù)數(shù)據(jù)執(zhí)行處理。
在對(duì)受保護(hù)數(shù)據(jù)的處理完成后,在過程塊460確定如果接收到的許可指示要繞過固有存儲(chǔ)裝置,則過程進(jìn)行到過程塊468。否則在過程塊462,受保護(hù)數(shù)據(jù)的最近值被存儲(chǔ)在其固有存儲(chǔ)位置。在過程塊464確定如果受保護(hù)數(shù)據(jù)要被包括在釋放中(例如它總是或基于某些判決結(jié)果而被任選地包括),則過程進(jìn)行到過程塊468。否則,在過程塊466,沒有受保護(hù)數(shù)據(jù)的釋放消息被發(fā)送到鎖管理器。在過程塊468,包括受保護(hù)數(shù)據(jù)的最近值的釋放消息被發(fā)送到鎖管理器。過程在過程塊469處結(jié)束。
圖5A示出了包括一個(gè)實(shí)施例中的鎖管理器501和多個(gè)請(qǐng)求者511-519的系統(tǒng)。圖5A示出了可被應(yīng)用于應(yīng)用的本發(fā)明一個(gè)實(shí)施例的可擴(kuò)展本質(zhì)。鎖管理器501和多個(gè)請(qǐng)求者511-519可以是過程、獨(dú)立處理元件,或一個(gè)或多個(gè)系統(tǒng)、元件或組件中的任何其他處理機(jī)制或?qū)嶓w。如圖所示,鎖管理器501經(jīng)由通信機(jī)制509與多個(gè)請(qǐng)求者511-519可通信地耦合,多個(gè)請(qǐng)求者511-519還可通信地耦合到用于存儲(chǔ)受保護(hù)數(shù)據(jù)和/或其他資源的機(jī)制502。
圖5B示出了在一個(gè)實(shí)施例中使用的用于實(shí)現(xiàn)鎖管理器和/或一個(gè)或多個(gè)請(qǐng)求者的系統(tǒng)或組件。在一個(gè)實(shí)施例中,系統(tǒng)或組件540執(zhí)行與圖示的或這里描述的流程圖中的一個(gè)相對(duì)應(yīng)的一個(gè)或多個(gè)過程。例如,在一個(gè)實(shí)施例中,鎖管理器和請(qǐng)求者是運(yùn)行在處理元件541上的進(jìn)程,存儲(chǔ)器542用于在受保護(hù)數(shù)據(jù)未用加鎖消息傳遞時(shí)存儲(chǔ)受保護(hù)數(shù)據(jù)。
在一個(gè)實(shí)施例中,系統(tǒng)或組件540包括處理元件541、存儲(chǔ)器542、存儲(chǔ)設(shè)備543,以及用于發(fā)送和接收分組、項(xiàng)目、和/或其他信息的接口544,它們一般經(jīng)由一個(gè)或多個(gè)通信機(jī)制549(為了說明目的,示為總線)來耦合。組件540的各個(gè)實(shí)施例可包括更多或更少元件。組件540的操作一般由處理元件541使用存儲(chǔ)器542和存儲(chǔ)設(shè)備543來控制,以執(zhí)行一個(gè)或多個(gè)任務(wù)或過程。存儲(chǔ)器542是一種計(jì)算機(jī)可讀介質(zhì),一般包括隨機(jī)訪問存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、閃存、集成電路、和/或其他存儲(chǔ)器組件。存儲(chǔ)器542一般存儲(chǔ)要由處理元件541執(zhí)行的計(jì)算機(jī)可執(zhí)行指令,和/或由處理元件541操縱的數(shù)據(jù),用于實(shí)現(xiàn)根據(jù)實(shí)施例的功能。存儲(chǔ)設(shè)備543是另一種計(jì)算機(jī)可讀介質(zhì),一般包括固態(tài)存儲(chǔ)介質(zhì)、盤驅(qū)動(dòng)器、磁盤、聯(lián)網(wǎng)服務(wù)、磁帶驅(qū)動(dòng)器和其他存儲(chǔ)設(shè)備。存儲(chǔ)設(shè)備543一般存儲(chǔ)要由處理元件541執(zhí)行的計(jì)算機(jī)可執(zhí)行指令,和/或由處理元件541操縱的數(shù)據(jù),用于實(shí)現(xiàn)根據(jù)實(shí)施例的功能。
通過可應(yīng)用本發(fā)明原理的多個(gè)可能的實(shí)施例,應(yīng)當(dāng)理解這里參考附圖描述的實(shí)施例和方面僅是說明性的,而不應(yīng)被理解為限制本發(fā)明的范圍。例如,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,很多過程塊操作都可以被重新排序,以便在其他操作之前、之后或基本并發(fā)地被執(zhí)行。此外,在各個(gè)實(shí)施例中可使用很多不同形式的數(shù)據(jù)結(jié)構(gòu)。這里描述的本發(fā)明包括落在所附權(quán)利要求及其等同物的范圍內(nèi)的所有這些實(shí)施例。
權(quán)利要求
1.一種使用鎖來保護(hù)數(shù)據(jù)的裝置,該裝置包括鎖管理器,該鎖管理器被配置為控制利用鎖對(duì)維護(hù)在獨(dú)立于所述鎖管理器的固有存儲(chǔ)裝置中的受保護(hù)數(shù)據(jù)的訪問,其中所述鎖管理器不從所述固有存儲(chǔ)裝置訪問所述受保護(hù)數(shù)據(jù);以及多個(gè)請(qǐng)求者;其中所述鎖管理器被配置為從所述多個(gè)請(qǐng)求者中的每一個(gè)接收對(duì)鎖的鎖請(qǐng)求,并選擇性地許可所述鎖請(qǐng)求,包括將許可從所述鎖管理器傳遞到所述多個(gè)請(qǐng)求者,其中被傳遞的許可中的至少一個(gè)包括所述受保護(hù)數(shù)據(jù)。
2.如權(quán)利要求1所述的裝置,其中所述被傳遞的許可中的至少一個(gè)不包括所述受保護(hù)數(shù)據(jù)。
3.如權(quán)利要求1所述的裝置,其中所述被傳遞的許可中的每一個(gè)都包括對(duì)所述受保護(hù)數(shù)據(jù)是否被一起傳遞的指示。
4.如權(quán)利要求1所述的裝置,其中所述被傳遞的許可中的每一個(gè)都包括對(duì)所述受保護(hù)數(shù)據(jù)是否被請(qǐng)求利用相應(yīng)的鎖釋放被發(fā)送到所述鎖管理器的指示。
5.如權(quán)利要求1所述的裝置,其中所述被傳遞的許可中的每一個(gè)都包括對(duì)所述多個(gè)請(qǐng)求者中相應(yīng)的一個(gè)是否將接受來自所述鎖管理器的所述受保護(hù)數(shù)據(jù)的指示。
6.一種由控制對(duì)維護(hù)在獨(dú)立于鎖管理器的固有存儲(chǔ)裝置中的受保護(hù)數(shù)據(jù)的訪問的鎖管理器執(zhí)行的方法,其中所述鎖管理器不從所述固有存儲(chǔ)裝置訪問所述受保護(hù)數(shù)據(jù),所述方法包括接收用在控制對(duì)所述受保護(hù)數(shù)據(jù)的訪問的鎖釋放,所述釋放包括所述受保護(hù)數(shù)據(jù);響應(yīng)于所述接收鎖釋放,識(shí)別要被許可鎖的下一請(qǐng)求者;將所述受保護(hù)數(shù)據(jù)從所述釋放拷貝到許可消息中;以及將所述許可消息發(fā)送到所述下一請(qǐng)求者,所述許可消息包括所述受保護(hù)數(shù)據(jù)。
7.如權(quán)利要求6所述的方法,其中所述許可消息包括這樣的指示如果另一請(qǐng)求者正在等待鎖,則指示所述受保護(hù)數(shù)據(jù)被請(qǐng)求在與所述許可消息相對(duì)應(yīng)的釋放消息中被發(fā)送到所述鎖管理器,否則指示所述受保護(hù)數(shù)據(jù)不被請(qǐng)求在釋放消息中被發(fā)送到所述鎖管理器。
8.一種包含計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述指令用于由控制對(duì)維護(hù)在獨(dú)立于鎖管理器的固有存儲(chǔ)裝置中的受保護(hù)數(shù)據(jù)的訪問的鎖管理器來執(zhí)行以下步驟,其中所述鎖管理器不從所述固有存儲(chǔ)裝置訪問所述受保護(hù)數(shù)據(jù),所述步驟包括接收用在控制對(duì)所述受保護(hù)數(shù)據(jù)的訪問的鎖釋放,所述釋放包括所述受保護(hù)數(shù)據(jù);響應(yīng)于所述接收鎖釋放,識(shí)別要被許可鎖的下一請(qǐng)求者;將所述受保護(hù)數(shù)據(jù)從所述釋放拷貝到許可消息;以及將所述許可消息發(fā)送到所述下一請(qǐng)求者,所述許可消息包括所述受保護(hù)數(shù)據(jù)。
9.如權(quán)利要求8所述的計(jì)算機(jī)可讀介質(zhì),其中所述許可消息包括這樣的指示如果另一請(qǐng)求者正在等待鎖,則指示所述受保護(hù)數(shù)據(jù)被請(qǐng)求在與所述許可消息相對(duì)應(yīng)的釋放消息中被發(fā)送到所述鎖管理器,否則指示所述受保護(hù)數(shù)據(jù)不被請(qǐng)求在釋放消息中被發(fā)送到所述鎖管理器。
10.一種鎖管理器,用于控制對(duì)維護(hù)在獨(dú)立于所述鎖管理器的固有存儲(chǔ)裝置中的受保護(hù)數(shù)據(jù)的訪問,其中所述鎖管理器不從所述固有存儲(chǔ)裝置訪問所述受保護(hù)數(shù)據(jù),所述鎖管理器包括用于接收用在控制對(duì)所述受保護(hù)數(shù)據(jù)的訪問的鎖釋放的裝置,所述釋放包括所述受保護(hù)數(shù)據(jù);用于響應(yīng)于所述接收鎖釋放,識(shí)別要被許可鎖的下一請(qǐng)求者的裝置;用于將所述受保護(hù)數(shù)據(jù)從所述釋放拷貝到許可消息并將所述許可消息發(fā)送到所述下一請(qǐng)求者的裝置。
11.如權(quán)利要求10所述的鎖管理器,還包括用于將這樣的指示包括在所述許可消息中的裝置如果另一請(qǐng)求者正在等待鎖,則指示所述受保護(hù)數(shù)據(jù)被請(qǐng)求在與所述許可消息相對(duì)應(yīng)的釋放消息中被發(fā)送到所述鎖管理器,否則指示所述受保護(hù)數(shù)據(jù)不被請(qǐng)求在釋放消息中被發(fā)送到所述鎖管理器。
12.一種由鎖管理器執(zhí)行的方法,所述鎖管理器控制對(duì)維護(hù)在獨(dú)立于所述鎖管理器的固有存儲(chǔ)裝置中的受保護(hù)數(shù)據(jù)的訪問,其中所述鎖管理器不從所述固有存儲(chǔ)裝置訪問所述受保護(hù)數(shù)據(jù),所述方法包括接收來自第一請(qǐng)求者和第二請(qǐng)求者的對(duì)控制對(duì)所述受保護(hù)數(shù)據(jù)的訪問的鎖的鎖請(qǐng)求;發(fā)送第一許可消息到所述第一請(qǐng)求者,所述第一許可消息不包括所述受保護(hù)數(shù)據(jù),并且響應(yīng)于識(shí)別出所述第一請(qǐng)求者之后的一個(gè)或多個(gè)請(qǐng)求者正在等待鎖,將對(duì)返回所述受保護(hù)數(shù)據(jù)的指示包括在所述第一許可消息中;接收來自所述第一請(qǐng)求者的與對(duì)鎖的第一許可消息相對(duì)應(yīng)的第一釋放消息,所述第一釋放消息包括所述受保護(hù)數(shù)據(jù)。
13.如權(quán)利要求12所述的方法,包括發(fā)送第二許可消息到所述第二請(qǐng)求者,所述第二許可消息包括所述受保護(hù)數(shù)據(jù),以及對(duì)是否在第二釋放消息中發(fā)送所述受保護(hù)數(shù)據(jù)的指示。
14.如權(quán)利要求13所述的方法,其中響應(yīng)于識(shí)別出另一請(qǐng)求者正在等待對(duì)鎖的訪問,所述第二許可消息包括對(duì)在所述第二釋放消息中發(fā)送所述受保護(hù)數(shù)據(jù)的指示。
15.如權(quán)利要求13所述的方法,其中響應(yīng)于識(shí)別出另一請(qǐng)求者不在等待對(duì)鎖的訪問,所述第二許可消息包括對(duì)不在所述第二釋放消息中發(fā)送所述受保護(hù)數(shù)據(jù)的指示。
16.如權(quán)利要求13所述的方法,其中所述第二許可消息包括對(duì)不在所述第二釋放消息中發(fā)送所述受保護(hù)數(shù)據(jù)的指示;所述方法包括響應(yīng)于所述對(duì)不在所述第二釋放消息中發(fā)送所述受保護(hù)數(shù)據(jù)的指示,所述第二請(qǐng)求者存儲(chǔ)所述受保護(hù)數(shù)據(jù),并且不將所述受保護(hù)數(shù)據(jù)包括在所述第二釋放消息中。
17.一種包含計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述指令用于由管理器來執(zhí)行以下步驟,其中所述管理器控制對(duì)維護(hù)在獨(dú)立于所述鎖管理器的固有存儲(chǔ)裝置中的受保護(hù)數(shù)據(jù)的訪問,并且所述鎖管理器不從所述固有存儲(chǔ)裝置訪問所述受保護(hù)數(shù)據(jù),所述步驟包括接收來自第一請(qǐng)求者和第二請(qǐng)求者的對(duì)控制對(duì)所述受保護(hù)數(shù)據(jù)的訪問的鎖的鎖請(qǐng)求;發(fā)送第一許可消息到所述第一請(qǐng)求者,所述第一許可消息不包括所述受保護(hù)數(shù)據(jù),并且響應(yīng)于識(shí)別出所述第一請(qǐng)求者之后的一個(gè)或多個(gè)請(qǐng)求者正在等待鎖,將對(duì)返回所述受保護(hù)數(shù)據(jù)的指示包括在所述第一許可消息中;接收來自所述第一請(qǐng)求者的與對(duì)鎖的第一許可消息相對(duì)應(yīng)的第一釋放消息,所述第一釋放消息包括所述受保護(hù)數(shù)據(jù)。
18.如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),所述步驟還包括發(fā)送第二許可消息到所述第二請(qǐng)求者,所述第二許可消息包括所述受保護(hù)數(shù)據(jù),以及對(duì)是否在第二釋放消息中發(fā)送所述受保護(hù)數(shù)據(jù)的指示。
19.如權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),其中響應(yīng)于識(shí)別出另一請(qǐng)求者正在等待對(duì)鎖的訪問,所述第二許可消息包括對(duì)在所述第二釋放消息中發(fā)送所述受保護(hù)數(shù)據(jù)的指示。
20.如權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),其中響應(yīng)于識(shí)別出另一請(qǐng)求者不在等待對(duì)鎖的訪問,所述第二許可消息包括對(duì)不在所述第二釋放消息中發(fā)送所述受保護(hù)數(shù)據(jù)的指示。
21.如權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),其中所述第二許可消息包括對(duì)不在所述第二釋放消息中發(fā)送所述受保護(hù)數(shù)據(jù)的指示;所述步驟包括響應(yīng)于所述對(duì)不在所述第二釋放消息中發(fā)送所述受保護(hù)數(shù)據(jù)的指示,所述第二請(qǐng)求者存儲(chǔ)所述受保護(hù)數(shù)據(jù),并且不將所述受保護(hù)數(shù)據(jù)包括在所述第二釋放消息中。
22.一種鎖管理器,用于控制對(duì)維護(hù)在獨(dú)立于所述鎖管理器的固有存儲(chǔ)裝置中的受保護(hù)數(shù)據(jù)的訪問,其中所述鎖管理器不從所述固有存儲(chǔ)裝置訪問所述受保護(hù)數(shù)據(jù),所述鎖管理器包括用于接收來自第一請(qǐng)求者和第二請(qǐng)求者的對(duì)控制對(duì)所述受保護(hù)數(shù)據(jù)的訪問的鎖的鎖請(qǐng)求的裝置;用于發(fā)送不包括所述受保護(hù)數(shù)據(jù)的第一許可消息到所述第一請(qǐng)求者,并且響應(yīng)于識(shí)別出所述第一請(qǐng)求者之后的一個(gè)或多個(gè)請(qǐng)求者正在等待鎖,將對(duì)返回所述受保護(hù)數(shù)據(jù)的指示包括在所述第一許可消息中的裝置;用于接收來自所述第一請(qǐng)求者的鎖的第一釋放消息的裝置,所述第一釋放消息包括所述受保護(hù)數(shù)據(jù)。
23.如權(quán)利要求22所述的鎖管理器,包括用于發(fā)送第二許可消息到所述第二請(qǐng)求者的裝置,所述第二許可消息包括所述受保護(hù)數(shù)據(jù),以及對(duì)是否在第二釋放消息中發(fā)送所述受保護(hù)數(shù)據(jù)的指示。
24.如權(quán)利要求23所述的鎖管理器,包括用于響應(yīng)于識(shí)別出另一請(qǐng)求者正在等待對(duì)鎖的訪問,在所述第二許可消息中包括對(duì)在所述第二釋放消息中發(fā)送所述受保護(hù)數(shù)據(jù)的指示的裝置。
25.如權(quán)利要求23所述的鎖管理器,包括用于響應(yīng)于識(shí)別出另一請(qǐng)求者不在等待對(duì)鎖的訪問,在所述第二許可消息中包括對(duì)不在所述第二釋放消息中發(fā)送所述受保護(hù)數(shù)據(jù)的指示的裝置。
26.如權(quán)利要求23所述的鎖管理器,包括用于在所述第二許可消息中包括對(duì)不在所述第二釋放消息中發(fā)送所述受保護(hù)數(shù)據(jù)的指示的裝置;以及用于響應(yīng)于所述對(duì)不在所述第二釋放消息中發(fā)送所述受保護(hù)數(shù)據(jù)的指示,使所述第二請(qǐng)求者存儲(chǔ)所述受保護(hù)數(shù)據(jù),并且不將所述受保護(hù)數(shù)據(jù)包括在所述第二釋放消息中的裝置。
全文摘要
使用鎖來保護(hù)數(shù)據(jù),受保護(hù)數(shù)據(jù)有時(shí)被包括在加鎖消息中。例如,鎖管理器接收來自每個(gè)請(qǐng)求者的鎖請(qǐng)求,并選擇性地許可這些鎖請(qǐng)求。當(dāng)鎖被高度競(jìng)爭(zhēng)或至少有兩個(gè)訪問數(shù)據(jù)的請(qǐng)求未決時(shí),受保護(hù)數(shù)據(jù)一般在加鎖消息中被傳遞。鎖管理器通過在許可消息中指示請(qǐng)求者將受保護(hù)數(shù)據(jù)包括在其釋放消息中來發(fā)起序列。然后,鎖管理器把在釋放消息中接收到的該數(shù)據(jù)拷貝到其對(duì)下一請(qǐng)求者的許可消息中。如果沒有其他請(qǐng)求者在等待,則許可消息包括不發(fā)送受保護(hù)數(shù)據(jù)的指示,因此請(qǐng)求者一般將該受保護(hù)數(shù)據(jù)存儲(chǔ)在存儲(chǔ)裝置中,使其可在將來被訪問。
文檔編號(hào)G06F17/30GK1957325SQ200580007383
公開日2007年5月2日 申請(qǐng)日期2005年2月27日 優(yōu)先權(quán)日2004年3月27日
發(fā)明者約翰·J·小威廉斯, 約翰·安德魯·費(fèi)戈哈特, 喬納森·羅森 申請(qǐng)人:思科技術(shù)公司