CN106293930B - 一种信号锁分配的方法、装置和网络*** - Google Patents
一种信号锁分配的方法、装置和网络*** Download PDFInfo
- Publication number
- CN106293930B CN106293930B CN201510320641.XA CN201510320641A CN106293930B CN 106293930 B CN106293930 B CN 106293930B CN 201510320641 A CN201510320641 A CN 201510320641A CN 106293930 B CN106293930 B CN 106293930B
- Authority
- CN
- China
- Prior art keywords
- signal lock
- numerical value
- counter
- node
- signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 105
- 238000012545 processing Methods 0.000 claims description 65
- 238000004891 communication Methods 0.000 claims description 62
- 230000004048 modification Effects 0.000 claims description 15
- 238000012986 modification Methods 0.000 claims description 15
- 235000013399 edible fruits Nutrition 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 abstract description 24
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 15
- 230000007246 mechanism Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 241000208340 Araliaceae Species 0.000 description 2
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 2
- 235000003140 Panax quinquefolius Nutrition 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 235000008434 ginseng Nutrition 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 230000036967 uncompetitive effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种信号锁分配的方法、装置和***,涉及计算机领域,能够有序地、无竞争地实现信号锁分配,提高信号锁分配的效率。所述方法包括:信号锁请求节点向信号锁的宿主节点发送用于请求占用所述信号锁的加锁请求消息;所述宿主节点根据所述加锁请求消息,向所述信号锁请求节点发送所述宿主节点中计数器的数值,并在发送后修改所述计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目;所述信号锁请求节点接收所述宿主节点返回的计数器的数值,并根据所述计数器的数值,进行信号锁分配。本发明用于进行信号锁分配。
Description
技术领域
本发明涉及计算机领域,特别涉及一种信号锁分配方法、装置和网络***。
背景技术
在多核处理器***中,多个程序进程间通常会共享一些数据,且可能会同时访问(读/写)该共享的数据。为了保证多进程同时访问共享数据的正确性,多核处理器***通常使用“信号锁”机制来协调进程间的对共享数据的访问,即所有的进程在访问共享数据前,都必须先获得相应的“信号锁”,并在该进程对共享数据操作期间,保持对“信号锁”的所有权,直到操作结束后再释放该“信号锁。”“信号锁”是一个互斥的变量,即同一时刻,只能有一个进程拥有该“信号锁”。因此,通过“信号锁”的互斥性就保证了其保护的共享数据的互斥性,即每一时刻,只有一个进程对共享的数据拥有访问权。
在信号锁分配的相关技术中,通常采用原子指令和锁总线的方法,即用一条指令完成“读后写”的操作,并且在该指令执行时将总线锁定,阻断其他核心访问信号锁。其他核心在发现信号锁被占用后,一般采取“忙-等待”的方式,即不停的查询该信号锁的值,直至其变为空闲为止,或者是采用间歇查询的方式,即等待固定的时间间隔后再查询。
上述信号锁分配的方式,一方面在锁定总线时会造成其他的处理核心都不能访问总线上的地址空间,因而性能损失较大;另一方面,“忙-等待”机制会产生大量冗余的流量,导致严重的网络竞争,而间歇查询的方式又会浪费CPU的计算资源,导致分配的效率较低。
发明内容
本发明提供一种信号锁分配方法、装置和***,能够有序地、无竞争地实现信号锁分配,提高效率。
第一方面,提供一种信号锁分配的方法,所述方法包括:
信号锁请求节点向信号锁的宿主节点发送用于请求占用所述信号锁的加锁请求消息;
所述宿主节点根据所述加锁请求消息,向所述信号锁请求节点发送所述宿主节点中计数器的数值,并在发送后修改所述计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目;
所述信号锁请求节点接收所述宿主节点返回的计数器的数值,并根据所述计数器的数值,确定是否占用所述信号锁。
结合第一方面,在第一种可能的实现方式,所述信号锁请求节点根据所述计数器的数值,确定是否占用所述信号锁包括:
如果所述计数器的数值指示信号锁可用,则占用所述信号锁;
如果所述计数器的数值指示信号锁不可用,则继续等待所述信号锁。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式,所述计数器的指示信号锁可用的数值为0,所述计数器的指示信号锁不可用的数值为非0,
所述在发送后修改所述计数器的数值包括:在发送后将所述计数器的数值加一。
结合第一方面至第一方面的第二种可能的实现方式中的任一种,在第三种可能的实现方式,在所述信号锁请求节点占用所述信号锁之后,所述方法还包括:
所述信号锁请求节点向所有节点广播用于请求释放信号锁的解锁请求消息;
所述宿主节点在接收到所述解锁请求消息后,修改所述宿主节点中计数器的数值。
结合第一方面的第三种可能的实现方式中的任一种,在第四种可能的实现方式,所述方法还包括:
除所述宿主节点外的其他节点接收到所述解锁请求消息后,判断是否等待所述信号锁;
若不等待所述信号锁,则忽略所述解锁请求消息;
若等待所述信号锁,则修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用;
若可用,则占用所述信号锁;
若不可用,则继续等待所述信号锁。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,
所述修改所述宿主节点中计数器的数值包括:将所述宿主节点中计数器的数值减一;
所述若等待所述信号锁,则修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用包括:
若等待所述信号锁,则将本地计数器的数值减一,并判断减一后数值是否为0;
若为0,则确定所述信号锁可用;
若不为0,则确定所述信号锁不可用。
第二方面,提供一种信号锁分配的方法,所述方法包括:
信号锁请求节点向所有节点广播用于请求释放信号锁的解锁请求消息;
所述信号锁的宿主节点在接收到所述解锁请求消息后,修改所述宿主节点中计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目。
结合第二方面,在第一种可能的实现方式,所述方法还包括:
除所述宿主节点外的其他节点接收到所述解锁请求消息后,判断是否等待所述信号锁;
若不等待所述信号锁,则忽略所述解锁请求消息;
若等待所述信号锁,则修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用;
若可用,则占用所述信号锁;
若不可用,则继续等待所述信号锁。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,
所述修改所述宿主节点中计数器的数值包括:将所述宿主节点中计数器的数值减一;
所述若等待所述信号锁,则修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用包括:
若等待所述信号锁,则将本地计数器的数值减一,并判断减一后数值是否为0;
若为0,则确定所述信号锁可用;
若不为0,则确定所述信号锁不可用。
结合第二方面至第二方面的第二种可能的实现方式中的任一种,在第三种可能的实现方式中,在所述信号锁请求节点释放所述信号锁之后,所述方法还包括:
所述信号锁请求节点向所述宿主节点发送用于请求占用所述信号锁的加锁请求消息;
所述宿主节点根据所述加锁请求消息,向所述信号锁请求节点发送所述宿主节点中计数器的数值,并在发送后修改所述计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目;
所述信号锁请求节点接收所述宿主节点返回的计数器的数值,并根据所述计数器的数值,确定是否占用所述信号锁。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述信号锁请求节点根据所述计数器的数值,确定是否占用所述信号锁包括:
如果所述计数器的数值指示信号锁可用,则占用所述信号锁;
如果所述计数器的数值指示信号锁不可用,则继续等待所述信号锁。
结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述计数器的指示信号锁可用的数值为0,所述计数器的指示信号锁不可用的数值为非0,
所述在发送后修改所述计数器的数值包括:在发送后将所述计数器的数值加一。
第三方面,提供一种信号锁分配的方法,所述方法包括:
信号锁请求节点向宿主节点发送用于请求占用信号锁的加锁请求消息;
所述信号锁请求节点接收所述宿主节点返回的计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目;
所述信号锁请求节点根据所述计数器的数值,确定是否占用所述信号锁。
结合第三方面,在第一种可能的实现方式中,所述信号锁请求节点根据所述计数器的数值,确定是否占用所述信号锁包括:
如果所述计数器的数值指示信号锁可用,则占用所述信号锁;
如果所述计数器的数值指示信号锁不可用,则保存所述数值后继续等待。
结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述计数器的指示信号锁可用的数值为0,所述计数器的指示信号锁不可用的数值为非0。
结合第三方面的上述任一种可能的实现方式,在第三种可能的实现方式中,在所述信号锁请求节点占用所述信号锁之后,所述方法还包括:
所述信号锁请求节点向所有节点广播用于请求释放信号锁的解锁请求消息。
第四方面,提供一种信号锁分配的方法,所述方法包括:
宿主节点接收信号锁请求节点发出的、用于请求占用信号锁的加锁请求消息;
所述宿主节点向所述信号锁请求节点发送所述宿主节点中计数器的数值;
所述宿主节点在向所述信号锁请求节点发送所述宿主节点中计数器的数值后,修改所述计数器的数值,
其中,所述计数器的数值指示,等待所述信号锁的节点数目。
结合第四方面,在第一种可能的实现方式中,所述修改所述计数器的数值包括:所述宿主节点将计数器的数值加一。
结合第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述方法还包括:
宿主节点接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息;
所述宿主节点收到所述解锁请求消息后,修改所述宿主节点中计数器的数值。
结合第四方面的第二种可能的实现方式,在第三种可能的实现方式中,所述修改所述宿主节点中计数器的数值包括:所述宿主节点将所述宿主节点中计数器的数值减一。
第五方面,提供一种信号锁分配的方法,所述方法包括:
信号锁请求节点向所有节点广播用于请求释放信号锁的解锁请求消息,使得所述信号锁的宿主节点收到所述解锁请求消息后,修改所述宿主节点中计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目。
第六方面,一种信号锁分配的方法,其特征在于,所述方法包括:
宿主节点接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息;
所述宿主节点收到所述解锁请求消息后,修改所述宿主节点中计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目。
结合第五方面,在第一种可能的实现方式中,所述修改所述宿主节点中计数器的数值包括:所述宿主节点将所述宿主节点中计数器的数值减一。
第七方面,提供一种信号锁分配的方法,所述方法包括:
第三方节点接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息;
若所述第三方节点等待所述信号锁,则所述第三方节点修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用;
若可用,则所述第三方节点占用所述信号锁;
若不可用,则所述第三方节点继续等待所述信号锁;
其中,所述计数器的数值指示,等待所述信号锁的节点数目。
结合第七方面,在第一种可能的实现方式中,所述若所述第三方节点等待所述信号锁,则所述第三方节点修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用包括:
若所述第三方节点等待所述信号锁,则所述第三方节点将本地计数器的数值减一,并判断减一后数值是否为0;
若为0,则确定所述信号锁可用;
若不为0,则确定所述信号锁不可用。
第八方面,提供一种用于信号锁分配的网络***,所述网络***包括信号锁请求节点和信号锁的宿主节点,其中:
所述信号锁请求节点,用于向所述宿主节点发送用于请求占用所述信号锁的加锁请求消息;
所述宿主节点,用于根据所述加锁请求消息,向所述信号锁请求节点发送所述宿主节点中计数器的数值,并在发送后修改所述计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目;
所述信号锁请求节点,用于接收所述宿主节点返回的计数器的数值,并根据所述计数器的数值,确定是否占用所述信号锁。
结合第八方面,在第一种可能的实现方式中,所述信号锁请求节点具体用于:
如果所述计数器的数值指示信号锁可用,则占用所述信号锁;
如果所述计数器的数值指示信号锁不可用,则继续等待所述信号锁。
结合第八方面的第一种可能的实现方式,在第二种可能的实现方式中,所述计数器的指示信号锁可用的数值为0,所述计数器的指示信号锁不可用的数值为非0,
所述宿主节点具体用于:在发送后将所述计数器的数值加一。
结合第八方面的上述任一种可能的实现方式,在第三种可能的实现方式中,所述信号锁请求节点和所述宿主节点均为片上网络中的节点。
结合第八方面的上述任一种可能的实现方式,在第四种可能的实现方式中,在所述信号锁请求节点占用所述信号锁之后,所述信号锁请求节点还用于,向所有节点广播用于请求释放信号锁的解锁请求消息;
所述宿主节点还用于,在接收到所述解锁请求消息后,修改所述宿主节点中计数器的数值。
结合第八方面的第四种可能的实现方式,在第五种可能的实现方式中,所述网络***还包括第三方节点,所述第三方节点用于:
在接收到所述解锁请求消息后,判断是否等待所述信号锁;
若不等待所述信号锁,则忽略所述解锁请求消息;
若等待所述信号锁,则修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用;
若可用,则占用所述信号锁;
若不可用,则继续等待所述信号锁。
结合第八方面的上第五种可能的实现方式,在第六种可能的实现方式中,
所述宿主节点用于:将所述宿主节点中计数器的数值减一;
所述第三方节点具体用于:
若等待所述信号锁,则将本地计数器的数值减一,并判断减一后数值是否为0;
若为0,则确定所述信号锁可用;
若不为0,则确定所述信号锁不可用。
第九方面,提供一种用于信号锁分配的网络***,所述网络***包括信号锁请求节点和信号锁的宿主节点,其中:
所述信号锁请求节点,用于向所有节点广播用于请求释放信号锁的解锁请求消息;
所述宿主节点,用于在接收到所述解锁请求消息后,修改所述宿主节点中计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目。
结合第九方面,在第一种可能的实现方式中,所述网络***还包括第三方节点,其中:
所述第三方节点,用于在接收到所述解锁请求消息后,判断是否等待所述信号锁;
若不等待所述信号锁,则忽略所述解锁请求消息;
若等待所述信号锁,则修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用;
若可用,则占用所述信号锁;
若不可用,则继续等待所述信号锁。
结合第九方面的第一种可能的实现方式,在第二种可能的实现方式中,
所述宿主节点具体用于:将所述宿主节点中计数器的数值减一;
所述第三方节点具体用于:
若等待所述信号锁,则将本地计数器的数值减一,并判断减一后数值是否为0;
若为0,则确定所述信号锁可用;
若不为0,则确定所述信号锁不可用。
结合第九方面的上述任一种可能的实现方式,在第三种可能的实现方式中,所述信号锁请求节点、所述第三方节点和所述宿主节点均为片上网络中的节点。
结合第九方面的上述任一种可能的实现方式,在第四种可能的实现方式中,在所述信号锁请求节点释放所述信号锁之后,所述信号锁请求节点还用于:
向所述宿主节点发送用于请求占用所述信号锁的加锁请求消息;
所述宿主节点还用于,根据所述加锁请求消息,向所述信号锁请求节点发送所述宿主节点中计数器的数值,并在发送后修改所述计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目;
所述信号锁请求节点,还用于接收所述宿主节点返回的计数器的数值,并根据所述计数器的数值,确定是否占用所述信号锁。
结合第九方面的第四种可能的实现方式,在第五种可能的实现方式中,所述信号锁请求节点具体用于:
如果所述计数器的数值指示信号锁可用,则占用所述信号锁;
如果所述计数器的数值指示信号锁不可用,则继续等待所述信号锁。
结合第九方面的第五种可能的实现方式,在第六种可能的实现方式中,所述计数器的指示信号锁可用的数值为0,所述计数器的指示信号锁不可用的数值为非0,
所述宿主节点具体用于:在发送后将所述计数器的数值加一。
第十方面,提供一种信号锁的装置,所述装置包括处理单元、通信单元和信号锁控制单元,其中:
所述处理单元,用于控制所述通信单元向宿主节点发送用于请求占用信号锁的加锁请求消息;
所述通信单元,用于接收所述宿主节点返回的计数器的数值,并返回给所述信号锁控制单元,其中,所述计数器的数值指示,等待所述信号锁的节点数目;
所述信号锁控制单元,用于接收所述通信单元返回的所述计数器的数值;
所述处理单元,还用于根据所述信号锁控制单元接收的所述计数器的数值,确定是否占用所述信号锁。
结合第十方面,在第一种可能的实现方式中,所述处理单元具体用于:
如果所述计数器的数值指示信号锁可用,则占用所述信号锁;
如果所述计数器的数值指示信号锁不可用,则控制所述信号锁控制单元保存所述数值后继续等待。
结合第十方面的第一种可能的实现方式,在第二种可能的实现方式中,所述计数器的指示信号锁可用的数值为0,所述计数器的指示信号锁不可用的数值为非0。
结合第十方面的第二种可能的实现方式,在第三种可能的实现方式中,所述信号锁的装置为与多内核处理器中的一个内核对应的装置,所述通信单元为路由器。
结合第十方面的第三种可能的实现方式,在第四种可能的实现方式中,所述信号锁控制单元集成于处理单元中。
结合第十方面的第一种或第二种可能的实现方式,在第五种可能的实现方式中,在占用所述信号锁之后,所述处理单元还用于:
控制所述通信单元向所有节点广播用于请求释放信号锁的解锁请求消息。
第十一方面,提供一种信号锁的装置,所述装置包括处理单元、通信单元和信号锁控制单元,其中:
所述处理单元,用于控制所述通信单元接收信号锁请求节点发出的、用于请求占用信号锁的加锁请求消息;
所述信号锁控制单元,用于读取本地计数器的数值,并反馈给所述通信单元;
所述通信单元,用于向所述信号锁请求节点发送所述计数器的数值;
所述信号锁控制单元,用于在所述通信单元向所述信号锁请求节点发送所述宿主节点中计数器的数值后,修改本地计数器的数值,
其中,所述计数器的数值指示,等待所述信号锁的节点数目。
结合第十一方面,在第一种可能的实现方式中,所述信号锁控制单元具体用于:将本地计数器的数值加一。
结合第十一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述信号锁的装置为与多内核处理器中的一个内核对应的装置,所述通信单元为路由器。
结合第十一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述信号锁控制单元集成于处理单元中。
结合第十一方面的第一种可能的实现方式,在第四种可能的实现方式中,
所述通信单元,用于接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息,并递送给所述信号锁控制单元;
所述信号锁控制单元,用于在收到所述解锁请求消息后,修改所述宿主节点中计数器的数值。
结合第十一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述信号锁控制单元具体用于:将所述宿主节点中计数器的数值减一。
第十二方面,提供一种信号锁的装置,所述装置包括处理单元和通信单元:
所述处理单元,用于控制所述通信单元;
所述通信单元,用于在所述处理单元的控制下向所有节点广播用于请求释放信号锁的解锁请求消息,使得所述信号锁的宿主节点收到所述解锁请求消息后,修改所述宿主节点中计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目。
第十三方面,提供一种信号锁的装置,所述装置包括处理单元,通信单元和信号锁控制单元,其中:
所述通信单元,用于在所述处理单元的控制下接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息,并反馈给所述信号锁控制单元;
所述信号锁控制单元,用于在收到所述解锁请求消息后,修改本地计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目。
结合第十三方面,在第一种可能的实现方式中,所述信号锁控制单元具体用于:将所述宿主节点中计数器的数值减一。
结合第十三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述信号锁的装置为与多内核处理器中的一个内核对应的装置,所述通信单元为路由器。
结合第十三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述信号锁控制单元集成于处理单元中。
第十四方面,提供一种信号锁的装置,所述装置包括处理单元、通信单元和信号锁控制单元:
所述通信单元,用于在所述处理单元的控制下接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息;
信号锁控制单元,用于在所述处理单元确定出所述装置等待所述信号锁时,修改本地计数器的数值,
所述处理单元,还用于确定修改后的数值是否指示信号锁可用;
若可用,则控制所述装置占用所述信号锁;
若不可用,则控制所述装置继续等待所述信号锁;
其中,所述计数器的数值指示,等待所述信号锁的节点数目。
结合第十四方面,在第一种可能的实现方式中,所述信号锁控制单元具体用于:
若在所述处理单元确定出所述装置等待所述信号锁时,将本地计数器的数值减一;
所述处理单元具体用于:
判断所述信号锁控制单元中的本地计数器减一后数值是否为0;
若为0,则确定所述信号锁可用;
若不为0,则确定所述信号锁不可用。
结合第十四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述信号锁的装置为与多内核处理器中的一个内核对应的装置,所述通信单元为路由器。
结合第十四方面的第二种可能的实现方式,在第三种可能的实现方式中,所述信号锁控制单元集成于处理单元中。
本发明实施例提供的信号锁分配的方法、装置和***,利用计数器的数值来反映等待信号锁的节点数目,并根据加锁请求消息和/或解锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本发明实施例提供的一种信号锁分配的方法的流程图;
图1B示出了本发明一个实施例提供的信号锁加锁的流程示意图;
图1C示出了本发明一个实施例提供的信号锁解锁的流程示意图;
图2是本发明实施例提供的另一种信号锁分配的方法的流程图;
图3是本发明实施例提供的另一种信号锁分配的方法的流程图;
图4是本发明实施例提供的另一种信号锁分配的方法的流程图;
图5是本发明实施例提供的另一种信号锁分配的方法的流程图;
图6是本发明实施例提供的另一种信号锁分配的方法的流程图;
图7是本发明实施例提供的另一种信号锁分配的方法的流程图;
图8A是本发明实施例提供的一种信号锁分配的网络***的结构框图;
图8B是本发明实施例提供的另一种信号锁分配的网络***的结构框图;
图9A是本发明实施例提供的一种信号锁分配的网络***的结构框图;
图9B是本发明实施例提供的另一种信号锁分配的网络***的结构框图;
图10是本发明实施例提供的一种信号锁的装置的结构框图;
图11是本发明实施例提供的另一种信号锁的装置的结构框图;
图12是本发明实施例提供的一种信号锁的装置的结构框图;
图13是本发明实施例提供的另一种信号锁的装置的结构框图;
图14是本发明实施例提供的另一种信号锁的装置的结构框图;
图15A是本发明实施例提供的基于片上网络(Network-on-Chip,NoC)的多核***架构的示意图;
图15B是图15A所示多核***架构在加锁情形下的消息传递示意图;
图15C是图15A所示多核***架构在解锁情形下的消息传递示意图。
具体实施方式
为了本领域技术人员更好地理解本申请的技术方案,下面先对本文中的一些术语进行解释。
本发明实施例中提及的“信号锁”表示,使用一个布尔变量记录共享资源的使用情况。例如,一个信号锁的值可以为0或者为1,其中,0表示当前共享资源处于空闲状态,1表示共享资源处于被占用(忙)状态。
本发明实施例中提及的“节点”可以是,片上网络(Network-on-Chip,NoC)中与多内核处理器中的一个内核对应的装置,也可以是因特网中的一个独立的终端设备。
本发明实施例中提及的“信号锁请求节点”指的是发出信号锁加锁请求消息和/或信号锁解锁请求消息的节点。即,发出用于请求占用信号锁的加锁请求消息和/或发出用于请求释放信号锁的解锁请求消息的节点都可以称为信号锁请求节点。
本发明实施例中提及的信号锁的“宿主节点”是指,对信号锁发挥管理控制作用的节点。
本发明实施例中提及的“第三方节点”是指,除信号锁请求节点和宿主节点外的节点。
在现代计算机***中,多核处理器已经非常普及。随着半导体技术的发展和计算机性能的提升,多核化已成为当前处理器发展的主流趋势。在嵌入式处理器和台式机处理器领域,4-8核的多核处理器已成为目前市场的主流,而在超级计算机和数据服务器等高性能计算领域,处理器中的核数则更多。随着处理器中内核数量的增加,导致存储器等硬件资源的共享度提高,共享资源成为制约多核***并行性能的瓶颈。例如,多个处理器内核频繁的读写同一个共享数据,会导致缓存(Cache)错失的频率大大提高,从而影响整个***的性能。
本发明实施例提供的信号锁分配的方法、装置和***能够解决基于NoC架构的分布式多核***的“信号锁”分配问题,并解决传统信号锁分配方案中,锁总线占用带宽、乱序竞争、忙-等待等问题,实现有序的、无竞争的分布式“信号锁”,从而提高多核***并行执行的效率。当然,本发明实施例提供的信号锁分配的方案并不局限于此,还可以应用于非NoC架构的网络环境中,例如对于因特网环境中的各种终端设备也可以应用本申请的方案来实现信号锁分配。
本发明实施例中的信号锁分配方式对发出信号锁请求(包括加锁请求和解锁请求)的各个节点进行协调,保证每一时刻只有一个节点占用信号锁,从而向各个节点有序地分配信号锁。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供一种信号锁分配的方法,所述方法可应用于基于片上网络(NoC)的通信***中,所述通信***中可包含信号锁请求节点以及信号锁的宿主节点,还可以包括第三方节点。其中,NoC是应用于片上***(System on Chip,SoC)的一种通信方法,它将网络的理论和方法应用于芯片上的通信,相对于传统总线(bus)和交叉开关(crossbar)的互联方式,NoC可有效提高片上通信***的扩展性、吞吐率等性能。
图15A示出了基于NoC的多核处理器的架构。参见图15A,图中的一个方框即表示本文中的一个节点(node)。该节点可以包括处理单元(Processing Element,PE)、信号锁控制单元和路由器。当信号锁控制单元集成于PE中时,该节点可以只包括处理单元和路由器。图15A中方框表示的节点可以是信号锁请求节点,可以是信号锁的宿主节点,也可以是第三方节点,方框表示的节点之间通过路由器来交互通信,方框表示的这些节点即构成本文中的NoC的一部分。
图1A是本发明实施例提供的一种信号锁分配的方法。参照图1A,本发明实施例提供的信号锁分配的方法包括:
11、信号锁请求节点向信号锁的宿主节点发送用于请求占用所述信号锁的加锁请求消息。
在本发明实施例中,信号锁可以具有唯一标识,例如使用信号锁的编号来作为信号锁的唯一标识。加锁请求消息中可携带信号锁的编号,这样,信号锁请求节点在请求某一信号锁时,可以根据信号锁的编号以及信号锁和信号锁编号之间固定的映射关系获知相应的信号锁。
12、所述宿主节点根据所述加锁请求消息,向所述信号锁请求节点发送所述宿主节点中计数器的数值,并在发送后修改所述计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目。
13、所述信号锁请求节点接收所述宿主节点返回的计数器的数值,如果所述计数器的数值指示信号锁可用,则所述信号锁请求节点占用所述信号锁;如果所述计数器的数值指示信号锁不可用,则所述信号锁请求节点继续等待所述信号锁。
本发明实施例提供的信号锁分配的方法,利用计数器的数值来反映等待信号锁的节点数目,并根据加锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
其中,可选地,所述计数器的指示信号锁可用的数值为0,所述计数器的指示信号锁不可用的数值为非0。当然,在本发明的范围内,还可以根据需要采用其他特定的数值来指示信号锁可用,例如,也可以使用00来指示信号锁可用,除00外的其他数值来指示信号锁不可用。
可选地,步骤12中所述在发送后修改所述计数器的数值可具体包括:在发送后将所述计数器的数值加一。当然,在本发明的范围内,利用可以指示一个加锁请求的其他数值也是可以的,例如,每一个加锁请求,计数器的数值加2;又例如,每一个加锁请求,计数器的数值加3等等。
图1B示出了本发明一个实施例提供的信号锁加锁流程的示意图。由图1B可知,在计数器数值的增减幅度为1时的加锁过程如下:任意信号锁请求节点在请求某一信号锁时,根据信号锁的编号,以固定的映射关系,向其宿主节点发出加锁请求消息;宿主节点中收到请求信号后,返回当前计数器中的数值,并将当前计数器加一;信号锁请求节点收到返回值后,如果该值为0,表示该信号锁可用;如果为非0,则不可用,保存该数值后继续等待。
在本发明实施例中,信号锁在占用信号锁完成处理之后,即可释放所述信号锁。在本发明的另一个实施例中,可选地,在所述信号锁请求节点占用所述信号锁之后,所述方法还可包括:
所述信号锁请求节点向所有节点广播用于请求释放信号锁的解锁请求消息;
所述宿主节点在接收到所述解锁请求消息后,修改所述宿主节点中计数器的数值。
其中,可选地,所述修改所述宿主节点中计数器的数值可包括:将所述宿主节点中计数器的数值减一。当然,在本发明的范围内,利用可以指示一个解锁请求的其他数值也是可以的,例如,每一个解锁请求,计数器的数值减2;又例如,每一个解锁请求,计数器的数值减3等等。
在信号锁请求节点发出信号锁解锁请求消息的情况下,可选地,所述方法还可包括:
除所述宿主节点外的其他节点接收到所述解锁请求消息后,判断是否等待所述信号锁;
若不等待所述信号锁,则忽略所述解锁请求消息;
若等待所述信号锁,则修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用;
若可用,则占用所述信号锁;
若不可用,则继续等待所述信号锁。
其中,所述若等待所述信号锁,则修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用包括:
若等待所述信号锁,则将本地计数器的数值减一,并判断减一后数值是否为0;
若为0,则确定所述信号锁可用;
若不为0,则确定所述信号锁不可用。
图1C示出了本发明一个实施例提供的信号锁加锁的流程示意图。由图1C可知,在计数器数值的增减幅度为1时的解锁过程如下:任一信号锁请求节点解锁某一信号锁时,通过片上网络向所有节点广播该解锁请求;信号锁的宿主节点收到解锁请求后,将该信号锁的计数器减一;其他节点收到该解锁信号后,首先判断是否等待该信号锁,如果当前正等待该信号锁,则将本地的保存的计数器值减一,减一后如果为0则得到该信号锁,如果还是非0则继续等待。如果当前节点不等待该信号锁,则忽略该解锁消息。
当然,在本发明的范围内,利用可以指示一个解锁请求的其他数值也是可以的,例如,每一个解锁请求,计数器的数值减2;又例如,每一个解锁请求,计数器的数值减3等等。
需要说明的是,在本发明实施例中,在信号锁加锁请求和信号锁解锁请求的情况下,计数器数值的增减是相应的。即,若针对一个信号锁加锁请求,计数器的数值加1,则针对一个信号锁解锁请求,计数器的数值减1。同时,在本发明实施例中,对于信号锁加锁请求和信号锁解锁请求,计数器的数值的增减幅度也是一致的。例如,若对于信号锁加锁请求,计数器的增加幅度为2,则对于信号锁解锁请求,计数器的减小幅度也为2。
图2是本发明实施例提供的一种信号锁分配的方法。参照图2,本发明实施例提供的信号锁分配的方法可包括:
21、信号锁请求节点向所有节点广播用于请求释放信号锁的解锁请求消息;
22、所述信号锁的宿主节点在接收到所述解锁请求消息后,修改所述宿主节点中计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目。
本发明实施例提供的信号锁分配的方法,利用计数器的数值来反映等待信号锁的节点数目,并根据解锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
其中,可选地,步骤22中所述修改所述宿主节点中计数器的数值可包括:将所述宿主节点中计数器的数值减一。当然,在本发明的范围内,利用可以指示一个解锁请求的其他数值也是可以的,例如,每一个解锁请求,计数器的数值减2;又例如,每一个解锁请求,计数器的数值减3等等。
在信号锁请求节点发出解锁请求消息的情况下,本发明实施例提供的信号锁分配的方法还可包括:
除所述宿主节点外的其他节点接收到所述解锁请求消息后,判断是否等待所述信号锁;
若不等待所述信号锁,则忽略所述解锁请求消息;
若等待所述信号锁,则修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用;
若可用,则占用所述信号锁;
若不可用,则继续等待所述信号锁。
所述若等待所述信号锁,则修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用包括:
若等待所述信号锁,则将本地计数器的数值减一,并判断减一后数值是否为0;
若为0,则确定所述信号锁可用;
若不为0,则确定所述信号锁不可用。
可选地,在本发明的另一个实施例中,在所述信号锁请求节点释放所述信号锁之后,所述信号锁请求节点在需要中心占用所述信号锁时,可以再次发出加锁请求消息。相应地,在上述步骤21~23的基础上,所述方法还可包括:
所述信号锁请求节点向所述宿主节点发送用于请求占用所述信号锁的加锁请求消息;
所述宿主节点根据所述加锁请求消息,向所述信号锁请求节点发送所述宿主节点中计数器的数值,并在发送后修改所述计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目;
所述信号锁请求节点接收所述宿主节点返回的计数器的数值,并根据所述计数器的数值,进行信号锁分配。
其中,所述信号锁请求节点根据所述计数器的数值,进行信号锁分配包括:
如果所述计数器的数值指示信号锁可用,则占用所述信号锁;
如果所述计数器的数值指示信号锁不可用,则继续等待所述信号锁。
可选地,所述计数器的指示信号锁可用的数值为0,所述计数器的指示信号锁不可用的数值为非0,
所述在发送后修改所述计数器的数值包括:在发送后将所述计数器的数值加一。
需要说明的是,在本发明实施例中,在信号锁加锁请求和信号锁解锁请求的情况下,计数器数值的增减是相应的。即,若一个信号锁加锁请求,计数器的数值加1,则一个信号锁解锁请求,计数器的数值减1。同时,在本发明实施例中,对于信号锁加锁请求和信号锁解锁请求,计数器的数值的增减幅度也是一致的。例如,若对于信号锁加锁请求,计数器的增加幅度为2,则对于信号锁解锁请求,计数器的减小幅度也为2。
图3是本发明实施例提供的一种信号锁分配的方法。参照图3,本发明实施例提供的信号锁分配的方法可包括:
31、信号锁请求节点向宿主节点发送用于请求占用信号锁的加锁请求消息;
32、所述信号锁请求节点接收所述宿主节点返回的计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目;
33、如果所述计数器的数值指示信号锁可用,则所述信号锁请求节点占用所述信号锁;如果所述计数器的数值指示信号锁不可用,则所述信号锁请求节点保存所述数值后继续等待。
本发明实施例提供的信号锁分配的方法,利用计数器的数值来反映等待信号锁的节点数目,并根据加锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
其中,所述计数器的指示信号锁可用的数值可以为0,所述计数器的指示信号锁不可用的数值开为非0。
在本发明实施例中,在所述信号锁请求节点占用所述信号锁之后,本发明实施例提供的信号锁分配的方法还可包括:
所述信号锁请求节点向所有节点广播用于请求释放信号锁的解锁请求消息。
图4是本发明实施例提供的一种信号锁分配的方法。参照图4,本发明实施例提供的信号锁分配的方法可包括:
41、宿主节点接收信号锁请求节点发出的、用于请求占用信号锁的加锁请求消息;
42、所述宿主节点向所述信号锁请求节点发送所述宿主节点中计数器的数值;
43、所述宿主节点在向所述信号锁请求节点发送所述宿主节点中计数器的数值后,修改所述计数器的数值,
其中,所述计数器的数值指示,等待所述信号锁的节点数目。
本发明实施例提供的信号锁分配的方法,利用计数器的数值来反映等待信号锁的节点数目,并根据解锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
其中,可选地,步骤43中所述修改所述计数器的数值可包括:所述宿主节点将计数器的数值加一。
在本发明的另一个实施例中,可选地,在步骤41~43的基础上,所述方法还可包括:
宿主节点接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息;
所述宿主节点收到所述解锁请求消息后,修改所述宿主节点中计数器的数值。
其中,所述修改所述宿主节点中计数器的数值可包括:所述宿主节点将所述宿主节点中计数器的数值减一。
图5是本发明实施例提供的一种信号锁分配的方法。参照图5,本发明实施例提供的信号锁分配的方法可包括:
51、信号锁请求节点向所有节点广播用于请求释放信号锁的解锁请求消息,使得所述信号锁的宿主节点收到所述解锁请求消息后,修改所述宿主节点中计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目。
本发明实施例提供的信号锁分配的方法,信号锁请求节点通过广播解锁请求消息,使得宿主节点能够根据解锁请求消息相应修改本地计数器中的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
图6是本发明实施例提供的一种信号锁分配的方法。参照图6,本发明实施例提供的信号锁分配的方法可包括:
61、宿主节点接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息;
62、所述宿主节点收到所述解锁请求消息后,修改所述宿主节点中计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目。
其中,可选地,步骤62所述修改所述宿主节点中计数器的数值可包括:所述宿主节点将所述宿主节点中计数器的数值减一。
本发明实施例提供的信号锁分配的方法,信号锁请求节点通过广播解锁请求消息,宿主节点能够根据解锁请求消息相应修改本地计数器中的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
图7是本发明实施例提供的一种信号锁分配的方法。参照图7,本发明实施例提供的信号锁分配的方法可包括:
71、第三方节点接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息;
72、若所述第三方节点等待所述信号锁,则所述第三方节点修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用;
73、若可用,则所述第三方节点占用所述信号锁;
74、若不可用,则所述第三方节点继续等待所述信号锁;
其中,所述计数器的数值指示,等待所述信号锁的节点数目。
其中,可选地,若所述第三方节点等待所述信号锁,则所述第三方节点修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用包括:
若所述第三方节点等待所述信号锁,则所述第三方节点将本地计数器的数值减一,并判断减一后数值是否为0;
若为0,则确定所述信号锁可用;
若不为0,则确定所述信号锁不可用。
本发明实施例提供的信号锁分配的方法,信号锁请求节点通过广播解锁请求消息,第三方节点能够根据解锁请求消息相应修改本地计数器中的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
图8A是本发明实施例提供的一种网络***。参照图8A,本发明实施例提供的信号锁分配的网络***800可包括:信号锁请求节点81和信号锁的宿主节点82。其中:
所述信号锁请求节点81,用于向所述宿主节点82发送用于请求占用所述信号锁的加锁请求消息;
所述宿主节点82,用于根据所述加锁请求消息,向所述信号锁请求节点81发送所述宿主节点82中计数器的数值,并在发送后修改所述计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目;
所述信号锁请求节点81,用于接收所述宿主节点82返回的计数器的数值,如果所述计数器的数值指示信号锁可用,则占用所述信号锁;如果所述计数器的数值指示信号锁不可用,则继续等待所述信号锁。
其中,所述宿主节点82中的计数器初始时可以从零开始计数,每个加锁请求使计数器增加指定数值,而解锁请求则使计数器减少该指定数值,例如,每个加锁请求使计数器加一,解锁请求则使计数器减一。
其中,所述计数器的指示信号锁可用的数值为0,所述计数器的指示信号锁不可用的数值为非0。
其中,在接收到所述加锁请求消息后,所述宿主节点82可具体用于:在发送后将所述计数器的数值加一。
可选地,所述信号锁请求节点81和所述宿主节点82均为片上网络中的节点。
可选地,在本发明的一个实施例中,在所述信号锁请求节点占用所述信号锁之后,所述信号锁请求节点81还用于,向所有节点广播用于请求释放信号锁的解锁请求消息;
所述宿主节点82还用于,在接收到所述解锁请求消息后,修改所述宿主节点82中计数器的数值。
其中,在接收到所述解锁请求消息后,所述宿主节点81可具体用于:将所述宿主节点中计数器的数值减一。
可选地,参照图8B,所述网络***800还包括第三方节点83。所述第三方节点83可用于:
在接收到所述解锁请求消息后,判断是否等待所述信号锁;
若不等待所述信号锁,则忽略所述解锁请求消息;
若等待所述信号锁,则修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用;
若可用,则占用所述信号锁;
若不可用,则继续等待所述信号锁。
可选地,所述第三方节点83可具体用于:
若等待所述信号锁,则将本地计数器的数值减一,并判断减一后数值是否为0;
若为0,则确定所述信号锁可用;
若不为0,则确定所述信号锁不可用。
本发明实施例提供的信号锁分配的网络***,利用计数器的数值来反映等待信号锁的节点数目,并根据加锁请求消息和/或解锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
图9A是本发明实施例提供的一种网络***。参照图9A,本发明实施例提供的信号锁分配的网络***900可包括:信号锁请求节点91和信号锁的宿主节点92,其中:
所述信号锁请求节点91,用于向所有节点广播用于请求释放信号锁的解锁请求消息;
所述宿主节点92,用于在接收到所述解锁请求消息后,修改所述宿主节点中计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目。
可选地,在接收到所述解锁请求消息时,所述宿主节点92可具体用于:将所述宿主节点中计数器的数值减一。
可选地,参见图9B,在本发明的另一个实施例中,所述网络***900还包括第三方节点93,其中:
所述第三方节点93,用于在接收到所述解锁请求消息后,判断是否等待所述信号锁;
若不等待所述信号锁,则忽略所述解锁请求消息;
若等待所述信号锁,则修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用;
若可用,则占用所述信号锁;
若不可用,则继续等待所述信号锁。
可选地,所述第三方节点93具体用于:
若等待所述信号锁,则将本地计数器的数值减一,并判断减一后数值是否为0;
若为0,则确定所述信号锁可用;
若不为0,则确定所述信号锁不可用。
可选地,所述信号锁请求节点、所述第三方节点和所述宿主节点均为片上网络中的节点。
可选地,在本发明的一个实施例中,在所述信号锁请求节点91释放所述信号锁之后,所述信号锁请求节点还用于:
向所述宿主节点92发送用于请求占用所述信号锁的加锁请求消息;
所述宿主节点92还用于,根据所述加锁请求消息,向所述信号锁请求节点91发送所述宿主节点91中计数器的数值,并在发送后修改所述计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目;
所述信号锁请求节点91,还用于接收所述宿主节点92返回的计数器的数值,并根据所述计数器的数值,进行信号锁分配。
可选地,在接收到所述加锁请求消息时,所述宿主节点92具体用于:在发送后将所述计数器的数值加一。
可选地,所述信号锁请求节点91可具体用于:
如果所述计数器的数值指示信号锁可用,则占用所述信号锁;
如果所述计数器的数值指示信号锁不可用,则继续等待所述信号锁。
其中,所述计数器的指示信号锁可用的数值为0,所述计数器的指示信号锁不可用的数值为非0。
本发明实施例提供的信号锁分配的网络***,利用计数器的数值来反映等待信号锁的节点数目,并根据加锁请求消息和/或解锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
图10是本发明实施例提供的一种信号锁分配的装置,该装置可以为信号锁请求节点。参照图10,本发明实施例提供的信号锁分配的装置1000可包括:包括处理单元101、通信单元102和用于跟踪和管理信号锁的状态的信号锁控制单元103,所述信号锁控制单元103可包括计数器。其中:
所述处理单元101,用于控制所述通信单元102向宿主节点发送用于请求占用信号锁的加锁请求消息;
所述通信单元102,用于接收所述宿主节点返回的计数器的数值,并返回给所述信号锁控制单元103,其中,所述计数器的数值指示,等待所述信号锁的节点数目;
所述信号锁控制单元103,用于接收所述通信单元102返回的所述计数器的数值;
所述处理单元101,还用于如果所述计数器的数值指示信号锁可用,则占用所述信号锁;如果所述计数器的数值指示信号锁不可用,则控制所述信号锁控制单元保存所述数值后继续等待。
本发明实施例提供的信号锁分配的方法,利用计数器的数值来反映等待信号锁的节点数目,并根据加锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
其中,所述计数器的指示信号锁可用的数值为0,所述计数器的指示信号锁不可用的数值为非0。
可选地,所述处理单元101在占用所述信号锁之后,还可用于:
控制所述通信单元102向所有节点广播用于请求释放信号锁的解锁请求消息。
可选地,所述信号锁控制单元103可集成于处理单元101中。
可选地,所述信号锁分配的装置1000可以为与多内核处理器中的一个内核对应的装置,所述处理单元101为多内核处理器中的一个处理内核,所述通信单元102可以为路由器。
图11是本发明实施例提供的一种信号锁分配的装置,该装置可以为宿主节点。参照图11,本发明实施例提供的信号锁分配的装置1100可包括:所述装置包括处理单元111、通信单元112和信号锁控制单元113,所述信号锁控制单元113可包括计数器。其中:
所述处理单元111,用于控制所述通信单元112接收信号锁请求节点发出的、用于请求占用信号锁的加锁请求消息;
所述信号锁控制单元113,用于读取本地计数器的数值,并反馈给所述通信单元112;
所述通信单元112,用于向所述信号锁请求节点发送所述计数器的数值;
所述信号锁控制单元113,用于在所述通信单元向所述信号锁请求节点发送所述宿主节点中计数器的数值后,修改本地计数器的数值,
其中,所述计数器的数值指示,等待所述信号锁的节点数目。
本发明实施例提供的信号锁分配的方法,利用计数器的数值来反映等待信号锁的节点数目,并根据加锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
可选地,在接收到加锁请求消息时,所述信号锁控制单元113具体用于:将本地计数器的数值加一。
可选地,所述信号锁分配的装置1100为与多内核处理器中的一个内核对应的装置,所述处理单元101为多内核处理器中的一个处理内核,所述通信单元112为路由器。
可选地,所述信号锁控制单元113集成于处理单元111中。
可选地,在本发明的一个实施例中,所述通信单元112,用于接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息,并递送给所述信号锁控制单元;
所述信号锁控制单元113,用于在收到所述解锁请求消息后,修改本地计数器的数值。
其中,在接收到解锁请求消息时,所述信号锁控制单元113具体用于:将本地计数器的数值减一。
图12是本发明实施例提供的一种信号锁分配的装置,该装置可以为信号锁请求节点。参照图12,本发明实施例提供的信号锁分配的装置1200可包括:处理单元121和通信单元122:
所述处理单元121,用于控制所述通信单元122;
所述通信单元122,用于在所述处理单元121的控制下向所有节点广播用于请求释放信号锁的解锁请求消息,使得所述信号锁的宿主节点收到所述解锁请求消息后,修改所述宿主节点中计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目。
本发明实施例提供的信号锁分配的装置,通过广播解锁请求消息,使得宿主节点能够根据解锁请求消息相应修改本地计数器中的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
图13是本发明实施例提供的一种信号锁分配的装置,该装置可以为宿主节点。参照图13,本发明实施例提供的信号锁分配的装置1300可包括:包括处理单元131、通信单元132和信号锁控制单元133,所述信号锁控制单元133可包括计数器。其中:
所述通信单元132,用于在所述处理单元131的控制下接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息,并反馈给所述信号锁控制单元133;
所述信号锁控制单元133,用于在收到所述解锁请求消息后,修改本地计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目。
本发明实施例提供的信号锁分配的方法,利用计数器的数值来反映等待信号锁的节点数目,并根据解锁锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
可选地,在接收到解锁请求消息时,所述信号锁控制单元133具体用于:将所述宿主节点中计数器的数值减一。
可选地,所述信号锁分配的装置1300为与多内核处理器中的一个内核对应的装置,所述处理单元101为多内核处理器中的一个处理内核,所述通信单元133为路由器。
可选地,所述信号锁控制单元133集成于处理单元1中。
图14是本发明实施例提供的一种信号锁分配的装置,该装置可以为第三方节点。参照图14,本发明实施例提供的信号锁分配的装置1400可包括:处理单元141、通信单元142和信号锁控制单元143,所述信号锁控制单元143可包括计数器。其中:
所述通信单元142,用于在所述处理单元141的控制下接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息;
信号锁控制单元143,用于在所述处理单元141确定出所述装置等待所述信号锁时,修改本地计数器的数值,
所述处理单元141,还用于确定修改后的数值是否指示信号锁可用;
若可用,则控制所述装置占用所述信号锁;
若不可用,则控制所述装置继续等待所述信号锁;
其中,所述计数器的数值指示,等待所述信号锁的节点数目。
本发明实施例提供的信号锁分配的方法,利用计数器的数值来反映等待信号锁的节点数目,并根据解锁锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
可选地,所述信号锁控制单元143具体用于:
若在所述处理单元141确定出所述装置等待所述信号锁时,将本地计数器的数值减一;
所述处理单元141具体用于:
判断所述信号锁控制单元143中的本地计数器减一后数值是否为0;
若为0,则确定所述信号锁可用;
若不为0,则确定所述信号锁不可用。
可选地,所述信号锁分配的装置1400为与多内核处理器中的一个内核对应的装置,所述处理单元101为多内核处理器中的一个处理内核,所述通信单元142为路由器。
可选地,所述信号锁控制单元143集成于处理单元141中。
图15A示出了基于片上网络的多核处理器的架构。参见图15A,图中的一个方框即表示本文中的一个节点。该节点可以包括处理单元(Processing Unit,PE)信号锁控制单元和路由器。当信号锁控制单元集成于PE中时,该节点可以只包括处理单元和路由器。
本发明实施例中的图10-14中的信号锁分配的装置可以为图15中所示的一个节点。
图15B和图15C示出了“加锁”和“解锁”情形时的消息传递形式。由图图15B和图15C可知,加锁请求以“节点到节点”的一对一形式传递,而解锁请求以“广播”的形式,即一对多的形式传递。加锁情形和解锁情形下的处理流程可参见前文内容,在此不再赘述。
本申请可以提供一种基于片上网络的信号锁分配方案,利用计数器的形式管理信号锁并通过核间通信机制实现信号锁的协议,实现了有序、无竞争的信号锁协议,避免了轮询机制所产生的冗余通信。
而且,本申请可以利用NoC架构自身的分布式特点来实现信号锁的有序控制,简化了控制的复杂度。同时,将信号锁分散于片上网络的节点中,利用片上网络自身的分布式结构平衡了分配的通信量,避免了集中式管理的通信量不平衡问题。
相应地,本发明实施例还可提供一种信号锁请求节点,所述信号锁请求节点包括一或多个处理器以及非临时性计算机可读存储介质,所述一或多个处理器和所述非临时性计算机可读存储介质通过总线相连。其中,所述非临时性计算机可读存储介质存储有供所述一或多个处理器执行的一或多个程序,所述一或多个程序包括执行以下操作的指令:
向宿主节点发送用于请求占用信号锁的加锁请求消息;
接收所述宿主节点返回的计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目;
根据所述计数器的数值,进行信号锁分配。
可选地,所述根据所述计数器的数值,进行信号锁分配可包括:
如果所述计数器的数值指示信号锁可用,则占用所述信号锁;
如果所述计数器的数值指示信号锁不可用,则保存所述数值后继续等待。
其中,所述计数器的指示信号锁可用的数值为0,所述计数器的指示信号锁不可用的数值为非0。
进一步地,所述一或多个程序还可包括执行以下操作的指令:向所有节点广播用于请求释放信号锁的解锁请求消息。
本发明实施例提供的信号锁请求节点,利用计数器的数值来反映等待信号锁的节点数目,并根据加锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
相应地,本发明实施例还可提供一种宿主节点,所述宿主节点包括一或多个处理器以及非临时性计算机可读存储介质,所述一或多个处理器和所述非临时性计算机可读存储介质通过总线相连。其中,所述非临时性计算机可读存储介质存储有供所述一或多个处理器执行的一或多个程序,所述一或多个程序包括执行以下操作的指令:
接收信号锁请求节点发出的、用于请求占用信号锁的加锁请求消息;
向所述信号锁请求节点发送所述宿主节点中计数器的数值;
在向所述信号锁请求节点发送所述宿主节点中计数器的数值后,修改所述计数器的数值,
其中,所述计数器的数值指示,等待所述信号锁的节点数目。
可选地,所述修改所述计数器的数值可包括:将计数器的数值加一。
进一步地,所述一或多个程序还可包括执行以下操作的指令:
接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息;
在收到所述解锁请求消息后,修改所述宿主节点中计数器的数值。
其中,所述修改所述宿主节点中计数器的数值包括:所述宿主节点将所述宿主节点中计数器的数值减一。
本发明实施例提供的宿主节点,利用计数器的数值来反映等待信号锁的节点数目,并根据加锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
相应地,本发明实施例还可提供一种包括上述信号锁请求节点和宿主节点的***。
相应地,本发明实施例还提供另一种信号锁请求节点,所述信号锁请求节点包括一或多个处理器以及非临时性计算机可读存储介质,所述一或多个处理器和所述非临时性计算机可读存储介质通过总线相连。其中,所述非临时性计算机可读存储介质存储有供所述一或多个处理器执行的一或多个程序,所述一或多个程序包括执行以下操作的指令:
向所有节点广播用于请求释放信号锁的解锁请求消息,使得所述信号锁的宿主节点收到所述解锁请求消息后,修改所述宿主节点中计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目。
本发明实施例提供的信号锁请求节点,利用计数器的数值来反映等待信号锁的节点数目,并根据解锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
相应地,本发明实施例还提供另一种宿主节点,所述宿主节点包括一或多个处理器以及非临时性计算机可读存储介质,所述一或多个处理器和所述非临时性计算机可读存储介质通过总线相连。其中,所述非临时性计算机可读存储介质存储有供所述一或多个处理器执行的一或多个程序,所述一或多个程序包括执行以下操作的指令:
接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息;
所述宿主节点收到所述解锁请求消息后,修改所述宿主节点中计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目。
所述修改所述宿主节点中计数器的数值包括:所述宿主节点将所述宿主节点中计数器的数值减一。
本发明实施例提供的宿主节点,利用计数器的数值来反映等待信号锁的节点数目,并根据解锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
相应地,本发明实施例还提供一种第三方节点,所述第三方节点包括一或多个处理器以及非临时性计算机可读存储介质,所述一或多个处理器和所述非临时性计算机可读存储介质通过总线相连。其中,所述非临时性计算机可读存储介质存储有供所述一或多个处理器执行的一或多个程序,所述一或多个程序包括执行以下操作的指令:
接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息;
若所述第三方节点等待所述信号锁,则修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用;
若可用,则所述第三方节点占用所述信号锁;
若不可用,则所述第三方节点继续等待所述信号锁;
其中,所述计数器的数值指示,等待所述信号锁的节点数目。
其中,所述若所述第三方节点等待所述信号锁,则所述第三方节点修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用包括:
若所述第三方节点等待所述信号锁,则所述第三方节点将本地计数器的数值减一,并判断减一后数值是否为0;
若为0,则确定所述信号锁可用;
若不为0,则确定所述信号锁不可用。
本发明实施例提供的第三方节点,利用计数器的数值来反映等待信号锁的节点数目,并根据解锁请求消息来修改计数器的数值,以保证修改后的计数器的数值可以反映最新的等待信号锁的节点数目。这样一来,可以根据计数器的数值来进行信号锁分配,避免了节点间对信号锁的无序竞争以及由此而导致的分配效率降低,从而能够有序地、无竞争地实现信号锁分配,提高了分配的效率。
相应地,本发明实施例还可提供一种可包括上述信号锁请求节点、上述宿主节点以及上述第三方节点的***。
需要说明的是,本领域技术人员在本申请的基础上可以做出适当的变型,这些变型都落入本发明的范围内。例如,1)本发明可以作为一种高速的多核信号锁方案,可与现有的基于二进制变量的信号锁方案混合使用,常用的信号锁使用本方案可提高分配效率;2)由操作***实现对信号锁编号的管理,实现本方案与传统方案的切换;3)应用程序在向操作***申请信号锁时,操作***根据资源的状态返回一个信号锁的编号,该信号锁对上层应用并不透明;4)应用程序通过调用操作***的信号锁应用程序接口(ApplicationProcedure Interface,API),向操作***申请信号锁的相关操作,再由操作***向底层硬件发出本发明中涉及的信号锁分配请求;5)本发明可兼容pthread等标准多线程编程模型,在实现pthread中信号锁相关API的时候,通过改动驱动程序,实现在不同处理器和多种硬件平台上的应用;6)信号锁的消息传递通过专用的高速网络,或复用其他的片上高速网络实现,以实现快速传递。
还需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (20)
1.一种信号锁分配的方法,其特征在于,所述方法包括:
信号锁请求节点向信号锁的宿主节点发送用于请求占用所述信号锁的加锁请求消息;
所述宿主节点根据所述加锁请求消息,向所述信号锁请求节点发送所述宿主节点中计数器的数值,并在发送所述数值后修改所述计数器的数值,其中,所述计数器的数值指示等待所述信号锁的节点数目;
所述信号锁请求节点接收所述宿主节点返回的计数器的数值;如果所述计数器的数值指示信号锁可用,则所述信号锁请求节点占用所述信号锁,如果所述计数器的数值指示信号锁不可用,则所述信号锁请求节点继续等待所述信号锁。
2.根据权利要求1所述的方法,其特征在于,在所述信号锁请求节点占用所述信号锁之后,所述方法还包括:
所述信号锁请求节点向所有节点广播用于请求释放信号锁的解锁请求消息;
所述宿主节点在接收到所述解锁请求消息后,修改所述宿主节点中计数器的数值。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
第三方节点接收到所述解锁请求消息后,判断是否等待所述信号锁;
若不等待所述信号锁,则所述第三方节点忽略所述解锁请求消息;
若等待所述信号锁,则所述第三方节点修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用;
若可用,则占用所述信号锁;
若不可用,则继续等待所述信号锁。
4.一种信号锁分配的方法,其特征在于,所述方法包括:
信号锁请求节点向信号锁的宿主节点发送用于请求占用所述信号锁的加锁请求消息;
所述信号锁请求节点接收所述宿主节点返回的计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目;
如果所述计数器的数值指示信号锁可用,则所述信号锁请求节点占用所述信号锁;
如果所述计数器的数值指示信号锁不可用,则所述信号锁请求节点保存所述数值后继续等待。
5.根据权利要求4所述的方法,其特征在于,所述计数器的指示信号锁可用的数值为0,所述计数器的指示信号锁不可用的数值为非0。
6.根据权利要求4-5任一所述的方法,其特征在于,在所述信号锁请求节点占用所述信号锁之后,所述方法还包括:
所述信号锁请求节点向所有节点广播用于请求释放信号锁的解锁请求消息。
7.一种信号锁分配的方法,其特征在于,所述方法包括:
信号锁的宿主节点接收信号锁请求节点发出的、用于请求占用信号锁的加锁请求消息;
所述宿主节点向所述信号锁请求节点发送所述宿主节点中计数器的数值;
所述宿主节点在向所述信号锁请求节点发送所述宿主节点中计数器的数值后,修改所述计数器的数值;
其中,所述计数器的数值指示,等待所述信号锁的节点数目,如果所述计数器的数值指示信号锁可用,则所述信号锁请求节点占用所述信号锁,如果所述计数器的数值指示信号锁不可用,则所述信号锁请求节点继续等待所述信号锁。
8.根据权利要求7所述的方法,其特征在于,所述修改所述计数器的数值包括:所述宿主节点将计数器的数值加一。
9.根据权利要求7或8所述的方法,其特征在于,所述方法还包括:
宿主节点接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息;
所述宿主节点收到所述解锁请求消息后,修改所述宿主节点中计数器的数值。
10.根据权利要求9所述的方法,其特征在于,所述修改所述宿主节点中计数器的数值包括:所述宿主节点将所述宿主节点中计数器的数值减一。
11.一种用于信号锁分配的网络***,其特征在于,所述网络***包括信号锁请求节点和信号锁的宿主节点,其中:
所述信号锁请求节点,用于向所述宿主节点发送用于请求占用所述信号锁的加锁请求消息;
所述宿主节点,用于根据所述加锁请求消息,向所述信号锁请求节点发送所述宿主节点中计数器的数值,并在发送所述数值后修改所述计数器的数值,其中,所述计数器的数值指示,等待所述信号锁的节点数目;
所述信号锁请求节点,用于接收所述宿主节点返回的计数器的数值,如果所述计数器的数值指示信号锁可用,则占用所述信号锁;如果所述计数器的数值指示信号锁不可用,则继续等待所述信号锁。
12.根据权利要求11所述的网络***,其特征在于,所述信号锁请求节点和所述宿主节点均为片上网络中的节点。
13.根据权利要求11-12任一所述的网络***,其特征在于,在所述信号锁请求节点占用所述信号锁之后,所述信号锁请求节点还用于,向所有节点广播用于请求释放信号锁的解锁请求消息;
所述宿主节点还用于,在接收到所述解锁请求消息后,修改所述宿主节点中计数器的数值。
14.根据权利要求13所述的网络***,其特征在于,所述网络***还包括第三方节点,所述第三方节点用于:
在接收到所述解锁请求消息后,判断是否等待所述信号锁;
若不等待所述信号锁,则忽略所述解锁请求消息;
若等待所述信号锁,则修改本地计数器的数值,并确定修改后的数值是否指示信号锁可用;
若可用,则占用所述信号锁;
若不可用,则继续等待所述信号锁。
15.一种信号锁的装置,其特征在于,所述装置包括处理单元、通信单元和信号锁控制单元,其中:
所述处理单元,用于控制所述通信单元向信号锁的宿主节点发送用于请求占用所述信号锁的加锁请求消息;
所述通信单元,用于接收所述宿主节点返回的计数器的数值,并返回给所述信号锁控制单元,其中,所述计数器的数值指示,等待所述信号锁的节点数目;
所述信号锁控制单元,用于接收所述通信单元返回的所述计数器的数值;
所述处理单元,还用于如果所述计数器的数值指示信号锁可用,则占用所述信号锁;如果所述计数器的数值指示信号锁不可用,则控制所述信号锁控制单元保存所述数值后继续等待。
16.根据权利要求15所述的装置,其特征在于,所述信号锁控制单元集成于处理单元中。
17.根据权利要求15所述的装置,其特征在于,在占用所述信号锁之后,所述处理单元还用于:
控制所述通信单元向所有节点广播用于请求释放信号锁的解锁请求消息。
18.一种信号锁的装置,其特征在于,所述装置包括处理单元、通信单元和信号锁控制单元,其中:
所述处理单元,用于控制所述通信单元接收信号锁请求节点发出的、用于请求占用信号锁的加锁请求消息;
所述信号锁控制单元,用于读取本地计数器的数值,并反馈给所述通信单元;
所述通信单元,用于向所述信号锁请求节点发送所述计数器的数值;
所述信号锁控制单元,用于在所述通信单元向所述信号锁请求节点发送宿主节点中计数器的数值后,修改本地计数器的数值,
其中,所述计数器的数值指示,等待所述信号锁的节点数目,如果所述计数器的数值指示信号锁可用,则所述信号锁请求节点占用所述信号锁,如果所述计数器的数值指示信号锁不可用,则所述信号锁请求节点继续等待所述信号锁。
19.根据权利要求18所述的装置,其特征在于,所述信号锁控制单元集成于处理单元中。
20.根据权利要求18所述的装置,其特征在于,
所述通信单元,用于接收信号锁请求节点发出的、用于请求释放信号锁的解锁请求消息,并递送给所述信号锁控制单元;
所述信号锁控制单元,用于在收到所述解锁请求消息后,修改所述宿主节点中计数器的数值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510320641.XA CN106293930B (zh) | 2015-06-11 | 2015-06-11 | 一种信号锁分配的方法、装置和网络*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510320641.XA CN106293930B (zh) | 2015-06-11 | 2015-06-11 | 一种信号锁分配的方法、装置和网络*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106293930A CN106293930A (zh) | 2017-01-04 |
CN106293930B true CN106293930B (zh) | 2019-08-20 |
Family
ID=57660272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510320641.XA Active CN106293930B (zh) | 2015-06-11 | 2015-06-11 | 一种信号锁分配的方法、装置和网络*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106293930B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111639309B (zh) * | 2020-05-26 | 2021-08-24 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、节点设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0666665A2 (en) * | 1994-02-07 | 1995-08-09 | International Business Machines Corporation | Method and apparatus for dynamically determining and allocating shared resource access quota |
CN102103523A (zh) * | 2009-12-22 | 2011-06-22 | 国际商业机器公司 | 锁分配控制的方法和装置 |
CN102298539A (zh) * | 2011-06-07 | 2011-12-28 | 华东师范大学 | 一种用于分布式并行处理的共享资源调度方法及*** |
CN102750187A (zh) * | 2012-07-11 | 2012-10-24 | 北京联时空网络通信设备有限公司 | 一种跨进程交互方法及装置 |
CN103297456A (zh) * | 2012-02-24 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 一种分布式***下共享资源的访问方法及分布式*** |
-
2015
- 2015-06-11 CN CN201510320641.XA patent/CN106293930B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0666665A2 (en) * | 1994-02-07 | 1995-08-09 | International Business Machines Corporation | Method and apparatus for dynamically determining and allocating shared resource access quota |
CN102103523A (zh) * | 2009-12-22 | 2011-06-22 | 国际商业机器公司 | 锁分配控制的方法和装置 |
CN102298539A (zh) * | 2011-06-07 | 2011-12-28 | 华东师范大学 | 一种用于分布式并行处理的共享资源调度方法及*** |
CN103297456A (zh) * | 2012-02-24 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 一种分布式***下共享资源的访问方法及分布式*** |
CN102750187A (zh) * | 2012-07-11 | 2012-10-24 | 北京联时空网络通信设备有限公司 | 一种跨进程交互方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106293930A (zh) | 2017-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4398556A2 (en) | Storage transactions with predictable latency | |
US11748278B2 (en) | Multi-protocol support for transactions | |
US8949847B2 (en) | Apparatus and method for managing resources in cluster computing environment | |
CN105242872B (zh) | 一种面向虚拟集群的共享存储*** | |
US9864759B2 (en) | System and method for providing scatter/gather data processing in a middleware environment | |
CN106385329B (zh) | 资源池的处理方法、装置和设备 | |
JP5510556B2 (ja) | 仮想マシンのストレージスペースおよび物理ホストを管理するための方法およびシステム | |
CN110809760B (zh) | 资源池的管理方法、装置、资源池控制单元和通信设备 | |
DE102018006546A1 (de) | Plattformschnittstellenschicht und protokoll für beschleuniger | |
CN103744719B (zh) | 锁管理方法及***、锁管理***的配置方法及装置 | |
DE112017001762T5 (de) | Technologien für den einsatz dynamischer underlay-netzwerke in cloud-computing-infrastrukturen | |
CN111903109A (zh) | 可超额预订资源分配 | |
US9836322B1 (en) | Methods and apparatus for virtualizing switch control plane engine | |
DE102018127751A1 (de) | Einheitlicher Adressraum für mehrere Verbindungen | |
CN113641457A (zh) | 容器创建方法、装置、设备、介质及程序产品 | |
DE102022126611A1 (de) | Service-mesh-auslagerung an netzwerkvorrichtungen | |
CN106571978B (zh) | 数据包捕获方法及装置 | |
CN108572876A (zh) | 一种读写锁的实现方法及装置 | |
US20210311798A1 (en) | Dynamic microservices allocation mechanism | |
CN105975327A (zh) | 在虚拟环境下减小虚拟机的抢占的方法和计算机*** | |
CN105453056A (zh) | 用于在多高速缓存环境中管理高速缓冲存储器的方法和装置 | |
CN106293930B (zh) | 一种信号锁分配的方法、装置和网络*** | |
US9304706B2 (en) | Efficient complex network traffic management in a non-uniform memory system | |
CN110795202A (zh) | 一种虚拟化集群资源管理***的资源分配方法以及装置 | |
CN111143035B (zh) | Cpu资源的分配方法、装置、设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |