国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      在加鎖消息中傳遞受保護(hù)數(shù)據(jù)的制作方法

      文檔序號:6655296閱讀:209來源:國知局
      專利名稱:在加鎖消息中傳遞受保護(hù)數(shù)據(jù)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明的一個實(shí)施例涉及采用加鎖機(jī)制來保護(hù)數(shù)據(jù)的通信和計(jì)算機(jī)系統(tǒng),具體而言,一個實(shí)施例涉及在加鎖消息中傳遞受保護(hù)數(shù)據(jù);更具體而言,一個實(shí)施例涉及通過利用獨(dú)立于存儲機(jī)制的鎖管理器在加鎖消息中傳遞受保護(hù)數(shù)據(jù)來繞開固有(native)存儲裝置。
      背景技術(shù)
      在很多多處理器環(huán)境中,通過共享全局存儲器來提供處理器間通信。一般通過鎖來保護(hù)到該存儲器的訪問。通過代碼臨界區(qū)耦合了到這些資源的訪問的等待時間,所述等待時間包括獲得鎖、讀數(shù)據(jù)、寫數(shù)據(jù)和最終釋放鎖。注意,除非明確說明,否則本文中描述或引用的任何內(nèi)容都不應(yīng)被視為本申請的現(xiàn)有技術(shù)。
      圖1示出了一種這樣的現(xiàn)有手段,其示出了3個請求者如何請求和獲得對受保護(hù)數(shù)據(jù)的訪問。注意,如圖1所示,鎖管理器獨(dú)立于存儲機(jī)制,因?yàn)樗粡钠涔逃写鎯ρb置訪問受鎖保護(hù)的數(shù)據(jù)。事實(shí)上,圖1的鎖管理器從不傳遞或處理受保護(hù)數(shù)據(jù)的值。
      如圖所示,每個請求者都向鎖管理器發(fā)送請求,鎖管理器通過向請求者之一發(fā)送許可消息來提供到受保護(hù)數(shù)據(jù)的獨(dú)立訪問。然后,被許可的請求者讀受保護(hù)數(shù)據(jù),執(zhí)行其處理,將受保護(hù)數(shù)據(jù)寫回存儲器,然后發(fā)送釋放請求到鎖管理器,以指示它已經(jīng)完成了對受保護(hù)數(shù)據(jù)的處理。這一過程重復(fù)進(jìn)行,下一請求者被許可訪問數(shù)據(jù)。因此,在代碼臨界區(qū)中可能出現(xiàn)大量的等待時間,尤其是當(dāng)多個處理器在單個鎖隊(duì)列之后排隊(duì)時。對依賴于處理器單元中的緩存來提供臨時存儲和提供直接處理器間通信以便傳輸數(shù)據(jù)的處理器而言,也存在大量等待時間。
      此外,一種已知系統(tǒng)包括I/O子系統(tǒng)中的鎖管理器,其允許消息包括加鎖和數(shù)據(jù)存儲請求。這允許I/O子系統(tǒng)中的請求者代理進(jìn)程接收具有鎖請求和I/O請求的消息。在響應(yīng)中,該代理進(jìn)程向鎖管理器請求鎖,并且響應(yīng)于許可,其進(jìn)行對應(yīng)于I/O請求及其固有存儲裝置的相應(yīng)I/O請求。當(dāng)受保護(hù)數(shù)據(jù)位于另一子系統(tǒng)中時,該手段可減少一些消息和等待時間,但是響應(yīng)于每個許可,I/O固有存儲裝置仍會被訪問。

      發(fā)明內(nèi)容
      本發(fā)明公開了用于在加鎖消息中傳遞受保護(hù)數(shù)據(jù)的方法、設(shè)備、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)可讀介質(zhì)、機(jī)制和裝置等。使用鎖來保護(hù)數(shù)據(jù),受保護(hù)數(shù)據(jù)有時被包括在加鎖消息中,這可以減少整體處理等待時間,和/或減少訪問受保護(hù)數(shù)據(jù)的固有存儲裝置的帶寬需要和/或存儲操作數(shù)。例如,在一個實(shí)施例中,鎖管理器接收來自每個請求者的鎖請求,并選擇性地許可這些鎖請求。當(dāng)鎖被高度競爭或至少有兩個訪問數(shù)據(jù)的請求未決時,受保護(hù)數(shù)據(jù)一般在加鎖消息中被傳遞。鎖管理器通過在許可消息中指示請求者將受保護(hù)數(shù)據(jù)包括在其釋放消息中來發(fā)起序列。然后,鎖管理器把在釋放消息中接收到的該數(shù)據(jù)拷貝到其對下一請求者的許可消息中。雖然該操作可能需要鎖管理器臨時存儲接收到的包括受保護(hù)數(shù)據(jù)的釋放消息,但是它在等待例如接收下一請求時并不在本地緩存或存儲受保護(hù)數(shù)據(jù)。如果沒有其他請求者在等待,則許可消息包括對不發(fā)送受保護(hù)數(shù)據(jù)的指示,因此請求者一般將該受保護(hù)數(shù)據(jù)存儲在存儲裝置中,使其可在將來被訪問。
      一個實(shí)施例包括被配置為控制經(jīng)由鎖對受保護(hù)數(shù)據(jù)的訪問的鎖管理器,所述受保護(hù)數(shù)據(jù)被維護(hù)在獨(dú)立于鎖管理器的固有存儲裝置中。鎖管理器不從固有存儲裝置訪問受保護(hù)數(shù)據(jù),而是將接收到的受保護(hù)數(shù)據(jù)拷貝到被發(fā)送到下一請求者的許可消息中。鎖管理器被配置為接收來自多個請求者的對鎖的鎖請求,選擇性地許可鎖請求,這包括從鎖管理器傳遞許可到多個請求者,并且至少一個被傳遞的許可包括受保護(hù)數(shù)據(jù)。
      在一個實(shí)施例中,至少一個被傳遞的許可不包括受保護(hù)數(shù)據(jù)。在一個實(shí)施例中,每個被傳遞的許可都包括對受保護(hù)數(shù)據(jù)是否被一起傳遞的指示。在一個實(shí)施例中,每個被傳遞的許可都包括對受保護(hù)數(shù)據(jù)是否被請求利用相應(yīng)的鎖釋放被發(fā)送到鎖管理器的指示。在一個實(shí)施例中,每個鎖請求都包括對多個請求者中相應(yīng)的那一個是否將接受來自鎖管理器的受保護(hù)數(shù)據(jù)的指示。
      一個實(shí)施例包括控制對維護(hù)在獨(dú)立于鎖管理器的固有存儲裝置中的受保護(hù)數(shù)據(jù)的訪問的鎖管理器。該鎖管理器不從固有存儲裝置訪問受保護(hù)數(shù)據(jù)。鎖管理器接收對用于控制對受保護(hù)數(shù)據(jù)的訪問的鎖釋放,其中接收到的釋放包括受保護(hù)數(shù)據(jù)。響應(yīng)于接收到鎖釋放,要被許可鎖的下一請求者被識別。受保護(hù)數(shù)據(jù)被從釋放拷貝到許可消息中,包括受保護(hù)數(shù)據(jù)的許可消息被發(fā)送到下一請求者。在一個實(shí)施例中,許可消息包括這樣的指示如果另一請求者正在等待鎖,則指示受保護(hù)數(shù)據(jù)被請求在與該許可消息相對應(yīng)的釋放消息中被發(fā)送到鎖管理器,否則指示受保護(hù)數(shù)據(jù)不被請求在釋放消息中被發(fā)送到鎖管理器。
      一個實(shí)施例包括控制對維護(hù)在獨(dú)立于鎖管理器的固有存儲裝置中的受保護(hù)數(shù)據(jù)的訪問的鎖管理器。鎖管理器不從固有存儲裝置訪問受保護(hù)數(shù)據(jù)。鎖管理器接收來自第一請求者和第二請求者的對控制對受保護(hù)數(shù)據(jù)的訪問的鎖的鎖請求。鎖管理器發(fā)送不包括受保護(hù)數(shù)據(jù)的第一許可消息到第一請求者,并且響應(yīng)于識別出一個或多個請求者正在第一請求者之后等待鎖,對返回受保護(hù)數(shù)據(jù)的指示被包括在許可消息中。然后,對鎖的包括受保護(hù)數(shù)據(jù)的第一釋放消息從第一請求者被接收到。
      在一個實(shí)施例中,第二許可消息被發(fā)送到第二請求者,其中第二許可消息包括受保護(hù)數(shù)據(jù)和對是否在第二釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示。在一個實(shí)施例中,響應(yīng)于識別出另一請求者正在等待訪問鎖,第二許可消息包括對在第二釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示。在一個實(shí)施例中,響應(yīng)于識別出另一請求者不在等待訪問鎖,第二許可消息包括對不在第二釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示。在一個實(shí)施例中,第二許可消息包括不在第二釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示,響應(yīng)于不在第二釋放消息中發(fā)送受保護(hù)數(shù)據(jù)的指示,第二請求者存儲受保護(hù)數(shù)據(jù),并且不將受保護(hù)數(shù)據(jù)包括在第二釋放消息中。


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