一种实现进程互斥的方法和装置制造方法

文档序号:6628153阅读:241来源:国知局
一种实现进程互斥的方法和装置制造方法
【专利摘要】本发明公开了一种实现进程互斥的方法和装置,包括按照预先设置的控制器加锁顺序,依次对各控制器上的目标锁执行加锁处理;其中,目标锁为控制器上的与要处理的临界资源对应的锁;处理临界资源后,按照控制器加锁顺序的反向顺序,依次对各控制器上的目标锁执行解锁处理。通过本发明提供的技术方案,在多控分布式系统中出现同时处理临界资源的情况下,实现了进程互斥。
【专利说明】一种实现进程互斥的方法和装置

【技术领域】
[0001]本发明涉及分布式系统技术,尤指一种多控分布式系统中实现进程互斥的方法和
>J-U ρ?α装直。

【背景技术】
[0002]随着信息技术的迅速发展,多控分布式系统得到了广泛的应用。多控分布式系统是由一组控制器(例如,独立自治的计算机)经过网络互联而成的分布式计算机系统。在多控分布式系统中,每个控制器地位平等,用户可以通过任意控制器对多控分布式系统进行管理。这样,容易出现多个控制器中的进程同时需要处理多控分布式系统中的同一个临界资源的情况。
[0003]临界资源是一种在同一时刻,只允许一个进程处理的资源。目前,在集中式系统(即单节点系统)中,在同时处理临界资源时,通常采用本领域技术人员公知的信号量技术实现进程互斥。信号量技术需要基于公共内存来实现,但在多控分布式系统中,不存在公共内存,因此传统的基于信号量技术的进程互斥方法无法应用到多控分布式系统。


【发明内容】

[0004]为了解决上述技术问题,本发明提供了一种实现进程互斥的方法和装置,能够在多控分布式系统中出现同时处理临界资源的情况下,实现进程互斥。
[0005]为了达到本发明目的,本发明公开了一种实现进程互斥的方法,包括:
[0006]按照预先设置的控制器加锁顺序,依次对各控制器上的目标锁执行加锁处理;其中,目标锁为控制器上的与要处理的临界资源对应的锁;
[0007]处理临界资源后,按照控制器加锁顺序的反向顺序,依次对各控制器上的目标锁执行解锁处理。
[0008]所述执行加锁处理包括:根据所述目标锁的状态S和过期时间戳TS判断是否可加锁,如果判断出可加锁,则对所述目标锁进行加锁,否则继续判断是否可加锁。
[0009]所述判断是否可加锁包括:所述目标锁的状态为空闲,或者,所述目标锁的状态S为占用且所述目标锁的过期时间戳TS小于或等于所述控制器的系统时间戳时,判断出可加锁。
[0010]所述对所述目标锁进行加锁包括:设置所述目标锁的状态S为占用;设置所述目标锁的过期时间戳TS为所述控制器的系统时间戳与预先设置的该目标锁的有效时间的和;设置所述目标锁对应的超时时间为所述目标锁的过期时间戳TS。
[0011 ] 所述执行解锁处理包括:根据所述目标锁的状态S和过期时间戳TS判断是否可解锁,如果判断出可解锁,则对所述目标锁进行解锁,否则结束解锁处理。
[0012]所述判断是否可解锁包括:所述目标锁的状态S为占用,且所述目标锁的过期时间戳TS与所述目标锁对应的超时时间相等,且过期时间戳TS大于所述控制器的系统时间戳时,判断出可解锁。
[0013]所述对所述目标锁进行解锁包括:设置所述目标锁的状态S为空闲。
[0014]本发明还包括一种实现进程互斥的装置,包括加锁单元和解锁单元,其中,
[0015]加锁单元,用于按照预先设置的控制器加锁顺序,依次对各控制器上的目标锁执行加锁处理;其中,目标锁为控制器上的与要处理的临界资源对应的锁;
[0016]解锁单元,用于按照控制器加锁顺序的反向顺序,依次对各控制器上的目标锁执行解锁处理。
[0017]所述加锁单元具体用于:按照预先设置的控制器加锁顺序,针对每个控制器上的目标锁:根据所述目标锁的状态S和过期时间戳TS判断是否可加锁,如果判断出可加锁,则对所述目标锁进行加锁,否则继续判断是否可加锁。
[0018]所述判断是否可加锁包括:所述目标锁的状态S为空闲,或者,所述目标锁的状态S为占用且过期时间戳TS小于或等于所述控制器的系统时间戳时,判断出可加锁。
[0019]所述加锁单元用于:当判断出可加锁时,设置所述目标锁的状态S为占用;设置所述目标锁的过期时间戳TS为所述控制器的系统时间戳与预先设置的该目标锁的有效时间的和;设置所述目标锁对应的超时时间为所述目标锁的过期时间戳TS。
[0020]所述解锁单元具体用于:按照控制器加锁顺序的反向顺序,针对每个控制器上的目标锁:根据所述目标锁的状态S和过期时间戳TS判断是否可解锁,如果判断出可解锁,则对所述目标锁进行解锁,否则结束解锁处理。
[0021]所述判断是否可解锁包括:所述目标锁的状态S为占用,且所述目标锁的过期时间戳TS与所述目标锁对应的超时时间相等,且过期时间戳TS大于所述控制器的系统时间戳时,判断出可解锁。
[0022]当判断出可解锁时,所述解锁单元用于:设置所述目标锁的状态S为空闲。
[0023]与现有技术相比,本发明的技术方案包括:按照预先设置的控制器加锁顺序,依次对各控制器上的目标锁执行加锁处理;其中,目标锁为控制器上的与要处理的临界资源对应的锁;处理临界资源后,按照控制器加锁顺序的反向顺序,依次对各控制器上的目标锁执行解锁处理。通过本发明提供的技术方案,在多控分布式系统中出现同时处理临界资源的情况下,实现了进程互斥,从而满足了多控分布式系统中进程互斥的需求。
[0024]本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

【专利附图】

【附图说明】
[0025]附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
[0026]图1为本发明实现进程互斥的方法的流程图;
[0027]图2为本发明实现进程互斥的装置的组成结构示意图。

【具体实施方式】
[0028]为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进程详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0029]在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0030]首先需要说明的是,要处理临界资源的进程均可以采用本发明方法实现进程互斥。
[0031]图1为本发明实现进程互斥的方法的流程图,如图1所示,包括:
[0032]步骤101:按照预先设置的控制器加锁顺序,依次对各控制器上的目标锁执行加锁处理。
[0033]其中,目标锁为控制器上的与要处理的临界资源对应的锁。具体来讲,对于同一个临界资源,在每个控制器上,都有与该临界资源对应的目标锁。在控制器上,可以采用锁文件技术或共享缓存技术实现目标锁。其中,锁文件技术和共享缓存技术的具体实现,为本领域技术人员公知的技术手段,此处不再赘述。
[0034]目标锁包括状态S和过期时间戳TS。其中,状态S表示目标锁的状态为空闲或占用,过期时间戳TS表示目标锁的超时时刻。
[0035]本步骤中执行加锁处理包括:根据目标锁的状态S和过期时间戳TS判断是否可加锁,如果判断出可加锁,则对目标锁进行加锁,否则继续判断是否可加锁。
[0036]其中,判断是否可加锁包括:目标锁的状态为空闲,或者,目标锁的状态S为占用且目标锁的过期时间戳TS小于或等于控制器的系统时间戳时,判断出可加锁。其中,控制器的时间戳的概念为本领域技术人员公知的,此处不再赘述。
[0037]对目标锁进行加锁的具体实现包括:
[0038]设置目标锁的状态S为占用;设置目标锁的过期时间戳TS为控制器的系统时间戳与预先设置的该目标锁的有效时间的和;设置目标锁对应的超时时间为目标锁的过期时间戳TS。
[0039]其中,目标锁的有效时间表明可以处理临界资源的时间。为了避免通常情况下处理临界资源的时间大于目标锁的有效时间,导致目标锁超时,可以将目标锁的有效时间设定为大于或等于常情况下最长处理临界资源的时间。
[0040]在执行加锁处理的步骤中,如果判断出不可加锁,则继续判断是否可加锁,这样保证了,对于当前目标锁,直到判断出可加锁并对该目标锁进行加锁后,才结束执行加锁处理的步骤。
[0041]需要说明的是,按照加锁处理中加锁的不同原因,将目标锁的状态S为空闲引起的加锁称为正常式加锁,将目标锁超时引起的加锁称为抢占式加锁。其中,正常式加锁指的是目标锁解锁之后再加锁,抢占式加锁指的是目标锁未解锁再次加锁。
[0042]当出现抢占式加锁的情况时,目标锁在被对其加锁的进程I解锁之前,目标锁被另一个进程2抢占式加锁,使得目标锁的过期时间戳TS被进程2更改,这样,进程I的目标锁对应的超时时间与目标锁的过期时间戳TS不相等,而进程2的目标锁对应的超时时间与目标锁的过期时间戳TS相等。
[0043]本领域技术人员应该清楚的是,对于一种临界资源,在同一个控制器上,针对与该临界资源对应的目标锁时,为避免该控制器上不同进程同时处理该目标锁,需要对该目标锁应用排他锁,其中,排他锁可以基于信号量机制或者本领域技术人员公知的集中式系统上的锁机制进行实现。
[0044]本步骤后,可以处理临界资源,例如读写临界资源。
[0045]步骤102:处理临界资源后,按照控制器解锁顺序,依次对各控制器上的目标锁执行解锁处理。其中,控制器解锁顺序是控制器加锁顺序的反向顺序。
[0046]下面举例说明控制器解锁顺序。假设多控分布式系统中有3个控制器,分别是控制器1、控制器2和控制器3,如果预先设置的控制器加锁顺序是控制器1、控制器2、控制器3,则控制器加锁顺序的反向顺序是控制器3、控制器2、控制器I。
[0047]本步骤中执行解锁处理包括:根据目标锁的状态S和过期时间戳TS判断是否可解锁,如果判断出可解锁,则对目标锁进行解锁,否则结束解锁处理。
[0048]其中,判断是否可解锁包括:目标锁的状态S为占用,且目标锁的过期时间戳TS与目标锁对应的超时时间相等,且过期时间戳TS大于述控制器的系统时间戳时,判断出可解锁。
[0049]对述目标锁进行解锁的具体实现包括:设置目标锁的状态S为空闲。
[0050]执行解锁处理的步骤之后,如果判断出不可解锁,则直接结束该步骤,也就是说不对目标锁进行处理。根据加锁策略可知,目标锁被抢占式加锁导致判断出不可解锁。在这种情况下,不对目标锁进行处理,避免了对目标锁的错误处理。
[0051]本发明中,控制器加锁顺序和控制器解锁顺序是相反的,这样有效避免了多个进程针对同一个临界资源分别采用本发明方法实现互斥时,出现的异常情况,比如本领域人员公知的进程间死锁的情况。
[0052]图2为本发明实现进程互斥的装置的组成结构示意图,如图2所示,包括加锁单元和解锁单元,其中,
[0053]加锁单元,用于按照预先设置的控制器加锁顺序,依次对各控制器上的目标锁执行加锁处理。
[0054]其中,目标锁为控制器上的与要处理的临界资源对应的锁,目标锁包括状态S和过期时间戳TS,状态S表示目标锁的状态为空闲或占用,过期时间戳TS表示目标锁的超时时刻。
[0055]解锁单元,用于按照控制器加锁顺序的反向顺序,依次对各控制器上的目标锁执行解锁处理。
[0056]具体来讲,
[0057]加锁单元具体用于:按照预先设置的控制器加锁顺序,针对每个控制器上的目标锁:根据目标锁的状态S和过期时间戳TS判断是否可加锁,如果判断出可加锁,则对目标锁进行加锁,否则继续判断是否可加锁。
[0058]判断是否可加锁包括:目标锁的状态S为空闲,或者,目标锁的状态S为占用且过期时间戳TS小于或等于控制器的系统时间戳时,判断出可加锁。
[0059]加锁单元用于:当判断出可加锁时,设置目标锁的状态S为占用;设置目标锁的过期时间戳TS为控制器的系统时间戳与预先设置的该目标锁的有效时间的和;设置目标锁对应的超时时间为目标锁的过期时间戳TS。
[0060]具体来讲,
[0061]解锁单元具体用于:按照控制器加锁顺序的反向顺序,针对每个控制器上的目标锁:根据目标锁的状态S和过期时间戳TS判断是否可解锁,如果判断出可解锁,则对目标锁进行解锁,否则结束解锁处理。
[0062]判断是否可解锁包括:目标锁的状态S为占用,且目标锁的过期时间戳TS与对应于目标锁的超时时间相等,且过期时间戳TS大于控制器的系统时间戳时,判断出可解锁。
[0063]当判断出可解锁时,解锁单元用于:设置目标锁的状态S为空闲。
[0064]虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进程任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
【权利要求】
1.一种实现进程互斥的方法,其特征在于,包括: 按照预先设置的控制器加锁顺序,依次对各控制器上的目标锁执行加锁处理;其中,目标锁为控制器上的与要处理的临界资源对应的锁; 处理临界资源后,按照控制器加锁顺序的反向顺序,依次对各控制器上的目标锁执行解锁处理。
2.根据权利要求1所述的方法,其特征在于,所述执行加锁处理包括:根据所述目标锁的状态S和过期时间戳TS判断是否可加锁,如果判断出可加锁,则对所述目标锁进行加锁,否则继续判断是否可加锁。
3.根据权利要求2所述的方法,其特征在于,所述判断是否可加锁包括:所述目标锁的状态为空闲,或者,所述目标锁的状态S为占用且所述目标锁的过期时间戳TS小于或等于所述控制器的系统时间戳时,判断出可加锁。
4.根据权利要求2或3所述的方法,其特征在于,所述对所述目标锁进行加锁包括:设置所述目标锁的状态S为占用;设置所述目标锁的过期时间戳TS为所述控制器的系统时间戳与预先设置的该目标锁的有效时间的和;设置所述目标锁对应的超时时间为所述目标锁的过期时间戳TS。
5.根据权利要求4所述的方法,其特征在于,所述执行解锁处理包括:根据所述目标锁的状态S和过期时间戳TS判断是否可解锁,如果判断出可解锁,则对所述目标锁进行解锁,否则结束解锁处理。
6.根据权利要求5所述的方法,其特征在于,所述判断是否可解锁包括:所述目标锁的状态S为占用,且所述目标锁的过期时间戳TS与所述目标锁对应的超时时间相等,且过期时间戳TS大于所述控制器的系统时间戳时,判断出可解锁。
7.根据权利要求6所述的方法,其特征在于,所述对所述目标锁进行解锁包括:设置所述目标锁的状态S为空闲。
8.一种实现进程互斥的装置,其特征在于,包括加锁单元和解锁单元,其中, 加锁单元,用于按照预先设置的控制器加锁顺序,依次对各控制器上的目标锁执行加锁处理;其中,目标锁为控制器上的与要处理的临界资源对应的锁; 解锁单元,用于按照控制器加锁顺序的反向顺序,依次对各控制器上的目标锁执行解锁处理。
9.根据权利要求8所述的装置,其特征在于,所述加锁单元具体用于:按照预先设置的控制器加锁顺序,针对每个控制器上的目标锁:根据所述目标锁的状态S和过期时间戳TS判断是否可加锁,如果判断出可加锁,则对所述目标锁进行加锁,否则继续判断是否可加锁。
10.根据权利要求9所述的装置,其特征在于,所述判断是否可加锁包括:所述目标锁的状态S为空闲,或者,所述目标锁的状态S为占用且过期时间戳TS小于或等于所述控制器的系统时间戳时,判断出可加锁。
11.根据权利要求9或10所述的装置,其特征在于所述加锁单元用于:当判断出可加锁时,设置所述目标锁的状态S为占用;设置所述目标锁的过期时间戳TS为所述控制器的系统时间戳与预先设置的该目标锁的有效时间的和;设置所述目标锁对应的超时时间为所述目标锁的过期时间戳TS。
12.根据权利要求11所述的装置,其特征在于,所述解锁单元具体用于:按照控制器加锁顺序的反向顺序,针对每个控制器上的目标锁:根据所述目标锁的状态S和过期时间戳TS判断是否可解锁,如果判断出可解锁,则对所述目标锁进行解锁,否则结束解锁处理。
13.根据权利要求12所述的装置,其特征在于,所述判断是否可解锁包括:所述目标锁的状态S为占用,且所述目标锁的过期时间戳TS与所述目标锁对应的超时时间相等,且过期时间戳TS大于所述控制器的系统时间戳时,判断出可解锁。
14.根据权利要求13所述的装置,其特征在于,当判断出可解锁时,所述解锁单元用于:设置所述目标锁的状态S为空闲。
【文档编号】G06F9/52GK104268024SQ201410494886
【公开日】2015年1月7日 申请日期:2014年9月24日 优先权日:2014年9月24日
【发明者】何中辰, 吴庆民, 袁鹏飞 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1