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

用于分布式共享存儲(chǔ)的任務(wù)同步方法、裝置及系統(tǒng)的制作方法

文檔序號(hào):6365465閱讀:193來源:國知局
專利名稱:用于分布式共享存儲(chǔ)的任務(wù)同步方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及分布式共享存儲(chǔ)領(lǐng)域,尤其涉及一種用于分布式共享存儲(chǔ)的任務(wù)同步方法、裝置及系統(tǒng)。
背景技術(shù)
當(dāng)前,并行計(jì)算機(jī)的存儲(chǔ)結(jié)構(gòu)可以大致分為共享存儲(chǔ)結(jié)構(gòu)、分布式存儲(chǔ)結(jié)構(gòu)。在共享存儲(chǔ)結(jié)構(gòu)中,所有處理器都有一致訪問的全局物理內(nèi)存,支持全局共享變量的編程模型。其編程簡單,但受到共享內(nèi)存帶寬等的限制,擴(kuò)展性較差。在分布式存儲(chǔ)結(jié)構(gòu)中,許多獨(dú)立的有本地存儲(chǔ)的計(jì)算節(jié)點(diǎn)通過高速網(wǎng)絡(luò)互聯(lián),每個(gè)計(jì)算節(jié)點(diǎn)有単獨(dú)的地址空間。計(jì)算節(jié)點(diǎn)間通過顯式的消息傳遞使各個(gè)計(jì)算節(jié)點(diǎn)所執(zhí)行的任務(wù)之間進(jìn)行通信。其中,任務(wù)是系統(tǒng)進(jìn)行資源分配和調(diào)度執(zhí)行的基本単位,包含數(shù)據(jù)和對(duì)數(shù)據(jù)的操作序列。多個(gè)任務(wù)可以相 互配合、并發(fā)執(zhí)行,從而共同實(shí)現(xiàn)特定功能。分布式存儲(chǔ)結(jié)構(gòu)的擴(kuò)展性能好,但由于需考慮數(shù)據(jù)分配和消息的傳遞,其程序設(shè)計(jì)較困難。DSM(Distributed Shared Memory,分布式共享存儲(chǔ))結(jié)構(gòu),在物理存儲(chǔ)分散的系統(tǒng)上通過硬件或軟件實(shí)現(xiàn)了邏輯上的共享存儲(chǔ)。在DSM中特別是通過軟件實(shí)現(xiàn)的DSM中,底層的消息傳遞機(jī)制對(duì)用戶掩蓋起來,允許用戶以共享存儲(chǔ)方式進(jìn)行并行程序設(shè)計(jì)。由于分布式共享存儲(chǔ)系統(tǒng)既具有共享存儲(chǔ)系統(tǒng)易于編程的優(yōu)點(diǎn),又保留了分布式存儲(chǔ)系統(tǒng)的可擴(kuò)展性,因而是大規(guī)模并行計(jì)算系統(tǒng)的ー種重要形式。在DSM系統(tǒng)中,當(dāng)存在多個(gè)任務(wù)(例如多個(gè)進(jìn)程或者線程)共同實(shí)現(xiàn)特定的功能,且各任務(wù)之間存在前后制約關(guān)系、需要遵守某種順序約束時(shí),各任務(wù)的執(zhí)行需要同歩。因此,如何實(shí)現(xiàn)任務(wù)的同步,是并行程序設(shè)計(jì)必須要解決的關(guān)鍵問題?,F(xiàn)有技術(shù)中的鎖、信號(hào)量、管程等同步手段僅適用于具有公共存儲(chǔ)區(qū)的單機(jī)環(huán)境?,F(xiàn)有技術(shù)中的基于消息傳遞編程模式的路障同步法,即在參與路障同步的每個(gè)任務(wù)的程序中彼此必須等待的位置設(shè)置ー個(gè)障礙點(diǎn),當(dāng)某任務(wù)執(zhí)行到障礙點(diǎn)時(shí)暫停,等待所有任務(wù)都執(zhí)行到這個(gè)障礙點(diǎn)后,該任務(wù)才能繼續(xù)運(yùn)行。顯式的消息傳遞編程要求程序員關(guān)心數(shù)據(jù)的劃分和任務(wù)間的通信,因此在解決數(shù)據(jù)依賴和預(yù)防死鎖方面花費(fèi)大量カ氣,容易出錯(cuò)。

發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種用于分布式共享存儲(chǔ)的任務(wù)同步方法、裝置及系統(tǒng),能夠簡化程序設(shè)計(jì)同時(shí)提升系統(tǒng)的處理性能。本發(fā)明提供了如下技術(shù)方案—方面,本發(fā)明實(shí)施例提供一種用于分布式共享存儲(chǔ)的任務(wù)同步方法,包括創(chuàng)建所述第一任務(wù)的內(nèi)存空間快照和所述第二任務(wù)的同步觀察區(qū),所述第二任務(wù)的同步觀察區(qū)包括所述第二任務(wù)的同步變量的內(nèi)存地址,所述同步變量為待同步的任務(wù)實(shí)現(xiàn)同步所必需的參數(shù);將所述第一任務(wù)分配給第一計(jì)算節(jié)點(diǎn)執(zhí)行;在所述第一任務(wù)執(zhí)行結(jié)束后,更新所述第一任務(wù)的內(nèi)存空間快照和所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間;如果所述第二任務(wù)的同步變量被所述第一任務(wù)更新,使所述第二任務(wù)根據(jù)所述第ニ任務(wù)的同步觀察區(qū)中的同步變量的內(nèi)存地址獲知所述第二任務(wù)的同步變量,并將所述第ニ任務(wù)分配給第二計(jì)算節(jié)點(diǎn),以使所述第二任務(wù)隨所述第二任務(wù)的同步變量的更新而同步 執(zhí)行。另ー方面,本發(fā)明實(shí)施例提供一種用于分布式共享存儲(chǔ)的任務(wù)同步裝置,包括創(chuàng)建單元,用于創(chuàng)建第一任務(wù)的內(nèi)存空間快照和第二任務(wù)的同步觀察區(qū),所述第ニ任務(wù)的同步觀察區(qū)包括所述第二任務(wù)的同步變量的內(nèi)存地址,所述同步變量為待同步的任務(wù)實(shí)現(xiàn)同步所必需的參數(shù);更新単元,用于將所述第一任務(wù)分配給第一計(jì)算節(jié)點(diǎn)執(zhí)行,并在所述第一任務(wù)執(zhí)行結(jié)束后更新所述第一任務(wù)的內(nèi)存空間快照和所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間;同步單元,用于當(dāng)所述第二任務(wù)的同步變量被所述第一任務(wù)更新時(shí),使所述第二任務(wù)根據(jù)所述第二任務(wù)的同步觀察區(qū)中的同步變量的內(nèi)存地址獲知所述第二任務(wù)的同步變量,并將所述第二任務(wù)分配給第二計(jì)算節(jié)點(diǎn),以使所述第二任務(wù)隨所述第二任務(wù)的同步變量的更新而同步執(zhí)行。另ー方面,本發(fā)明實(shí)施例提供ー種分布式共享存儲(chǔ)系統(tǒng),包括第一計(jì)算節(jié)點(diǎn)、第二計(jì)算節(jié)點(diǎn)以及本發(fā)明實(shí)施例提供的用于分布式共享存儲(chǔ)的任務(wù)同步裝置;所述用于分布式共享存儲(chǔ)的任務(wù)同步裝置位于所述第一計(jì)算節(jié)點(diǎn)內(nèi),或者位于所述第二計(jì)算節(jié)點(diǎn)內(nèi),或者分別與所述第一計(jì)算節(jié)點(diǎn)和所述第二計(jì)算節(jié)點(diǎn)相連,用于將所述第一計(jì)算節(jié)點(diǎn)與所述第二計(jì)算節(jié)點(diǎn)中的需要同步的任務(wù)進(jìn)行同歩。采用上述技術(shù)方案后,本發(fā)明實(shí)施例提供的用于分布式共享存儲(chǔ)的任務(wù)同步方法、裝置及系統(tǒng),創(chuàng)建了第一任務(wù)的內(nèi)存空間快照和第二任務(wù)的同步觀察區(qū),所述第二任務(wù)的同步觀察區(qū)存儲(chǔ)有所述第二任務(wù)的同步變量的內(nèi)存地址。一方面,第一任務(wù)在計(jì)算節(jié)點(diǎn)本地執(zhí)行,任務(wù)完成后才更新共享存儲(chǔ)空間,另一方面,如果所述第二任務(wù)的同步變量被所述第一任務(wù)更新,可以使所述第二任務(wù)根據(jù)所述第二任務(wù)的同步變量的內(nèi)存地址獲知所述第二任務(wù)的同步變量,并將所述第二任務(wù)分配給第二計(jì)算節(jié)點(diǎn),以使所述第二任務(wù)隨所述第二任務(wù)的同步變量的更新而同步執(zhí)行,在很好地維護(hù)了分布式共享存儲(chǔ)系統(tǒng)的內(nèi)存一致性即程序?qū)?nèi)存操作的正確性的同吋,大大減少了分布式共享存儲(chǔ)的任務(wù)同步和內(nèi)存一致性維護(hù)所需要的頻繁的消息發(fā)送和狀態(tài)探尋,既簡化了編程又有效提高了系統(tǒng)的處理性倉^:。


為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明實(shí)施例提供的用于分布式共享存儲(chǔ)的任務(wù)同步方法的ー種流程圖;圖2為本發(fā)明實(shí)施例提供的用于分布式共享存儲(chǔ)的任務(wù)同步方法的一種詳細(xì)流程圖;圖3為本發(fā)明實(shí)施例提供的用于分布式共享存儲(chǔ)的任務(wù)同步裝置的一種結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例提供的用于分布式共享存儲(chǔ)的任務(wù)同步裝置中的更新單元的結(jié)構(gòu)不意圖;圖5為本發(fā)明實(shí)施例提供的用于分布式共享存儲(chǔ)的任務(wù)同步裝置的另ー種結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。如圖I所示,本發(fā)明的實(shí)施例提供了一種用于分布式共享存儲(chǔ)的任務(wù)同步方法,包括S11,創(chuàng)建第一任務(wù)的內(nèi)存空間快照和第二任務(wù)的同步觀察區(qū),所述第二任務(wù)的同步觀察區(qū)包括所述第二任務(wù)的同步變量的內(nèi)存地址,所述同步變量為待同步的任務(wù)實(shí)現(xiàn)同步所必需的參數(shù);S12,將所述第一任務(wù)分配給第一計(jì)算節(jié)點(diǎn)執(zhí)行;S13,在所述第一任務(wù)執(zhí)行結(jié)束后,更新所述第一任務(wù)的內(nèi)存空間快照和所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間;S14,如果所述第二任務(wù)的同步變量被所述第一任務(wù)更新,使所述第二任務(wù)根據(jù)所述第二任務(wù)的同步觀察區(qū)中的同步變量的內(nèi)存地址獲知所述第二任務(wù)的同步變量,并將所述第二任務(wù)分配給第二計(jì)算節(jié)點(diǎn),以使所述第二任務(wù)隨所述第二任務(wù)的同步變量的更新而同步執(zhí)行。采用上述技術(shù)方案后,本發(fā)明實(shí)施例提供的用于分布式共享存儲(chǔ)的任務(wù)同步方法,創(chuàng)建了第一任務(wù)的內(nèi)存空間快照和第二任務(wù)的同步觀察區(qū),所述第二任務(wù)的同步觀察區(qū)存儲(chǔ)有所述第二任務(wù)的同步變量的內(nèi)存地址。一方面,第一任務(wù)在計(jì)算節(jié)點(diǎn)本地執(zhí)行,任務(wù)完成后才更新共享存儲(chǔ)空間,另一方面,如果所述第二任務(wù)的同步變量被所述第一任務(wù)更新,可以使所述第二任務(wù)根據(jù)所述第二任務(wù)的同步變量的內(nèi)存地址獲知所述第二任務(wù)的同步變量,并將所述第二任務(wù)分配給第二計(jì)算節(jié)點(diǎn),以使所述第二任務(wù)隨所述第二任務(wù)的同步變量的更新而同步執(zhí)行,在很好地維護(hù)了分布式共享存儲(chǔ)系統(tǒng)的內(nèi)存一致性即程序?qū)?nèi)存操作的正確性的同吋,大大減少了分布式共享存儲(chǔ)的任務(wù)同步和內(nèi)存一致性維護(hù)所需要的頻繁的消息發(fā)送和狀態(tài)探尋,既簡化了編程又有效提高了系統(tǒng)的處理性能。需要說明的是,在分布式共享存儲(chǔ)結(jié)構(gòu)中,存在多個(gè)計(jì)算節(jié)點(diǎn)。本實(shí)施例中的第一 計(jì)算節(jié)點(diǎn)和第二計(jì)算節(jié)點(diǎn)可以相同,也可以不同,本發(fā)明對(duì)此不做限制。不同的任務(wù),既可以分配給不同計(jì)算節(jié)點(diǎn)執(zhí)行,也可以分配給同一個(gè)節(jié)點(diǎn)的不同處理器執(zhí)行。具體的,在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)?shù)谝挥?jì)算節(jié)點(diǎn)上的任務(wù)執(zhí)行完成后,分配下ー個(gè)任務(wù)時(shí),需要選擇ー個(gè)空閑的計(jì)算節(jié)點(diǎn)執(zhí)行該任務(wù),此時(shí)既可能選擇其他的計(jì)算節(jié)點(diǎn),也可能選擇當(dāng)前空閑的第一計(jì)算節(jié)點(diǎn)。當(dāng)某個(gè)任務(wù)的執(zhí)行需要另ー個(gè)或另外多個(gè)任務(wù)的執(zhí)行結(jié)果時(shí),就需要知道所需要的另外ー個(gè)或另外多個(gè)任務(wù)是否執(zhí)行完畢,它們的執(zhí)行結(jié)果是否可以被需要同步的任務(wù)使用了,即本發(fā)明所述的任務(wù)同步問題。具體的,本實(shí)施例中的任務(wù) 可以包含控制信息以及與任務(wù)相關(guān)的數(shù)據(jù)和代碼。其中,控制信息可以包括任務(wù)執(zhí)行相關(guān)的堆棧信息、同步觀察區(qū)和首條指令地址等。分配在不同計(jì)算節(jié)點(diǎn)的任務(wù)從首條指令開始執(zhí)行,在執(zhí)行過程中發(fā)現(xiàn)數(shù)據(jù)不在本地則從全局共享內(nèi)存中獲取,任務(wù)成功執(zhí)行后有可能修改全局內(nèi)存以實(shí)現(xiàn)數(shù)據(jù)的更新或后續(xù)任務(wù)的同歩。為了便于說明,本實(shí)施例中,假定第一任務(wù)可以不受其它條件的制約而執(zhí)行,或者說所述第一任務(wù)的執(zhí)行條件已經(jīng)具備。而第二任務(wù)是需要依賴于其它任務(wù)的執(zhí)行結(jié)果才能執(zhí)行。還需要說明的是,本發(fā)明雖然以兩個(gè)任務(wù)的任務(wù)同步方法為例進(jìn)行說明,但本發(fā)明不限于此,所述任務(wù)同步可以是三個(gè)或三個(gè)以上任務(wù)的同步,其原理與兩個(gè)任務(wù)的任務(wù)同步方法類似。具體的,在步驟Sll中,創(chuàng)建第一任務(wù)的內(nèi)存空間快照和第二任務(wù)的同步觀察區(qū)??蛇x的,第一任務(wù)的內(nèi)存空間快照可以為基于事務(wù)內(nèi)存的內(nèi)存空間快照。此處,與第一任務(wù)相關(guān)的內(nèi)存空間為共孚空間。所述第二任務(wù)的同步觀察區(qū)包含所述第二任務(wù)的同步變量的內(nèi)存地址。其中,所述同步變量為待同步的任務(wù)實(shí)現(xiàn)同步所必需的參數(shù)??蛇x的,所述第二任務(wù)的同步觀察區(qū)可以位于所述第二任務(wù)的運(yùn)行上下文中。舉例說明,在本發(fā)明的一個(gè)實(shí)施例中,在執(zhí)行第二任務(wù)之前,需要初始化第二任務(wù)的運(yùn)行上下文,這時(shí),可以在第二任務(wù)的運(yùn)行上下文中増加一片區(qū)域作為第二任務(wù)的同步觀察區(qū)。在第二任務(wù)的同步觀察區(qū)中,可以存放第二任務(wù)的同步變量的地址。只有通過該地址獲得同步變量后,第二任務(wù)才能執(zhí)行。具體的,在步驟S12中,第一任務(wù)的執(zhí)行條件已經(jīng)具備,因此將第一任務(wù)分配給第ー計(jì)算節(jié)點(diǎn)執(zhí)行。需要說明的是,在執(zhí)行第一任務(wù)的過程中,執(zhí)行第一任務(wù)的計(jì)算節(jié)點(diǎn)只對(duì)第一任務(wù)的內(nèi)存空間快照的ー個(gè)副本進(jìn)行寫操作,而不會(huì)更新內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間。此處,第一任務(wù)的內(nèi)存空間快照的ー個(gè)副本為計(jì)算節(jié)點(diǎn)的本地內(nèi)存。也就是說,第一任務(wù)的執(zhí)行過程中,只更新計(jì)算節(jié)點(diǎn)的本地內(nèi)存而不更新共享內(nèi)存。而在第一任務(wù)執(zhí)行結(jié)束后在S13步驟中,在第一任務(wù)執(zhí)行結(jié)束后,更新所述第一任務(wù)的內(nèi)存空間快照和所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間。在S13步驟后,本實(shí)施例提供的用于分布式共享存儲(chǔ)的任務(wù)同步方法可以根據(jù)各個(gè)需要同步的任務(wù)的同步變量,確定任意任務(wù)的執(zhí)行結(jié)果,如第一任務(wù)的執(zhí)行結(jié)果,是否為另外ー個(gè)任務(wù)的同步變量。如果一任務(wù)的執(zhí)行結(jié)果是另ー個(gè)任務(wù)的同步變量,則每當(dāng)所述一任務(wù)執(zhí)行完成,更新了該任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間后,由于該任務(wù)的執(zhí)行結(jié)果,即所述另ー個(gè)任務(wù)的同步變量,也存儲(chǔ)在被更新了的內(nèi)存空間中,因此,所述另ー個(gè)任務(wù)的同步變量也就被更新了,從而使所述另ー個(gè)任務(wù)能夠根據(jù)其同步觀察區(qū)中同步變量的地址獲知更新后的同步變量。而如果某一任務(wù)沒有執(zhí)行完畢,就無法使其它任務(wù)獲知與所述某一任務(wù)相關(guān)的同步變量。
具體的,在步驟S14中,如果所述第二任務(wù)的同步變量被所述第一任務(wù)更新,使所述第二任務(wù)根據(jù)所述第二任務(wù)的同步變量的內(nèi)存地址獲知所述第二任務(wù)的同步變量,并將所述第二任務(wù)分配給第二計(jì)算節(jié)點(diǎn),以使所述第二任務(wù)隨所述第二任務(wù)的同步變量的更新而同步執(zhí)行。例如,在本發(fā)明的一個(gè)實(shí)施例中,第二任務(wù)的執(zhí)行需要同步變量S,在所述第二任務(wù)的同步觀察區(qū)中存儲(chǔ)有參數(shù)S在內(nèi)存中的地址addr (S)。S同時(shí)又是第一任務(wù)的執(zhí)行結(jié)果,如果第一任務(wù)尚未執(zhí)行結(jié)束,其執(zhí)行結(jié)果S就是未知的,addr(S)中的S也沒有被更新,無法使第二任務(wù)獲知其同步變量,在這種情況下,第二任務(wù)自然無法執(zhí)行。而當(dāng)?shù)谝蝗蝿?wù)執(zhí)行結(jié)束后,就可以更新所述第一任務(wù)的內(nèi)存空間快照和所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間。這樣,存儲(chǔ)在內(nèi)存地址addr (S)中的參數(shù)S即被更新,從而使第二任務(wù)通過其同步觀察區(qū)中存儲(chǔ)的addr(S)獲知所述第二任務(wù)的同步變量S,進(jìn)而使第二任務(wù)得以伴隨S的更新而同步執(zhí)行。
具體的,對(duì)于內(nèi)存空間快照的更新操作具有原子性。也就是說,對(duì)內(nèi)存快照的更新,或者全部都更新,或者全部都不更新。而在更新所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間吋,又可能遇到兩種情況。其一,如果在更新所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間時(shí),所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間已經(jīng)被所述第一任務(wù)以外的任務(wù)更新,則放棄對(duì)所述內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間的更新。其ニ,如果在更新所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間時(shí),所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間尚未被所述第一任務(wù)以夕卜的任務(wù)更新,則更新所述內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間。上述情況的發(fā)生是因?yàn)榈谝蝗蝿?wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間為共享存儲(chǔ)空間,該內(nèi)存空間所存儲(chǔ)的內(nèi)容的更新不僅可以由第一任務(wù)進(jìn)行,也可以由第一任務(wù)和第二任務(wù)以外的其它任務(wù)進(jìn)行。因此,如果在第一任務(wù)執(zhí)行結(jié)束后,需要更新第一任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間,則首先要確定,第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間是否已經(jīng)被其它任務(wù)更新過。具體的確定方法可以有多種,本發(fā)明對(duì)此不做限定。例如,在本發(fā)明的一個(gè)實(shí)施例中,可以通過確定此時(shí)的內(nèi)存空間的存儲(chǔ)狀態(tài)(如版本號(hào)信息)是否與第一任務(wù)執(zhí)行前的內(nèi)存空間的存儲(chǔ)狀況(如第一任務(wù)的內(nèi)存空間快照的狀況)相同的方法進(jìn)行確定。具體的,在本發(fā)明的一個(gè)實(shí)施例中,第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間已經(jīng)被所述第一任務(wù)以外的任務(wù)更新,則放棄對(duì)所述第一任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間的更新。此時(shí),優(yōu)選的,可以重新創(chuàng)建第一任務(wù),以使第一任務(wù)可以被重新執(zhí)行,從而實(shí)現(xiàn)對(duì)第一任務(wù)的內(nèi)存空間快照可能的更新。如果所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間尚未被所述第一任務(wù)以外的任務(wù)更新,則更新所述內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間。進(jìn)ー步地,在本發(fā)明的另ー個(gè)實(shí)施例中,第二任務(wù)的同步參數(shù)沒有被所述第二任務(wù)更新,也就是說,本實(shí)施例中,第一任務(wù)的執(zhí)行結(jié)果并沒有對(duì)其它任務(wù)(本實(shí)施例中為第ニ任務(wù))的執(zhí)行產(chǎn)生約束,其它任務(wù)不需要獲知第一任務(wù)的執(zhí)行結(jié)果即可執(zhí)行,則可以在所述更新所述第一任務(wù)的內(nèi)存空間快照和所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間后刪除所述第一任務(wù)的內(nèi)存空間快照。這樣,由于不涉及任務(wù)間的同步問題,及時(shí)將內(nèi)存空間快照刪除后可以釋放更多的內(nèi)存空間。需要說明的是,前述實(shí)施例中,第一任務(wù)執(zhí)行完畢后會(huì)更新所述第一任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間,如果第二任務(wù)的同步參數(shù)也存儲(chǔ)在所述第一任務(wù)的內(nèi)存空間快照所對(duì)應(yīng)的內(nèi)存空間,則,所述第二任務(wù)的同步參數(shù)也被更新,所述第二任務(wù)即被激活。但本發(fā)明不限于此,第一任務(wù)的執(zhí)行結(jié)果可能涉及不止一個(gè)任務(wù)的同步執(zhí)行。
進(jìn)ー步地,在本發(fā)明的另ー個(gè)實(shí)施例中,如果分布式共享存儲(chǔ)結(jié)構(gòu)中存在多個(gè)需要同步的任務(wù),即存在多個(gè)具有同步觀察區(qū)的任務(wù),則可以為這些任務(wù)的調(diào)度設(shè)置ー個(gè)觀察者隊(duì)列,將所述第二任務(wù)放入所述觀察者隊(duì)列。所述觀察者隊(duì)列為存放具有同步觀察區(qū)、但不能被立即執(zhí)行的任務(wù)的隊(duì)列。此時(shí),所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間的更新,能夠使所述觀察者隊(duì)列中的第二任務(wù)通過同步觀察區(qū)中同步變量的地址獲知其同步變量被更新。于是,所述第二任務(wù)即被激活,并從觀察者隊(duì)列移至執(zhí)行隊(duì)列,等待被調(diào)度執(zhí)行。所述執(zhí)行隊(duì)列為存放即將被執(zhí)行的任務(wù)的隊(duì)列。具體的,本實(shí)施例中,第一任務(wù)執(zhí)行完畢并更新所述第一任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間后,可以通過檢索所述觀察隊(duì)列中的每ー個(gè)任務(wù)的同步觀察區(qū)的方法,獲知所述第二任務(wù)的同步參數(shù)以及所述觀察隊(duì)列中的其它任務(wù)的同步參數(shù)是否被所述第一任務(wù)更新,并將所述觀察者隊(duì)列中包括所述第二任務(wù)在內(nèi)的、所有同步變量被所述第一任務(wù)更新的任務(wù),從所述觀察者隊(duì)列移至所述執(zhí)行隊(duì)列。以此保證所有需要與第一任務(wù)的執(zhí)行結(jié)果相同步的任務(wù)都能通過該方法同歩。舉例說明,在本發(fā)明的一個(gè)實(shí)施例中,任務(wù)B、任務(wù)C和任務(wù)D均在觀察者隊(duì)列中,其中,任務(wù)B和任務(wù)C的執(zhí)行依賴任務(wù)A的執(zhí)行結(jié)果,即任務(wù)B和任務(wù)C的同步變量包括任務(wù)A的執(zhí)行結(jié)果,而任務(wù)D的執(zhí)行不依賴任務(wù)A的執(zhí)行結(jié)果。則任務(wù)A執(zhí)行完畢后,將任務(wù)A的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間進(jìn)行更新,該更新使任務(wù)B和任務(wù)C獲知其同步變量已經(jīng)被更新,從而使任務(wù)B和任務(wù)C由觀察者隊(duì)列移至執(zhí)行隊(duì)列等待執(zhí)行。而由于任務(wù)D的同步變量沒有被更新,任務(wù)D仍然保留在觀察者隊(duì)列中。將所述第二任務(wù)放置于觀察者隊(duì)列后,本實(shí)施例中,所述將所述第二任務(wù)分配給第二計(jì)算節(jié)點(diǎn),以使所述第二任務(wù)隨所述第二任務(wù)的同步變量的更新而同步執(zhí)行,具體可以為如果所述第二任務(wù)的同步變量中還存在至少ー個(gè)同步變量所對(duì)應(yīng)的內(nèi)存空間沒有被更新,則將所述第二任務(wù)重新放入所述觀察者隊(duì)列;如果所述第二任務(wù)的同步變量所對(duì)應(yīng)的內(nèi)存空間均已被更新,則執(zhí)行所述第二任務(wù)。舉例說明,在本發(fā)明的一個(gè)實(shí)施例中,第二任務(wù)的執(zhí)行需要第一任務(wù)的執(zhí)行結(jié)果Rl以及第三任務(wù)的執(zhí)行結(jié)果R3,即第二任務(wù)的同步變量包括Rl和R3。第二任務(wù)被創(chuàng)建后,首先被放入觀察者隊(duì)列。如果第一任務(wù)首先執(zhí)行完畢,更新了其內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間,相應(yīng)的,Rl被更新,則可使第二任務(wù)通過其同步觀察區(qū)中的同步變量的內(nèi)存地址獲知更新后的同步變量R1,第二任務(wù)即被激活,并由觀察者隊(duì)列移至執(zhí)行隊(duì)列,等待被調(diào)度執(zhí)行。所述第二任務(wù)被調(diào)度出執(zhí)行隊(duì)列后即被執(zhí)行,此時(shí)如果發(fā)現(xiàn)第二任務(wù)的同步變量中,所述第三任務(wù)的執(zhí)行結(jié)果R3并未被更新,則停止執(zhí)行第二任務(wù),并將第二任務(wù)重新放入觀察者隊(duì)列。當(dāng)?shù)谌蝿?wù)執(zhí)行完畢,其執(zhí)行結(jié)果R3被更新到第三任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間后,可使第二任務(wù)獲知其同步變量R3被更新,第二任務(wù)將再次被激活并從觀察者隊(duì)列移至執(zhí)行隊(duì)列等待執(zhí)行。此時(shí),由于其同步變量Rl和R3都已經(jīng)更新,當(dāng)?shù)诙蝿?wù)被調(diào)度出執(zhí)行隊(duì)列時(shí),所述第二任務(wù)即可以被執(zhí)行。
本發(fā)明實(shí)施例的方法可以由通用集成電路,如CPU(Central Processing Unit,中央處理器)或ASIC(Application Specific Integrated Circuit,專用集成電路)等執(zhí)行。為了使本領(lǐng)域的技術(shù)人員更好的理解本發(fā)明的技術(shù)方案,下面通過具體的實(shí)施例對(duì)本發(fā)明實(shí)施例的具體技術(shù)方案進(jìn)行詳細(xì)描述,可以理解的是,以下的具體實(shí)施例僅用于描述本發(fā)明,但本發(fā)明不限于此。圖2所示為本發(fā)明提供的用于分布式共享存儲(chǔ)的任務(wù)同步方法的ー個(gè)具體實(shí)施例的方法流程圖。如圖2所示,所述方法具體可包括101.創(chuàng)建任務(wù),設(shè)置所述任務(wù)的運(yùn)行上下文;102.確定是否需要?jiǎng)?chuàng)建同步觀察區(qū),如果是,則執(zhí)行步驟103,如果否,則執(zhí)行步驟 104 ;具體的,可以確定該任務(wù)的執(zhí)行是否需要與其它任務(wù)同步,如果需要,則該任務(wù)需要?jiǎng)?chuàng)建同步觀察區(qū),以便獲知其同步變量是否被更新;如果不需要,則該任務(wù)不需要?jiǎng)?chuàng)建同步觀察區(qū)。103.創(chuàng)建觀察者任務(wù),將該觀察者任務(wù)放入觀察者隊(duì)列;其中,所述觀察者任務(wù)為需要同步變量的同步才能執(zhí)行的任務(wù)。1031.觀察者任務(wù)被激活成為普通任務(wù)(以下簡稱任務(wù)),將該任務(wù)放入執(zhí)行隊(duì)列;執(zhí)行步驟105 ;104.將該任務(wù)放入執(zhí)行隊(duì)列,等待調(diào)度;105.分配任務(wù)到計(jì)算節(jié)點(diǎn)執(zhí)行;106.任務(wù)執(zhí)行結(jié)束后,確定該任務(wù)的內(nèi)存空間是否已被其它任務(wù)更新;如果是,放棄該任務(wù)的本次所有操作并重啟該任務(wù),執(zhí)行步驟105 ;如果否,則執(zhí)行步驟107 ;107.更新該任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間;108.確定觀察者隊(duì)列中是否存在同步變量被更新的觀察者任務(wù);如果是,則執(zhí)行步驟1031 ;如果否,則執(zhí)行步驟109 ;109.確定執(zhí)行隊(duì)列是否為空;如果是,則執(zhí)行步驟110,如果否,則跳轉(zhuǎn)至步驟105 ;110.顯示執(zhí)行結(jié)果;111.結(jié)束。需要說明的是,本發(fā)明實(shí)施例提供的用于分布式共享存儲(chǔ)的任務(wù)同步方法,可以使一個(gè)任務(wù)通過其同步觀察區(qū)獲知所述任務(wù)的同步變量是否已經(jīng)更新并根據(jù)更新后的同步變量執(zhí)行所述任務(wù),在很好地維護(hù)了分布式共享存儲(chǔ)系統(tǒng)的內(nèi)存一致性即程序?qū)?nèi)存操作的正確性的同時(shí),大大減少了分布式共享存儲(chǔ)的任務(wù)同步和內(nèi)存一致性維護(hù)所需要的頻繁的消息發(fā)送和狀態(tài)探尋,既簡化了編程又有效提高了系統(tǒng)的處理性能。又例如,本發(fā)明實(shí)施例提供的用于分布式共享存儲(chǔ)的任務(wù)同步方法,能有效地處理生產(chǎn)者-消費(fèi)者問題。簡單起見,假設(shè)緩沖區(qū)滿緩沖単元的數(shù)目為η(初始為O),生產(chǎn)者生產(chǎn)ー個(gè)產(chǎn)品對(duì)應(yīng)于η值的加1,消費(fèi)者消費(fèi)ー個(gè)產(chǎn)品對(duì)應(yīng)于η值的減I。使用變量m控制生產(chǎn)者、消費(fèi)者對(duì)η的更新m為I時(shí),允許消費(fèi)者訪問,生產(chǎn)者等待;111為O時(shí),允許生產(chǎn)者訪問,消費(fèi)者等待。假定變量m的初始值為0,并且生產(chǎn)者任務(wù)和生產(chǎn)者的觀察者任務(wù)同時(shí)創(chuàng)建,其具體的偽代碼如表I所示表I producer mnner:consumer ainner:
if (m == I)if (m == 0)
exit and abortexit and abort
elseelse
n = n+1n = n-1
m = Im = 0
exit and commitexit and commit
producer—watcher:consumer—watcher:
watches m and nwatches m and n
if (m = I) thenif (m = 0) then
exit and abortexit and abort
elseelse
create producer—runnercreate consumer mnner
create producer—watchercreate consumer watcher
exit and commitexit and commit
/具體的,producer—runner為生產(chǎn)者任務(wù),producer—watcher為生產(chǎn)者的觀察者任務(wù),consumer—runner為消費(fèi)者任務(wù),consumer—watcher為消費(fèi)者的觀察者任務(wù)。其中,producer—runner 矛ロ consumer—runner 為普通任務(wù);[Tl] producer—watcher 矛ロ consumer—watcher是具有同步觀察區(qū)的觀察者任務(wù),創(chuàng)建后不能被直接放入執(zhí)行隊(duì)列中執(zhí)行而要放入觀察者隊(duì)列中,通過其同步觀察區(qū)中的同步變量的內(nèi)存地址獲知該同步變量被更新后,才能被激活成普通任務(wù),從觀察者隊(duì)列移至執(zhí)行隊(duì)列等待執(zhí)行,以此方式實(shí)現(xiàn)任務(wù)同歩。釆用上述任務(wù)同步方法能夠保證姆個(gè)生產(chǎn)者(producer)和消費(fèi)者(consumer)都能對(duì)η進(jìn)行更新。本實(shí)施例中,如果producer—watcher已經(jīng)被激活,producer—watcher的激活可能是由producer—runner或者consumer—runner對(duì)m和η的更新而觸發(fā)的。此時(shí),producer—watcher可以根據(jù)m的值來判斷激活操作來源于producer—runner還是consumer—runner。具體的,當(dāng)m為I時(shí),表明producer—runner提交成功,即producer—runner的執(zhí)行結(jié)果已經(jīng)將該任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間更新,即此時(shí)producer—runner的更新已應(yīng)用于全局內(nèi)存。當(dāng)m為O時(shí),表明consumer—runner提交成功,即consumer—runner的執(zhí)行結(jié)果已經(jīng)將該任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間更新。而producer—runner或者還沒提交執(zhí)行結(jié)果,或者提交執(zhí)行結(jié)果時(shí),發(fā)現(xiàn)producer_runner的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間已經(jīng)被consumer_runner更新,從而放棄producer_runner本次所有操作及其對(duì)內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間的修改。此時(shí),優(yōu)選的,producer_watcher會(huì)重新創(chuàng)建producer_runner和producer_watcher,以保證producer_runner在提交失敗、放棄此任務(wù)的全部操作的情況下,也能夠再次被調(diào)度執(zhí)行。本發(fā)明實(shí)施例的方法可以由通用集成電路,如CPU,或ASIC執(zhí)行。相應(yīng)的,如圖3所示,本發(fā)明還提供一種用于分布式共享存儲(chǔ)的任務(wù)同步裝置,包括創(chuàng)建單元11,用于創(chuàng)建第一任務(wù)的內(nèi)存空間快照和第二任務(wù)的同步觀察區(qū),所述第二任務(wù)的同步觀察區(qū)包括所述第二任務(wù)的同步變量的內(nèi)存地址,所述同步變量為待同步的任務(wù)實(shí)現(xiàn)同步所必需的參數(shù);更新単元12,用于將所述第一任務(wù)分配給第一計(jì)算節(jié)點(diǎn)執(zhí)行并在所述第一任務(wù)執(zhí) 行結(jié)束后更新所述第一任務(wù)的內(nèi)存空間快照和所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間;同步單元13,用于當(dāng)如果所述第二任務(wù)的同步變量被所述第一任務(wù)更新時(shí),使所述第二任務(wù)根據(jù)所述第二任務(wù)的同步觀察區(qū)中的同步變量的內(nèi)存地址獲知所述第二任務(wù)的同步變量,并將所述第二任務(wù)分配給第二計(jì)算節(jié)點(diǎn),以使所述第二任務(wù)隨所述第二任務(wù)的同步變量的更新而同步執(zhí)行。采用上述技術(shù)方案后,本發(fā)明實(shí)施例提供的用于分布式共享存儲(chǔ)的任務(wù)同步裝置,創(chuàng)建了第一任務(wù)的內(nèi)存空間快照和第二任務(wù)的同步觀察區(qū),所述第二任務(wù)的同步觀察區(qū)存儲(chǔ)有所述第二任務(wù)的同步變量的內(nèi)存地址。一方面,第一任務(wù)在計(jì)算節(jié)點(diǎn)本地執(zhí)行,任務(wù)完成后才更新共享存儲(chǔ)空間,另一方面,如果所述第二任務(wù)的同步變量被所述第一任務(wù)更新,可以使所述第二任務(wù)根據(jù)所述第二任務(wù)的同步變量的內(nèi)存地址獲知所述第二任務(wù)的同步變量,并將所述第二任務(wù)分配給第二計(jì)算節(jié)點(diǎn),以使所述第二任務(wù)隨所述第二任務(wù)的同步變量的更新而同步執(zhí)行,在很好地維護(hù)了分布式共享存儲(chǔ)系統(tǒng)的內(nèi)存一致性即程序?qū)?nèi)存操作的正確性的同吋,大大減少了分布式共享存儲(chǔ)的任務(wù)同步和內(nèi)存一致性維護(hù)所需要的頻繁的消息發(fā)送和狀態(tài)探尋,既簡化了編程又有效提高了系統(tǒng)的處理性能。具體的,如圖4所示,更新單元12可包括第一更新子単元121,用于如果當(dāng)所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間已經(jīng)被所述第一任務(wù)以外的任務(wù)更新吋,則放棄對(duì)所述第一任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間的更新;第二更新子単元122,用于當(dāng)如果所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間尚未被所述第一任務(wù)以外的任務(wù)更新吋,則更新所述第一任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間。進(jìn)ー步的,如圖5所示,在本發(fā)明的另ー個(gè)實(shí)施例中,所述裝置還包括觀察者調(diào)度単元14,用于將所述第二任務(wù)放入觀察者隊(duì)列,所述觀察者隊(duì)列為存放具有同步觀察區(qū)、但不能被立即執(zhí)行的任務(wù)的隊(duì)列。則,同步單元13可包括第一同步子單元131,用于當(dāng)所述第二任務(wù)的同步變量被所述第一任務(wù)更新時(shí),使所述第二任務(wù)根據(jù)所述第二任務(wù)的同步觀察區(qū)中的同步變量的內(nèi)存地址獲知所述第二任務(wù)的同步變量;第二同步子單元132,用于在將所述第二任務(wù)從所述觀察者隊(duì)列移至執(zhí)行隊(duì)列后,將所述第二任務(wù)分配給所述第二計(jì)算節(jié)點(diǎn),所述執(zhí)行隊(duì)列為存放即將被執(zhí)行的任務(wù)的隊(duì)列??蛇x的,第二同步子單元132,可具體用于在將觀察者隊(duì)列中包括所述第二任務(wù)在內(nèi)的、所有同步變量被所述第一任務(wù)更新的任務(wù),從所述觀察者隊(duì)列移至所述執(zhí)行隊(duì)列后,將所述第二任務(wù)分配給所述第二計(jì)算節(jié)點(diǎn)。具體的,第二同步子單元132,可具體用于在將所述第二任務(wù)從所述觀察者隊(duì)列移 至執(zhí)行隊(duì)列后,如果所述第二任務(wù)的同步變量中還存在至少ー個(gè)同步變量所對(duì)應(yīng)的內(nèi)存空間沒有被更新,則將所述第二任務(wù)重新放入所述觀察者隊(duì)列;在將所述第二任務(wù)從所述觀察者隊(duì)列移至執(zhí)行隊(duì)列后,如果所述第二任務(wù)的同步變量所對(duì)應(yīng)的內(nèi)存空間均已被更新,則執(zhí)行所述第二任務(wù)。本發(fā)明實(shí)施例的方法可以由通用集成電路,如CPU,或ASIC等執(zhí)行。相應(yīng)的,本發(fā)明還提供ー種分布式共享存儲(chǔ)系統(tǒng),包括第一計(jì)算節(jié)點(diǎn)、第二計(jì)算節(jié)點(diǎn)以及前述實(shí)施例中提供的任一項(xiàng)用于分布式共享存儲(chǔ)的任務(wù)同步裝置。所述用于分布式共享存儲(chǔ)的任務(wù)同步裝置位于所述第一計(jì)算節(jié)點(diǎn)內(nèi),或者位于所述第二計(jì)算節(jié)點(diǎn)內(nèi),或者分別與所述第一計(jì)算節(jié)點(diǎn)和所述第二計(jì)算節(jié)點(diǎn)相連,用于將所述第一計(jì)算節(jié)點(diǎn)與所述第二計(jì)算節(jié)點(diǎn)中的需要同步的任務(wù)進(jìn)行同歩。由于所述分布式共享存儲(chǔ)系統(tǒng)中包括有前述實(shí)施例中的用于分布式共享存儲(chǔ)的任務(wù)同步裝置,因此也能實(shí)現(xiàn)該裝置能夠?qū)崿F(xiàn)的有益技術(shù)效果,前文已經(jīng)進(jìn)行了詳細(xì)的說明,此處不再贅述。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分流程可以通過計(jì)算機(jī)程序指令相關(guān)的硬件來完成,前述的程序可以存儲(chǔ)于ー計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種用于分布式共享存儲(chǔ)的任務(wù)同步方法,其特征在于,包括 創(chuàng)建第一任務(wù)的內(nèi)存空間快照和第二任務(wù)的同步觀察區(qū),所述第二任務(wù)的同步觀察區(qū)包括所述第二任務(wù)的同步變量的內(nèi)存地址,所述同步變量為待同步的任務(wù)實(shí)現(xiàn)同步所必需的參數(shù); 將所述第一任務(wù)分配給第一計(jì)算節(jié)點(diǎn)執(zhí)行; 在所述第一任務(wù)執(zhí)行結(jié)束后,更新所述第一任務(wù)的內(nèi)存空間快照和所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間; 如果所述第二任務(wù)的同步變量被所述第一任務(wù)更新,使所述第二任務(wù)根據(jù)所述第二任務(wù)的同步觀察區(qū)中的同步變量的內(nèi)存地址獲知所述第二任務(wù)的同步變量,并將所述第二任務(wù)分配給第二計(jì)算節(jié)點(diǎn),以使所述第二任務(wù)隨所述第二任務(wù)的同步變量的更新而同步執(zhí)行。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述更新所述第一任務(wù)的內(nèi)存空間快照和所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間包括 如果所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間已經(jīng)被所述第一任務(wù)以外的任務(wù)更新,則放棄對(duì)所述第一任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間的更新; 如果所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間尚未被所述第一任務(wù)以外的任務(wù)更新,則更新所述第一任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于, 在所述創(chuàng)建所述第一任務(wù)的內(nèi)存空間快照和所述第二任務(wù)的同步觀察區(qū)后,所述方法還包括 將所述第二任務(wù)放入觀察者隊(duì)列,所述觀察者隊(duì)列為存放具有同步觀察區(qū)、但不能被立即執(zhí)行的任務(wù)的隊(duì)列。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述將所述第二任務(wù)分配給第二計(jì)算節(jié)點(diǎn)包括 將所述第二任務(wù)從所述觀察者隊(duì)列移至執(zhí)行隊(duì)列后,將所述第二任務(wù)分配給所述第二計(jì)算節(jié)點(diǎn),所述執(zhí)行隊(duì)列為存放即將被執(zhí)行的任務(wù)的隊(duì)列。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述將所述第二任務(wù)從所述觀察者隊(duì)列移至執(zhí)行隊(duì)列包括 將所述觀察者隊(duì)列中包括所述第二任務(wù)在內(nèi)的所有同步變量被所述第一任務(wù)更新的任務(wù),從所述觀察者隊(duì)列移至所述執(zhí)行隊(duì)列。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述將所述第二任務(wù)分配給第二計(jì)算節(jié)點(diǎn),以使所述第二任務(wù)隨所述第二任務(wù)的同步變量的更新而同步執(zhí)行包括 如果所述第二任務(wù)的同步變量中還存在至少一個(gè)同步變量所對(duì)應(yīng)的內(nèi)存空間沒有被更新,則將所述第二任務(wù)重新放入所述觀察者隊(duì)列; 如果所述第二任務(wù)的同步變量所對(duì)應(yīng)的內(nèi)存空間均已被更新,則執(zhí)行所述第二任務(wù)。
7.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述第二任務(wù)的同步觀察區(qū)位于所述第二任務(wù)的運(yùn)行上下文中。
8.一種用于分布式共享存儲(chǔ)的任務(wù)同步裝置,其特征在于,包括 創(chuàng)建單元,用于創(chuàng)建第一任務(wù)的內(nèi)存空間快照和第二任務(wù)的同步觀察區(qū),所述第二任務(wù)的同步觀察區(qū)包括所述第二任務(wù)的同步變量的內(nèi)存地址,所述同步變量為待同步的任務(wù)實(shí)現(xiàn)同步所必需的參數(shù); 更新單元,用于將所述第一任務(wù)分配給第一計(jì)算節(jié)點(diǎn)執(zhí)行,在所述第一任務(wù)執(zhí)行結(jié)束后更新所述第一任務(wù)的內(nèi)存空間快照和所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間; 同步單元,用于當(dāng)所述第二任務(wù)的同步變量被所述第一任務(wù)更新時(shí),使所述第二任務(wù)根據(jù)所述第二任務(wù)的同步觀察區(qū)中的同步變量的內(nèi)存地址獲知所述第二任務(wù)的同步變量,并將所述第二任務(wù)分配給第二計(jì)算節(jié)點(diǎn),以使所述第二任務(wù)隨所述第二任務(wù)的同步變量的更新而同步執(zhí)行。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述更新單元包括 第一更新子單元,用于當(dāng)所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間已經(jīng)被所述第一任務(wù)以外的任務(wù)更新時(shí),放棄對(duì)所述第一任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間的更新; 第二更新子單元,用于當(dāng)所述第一任務(wù)的內(nèi)存空間快照對(duì)應(yīng)的內(nèi)存空間尚未被所述第一任務(wù)以外的任務(wù)更新時(shí),更新所述第一任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,還包括 觀察者調(diào)度單元,用于將所述第二任務(wù)放入觀察者隊(duì)列,所述觀察者隊(duì)列為存放具有同步觀察區(qū)、但不能被立即執(zhí)行的任務(wù)的隊(duì)列。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述同步單元包括 第一同步子單元,用于當(dāng)所述第二任務(wù)的同步變量被所述第一任務(wù)更新時(shí),使所述第二任務(wù)根據(jù)所述第二任務(wù)的同步觀察區(qū)中的同步變量的內(nèi)存地址獲知所述第二任務(wù)的同步變量; 第二同步子單元,用于在將所述第二任務(wù)從所述觀察者隊(duì)列移至執(zhí)行隊(duì)列后,將所述第二任務(wù)分配給所述第二計(jì)算節(jié)點(diǎn),所述執(zhí)行隊(duì)列為存放即將被執(zhí)行的任務(wù)的隊(duì)列。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述第二同步子單元具體用于 在將所述觀察者隊(duì)列中包括所述第二任務(wù)在內(nèi)的所有同步變量被所述第一任務(wù)更新的任務(wù),從所述觀察者隊(duì)列移至所述執(zhí)行隊(duì)列后,將所述第二任務(wù)分配給所述第二計(jì)算節(jié)點(diǎn)。
13.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述第二同步子單元具體用于 在將所述第二任務(wù)從所述觀察者隊(duì)列移至執(zhí)行隊(duì)列后,如果所述第二任務(wù)的同步變量中還存在至少一個(gè)同步變量所對(duì)應(yīng)的內(nèi)存空間沒有被更新,則將所述第二任務(wù)重新放入所述觀察者隊(duì)列; 在將所述第二任務(wù)從所述觀察者隊(duì)列移至執(zhí)行隊(duì)列后,如果所述第二任務(wù)的同步變量所對(duì)應(yīng)的內(nèi)存空間均已被更新,則執(zhí)行所述第二任務(wù)。
14.一種分布式共享存儲(chǔ)系統(tǒng),其特征在于,包括第一計(jì)算節(jié)點(diǎn)、第二計(jì)算節(jié)點(diǎn)以及權(quán)利要求8-13中任一項(xiàng)所述的用于分布式共享存儲(chǔ)的任務(wù)同步裝置;所述用于分布式共享存儲(chǔ)的任務(wù)同步裝置位于所述第一計(jì)算節(jié)點(diǎn)內(nèi),或者位于所述第二計(jì)算節(jié)點(diǎn)內(nèi),或者分別與所述第一計(jì)算節(jié)點(diǎn)和所述第二計(jì)算節(jié)點(diǎn)相連,用于將所述第一計(jì)算節(jié)點(diǎn)與所述第二計(jì)算節(jié)點(diǎn)中的需要同步的任務(wù)進(jìn)行同步。
全文摘要
本發(fā)明的實(shí)施例提供了用于分布式共享存儲(chǔ)的任務(wù)同步方法、裝置及系統(tǒng),涉及分布式共享存儲(chǔ)領(lǐng)域,為簡化程序設(shè)計(jì)同時(shí)提升處理性能而發(fā)明。所述方法包括創(chuàng)建第一任務(wù)的內(nèi)存空間快照和第二任務(wù)的同步觀察區(qū),所述第二任務(wù)的同步觀察區(qū)包括所述第二任務(wù)的同步變量的內(nèi)存地址,所述同步變量為待同步的任務(wù)實(shí)現(xiàn)同步所必需的參數(shù);將所述第一任務(wù)分配給第一計(jì)算節(jié)點(diǎn)執(zhí)行;在所述第一任務(wù)執(zhí)行結(jié)束后更新所述第一任務(wù)的內(nèi)存空間快照及其對(duì)應(yīng)的內(nèi)存空間;如果所述第二任務(wù)的同步變量被所述第一任務(wù)更新,使所述第二任務(wù)根據(jù)所述第二任務(wù)的同步變量的內(nèi)存地址獲知所述第二任務(wù)的同步變量,并將所述第二任務(wù)分配給第二計(jì)算節(jié)點(diǎn)。
文檔編號(hào)G06F9/52GK102629221SQ20121004777
公開日2012年8月8日 申請(qǐng)日期2012年2月28日 優(yōu)先權(quán)日2012年2月28日
發(fā)明者曾毓瓏, 顧磷, 馬志強(qiáng) 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1