本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別涉及一種信號鎖分配方法、裝置和網(wǎng)絡(luò)系統(tǒng)。
背景技術(shù):
在多核處理器系統(tǒng)中,多個(gè)程序進(jìn)程間通常會(huì)共享一些數(shù)據(jù),且可能會(huì)同時(shí)訪問(讀/寫)該共享的數(shù)據(jù)。為了保證多進(jìn)程同時(shí)訪問共享數(shù)據(jù)的正確性,多核處理器系統(tǒng)通常使用“信號鎖”機(jī)制來協(xié)調(diào)進(jìn)程間的對共享數(shù)據(jù)的訪問,即所有的進(jìn)程在訪問共享數(shù)據(jù)前,都必須先獲得相應(yīng)的“信號鎖”,并在該進(jìn)程對共享數(shù)據(jù)操作期間,保持對“信號鎖”的所有權(quán),直到操作結(jié)束后再釋放該“信號鎖?!薄靶盘栨i”是一個(gè)互斥的變量,即同一時(shí)刻,只能有一個(gè)進(jìn)程擁有該“信號鎖”。因此,通過“信號鎖”的互斥性就保證了其保護(hù)的共享數(shù)據(jù)的互斥性,即每一時(shí)刻,只有一個(gè)進(jìn)程對共享的數(shù)據(jù)擁有訪問權(quán)。
在信號鎖分配的相關(guān)技術(shù)中,通常采用原子指令和鎖總線的方法,即用一條指令完成“讀后寫”的操作,并且在該指令執(zhí)行時(shí)將總線鎖定,阻斷其他核心訪問信號鎖。其他核心在發(fā)現(xiàn)信號鎖被占用后,一般采取“忙-等待”的方式,即不停的查詢該信號鎖的值,直至其變?yōu)榭臻e為止,或者是采用間歇查詢的方式,即等待固定的時(shí)間間隔后再查詢。
上述信號鎖分配的方式,一方面在鎖定總線時(shí)會(huì)造成其他的處理核心都不能訪問總線上的地址空間,因而性能損失較大;另一方面,“忙-等待”機(jī)制會(huì)產(chǎn)生大量冗余的流量,導(dǎo)致嚴(yán)重的網(wǎng)絡(luò)競爭,而間歇查詢的方式又會(huì)浪費(fèi)CPU的計(jì)算資源,導(dǎo)致分配的效率較低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種信號鎖分配方法、裝置和系統(tǒng),能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高效率。
第一方面,提供一種信號鎖分配的方法,所述方法包括:
信號鎖請求節(jié)點(diǎn)向信號鎖的宿主節(jié)點(diǎn)發(fā)送用于請求占用所述信號鎖的加鎖請求消息;
所述宿主節(jié)點(diǎn)根據(jù)所述加鎖請求消息,向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,并在發(fā)送后修改所述計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目;
所述信號鎖請求節(jié)點(diǎn)接收所述宿主節(jié)點(diǎn)返回的計(jì)數(shù)器的數(shù)值,并根據(jù)所述計(jì)數(shù)器的數(shù)值,確定是否占用所述信號鎖。
結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式,所述信號鎖請求節(jié)點(diǎn)根據(jù)所述計(jì)數(shù)器的數(shù)值,確定是否占用所述信號鎖包括:
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖可用,則占用所述信號鎖;
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖不可用,則繼續(xù)等待所述信號鎖。
結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式,所述計(jì)數(shù)器的指示信號鎖可用的數(shù)值為0,所述計(jì)數(shù)器的指示信號鎖不可用的數(shù)值為非0,
所述在發(fā)送后修改所述計(jì)數(shù)器的數(shù)值包括:在發(fā)送后將所述計(jì)數(shù)器的數(shù)值加一。
結(jié)合第一方面至第一方面的第二種可能的實(shí)現(xiàn)方式中的任一種,在第三種可能的實(shí)現(xiàn)方式,在所述信號鎖請求節(jié)點(diǎn)占用所述信號鎖之后,所述方法還包括:
所述信號鎖請求節(jié)點(diǎn)向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息;
所述宿主節(jié)點(diǎn)在接收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值。
結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式中的任一種,在第四種可能的實(shí)現(xiàn)方式,所述方法還包括:
除所述宿主節(jié)點(diǎn)外的其他節(jié)點(diǎn)接收到所述解鎖請求消息后,判斷是否等待所述信號鎖;
若不等待所述信號鎖,則忽略所述解鎖請求消息;
若等待所述信號鎖,則修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用;
若可用,則占用所述信號鎖;
若不可用,則繼續(xù)等待所述信號鎖。
結(jié)合第一方面的第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,
所述修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值包括:將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一;
所述若等待所述信號鎖,則修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用包括:
若等待所述信號鎖,則將本地計(jì)數(shù)器的數(shù)值減一,并判斷減一后數(shù)值是否為0;
若為0,則確定所述信號鎖可用;
若不為0,則確定所述信號鎖不可用。
第二方面,提供一種信號鎖分配的方法,所述方法包括:
信號鎖請求節(jié)點(diǎn)向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息;
所述信號鎖的宿主節(jié)點(diǎn)在接收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式,所述方法還包括:
除所述宿主節(jié)點(diǎn)外的其他節(jié)點(diǎn)接收到所述解鎖請求消息后,判斷是否等待所述信號鎖;
若不等待所述信號鎖,則忽略所述解鎖請求消息;
若等待所述信號鎖,則修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用;
若可用,則占用所述信號鎖;
若不可用,則繼續(xù)等待所述信號鎖。
結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,
所述修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值包括:將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一;
所述若等待所述信號鎖,則修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用包括:
若等待所述信號鎖,則將本地計(jì)數(shù)器的數(shù)值減一,并判斷減一后數(shù)值是否為0;
若為0,則確定所述信號鎖可用;
若不為0,則確定所述信號鎖不可用。
結(jié)合第二方面至第二方面的第二種可能的實(shí)現(xiàn)方式中的任一種,在第三種可能的實(shí)現(xiàn)方式中,在所述信號鎖請求節(jié)點(diǎn)釋放所述信號鎖之后,所述方法還包括:
所述信號鎖請求節(jié)點(diǎn)向所述宿主節(jié)點(diǎn)發(fā)送用于請求占用所述信號鎖的加鎖請求消息;
所述宿主節(jié)點(diǎn)根據(jù)所述加鎖請求消息,向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,并在發(fā)送后修改所述計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目;
所述信號鎖請求節(jié)點(diǎn)接收所述宿主節(jié)點(diǎn)返回的計(jì)數(shù)器的數(shù)值,并根據(jù)所述計(jì)數(shù)器的數(shù)值,確定是否占用所述信號鎖。
結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述信號鎖請求節(jié)點(diǎn)根據(jù)所述計(jì)數(shù)器的數(shù)值,確定是否占用所述信號鎖包括:
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖可用,則占用所述信號鎖;
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖不可用,則繼續(xù)等待所述信號鎖。
結(jié)合第二方面的第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述計(jì)數(shù)器的指示信號鎖可用的數(shù)值為0,所述計(jì)數(shù)器的指示信號鎖不可用的數(shù)值為非0,
所述在發(fā)送后修改所述計(jì)數(shù)器的數(shù)值包括:在發(fā)送后將所述計(jì)數(shù)器的數(shù)值加一。
第三方面,提供一種信號鎖分配的方法,所述方法包括:
信號鎖請求節(jié)點(diǎn)向宿主節(jié)點(diǎn)發(fā)送用于請求占用信號鎖的加鎖請求消息;
所述信號鎖請求節(jié)點(diǎn)接收所述宿主節(jié)點(diǎn)返回的計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目;
所述信號鎖請求節(jié)點(diǎn)根據(jù)所述計(jì)數(shù)器的數(shù)值,確定是否占用所述信號鎖。
結(jié)合第三方面,在第一種可能的實(shí)現(xiàn)方式中,所述信號鎖請求節(jié)點(diǎn)根據(jù)所述計(jì)數(shù)器的數(shù)值,確定是否占用所述信號鎖包括:
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖可用,則占用所述信號鎖;
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖不可用,則保存所述數(shù)值后繼續(xù)等待。
結(jié)合第三方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述計(jì)數(shù)器的指示信號鎖可用的數(shù)值為0,所述計(jì)數(shù)器的指示信號鎖不可用的數(shù)值為非0。
結(jié)合第三方面的上述任一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,在所述信號鎖請求節(jié)點(diǎn)占用所述信號鎖之后,所述方法還包括:
所述信號鎖請求節(jié)點(diǎn)向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息。
第四方面,提供一種信號鎖分配的方法,所述方法包括:
宿主節(jié)點(diǎn)接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求占用信號鎖的加鎖請求消息;
所述宿主節(jié)點(diǎn)向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值;
所述宿主節(jié)點(diǎn)在向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值后,修改所述計(jì)數(shù)器的數(shù)值,
其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
結(jié)合第四方面,在第一種可能的實(shí)現(xiàn)方式中,所述修改所述計(jì)數(shù)器的數(shù)值包括:所述宿主節(jié)點(diǎn)將計(jì)數(shù)器的數(shù)值加一。
結(jié)合第四方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述方法還包括:
宿主節(jié)點(diǎn)接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求釋放信號鎖的解鎖請求消息;
所述宿主節(jié)點(diǎn)收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值。
結(jié)合第四方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值包括:所述宿主節(jié)點(diǎn)將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一。
第五方面,提供一種信號鎖分配的方法,所述方法包括:
信號鎖請求節(jié)點(diǎn)向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息,使得所述信號鎖的宿主節(jié)點(diǎn)收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
第六方面,一種信號鎖分配的方法,其特征在于,所述方法包括:
宿主節(jié)點(diǎn)接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求釋放信號鎖的解鎖請求消息;
所述宿主節(jié)點(diǎn)收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
結(jié)合第五方面,在第一種可能的實(shí)現(xiàn)方式中,所述修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值包括:所述宿主節(jié)點(diǎn)將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一。
第七方面,提供一種信號鎖分配的方法,所述方法包括:
第三方節(jié)點(diǎn)接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求釋放信號鎖的解鎖請求消息;
若所述第三方節(jié)點(diǎn)等待所述信號鎖,則所述第三方節(jié)點(diǎn)修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用;
若可用,則所述第三方節(jié)點(diǎn)占用所述信號鎖;
若不可用,則所述第三方節(jié)點(diǎn)繼續(xù)等待所述信號鎖;
其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
結(jié)合第七方面,在第一種可能的實(shí)現(xiàn)方式中,所述若所述第三方節(jié)點(diǎn)等待所述信號鎖,則所述第三方節(jié)點(diǎn)修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用包括:
若所述第三方節(jié)點(diǎn)等待所述信號鎖,則所述第三方節(jié)點(diǎn)將本地計(jì)數(shù)器的數(shù)值減一,并判斷減一后數(shù)值是否為0;
若為0,則確定所述信號鎖可用;
若不為0,則確定所述信號鎖不可用。
第八方面,提供一種用于信號鎖分配的網(wǎng)絡(luò)系統(tǒng),所述網(wǎng)絡(luò)系統(tǒng)包括信號鎖請求節(jié)點(diǎn)和信號鎖的宿主節(jié)點(diǎn),其中:
所述信號鎖請求節(jié)點(diǎn),用于向所述宿主節(jié)點(diǎn)發(fā)送用于請求占用所述信號鎖的加鎖請求消息;
所述宿主節(jié)點(diǎn),用于根據(jù)所述加鎖請求消息,向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,并在發(fā)送后修改所述計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目;
所述信號鎖請求節(jié)點(diǎn),用于接收所述宿主節(jié)點(diǎn)返回的計(jì)數(shù)器的數(shù)值,并根 據(jù)所述計(jì)數(shù)器的數(shù)值,確定是否占用所述信號鎖。
結(jié)合第八方面,在第一種可能的實(shí)現(xiàn)方式中,所述信號鎖請求節(jié)點(diǎn)具體用于:
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖可用,則占用所述信號鎖;
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖不可用,則繼續(xù)等待所述信號鎖。
結(jié)合第八方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述計(jì)數(shù)器的指示信號鎖可用的數(shù)值為0,所述計(jì)數(shù)器的指示信號鎖不可用的數(shù)值為非0,
所述宿主節(jié)點(diǎn)具體用于:在發(fā)送后將所述計(jì)數(shù)器的數(shù)值加一。
結(jié)合第八方面的上述任一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述信號鎖請求節(jié)點(diǎn)和所述宿主節(jié)點(diǎn)均為片上網(wǎng)絡(luò)中的節(jié)點(diǎn)。
結(jié)合第八方面的上述任一種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,在所述信號鎖請求節(jié)點(diǎn)占用所述信號鎖之后,所述信號鎖請求節(jié)點(diǎn)還用于,向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息;
所述宿主節(jié)點(diǎn)還用于,在接收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值。
結(jié)合第八方面的第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述網(wǎng)絡(luò)系統(tǒng)還包括第三方節(jié)點(diǎn),所述第三方節(jié)點(diǎn)用于:
在接收到所述解鎖請求消息后,判斷是否等待所述信號鎖;
若不等待所述信號鎖,則忽略所述解鎖請求消息;
若等待所述信號鎖,則修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用;
若可用,則占用所述信號鎖;
若不可用,則繼續(xù)等待所述信號鎖。
結(jié)合第八方面的上第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,
所述宿主節(jié)點(diǎn)用于:將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一;
所述第三方節(jié)點(diǎn)具體用于:
若等待所述信號鎖,則將本地計(jì)數(shù)器的數(shù)值減一,并判斷減一后數(shù)值是否為0;
若為0,則確定所述信號鎖可用;
若不為0,則確定所述信號鎖不可用。
第九方面,提供一種用于信號鎖分配的網(wǎng)絡(luò)系統(tǒng),所述網(wǎng)絡(luò)系統(tǒng)包括信號鎖請求節(jié)點(diǎn)和信號鎖的宿主節(jié)點(diǎn),其中:
所述信號鎖請求節(jié)點(diǎn),用于向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息;
所述宿主節(jié)點(diǎn),用于在接收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
結(jié)合第九方面,在第一種可能的實(shí)現(xiàn)方式中,所述網(wǎng)絡(luò)系統(tǒng)還包括第三方節(jié)點(diǎn),其中:
所述第三方節(jié)點(diǎn),用于在接收到所述解鎖請求消息后,判斷是否等待所述信號鎖;
若不等待所述信號鎖,則忽略所述解鎖請求消息;
若等待所述信號鎖,則修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用;
若可用,則占用所述信號鎖;
若不可用,則繼續(xù)等待所述信號鎖。
結(jié)合第九方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,
所述宿主節(jié)點(diǎn)具體用于:將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一;
所述第三方節(jié)點(diǎn)具體用于:
若等待所述信號鎖,則將本地計(jì)數(shù)器的數(shù)值減一,并判斷減一后數(shù)值是否為0;
若為0,則確定所述信號鎖可用;
若不為0,則確定所述信號鎖不可用。
結(jié)合第九方面的上述任一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述信號鎖請求節(jié)點(diǎn)、所述第三方節(jié)點(diǎn)和所述宿主節(jié)點(diǎn)均為片上網(wǎng)絡(luò)中的節(jié)點(diǎn)。
結(jié)合第九方面的上述任一種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,在所述信號鎖請求節(jié)點(diǎn)釋放所述信號鎖之后,所述信號鎖請求節(jié)點(diǎn)還用于:
向所述宿主節(jié)點(diǎn)發(fā)送用于請求占用所述信號鎖的加鎖請求消息;
所述宿主節(jié)點(diǎn)還用于,根據(jù)所述加鎖請求消息,向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,并在發(fā)送后修改所述計(jì)數(shù)器的數(shù)值,其中, 所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目;
所述信號鎖請求節(jié)點(diǎn),還用于接收所述宿主節(jié)點(diǎn)返回的計(jì)數(shù)器的數(shù)值,并根據(jù)所述計(jì)數(shù)器的數(shù)值,確定是否占用所述信號鎖。
結(jié)合第九方面的第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述信號鎖請求節(jié)點(diǎn)具體用于:
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖可用,則占用所述信號鎖;
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖不可用,則繼續(xù)等待所述信號鎖。
結(jié)合第九方面的第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述計(jì)數(shù)器的指示信號鎖可用的數(shù)值為0,所述計(jì)數(shù)器的指示信號鎖不可用的數(shù)值為非0,
所述宿主節(jié)點(diǎn)具體用于:在發(fā)送后將所述計(jì)數(shù)器的數(shù)值加一。
第十方面,提供一種信號鎖的裝置,所述裝置包括處理單元、通信單元和信號鎖控制單元,其中:
所述處理單元,用于控制所述通信單元向宿主節(jié)點(diǎn)發(fā)送用于請求占用信號鎖的加鎖請求消息;
所述通信單元,用于接收所述宿主節(jié)點(diǎn)返回的計(jì)數(shù)器的數(shù)值,并返回給所述信號鎖控制單元,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目;
所述信號鎖控制單元,用于接收所述通信單元返回的所述計(jì)數(shù)器的數(shù)值;
所述處理單元,還用于根據(jù)所述信號鎖控制單元接收的所述計(jì)數(shù)器的數(shù)值,確定是否占用所述信號鎖。
結(jié)合第十方面,在第一種可能的實(shí)現(xiàn)方式中,所述處理單元具體用于:
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖可用,則占用所述信號鎖;
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖不可用,則控制所述信號鎖控制單元保存所述數(shù)值后繼續(xù)等待。
結(jié)合第十方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述計(jì)數(shù)器的指示信號鎖可用的數(shù)值為0,所述計(jì)數(shù)器的指示信號鎖不可用的數(shù)值為非0。
結(jié)合第十方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述信號鎖的裝置為與多內(nèi)核處理器中的一個(gè)內(nèi)核對應(yīng)的裝置,所述通信單元為 路由器。
結(jié)合第十方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述信號鎖控制單元集成于處理單元中。
結(jié)合第十方面的第一種或第二種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,在占用所述信號鎖之后,所述處理單元還用于:
控制所述通信單元向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息。
第十一方面,提供一種信號鎖的裝置,所述裝置包括處理單元、通信單元和信號鎖控制單元,其中:
所述處理單元,用于控制所述通信單元接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求占用信號鎖的加鎖請求消息;
所述信號鎖控制單元,用于讀取本地計(jì)數(shù)器的數(shù)值,并反饋給所述通信單元;
所述通信單元,用于向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述計(jì)數(shù)器的數(shù)值;
所述信號鎖控制單元,用于在所述通信單元向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值后,修改本地計(jì)數(shù)器的數(shù)值,
其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
結(jié)合第十一方面,在第一種可能的實(shí)現(xiàn)方式中,所述信號鎖控制單元具體用于:將本地計(jì)數(shù)器的數(shù)值加一。
結(jié)合第十一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述信號鎖的裝置為與多內(nèi)核處理器中的一個(gè)內(nèi)核對應(yīng)的裝置,所述通信單元為路由器。
結(jié)合第十一方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述信號鎖控制單元集成于處理單元中。
結(jié)合第十一方面的第一種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,
所述通信單元,用于接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求釋放信號鎖的解鎖請求消息,并遞送給所述信號鎖控制單元;
所述信號鎖控制單元,用于在收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值。
結(jié)合第十一方面的第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述信號鎖控制單元具體用于:將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一。
第十二方面,提供一種信號鎖的裝置,所述裝置包括處理單元和通信單元:
所述處理單元,用于控制所述通信單元;
所述通信單元,用于在所述處理單元的控制下向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息,使得所述信號鎖的宿主節(jié)點(diǎn)收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
第十三方面,提供一種信號鎖的裝置,所述裝置包括處理單元,通信單元和信號鎖控制單元,其中:
所述通信單元,用于在所述處理單元的控制下接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求釋放信號鎖的解鎖請求消息,并反饋給所述信號鎖控制單元;
所述信號鎖控制單元,用于在收到所述解鎖請求消息后,修改本地計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
結(jié)合第十三方面,在第一種可能的實(shí)現(xiàn)方式中,所述信號鎖控制單元具體用于:將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一。
結(jié)合第十三方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述信號鎖的裝置為與多內(nèi)核處理器中的一個(gè)內(nèi)核對應(yīng)的裝置,所述通信單元為路由器。
結(jié)合第十三方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述信號鎖控制單元集成于處理單元中。
第十四方面,提供一種信號鎖的裝置,所述裝置包括處理單元、通信單元和信號鎖控制單元:
所述通信單元,用于在所述處理單元的控制下接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求釋放信號鎖的解鎖請求消息;
信號鎖控制單元,用于在所述處理單元確定出所述裝置等待所述信號鎖時(shí),修改本地計(jì)數(shù)器的數(shù)值,
所述處理單元,還用于確定修改后的數(shù)值是否指示信號鎖可用;
若可用,則控制所述裝置占用所述信號鎖;
若不可用,則控制所述裝置繼續(xù)等待所述信號鎖;
其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
結(jié)合第十四方面,在第一種可能的實(shí)現(xiàn)方式中,所述信號鎖控制單元具體 用于:
若在所述處理單元確定出所述裝置等待所述信號鎖時(shí),將本地計(jì)數(shù)器的數(shù)值減一;
所述處理單元具體用于:
判斷所述信號鎖控制單元中的本地計(jì)數(shù)器減一后數(shù)值是否為0;
若為0,則確定所述信號鎖可用;
若不為0,則確定所述信號鎖不可用。
結(jié)合第十四方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述信號鎖的裝置為與多內(nèi)核處理器中的一個(gè)內(nèi)核對應(yīng)的裝置,所述通信單元為路由器。
結(jié)合第十四方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述信號鎖控制單元集成于處理單元中。
本發(fā)明實(shí)施例提供的信號鎖分配的方法、裝置和系統(tǒng),利用計(jì)數(shù)器的數(shù)值來反映等待信號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)加鎖請求消息和/或解鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1A是本發(fā)明實(shí)施例提供的一種信號鎖分配的方法的流程圖;
圖1B示出了本發(fā)明一個(gè)實(shí)施例提供的信號鎖加鎖的流程示意圖;
圖1C示出了本發(fā)明一個(gè)實(shí)施例提供的信號鎖解鎖的流程示意圖;
圖2是本發(fā)明實(shí)施例提供的另一種信號鎖分配的方法的流程圖;
圖3是本發(fā)明實(shí)施例提供的另一種信號鎖分配的方法的流程圖;
圖4是本發(fā)明實(shí)施例提供的另一種信號鎖分配的方法的流程圖;
圖5是本發(fā)明實(shí)施例提供的另一種信號鎖分配的方法的流程圖;
圖6是本發(fā)明實(shí)施例提供的另一種信號鎖分配的方法的流程圖;
圖7是本發(fā)明實(shí)施例提供的另一種信號鎖分配的方法的流程圖;
圖8A是本發(fā)明實(shí)施例提供的一種信號鎖分配的網(wǎng)絡(luò)系統(tǒng)的結(jié)構(gòu)框圖;
圖8B是本發(fā)明實(shí)施例提供的另一種信號鎖分配的網(wǎng)絡(luò)系統(tǒng)的結(jié)構(gòu)框圖;
圖9A是本發(fā)明實(shí)施例提供的一種信號鎖分配的網(wǎng)絡(luò)系統(tǒng)的結(jié)構(gòu)框圖;
圖9B是本發(fā)明實(shí)施例提供的另一種信號鎖分配的網(wǎng)絡(luò)系統(tǒng)的結(jié)構(gòu)框圖;
圖10是本發(fā)明實(shí)施例提供的一種信號鎖的裝置的結(jié)構(gòu)框圖;
圖11是本發(fā)明實(shí)施例提供的另一種信號鎖的裝置的結(jié)構(gòu)框圖;
圖12是本發(fā)明實(shí)施例提供的一種信號鎖的裝置的結(jié)構(gòu)框圖;
圖13是本發(fā)明實(shí)施例提供的另一種信號鎖的裝置的結(jié)構(gòu)框圖;
圖14是本發(fā)明實(shí)施例提供的另一種信號鎖的裝置的結(jié)構(gòu)框圖;
圖15A是本發(fā)明實(shí)施例提供的基于片上網(wǎng)絡(luò)(Network-on-Chip,NoC)的多核系統(tǒng)架構(gòu)的示意圖;
圖15B是圖15A所示多核系統(tǒng)架構(gòu)在加鎖情形下的消息傳遞示意圖;
圖15C是圖15A所示多核系統(tǒng)架構(gòu)在解鎖情形下的消息傳遞示意圖。
具體實(shí)施方式
為了本領(lǐng)域技術(shù)人員更好地理解本申請的技術(shù)方案,下面先對本文中的一些術(shù)語進(jìn)行解釋。
本發(fā)明實(shí)施例中提及的“信號鎖”表示,使用一個(gè)布爾變量記錄共享資源的使用情況。例如,一個(gè)信號鎖的值可以為0或者為1,其中,0表示當(dāng)前共享資源處于空閑狀態(tài),1表示共享資源處于被占用(忙)狀態(tài)。
本發(fā)明實(shí)施例中提及的“節(jié)點(diǎn)”可以是,片上網(wǎng)絡(luò)(Network-on-Chip,NoC)中與多內(nèi)核處理器中的一個(gè)內(nèi)核對應(yīng)的裝置,也可以是因特網(wǎng)中的一個(gè)獨(dú)立的終端設(shè)備。
本發(fā)明實(shí)施例中提及的“信號鎖請求節(jié)點(diǎn)”指的是發(fā)出信號鎖加鎖請求消息和/或信號鎖解鎖請求消息的節(jié)點(diǎn)。即,發(fā)出用于請求占用信號鎖的加鎖請求消息和/或發(fā)出用于請求釋放信號鎖的解鎖請求消息的節(jié)點(diǎn)都可以稱為信號鎖請求節(jié)點(diǎn)。
本發(fā)明實(shí)施例中提及的信號鎖的“宿主節(jié)點(diǎn)”是指,對信號鎖發(fā)揮管理控制作用的節(jié)點(diǎn)。
本發(fā)明實(shí)施例中提及的“第三方節(jié)點(diǎn)”是指,除信號鎖請求節(jié)點(diǎn)和宿主節(jié)點(diǎn)外的節(jié)點(diǎn)。
在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,多核處理器已經(jīng)非常普及。隨著半導(dǎo)體技術(shù)的發(fā)展和計(jì)算機(jī)性能的提升,多核化已成為當(dāng)前處理器發(fā)展的主流趨勢。在嵌入式處理器和臺(tái)式機(jī)處理器領(lǐng)域,4-8核的多核處理器已成為目前市場的主流,而在超級計(jì)算機(jī)和數(shù)據(jù)服務(wù)器等高性能計(jì)算領(lǐng)域,處理器中的核數(shù)則更多。隨著處理器中內(nèi)核數(shù)量的增加,導(dǎo)致存儲(chǔ)器等硬件資源的共享度提高,共享資源成為制約多核系統(tǒng)并行性能的瓶頸。例如,多個(gè)處理器內(nèi)核頻繁的讀寫同一個(gè)共享數(shù)據(jù),會(huì)導(dǎo)致緩存(Cache)錯(cuò)失的頻率大大提高,從而影響整個(gè)系統(tǒng)的性能。
本發(fā)明實(shí)施例提供的信號鎖分配的方法、裝置和系統(tǒng)能夠解決基于NoC架構(gòu)的分布式多核系統(tǒng)的“信號鎖”分配問題,并解決傳統(tǒng)信號鎖分配方案中,鎖總線占用帶寬、亂序競爭、忙-等待等問題,實(shí)現(xiàn)有序的、無競爭的分布式“信號鎖”,從而提高多核系統(tǒng)并行執(zhí)行的效率。當(dāng)然,本發(fā)明實(shí)施例提供的信號鎖分配的方案并不局限于此,還可以應(yīng)用于非NoC架構(gòu)的網(wǎng)絡(luò)環(huán)境中,例如對于因特網(wǎng)環(huán)境中的各種終端設(shè)備也可以應(yīng)用本申請的方案來實(shí)現(xiàn)信號鎖分配。
本發(fā)明實(shí)施例中的信號鎖分配方式對發(fā)出信號鎖請求(包括加鎖請求和解鎖請求)的各個(gè)節(jié)點(diǎn)進(jìn)行協(xié)調(diào),保證每一時(shí)刻只有一個(gè)節(jié)點(diǎn)占用信號鎖,從而向各個(gè)節(jié)點(diǎn)有序地分配信號鎖。
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
本發(fā)明實(shí)施例提供一種信號鎖分配的方法,所述方法可應(yīng)用于基于片上網(wǎng)絡(luò)(NoC)的通信系統(tǒng)中,所述通信系統(tǒng)中可包含信號鎖請求節(jié)點(diǎn)以及信號鎖的宿主節(jié)點(diǎn),還可以包括第三方節(jié)點(diǎn)。其中,NoC是應(yīng)用于片上系統(tǒng)(System on Chip,SoC)的一種通信方法,它將網(wǎng)絡(luò)的理論和方法應(yīng)用于芯片上的通信,相對于傳統(tǒng)總線(bus)和交叉開關(guān)(crossbar)的互聯(lián)方式,NoC可有效提高片上通信系統(tǒng)的擴(kuò)展性、吞吐率等性能。
圖15A示出了基于NoC的多核處理器的架構(gòu)。參見圖15A,圖中的一個(gè)方框即表示本文中的一個(gè)節(jié)點(diǎn)(node)。該節(jié)點(diǎn)可以包括處理單元(Processing Element,PE)、信號鎖控制單元和路由器。當(dāng)信號鎖控制單元集成于PE中時(shí),該節(jié)點(diǎn)可以只包括處理單元和路由器。圖15A中方框表示的節(jié)點(diǎn)可以是信號鎖請求節(jié)點(diǎn),可以是信號鎖的宿主節(jié)點(diǎn),也可以是第三方節(jié)點(diǎn),方框表示的節(jié)點(diǎn)之間通過路由器來交互通信,方框表示的這些節(jié)點(diǎn)即構(gòu)成本文中的NoC的一部分。
圖1A是本發(fā)明實(shí)施例提供的一種信號鎖分配的方法。參照圖1A,本發(fā)明實(shí)施例提供的信號鎖分配的方法包括:
11、信號鎖請求節(jié)點(diǎn)向信號鎖的宿主節(jié)點(diǎn)發(fā)送用于請求占用所述信號鎖的加鎖請求消息。
在本發(fā)明實(shí)施例中,信號鎖可以具有唯一標(biāo)識(shí),例如使用信號鎖的編號來作為信號鎖的唯一標(biāo)識(shí)。加鎖請求消息中可攜帶信號鎖的編號,這樣,信號鎖請求節(jié)點(diǎn)在請求某一信號鎖時(shí),可以根據(jù)信號鎖的編號以及信號鎖和信號鎖編號之間固定的映射關(guān)系獲知相應(yīng)的信號鎖。
12、所述宿主節(jié)點(diǎn)根據(jù)所述加鎖請求消息,向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,并在發(fā)送后修改所述計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
13、所述信號鎖請求節(jié)點(diǎn)接收所述宿主節(jié)點(diǎn)返回的計(jì)數(shù)器的數(shù)值,如果所述計(jì)數(shù)器的數(shù)值指示信號鎖可用,則所述信號鎖請求節(jié)點(diǎn)占用所述信號鎖;如果所述計(jì)數(shù)器的數(shù)值指示信號鎖不可用,則所述信號鎖請求節(jié)點(diǎn)繼續(xù)等待所述信號鎖。
本發(fā)明實(shí)施例提供的信號鎖分配的方法,利用計(jì)數(shù)器的數(shù)值來反映等待信號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)加鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
其中,可選地,所述計(jì)數(shù)器的指示信號鎖可用的數(shù)值為0,所述計(jì)數(shù)器的指示信號鎖不可用的數(shù)值為非0。當(dāng)然,在本發(fā)明的范圍內(nèi),還可以根據(jù)需要采用其他特定的數(shù)值來指示信號鎖可用,例如,也可以使用00來指示信號鎖可用,除00外的其他數(shù)值來指示信號鎖不可用。
可選地,步驟12中所述在發(fā)送后修改所述計(jì)數(shù)器的數(shù)值可具體包括:在發(fā)送后將所述計(jì)數(shù)器的數(shù)值加一。當(dāng)然,在本發(fā)明的范圍內(nèi),利用可以指示一個(gè)加鎖請求的其他數(shù)值也是可以的,例如,每一個(gè)加鎖請求,計(jì)數(shù)器的數(shù)值加2;又例如,每一個(gè)加鎖請求,計(jì)數(shù)器的數(shù)值加3等等。
圖1B示出了本發(fā)明一個(gè)實(shí)施例提供的信號鎖加鎖流程的示意圖。由圖1B可知,在計(jì)數(shù)器數(shù)值的增減幅度為1時(shí)的加鎖過程如下:任意信號鎖請求節(jié)點(diǎn)在請求某一信號鎖時(shí),根據(jù)信號鎖的編號,以固定的映射關(guān)系,向其宿主節(jié)點(diǎn)發(fā)出加鎖請求消息;宿主節(jié)點(diǎn)中收到請求信號后,返回當(dāng)前計(jì)數(shù)器中的數(shù)值,并將當(dāng)前計(jì)數(shù)器加一;信號鎖請求節(jié)點(diǎn)收到返回值后,如果該值為0,表示該信號鎖可用;如果為非0,則不可用,保存該數(shù)值后繼續(xù)等待。
在本發(fā)明實(shí)施例中,信號鎖在占用信號鎖完成處理之后,即可釋放所述信號鎖。在本發(fā)明的另一個(gè)實(shí)施例中,可選地,在所述信號鎖請求節(jié)點(diǎn)占用所述信號鎖之后,所述方法還可包括:
所述信號鎖請求節(jié)點(diǎn)向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息;
所述宿主節(jié)點(diǎn)在接收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值。
其中,可選地,所述修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值可包括:將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一。當(dāng)然,在本發(fā)明的范圍內(nèi),利用可以指示一個(gè)解鎖請求的其他數(shù)值也是可以的,例如,每一個(gè)解鎖請求,計(jì)數(shù)器的數(shù)值減2;又例如,每一個(gè)解鎖請求,計(jì)數(shù)器的數(shù)值減3等等。
在信號鎖請求節(jié)點(diǎn)發(fā)出信號鎖解鎖請求消息的情況下,可選地,所述方法還可包括:
除所述宿主節(jié)點(diǎn)外的其他節(jié)點(diǎn)接收到所述解鎖請求消息后,判斷是否等待所述信號鎖;
若不等待所述信號鎖,則忽略所述解鎖請求消息;
若等待所述信號鎖,則修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用;
若可用,則占用所述信號鎖;
若不可用,則繼續(xù)等待所述信號鎖。
其中,所述若等待所述信號鎖,則修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用包括:
若等待所述信號鎖,則將本地計(jì)數(shù)器的數(shù)值減一,并判斷減一后數(shù)值是否為0;
若為0,則確定所述信號鎖可用;
若不為0,則確定所述信號鎖不可用。
圖1C示出了本發(fā)明一個(gè)實(shí)施例提供的信號鎖加鎖的流程示意圖。由圖1C可知,在計(jì)數(shù)器數(shù)值的增減幅度為1時(shí)的解鎖過程如下:任一信號鎖請求節(jié)點(diǎn)解鎖某一信號鎖時(shí),通過片上網(wǎng)絡(luò)向所有節(jié)點(diǎn)廣播該解鎖請求;信號鎖的宿主節(jié)點(diǎn)收到解鎖請求后,將該信號鎖的計(jì)數(shù)器減一;其他節(jié)點(diǎn)收到該解鎖信號后,首先判斷是否等待該信號鎖,如果當(dāng)前正等待該信號鎖,則將本地的保存的計(jì)數(shù)器值減一,減一后如果為0則得到該信號鎖,如果還是非0則繼續(xù)等待。如果當(dāng)前節(jié)點(diǎn)不等待該信號鎖,則忽略該解鎖消息。
當(dāng)然,在本發(fā)明的范圍內(nèi),利用可以指示一個(gè)解鎖請求的其他數(shù)值也是可以的,例如,每一個(gè)解鎖請求,計(jì)數(shù)器的數(shù)值減2;又例如,每一個(gè)解鎖請求,計(jì)數(shù)器的數(shù)值減3等等。
需要說明的是,在本發(fā)明實(shí)施例中,在信號鎖加鎖請求和信號鎖解鎖請求的情況下,計(jì)數(shù)器數(shù)值的增減是相應(yīng)的。即,若針對一個(gè)信號鎖加鎖請求,計(jì)數(shù)器的數(shù)值加1,則針對一個(gè)信號鎖解鎖請求,計(jì)數(shù)器的數(shù)值減1。同時(shí),在本發(fā)明實(shí)施例中,對于信號鎖加鎖請求和信號鎖解鎖請求,計(jì)數(shù)器的數(shù)值的增減幅度也是一致的。例如,若對于信號鎖加鎖請求,計(jì)數(shù)器的增加幅度為2,則對于信號鎖解鎖請求,計(jì)數(shù)器的減小幅度也為2。
圖2是本發(fā)明實(shí)施例提供的一種信號鎖分配的方法。參照圖2,本發(fā)明實(shí)施例提供的信號鎖分配的方法可包括:
21、信號鎖請求節(jié)點(diǎn)向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息;
22、所述信號鎖的宿主節(jié)點(diǎn)在接收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
本發(fā)明實(shí)施例提供的信號鎖分配的方法,利用計(jì)數(shù)器的數(shù)值來反映等待信 號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)解鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
其中,可選地,步驟22中所述修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值可包括:將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一。當(dāng)然,在本發(fā)明的范圍內(nèi),利用可以指示一個(gè)解鎖請求的其他數(shù)值也是可以的,例如,每一個(gè)解鎖請求,計(jì)數(shù)器的數(shù)值減2;又例如,每一個(gè)解鎖請求,計(jì)數(shù)器的數(shù)值減3等等。
在信號鎖請求節(jié)點(diǎn)發(fā)出解鎖請求消息的情況下,本發(fā)明實(shí)施例提供的信號鎖分配的方法還可包括:
除所述宿主節(jié)點(diǎn)外的其他節(jié)點(diǎn)接收到所述解鎖請求消息后,判斷是否等待所述信號鎖;
若不等待所述信號鎖,則忽略所述解鎖請求消息;
若等待所述信號鎖,則修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用;
若可用,則占用所述信號鎖;
若不可用,則繼續(xù)等待所述信號鎖。
所述若等待所述信號鎖,則修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用包括:
若等待所述信號鎖,則將本地計(jì)數(shù)器的數(shù)值減一,并判斷減一后數(shù)值是否為0;
若為0,則確定所述信號鎖可用;
若不為0,則確定所述信號鎖不可用。
可選地,在本發(fā)明的另一個(gè)實(shí)施例中,在所述信號鎖請求節(jié)點(diǎn)釋放所述信號鎖之后,所述信號鎖請求節(jié)點(diǎn)在需要中心占用所述信號鎖時(shí),可以再次發(fā)出加鎖請求消息。相應(yīng)地,在上述步驟21~23的基礎(chǔ)上,所述方法還可包括:
所述信號鎖請求節(jié)點(diǎn)向所述宿主節(jié)點(diǎn)發(fā)送用于請求占用所述信號鎖的加鎖請求消息;
所述宿主節(jié)點(diǎn)根據(jù)所述加鎖請求消息,向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述宿 主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,并在發(fā)送后修改所述計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目;
所述信號鎖請求節(jié)點(diǎn)接收所述宿主節(jié)點(diǎn)返回的計(jì)數(shù)器的數(shù)值,并根據(jù)所述計(jì)數(shù)器的數(shù)值,進(jìn)行信號鎖分配。
其中,所述信號鎖請求節(jié)點(diǎn)根據(jù)所述計(jì)數(shù)器的數(shù)值,進(jìn)行信號鎖分配包括:
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖可用,則占用所述信號鎖;
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖不可用,則繼續(xù)等待所述信號鎖。
可選地,所述計(jì)數(shù)器的指示信號鎖可用的數(shù)值為0,所述計(jì)數(shù)器的指示信號鎖不可用的數(shù)值為非0,
所述在發(fā)送后修改所述計(jì)數(shù)器的數(shù)值包括:在發(fā)送后將所述計(jì)數(shù)器的數(shù)值加一。
需要說明的是,在本發(fā)明實(shí)施例中,在信號鎖加鎖請求和信號鎖解鎖請求的情況下,計(jì)數(shù)器數(shù)值的增減是相應(yīng)的。即,若一個(gè)信號鎖加鎖請求,計(jì)數(shù)器的數(shù)值加1,則一個(gè)信號鎖解鎖請求,計(jì)數(shù)器的數(shù)值減1。同時(shí),在本發(fā)明實(shí)施例中,對于信號鎖加鎖請求和信號鎖解鎖請求,計(jì)數(shù)器的數(shù)值的增減幅度也是一致的。例如,若對于信號鎖加鎖請求,計(jì)數(shù)器的增加幅度為2,則對于信號鎖解鎖請求,計(jì)數(shù)器的減小幅度也為2。
圖3是本發(fā)明實(shí)施例提供的一種信號鎖分配的方法。參照圖3,本發(fā)明實(shí)施例提供的信號鎖分配的方法可包括:
31、信號鎖請求節(jié)點(diǎn)向宿主節(jié)點(diǎn)發(fā)送用于請求占用信號鎖的加鎖請求消息;
32、所述信號鎖請求節(jié)點(diǎn)接收所述宿主節(jié)點(diǎn)返回的計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目;
33、如果所述計(jì)數(shù)器的數(shù)值指示信號鎖可用,則所述信號鎖請求節(jié)點(diǎn)占用所述信號鎖;如果所述計(jì)數(shù)器的數(shù)值指示信號鎖不可用,則所述信號鎖請求節(jié)點(diǎn)保存所述數(shù)值后繼續(xù)等待。
本發(fā)明實(shí)施例提供的信號鎖分配的方法,利用計(jì)數(shù)器的數(shù)值來反映等待信號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)加鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而 導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
其中,所述計(jì)數(shù)器的指示信號鎖可用的數(shù)值可以為0,所述計(jì)數(shù)器的指示信號鎖不可用的數(shù)值開為非0。
在本發(fā)明實(shí)施例中,在所述信號鎖請求節(jié)點(diǎn)占用所述信號鎖之后,本發(fā)明實(shí)施例提供的信號鎖分配的方法還可包括:
所述信號鎖請求節(jié)點(diǎn)向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息。
圖4是本發(fā)明實(shí)施例提供的一種信號鎖分配的方法。參照圖4,本發(fā)明實(shí)施例提供的信號鎖分配的方法可包括:
41、宿主節(jié)點(diǎn)接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求占用信號鎖的加鎖請求消息;
42、所述宿主節(jié)點(diǎn)向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值;
43、所述宿主節(jié)點(diǎn)在向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值后,修改所述計(jì)數(shù)器的數(shù)值,
其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
本發(fā)明實(shí)施例提供的信號鎖分配的方法,利用計(jì)數(shù)器的數(shù)值來反映等待信號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)解鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
其中,可選地,步驟43中所述修改所述計(jì)數(shù)器的數(shù)值可包括:所述宿主節(jié)點(diǎn)將計(jì)數(shù)器的數(shù)值加一。
在本發(fā)明的另一個(gè)實(shí)施例中,可選地,在步驟41~43的基礎(chǔ)上,所述方法還可包括:
宿主節(jié)點(diǎn)接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求釋放信號鎖的解鎖請求消息;
所述宿主節(jié)點(diǎn)收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值。
其中,所述修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值可包括:所述宿主節(jié)點(diǎn)將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一。
圖5是本發(fā)明實(shí)施例提供的一種信號鎖分配的方法。參照圖5,本發(fā)明實(shí)施例提供的信號鎖分配的方法可包括:
51、信號鎖請求節(jié)點(diǎn)向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息,使得所述信號鎖的宿主節(jié)點(diǎn)收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
本發(fā)明實(shí)施例提供的信號鎖分配的方法,信號鎖請求節(jié)點(diǎn)通過廣播解鎖請求消息,使得宿主節(jié)點(diǎn)能夠根據(jù)解鎖請求消息相應(yīng)修改本地計(jì)數(shù)器中的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
圖6是本發(fā)明實(shí)施例提供的一種信號鎖分配的方法。參照圖6,本發(fā)明實(shí)施例提供的信號鎖分配的方法可包括:
61、宿主節(jié)點(diǎn)接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求釋放信號鎖的解鎖請求消息;
62、所述宿主節(jié)點(diǎn)收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
其中,可選地,步驟62所述修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值可包括:所述宿主節(jié)點(diǎn)將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一。
本發(fā)明實(shí)施例提供的信號鎖分配的方法,信號鎖請求節(jié)點(diǎn)通過廣播解鎖請求消息,宿主節(jié)點(diǎn)能夠根據(jù)解鎖請求消息相應(yīng)修改本地計(jì)數(shù)器中的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
圖7是本發(fā)明實(shí)施例提供的一種信號鎖分配的方法。參照圖7,本發(fā)明實(shí)施例提供的信號鎖分配的方法可包括:
71、第三方節(jié)點(diǎn)接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求釋放信號鎖的解鎖請求消息;
72、若所述第三方節(jié)點(diǎn)等待所述信號鎖,則所述第三方節(jié)點(diǎn)修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用;
73、若可用,則所述第三方節(jié)點(diǎn)占用所述信號鎖;
74、若不可用,則所述第三方節(jié)點(diǎn)繼續(xù)等待所述信號鎖;
其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
其中,可選地,若所述第三方節(jié)點(diǎn)等待所述信號鎖,則所述第三方節(jié)點(diǎn)修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用包括:
若所述第三方節(jié)點(diǎn)等待所述信號鎖,則所述第三方節(jié)點(diǎn)將本地計(jì)數(shù)器的數(shù)值減一,并判斷減一后數(shù)值是否為0;
若為0,則確定所述信號鎖可用;
若不為0,則確定所述信號鎖不可用。
本發(fā)明實(shí)施例提供的信號鎖分配的方法,信號鎖請求節(jié)點(diǎn)通過廣播解鎖請求消息,第三方節(jié)點(diǎn)能夠根據(jù)解鎖請求消息相應(yīng)修改本地計(jì)數(shù)器中的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
圖8A是本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)系統(tǒng)。參照圖8A,本發(fā)明實(shí)施例提供的信號鎖分配的網(wǎng)絡(luò)系統(tǒng)800可包括:信號鎖請求節(jié)點(diǎn)81和信號鎖的宿主節(jié)點(diǎn)82。其中:
所述信號鎖請求節(jié)點(diǎn)81,用于向所述宿主節(jié)點(diǎn)82發(fā)送用于請求占用所述信號鎖的加鎖請求消息;
所述宿主節(jié)點(diǎn)82,用于根據(jù)所述加鎖請求消息,向所述信號鎖請求節(jié)點(diǎn)81發(fā)送所述宿主節(jié)點(diǎn)82中計(jì)數(shù)器的數(shù)值,并在發(fā)送后修改所述計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目;
所述信號鎖請求節(jié)點(diǎn)81,用于接收所述宿主節(jié)點(diǎn)82返回的計(jì)數(shù)器的數(shù)值,如果所述計(jì)數(shù)器的數(shù)值指示信號鎖可用,則占用所述信號鎖;如果所述計(jì)數(shù)器的數(shù)值指示信號鎖不可用,則繼續(xù)等待所述信號鎖。
其中,所述宿主節(jié)點(diǎn)82中的計(jì)數(shù)器初始時(shí)可以從零開始計(jì)數(shù),每個(gè)加鎖請求使計(jì)數(shù)器增加指定數(shù)值,而解鎖請求則使計(jì)數(shù)器減少該指定數(shù)值,例如,每個(gè)加鎖請求使計(jì)數(shù)器加一,解鎖請求則使計(jì)數(shù)器減一。
其中,所述計(jì)數(shù)器的指示信號鎖可用的數(shù)值為0,所述計(jì)數(shù)器的指示信號鎖不可用的數(shù)值為非0。
其中,在接收到所述加鎖請求消息后,所述宿主節(jié)點(diǎn)82可具體用于:在發(fā)送后將所述計(jì)數(shù)器的數(shù)值加一。
可選地,所述信號鎖請求節(jié)點(diǎn)81和所述宿主節(jié)點(diǎn)82均為片上網(wǎng)絡(luò)中的節(jié)點(diǎn)。
可選地,在本發(fā)明的一個(gè)實(shí)施例中,在所述信號鎖請求節(jié)點(diǎn)占用所述信號鎖之后,所述信號鎖請求節(jié)點(diǎn)81還用于,向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息;
所述宿主節(jié)點(diǎn)82還用于,在接收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)82中計(jì)數(shù)器的數(shù)值。
其中,在接收到所述解鎖請求消息后,所述宿主節(jié)點(diǎn)81可具體用于:將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一。
可選地,參照圖8B,所述網(wǎng)絡(luò)系統(tǒng)800還包括第三方節(jié)點(diǎn)83。所述第三方節(jié)點(diǎn)83可用于:
在接收到所述解鎖請求消息后,判斷是否等待所述信號鎖;
若不等待所述信號鎖,則忽略所述解鎖請求消息;
若等待所述信號鎖,則修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用;
若可用,則占用所述信號鎖;
若不可用,則繼續(xù)等待所述信號鎖。
可選地,所述第三方節(jié)點(diǎn)83可具體用于:
若等待所述信號鎖,則將本地計(jì)數(shù)器的數(shù)值減一,并判斷減一后數(shù)值是否為0;
若為0,則確定所述信號鎖可用;
若不為0,則確定所述信號鎖不可用。
本發(fā)明實(shí)施例提供的信號鎖分配的網(wǎng)絡(luò)系統(tǒng),利用計(jì)數(shù)器的數(shù)值來反映等待信號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)加鎖請求消息和/或解鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
圖9A是本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)系統(tǒng)。參照圖9A,本發(fā)明實(shí)施例提供的信號鎖分配的網(wǎng)絡(luò)系統(tǒng)900可包括:信號鎖請求節(jié)點(diǎn)91和信號鎖的宿主節(jié)點(diǎn)92,其中:
所述信號鎖請求節(jié)點(diǎn)91,用于向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息;
所述宿主節(jié)點(diǎn)92,用于在接收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
可選地,在接收到所述解鎖請求消息時(shí),所述宿主節(jié)點(diǎn)92可具體用于:將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一。
可選地,參見圖9B,在本發(fā)明的另一個(gè)實(shí)施例中,所述網(wǎng)絡(luò)系統(tǒng)900還包括第三方節(jié)點(diǎn)93,其中:
所述第三方節(jié)點(diǎn)93,用于在接收到所述解鎖請求消息后,判斷是否等待所述信號鎖;
若不等待所述信號鎖,則忽略所述解鎖請求消息;
若等待所述信號鎖,則修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用;
若可用,則占用所述信號鎖;
若不可用,則繼續(xù)等待所述信號鎖。
可選地,所述第三方節(jié)點(diǎn)93具體用于:
若等待所述信號鎖,則將本地計(jì)數(shù)器的數(shù)值減一,并判斷減一后數(shù)值是否為0;
若為0,則確定所述信號鎖可用;
若不為0,則確定所述信號鎖不可用。
可選地,所述信號鎖請求節(jié)點(diǎn)、所述第三方節(jié)點(diǎn)和所述宿主節(jié)點(diǎn)均為片上網(wǎng)絡(luò)中的節(jié)點(diǎn)。
可選地,在本發(fā)明的一個(gè)實(shí)施例中,在所述信號鎖請求節(jié)點(diǎn)91釋放所述信號鎖之后,所述信號鎖請求節(jié)點(diǎn)還用于:
向所述宿主節(jié)點(diǎn)92發(fā)送用于請求占用所述信號鎖的加鎖請求消息;
所述宿主節(jié)點(diǎn)92還用于,根據(jù)所述加鎖請求消息,向所述信號鎖請求節(jié)點(diǎn)91發(fā)送所述宿主節(jié)點(diǎn)91中計(jì)數(shù)器的數(shù)值,并在發(fā)送后修改所述計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目;
所述信號鎖請求節(jié)點(diǎn)91,還用于接收所述宿主節(jié)點(diǎn)92返回的計(jì)數(shù)器的數(shù)值,并根據(jù)所述計(jì)數(shù)器的數(shù)值,進(jìn)行信號鎖分配。
可選地,在接收到所述加鎖請求消息時(shí),所述宿主節(jié)點(diǎn)92具體用于:在發(fā)送后將所述計(jì)數(shù)器的數(shù)值加一。
可選地,所述信號鎖請求節(jié)點(diǎn)91可具體用于:
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖可用,則占用所述信號鎖;
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖不可用,則繼續(xù)等待所述信號鎖。
其中,所述計(jì)數(shù)器的指示信號鎖可用的數(shù)值為0,所述計(jì)數(shù)器的指示信號鎖不可用的數(shù)值為非0。
本發(fā)明實(shí)施例提供的信號鎖分配的網(wǎng)絡(luò)系統(tǒng),利用計(jì)數(shù)器的數(shù)值來反映等待信號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)加鎖請求消息和/或解鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
圖10是本發(fā)明實(shí)施例提供的一種信號鎖分配的裝置,該裝置可以為信號鎖請求節(jié)點(diǎn)。參照圖10,本發(fā)明實(shí)施例提供的信號鎖分配的裝置1000可包括:包括處理單元101、通信單元102和用于跟蹤和管理信號鎖的狀態(tài)的信號鎖控制單元103,所述信號鎖控制單元103可包括計(jì)數(shù)器。其中:
所述處理單元101,用于控制所述通信單元102向宿主節(jié)點(diǎn)發(fā)送用于請求占用信號鎖的加鎖請求消息;
所述通信單元102,用于接收所述宿主節(jié)點(diǎn)返回的計(jì)數(shù)器的數(shù)值,并返回給所述信號鎖控制單元103,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目;
所述信號鎖控制單元103,用于接收所述通信單元102返回的所述計(jì)數(shù)器的數(shù)值;
所述處理單元101,還用于如果所述計(jì)數(shù)器的數(shù)值指示信號鎖可用,則占用所述信號鎖;如果所述計(jì)數(shù)器的數(shù)值指示信號鎖不可用,則控制所述信號鎖控制單元保存所述數(shù)值后繼續(xù)等待。
本發(fā)明實(shí)施例提供的信號鎖分配的方法,利用計(jì)數(shù)器的數(shù)值來反映等待信號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)加鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
其中,所述計(jì)數(shù)器的指示信號鎖可用的數(shù)值為0,所述計(jì)數(shù)器的指示信號鎖不可用的數(shù)值為非0。
可選地,所述處理單元101在占用所述信號鎖之后,還可用于:
控制所述通信單元102向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息。
可選地,所述信號鎖控制單元103可集成于處理單元101中。
可選地,所述信號鎖分配的裝置1000可以為與多內(nèi)核處理器中的一個(gè)內(nèi)核對應(yīng)的裝置,所述處理單元101為多內(nèi)核處理器中的一個(gè)處理內(nèi)核,所述通信單元102可以為路由器。
圖11是本發(fā)明實(shí)施例提供的一種信號鎖分配的裝置,該裝置可以為宿主節(jié)點(diǎn)。參照圖11,本發(fā)明實(shí)施例提供的信號鎖分配的裝置1100可包括:所述裝置包括處理單元111、通信單元112和信號鎖控制單元113,所述信號鎖控制單元113可包括計(jì)數(shù)器。其中:
所述處理單元111,用于控制所述通信單元112接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求占用信號鎖的加鎖請求消息;
所述信號鎖控制單元113,用于讀取本地計(jì)數(shù)器的數(shù)值,并反饋給所述通信單元112;
所述通信單元112,用于向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述計(jì)數(shù)器的數(shù)值;
所述信號鎖控制單元113,用于在所述通信單元向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值后,修改本地計(jì)數(shù)器的數(shù)值,
其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
本發(fā)明實(shí)施例提供的信號鎖分配的方法,利用計(jì)數(shù)器的數(shù)值來反映等待信號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)加鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
可選地,在接收到加鎖請求消息時(shí),所述信號鎖控制單元113具體用于:將本地計(jì)數(shù)器的數(shù)值加一。
可選地,所述信號鎖分配的裝置1100為與多內(nèi)核處理器中的一個(gè)內(nèi)核對應(yīng)的裝置,所述處理單元101為多內(nèi)核處理器中的一個(gè)處理內(nèi)核,所述通信單元112為路由器。
可選地,所述信號鎖控制單元113集成于處理單元111中。
可選地,在本發(fā)明的一個(gè)實(shí)施例中,所述通信單元112,用于接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求釋放信號鎖的解鎖請求消息,并遞送給所述信號鎖控制單元;
所述信號鎖控制單元113,用于在收到所述解鎖請求消息后,修改本地計(jì)數(shù)器的數(shù)值。
其中,在接收到解鎖請求消息時(shí),所述信號鎖控制單元113具體用于:將本地計(jì)數(shù)器的數(shù)值減一。
圖12是本發(fā)明實(shí)施例提供的一種信號鎖分配的裝置,該裝置可以為信號鎖請求節(jié)點(diǎn)。參照圖12,本發(fā)明實(shí)施例提供的信號鎖分配的裝置1200可包括:處 理單元121和通信單元122:
所述處理單元121,用于控制所述通信單元122;
所述通信單元122,用于在所述處理單元121的控制下向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息,使得所述信號鎖的宿主節(jié)點(diǎn)收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
本發(fā)明實(shí)施例提供的信號鎖分配的裝置,通過廣播解鎖請求消息,使得宿主節(jié)點(diǎn)能夠根據(jù)解鎖請求消息相應(yīng)修改本地計(jì)數(shù)器中的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
圖13是本發(fā)明實(shí)施例提供的一種信號鎖分配的裝置,該裝置可以為宿主節(jié)點(diǎn)。參照圖13,本發(fā)明實(shí)施例提供的信號鎖分配的裝置1300可包括:包括處理單元131、通信單元132和信號鎖控制單元133,所述信號鎖控制單元133可包括計(jì)數(shù)器。其中:
所述通信單元132,用于在所述處理單元131的控制下接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求釋放信號鎖的解鎖請求消息,并反饋給所述信號鎖控制單元133;
所述信號鎖控制單元133,用于在收到所述解鎖請求消息后,修改本地計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
本發(fā)明實(shí)施例提供的信號鎖分配的方法,利用計(jì)數(shù)器的數(shù)值來反映等待信號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)解鎖鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
可選地,在接收到解鎖請求消息時(shí),所述信號鎖控制單元133具體用于:將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一。
可選地,所述信號鎖分配的裝置1300為與多內(nèi)核處理器中的一個(gè)內(nèi)核對應(yīng)的裝置,所述處理單元101為多內(nèi)核處理器中的一個(gè)處理內(nèi)核,所述通信單元133為路由器。
可選地,所述信號鎖控制單元133集成于處理單元1中。
圖14是本發(fā)明實(shí)施例提供的一種信號鎖分配的裝置,該裝置可以為第三方節(jié)點(diǎn)。參照圖14,本發(fā)明實(shí)施例提供的信號鎖分配的裝置1400可包括:處理單元141、通信單元142和信號鎖控制單元143,所述信號鎖控制單元143可包括計(jì)數(shù)器。其中:
所述通信單元142,用于在所述處理單元141的控制下接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求釋放信號鎖的解鎖請求消息;
信號鎖控制單元143,用于在所述處理單元141確定出所述裝置等待所述信號鎖時(shí),修改本地計(jì)數(shù)器的數(shù)值,
所述處理單元141,還用于確定修改后的數(shù)值是否指示信號鎖可用;
若可用,則控制所述裝置占用所述信號鎖;
若不可用,則控制所述裝置繼續(xù)等待所述信號鎖;
其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
本發(fā)明實(shí)施例提供的信號鎖分配的方法,利用計(jì)數(shù)器的數(shù)值來反映等待信號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)解鎖鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
可選地,所述信號鎖控制單元143具體用于:
若在所述處理單元141確定出所述裝置等待所述信號鎖時(shí),將本地計(jì)數(shù)器的數(shù)值減一;
所述處理單元141具體用于:
判斷所述信號鎖控制單元143中的本地計(jì)數(shù)器減一后數(shù)值是否為0;
若為0,則確定所述信號鎖可用;
若不為0,則確定所述信號鎖不可用。
可選地,所述信號鎖分配的裝置1400為與多內(nèi)核處理器中的一個(gè)內(nèi)核對應(yīng)的裝置,所述處理單元101為多內(nèi)核處理器中的一個(gè)處理內(nèi)核,所述通信單元142為路由器。
可選地,所述信號鎖控制單元143集成于處理單元141中。
圖15A示出了基于片上網(wǎng)絡(luò)的多核處理器的架構(gòu)。參見圖15A,圖中的一個(gè)方框即表示本文中的一個(gè)節(jié)點(diǎn)。該節(jié)點(diǎn)可以包括處理單元(Processing Unit,PE)信號鎖控制單元和路由器。當(dāng)信號鎖控制單元集成于PE中時(shí),該節(jié)點(diǎn)可以只包括處理單元和路由器。
本發(fā)明實(shí)施例中的圖10-14中的信號鎖分配的裝置可以為圖15中所示的一個(gè)節(jié)點(diǎn)。
圖15B和圖15C示出了“加鎖”和“解鎖”情形時(shí)的消息傳遞形式。由圖圖15B和圖15C可知,加鎖請求以“節(jié)點(diǎn)到節(jié)點(diǎn)”的一對一形式傳遞,而解鎖請求以“廣播”的形式,即一對多的形式傳遞。加鎖情形和解鎖情形下的處理流程可參見前文內(nèi)容,在此不再贅述。
本申請可以提供一種基于片上網(wǎng)絡(luò)的信號鎖分配方案,利用計(jì)數(shù)器的形式管理信號鎖并通過核間通信機(jī)制實(shí)現(xiàn)信號鎖的協(xié)議,實(shí)現(xiàn)了有序、無競爭的信號鎖協(xié)議,避免了輪詢機(jī)制所產(chǎn)生的冗余通信。
而且,本申請可以利用NoC架構(gòu)自身的分布式特點(diǎn)來實(shí)現(xiàn)信號鎖的有序控制,簡化了控制的復(fù)雜度。同時(shí),將信號鎖分散于片上網(wǎng)絡(luò)的節(jié)點(diǎn)中,利用片上網(wǎng)絡(luò)自身的分布式結(jié)構(gòu)平衡了分配的通信量,避免了集中式管理的通信量不平衡問題。
相應(yīng)地,本發(fā)明實(shí)施例還可提供一種信號鎖請求節(jié)點(diǎn),所述信號鎖請求節(jié)點(diǎn)包括一或多個(gè)處理器以及非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述一或多個(gè)處理器和所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)通過總線相連。其中,所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有供所述一或多個(gè)處理器執(zhí)行的一或多個(gè)程序,所述一或多個(gè)程序包括執(zhí)行以下操作的指令:
向宿主節(jié)點(diǎn)發(fā)送用于請求占用信號鎖的加鎖請求消息;
接收所述宿主節(jié)點(diǎn)返回的計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示, 等待所述信號鎖的節(jié)點(diǎn)數(shù)目;
根據(jù)所述計(jì)數(shù)器的數(shù)值,進(jìn)行信號鎖分配。
可選地,所述根據(jù)所述計(jì)數(shù)器的數(shù)值,進(jìn)行信號鎖分配可包括:
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖可用,則占用所述信號鎖;
如果所述計(jì)數(shù)器的數(shù)值指示信號鎖不可用,則保存所述數(shù)值后繼續(xù)等待。
其中,所述計(jì)數(shù)器的指示信號鎖可用的數(shù)值為0,所述計(jì)數(shù)器的指示信號鎖不可用的數(shù)值為非0。
進(jìn)一步地,所述一或多個(gè)程序還可包括執(zhí)行以下操作的指令:向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息。
本發(fā)明實(shí)施例提供的信號鎖請求節(jié)點(diǎn),利用計(jì)數(shù)器的數(shù)值來反映等待信號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)加鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
相應(yīng)地,本發(fā)明實(shí)施例還可提供一種宿主節(jié)點(diǎn),所述宿主節(jié)點(diǎn)包括一或多個(gè)處理器以及非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述一或多個(gè)處理器和所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)通過總線相連。其中,所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有供所述一或多個(gè)處理器執(zhí)行的一或多個(gè)程序,所述一或多個(gè)程序包括執(zhí)行以下操作的指令:
接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求占用信號鎖的加鎖請求消息;
向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值;
在向所述信號鎖請求節(jié)點(diǎn)發(fā)送所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值后,修改所述計(jì)數(shù)器的數(shù)值,
其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
可選地,所述修改所述計(jì)數(shù)器的數(shù)值可包括:將計(jì)數(shù)器的數(shù)值加一。
進(jìn)一步地,所述一或多個(gè)程序還可包括執(zhí)行以下操作的指令:
接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求釋放信號鎖的解鎖請求消息;
在收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值。
其中,所述修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值包括:所述宿主節(jié)點(diǎn)將所述 宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一。
本發(fā)明實(shí)施例提供的宿主節(jié)點(diǎn),利用計(jì)數(shù)器的數(shù)值來反映等待信號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)加鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
相應(yīng)地,本發(fā)明實(shí)施例還可提供一種包括上述信號鎖請求節(jié)點(diǎn)和宿主節(jié)點(diǎn)的系統(tǒng)。
相應(yīng)地,本發(fā)明實(shí)施例還提供另一種信號鎖請求節(jié)點(diǎn),所述信號鎖請求節(jié)點(diǎn)包括一或多個(gè)處理器以及非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述一或多個(gè)處理器和所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)通過總線相連。其中,所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有供所述一或多個(gè)處理器執(zhí)行的一或多個(gè)程序,所述一或多個(gè)程序包括執(zhí)行以下操作的指令:
向所有節(jié)點(diǎn)廣播用于請求釋放信號鎖的解鎖請求消息,使得所述信號鎖的宿主節(jié)點(diǎn)收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
本發(fā)明實(shí)施例提供的信號鎖請求節(jié)點(diǎn),利用計(jì)數(shù)器的數(shù)值來反映等待信號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)解鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
相應(yīng)地,本發(fā)明實(shí)施例還提供另一種宿主節(jié)點(diǎn),所述宿主節(jié)點(diǎn)包括一或多個(gè)處理器以及非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述一或多個(gè)處理器和所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)通過總線相連。其中,所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有供所述一或多個(gè)處理器執(zhí)行的一或多個(gè)程序,所述一或多個(gè)程序包括執(zhí)行以下操作的指令:
接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求釋放信號鎖的解鎖請求消息;
所述宿主節(jié)點(diǎn)收到所述解鎖請求消息后,修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù) 值,其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
所述修改所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值包括:所述宿主節(jié)點(diǎn)將所述宿主節(jié)點(diǎn)中計(jì)數(shù)器的數(shù)值減一。
本發(fā)明實(shí)施例提供的宿主節(jié)點(diǎn),利用計(jì)數(shù)器的數(shù)值來反映等待信號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)解鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效率。
相應(yīng)地,本發(fā)明實(shí)施例還提供一種第三方節(jié)點(diǎn),所述第三方節(jié)點(diǎn)包括一或多個(gè)處理器以及非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述一或多個(gè)處理器和所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)通過總線相連。其中,所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有供所述一或多個(gè)處理器執(zhí)行的一或多個(gè)程序,所述一或多個(gè)程序包括執(zhí)行以下操作的指令:
接收信號鎖請求節(jié)點(diǎn)發(fā)出的、用于請求釋放信號鎖的解鎖請求消息;
若所述第三方節(jié)點(diǎn)等待所述信號鎖,則修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用;
若可用,則所述第三方節(jié)點(diǎn)占用所述信號鎖;
若不可用,則所述第三方節(jié)點(diǎn)繼續(xù)等待所述信號鎖;
其中,所述計(jì)數(shù)器的數(shù)值指示,等待所述信號鎖的節(jié)點(diǎn)數(shù)目。
其中,所述若所述第三方節(jié)點(diǎn)等待所述信號鎖,則所述第三方節(jié)點(diǎn)修改本地計(jì)數(shù)器的數(shù)值,并確定修改后的數(shù)值是否指示信號鎖可用包括:
若所述第三方節(jié)點(diǎn)等待所述信號鎖,則所述第三方節(jié)點(diǎn)將本地計(jì)數(shù)器的數(shù)值減一,并判斷減一后數(shù)值是否為0;
若為0,則確定所述信號鎖可用;
若不為0,則確定所述信號鎖不可用。
本發(fā)明實(shí)施例提供的第三方節(jié)點(diǎn),利用計(jì)數(shù)器的數(shù)值來反映等待信號鎖的節(jié)點(diǎn)數(shù)目,并根據(jù)解鎖請求消息來修改計(jì)數(shù)器的數(shù)值,以保證修改后的計(jì)數(shù)器的數(shù)值可以反映最新的等待信號鎖的節(jié)點(diǎn)數(shù)目。這樣一來,可以根據(jù)計(jì)數(shù)器的數(shù)值來進(jìn)行信號鎖分配,避免了節(jié)點(diǎn)間對信號鎖的無序競爭以及由此而導(dǎo)致的分配效率降低,從而能夠有序地、無競爭地實(shí)現(xiàn)信號鎖分配,提高了分配的效 率。
相應(yīng)地,本發(fā)明實(shí)施例還可提供一種可包括上述信號鎖請求節(jié)點(diǎn)、上述宿主節(jié)點(diǎn)以及上述第三方節(jié)點(diǎn)的系統(tǒng)。
需要說明的是,本領(lǐng)域技術(shù)人員在本申請的基礎(chǔ)上可以做出適當(dāng)?shù)淖冃停@些變型都落入本發(fā)明的范圍內(nèi)。例如,1)本發(fā)明可以作為一種高速的多核信號鎖方案,可與現(xiàn)有的基于二進(jìn)制變量的信號鎖方案混合使用,常用的信號鎖使用本方案可提高分配效率;2)由操作系統(tǒng)實(shí)現(xiàn)對信號鎖編號的管理,實(shí)現(xiàn)本方案與傳統(tǒng)方案的切換;3)應(yīng)用程序在向操作系統(tǒng)申請信號鎖時(shí),操作系統(tǒng)根據(jù)資源的狀態(tài)返回一個(gè)信號鎖的編號,該信號鎖對上層應(yīng)用并不透明;4)應(yīng)用程序通過調(diào)用操作系統(tǒng)的信號鎖應(yīng)用程序接口(Application Procedure Interface,API),向操作系統(tǒng)申請信號鎖的相關(guān)操作,再由操作系統(tǒng)向底層硬件發(fā)出本發(fā)明中涉及的信號鎖分配請求;5)本發(fā)明可兼容pthread等標(biāo)準(zhǔn)多線程編程模型,在實(shí)現(xiàn)pthread中信號鎖相關(guān)API的時(shí)候,通過改動(dòng)驅(qū)動(dòng)程序,實(shí)現(xiàn)在不同處理器和多種硬件平臺(tái)上的應(yīng)用;6)信號鎖的消息傳遞通過專用的高速網(wǎng)絡(luò),或復(fù)用其他的片上高速網(wǎng)絡(luò)實(shí)現(xiàn),以實(shí)現(xiàn)快速傳遞。
還需要說明的是,本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。對于裝置類實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。