多核系统中回收临界资源的方法、装置和设备的制作方法

文档序号:6489942阅读:162来源:国知局
多核系统中回收临界资源的方法、装置和设备的制作方法
【专利摘要】本发明实施例公开了一种多核系统中回收临界资源的方法,包括:配置身份信息至临界资源对应的锁,所述身份信息表示获取到锁的core的身份;如果需要释放一个core所占用的锁,查询所有拥有身份信息的锁;根据身份信息确定到所述core占用的锁并释放所述锁。本发明还公开了一种多核系统中回收临界资源的装置。采用本发明,在core需要释放锁时,能根据身份信息确定到需要释放的锁,以便使其他的core获得该锁的拥有权,实现对该锁对应的临界资源的访问,避免出现死锁的现象,提高了多核系统运行的可靠性。
【专利说明】多核系统中回收临界资源的方法、装置和设备
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及多核系统中回收临界资源的方法、装置和设备。【背景技术】
[0002]随着芯片制造工艺的不断进步,从体系结构来看,传统的处理器体系结构技术已面临瓶颈。单纯的通过提高主频来提升性能变的越来越困难,而且更高主频也带来更高的功耗。所以多核技术应运而生,通过增加CPU(Central Processing Unit,中央处理器)中core (核心)的个数,来达到提高处理效率的目的。
[0003]锁(Lock)是多核系统中最常用的竞争机制,临界资源指一次仅允许一个使用者进行操作的资源,或者是一次仅允许一个使用者进行写操作且允许多个使用者进行读操作的资源,使用者指需要对临界资源进行指定操作的硬件或软件。每个core在访问临界资源前都需要先获得锁,然后才可以访问临界资源,访问完成后再释放锁。这个机制保证了多个core能够轮流访问临界资源,但这也带来一个问题,如果某个core在获得锁后访问临界资源时发生异常而没有释放锁,其他的core将永远无法获得这个锁,继而导致整个多核系统无法正常运行。因此在多核系统中,某个core发生异常,将可能导致整个多核系统无法正常运行,所有core停止执行任务而等待。针对这种情况,通常的做法是回收所有的系统资源,然后重新运行整个多核系统。重新运行虽然能够解决整个多核系统无法正常运行的问题,但这导致整个多核系统的状态和环境都回到初始状态。当多核系统设备与网络设备正常通信,某个core处理报文发生异常时,现有技术的做法为重新运行多核系统,但是重新运行后,多核系统设备已经获得的报文丢失,已经建立的连接需要重新建立,并且在整个系统运行之前,系统服务都不可用,在一些网络环境中,如果整个多核系统运行中断将是不可接受的。

【发明内容】

[0004]本发明要解决的技术问题在于,提供一种多核系统中回收临界资源的方法。可解决现有技术中core发生异常而导致系统运行中断的问题。
[0005]为了解决上述技术问题,本发明第一方面提供了一种多核系统中回收临界资源的方法,包括:
[0006]配置身份信息至临界资源对应的锁,所述身份信息表示获取到锁的核心core的身份;
[0007]如果需要释放一个核心所占用的锁时,查询所有拥有身份信息的锁;
[0008]根据身份信息确定到所述核心占用的锁并释放所述锁。
[0009]在第一种可能的实现方式中,所述如果需要释放一个核心所占用的锁,查询所有拥有身份信息的锁的步骤包括:
[0010]如果所述核心中止访问当前的临界资源,查询所有拥有身份信息的锁。
[0011 ] 结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:[0012]监控核心等待锁的时长超过预定值时,根据所述锁的身份信息确定到所述核心。
[0013]结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述释放所述锁包括:
[0014]更改所述锁对应的内存记录中记录的代表锁使用状态的数值。
[0015]结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述释放所述锁包括:
[0016]如果需要释放的锁为读写锁且占用所述读写锁的核心对临界资源进行读操作,将内存记录中记录的占用所述读写锁的核心的数量减1,并清除内存记录中占用所述读写锁的核心的身份信息。
[0017]结合第一方面至第一方面的第四种可能的实现方式中的任一种,在第五种可能的实现方式中,所述如果需要释放一个核心所占用的锁,查询所有拥有身份信息的锁的步骤之前包括:
[0018]监测所述多核系统的负载量,当所述负载量小于预定值时,控制预定数量的核心停止工作,并确定被停止工作的所述核心需要释放所述核心所占用的锁。
[0019]本发明第二方面提供一种在多核系统中回收临界资源的装置,包括:
[0020]配置模块,用于配置身份信息至临界资源对应的锁,所述身份信息表示获取到锁的核心的身份;
[0021]查询模块,用于如果需要释放一个核心所占用的锁时,查询所有拥有身份信息的锁;
[0022]释放模块,用于根据身份信息确定到所述核心占用的锁并释放所述锁。
[0023]在第一种可能的实现方式中,所述查询模块还用于监控核心等待锁的时长超过预定值时,根据所述锁的身份信息确定到所述核心。
[0024]结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述释放模块具体用于更改所述锁对应的内存记录中记录的代表锁使用状态的数值。
[0025]结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述释放模块具体用于更改所述锁对应的内存记录中记录的代表锁使用状态的数值。
[0026]结合第二方面至第二方面第三种可能的实现方式中的任一种,在第四种可能的实现方式中,还包括:
[0027]动态调节模块,用于监测所述多核系统的负载量,当所述负载量小于预定值时,控制预定数量的核心停止工作,并确定被停止工作的所述核心需要释放所述核心所占用的锁。
[0028]本发明第三方面还提供了一种电子设备,包括第二方面至第二方面的第四种可能的实现方式中的任一种装置。
[0029]实施本发明,具有如下有益效果:
[0030]能根据锁配置的身份信息,在core需要释放锁时,能根据身份信息确定到需要释放的锁,以便使其他的core获得该锁的拥有权,实现对该锁对应的临界资源的访问,避免出现死锁的现象,提高了多核系统运行的可靠性。
【专利附图】

【附图说明】[0031]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0032]图1是本发明实施例的一种在多核系统中回收临界资源的方法的流程示意图;
[0033]图2是本发明实施例的一种在多核系统中回收临界资源的方法的另一流程示意图;
[0034]图3是本发明实施例的一种在多核系统中回收临界资源的装置的结构示意图;
[0035]图4是本发明实施例的一种在多核系统中回收临界资源的装置的另一结构示意图;
[0036]图5是本发明实施例的一种在多核系统中回收临界资源的装置的又一结构示意图。
【具体实施方式】
[0037]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0038]参见图1,为本发明的一种多核系统中回收临界资源的方法的流程示意图,包括:
[0039]步骤101、配置身份信息至临界资源对应的锁,所述身份信息用于标识获取到锁的core的身份。
[0040]步骤102、当需要释放一个core所占用的锁时,查询所有拥有身份信息的锁。
[0041]步骤103、根据身份信息确定所述core占用的锁并释放所述锁。
[0042]实施本发明的实施例,能根据锁配置的身份信息,在core需要释放锁时,能根据身份信息确定需要释放的锁,以便使其他的core获得该锁的拥有权,实现对该锁对应的临界资源的访问,避免出现死锁的现象,提高了多核系统运行的可靠性。
[0043]参见图2,为本发明的一种多核系统回收临界资源的方法的另一流程示意图,该流程包括:
[0044]步骤201、配置身份信息至临界资源对应的锁,所述身份信息表示获取到锁的core的身份。
[0045]通常的,锁是为了达到多个使用者轮流访问临界资源的目的所定义的一种机制,通常是一块内存记录。为了达到多个使用者轮流访问临界资源的目的,每个使用者需要先获得锁,才能再去访问临界资源,访问完成后,再释放锁,以使其他使用者能获取到该锁,并访问该锁对应的临界资源。例如使用者将锁的内存记录中记录锁使用状态的数值设置为I表示该使用者获得了该锁,访问结束后,使用者将锁的内存记录中记录锁使用状态的数值设置为O表示使用者释放了该锁,其他使用者查询到该锁的内存记录中记录锁使用状态的数值为O时即可获得该锁,并访问该锁对应的临界资源,本发明实施例中,锁的内存记录不仅记录锁使用状态的数值,还用来记录其他信息,如锁的使用者信息等。本实施例中,多核系统中的某个core访问临界资源时,该core在获取到临界资源对应的锁时,配置一个自身的身份信息至锁,具体的,假设多核系统中有4个core,将所有的core进行编号,例如编号为coreO、corel、core2和core3,假设编号为coreO的core获取需要访问临界资源,将该临界资源对应的锁的内存记录中增加一个占用该锁的core的身份信息,即core的编号coreOο
[0046]步骤202、如果core中止访问当前的临界资源,查询所有拥有身份信息的锁。
[0047]通常的,core中止访问当前的临界资源均需要释放core所占用的锁,以便其他的core后续能访问该临界资源。在系统运行过程中,core可能会在没有释放所占用的锁的情况下退出,这样会造成其他的core无法获得该锁的情况,从而其他的锁无法访问该锁所对应的临界资源,因此需要检测这种情况是否发生。本实施例中,多核系统中的一个core监控到某个core等待锁的时长超过预定值时,则根据锁的身份信息确定占用该锁超时的core。假设多核系统有4个core,预置其中一个core为监控core,所述监控core监控到其余3个core等待锁的时长超过预定值时,则根据锁的身份信息确定占用该锁超时的core。
[0048]步骤203、根据身份信息确定到所述core占用的锁,更改所述锁对应的内存记录中记录代表锁使用状态的数值。
[0049]具体的,多核系统中锁的种类通常有两种:自旋锁和读写锁。
[0050]自旋锁是为了达到多个使用者轮流访问临界资源的目的所定义的一种机制。在多核系统中,任意时刻最多只有一个core获得自旋锁,也就是说,自旋锁在任意时刻最多只能被一个core占用,若某个自旋锁已被一个core占用,其他想获得该自旋锁的core就会等待并判断该自旋锁是否已经被释放了。具体实施时,在存储器中开辟一块内存用于记录锁的使用状态,并且内存中的指定的位赋值来表示某个锁是否被占用,例如内存中该位的数值置I表示对应的锁已被占用,置O表示该位对应的锁已被释放。具体实施时,并不限制对内存位赋值的方法,也可以采用对内存块赋值的方法,预先设置锁被占用状态和已释放状态分别对应的值,当需要释放锁时,更改所述锁对应的内存记录中记录代表锁使用状态的数值。
[0051]读写锁把临界资源的使用者划分为读者和写者,使用者指需要对临界资源进行预定操作的软件或硬件。读者只对临界资源进行读操作,写者则需要对临界资源进行写操作。读写锁相对于自旋锁,允许同时有多个读者对访问临界资源进行读操作,因此能够提高系统的运行效率,写者则是互斥访问的,即同一时刻只允许一个写者对临界资源进行写操作。
[0052]本发明实施例中,对于自旋锁,任意时刻最多被一个core占用。当锁被某个core获得时,配置该core的身份信息,即该core的编号,至该自旋锁对应的内存记录中,如果需要释放该锁时,将锁对应的内存记录的记录锁使用状态的数值设置为0,同时清除身份信肩、O
[0053]在本发明的一些实施例中,如果需要释放的锁为读写锁且占用所述读写锁的core对临界资源进行读操作,将内存记录中记录的占用所述读写锁的core的数量减1,并清除内存记录中占用所述读写锁的core的身份信息。
[0054]读写锁可能有多个对临界资源进行读操作的core,所以记录读写锁的core时就与记录自旋锁的core不同,具体实施时有两种办法:1、申请足够的内存一次记录下每个对临界资源进行读操作的core的编号,2、用内存的位的数值来表示对应的core是否获得了读锁,例如,用4个内存的位分别记录4个core对一个读锁的占用情况,对应某个core的内存的位的数值置I时表示该读锁被该core占用core。读写锁记录占用该读写锁的core对临界资源进行写操作的方式和自旋锁是相同的。
[0055]当需要释放某个core所占用的锁资源时,查询所有拥有身份信息的锁,如果发现某个自旋锁属于该core,就将该锁恢复到初始状态,即没有被占用的状态,如果发现某个读写锁属于该core,当占用所述读写锁的core进行读操作时,就将内存记录中记录锁使用状态的数值置为0,并将占用读写锁的core的个数减1,当所述读写锁进行写操作时,就将该锁恢复到初始状态,即没有被占用的状态。
[0056]在本发明的一些实施例中,可选的,多核系统中的监控core监测述多核系统的负载量,当所述负载量小于预定值时,控制预定数量的core停止工作,并释放core所占用的锁。
[0057]当多核系统的负载量小时,小于预定值,可以主动停止预定数量的core的运行,并同时释放需要停止运行的core所对应的锁,采用此方法,可根据系统的负载量,动态调节core的数量,合理使用当前硬件资源,到达节能的效果。
[0058]实施本发明的实施例,能根据锁配置的身份信息,在core需要释放锁时,能根据身份信息确定到需要释放的锁,以便使其他的core获得该锁的拥有权,实现对该锁对应的临界资源的访问,避免出现死锁的现象,提高了多核系统运行的可靠性。
[0059]参见图3,为本发明的一种多核系统中回收临界资源的装置,该装置包括多核处理器中的监控core,具体包括:
[0060]配置模块11,用于配置身份信息至临界资源对应的锁,所述身份信息表示获取到锁的core的身份。
[0061]查询模块12,用于如果需要释放一个core所占用的锁,查询所有拥有身份信息的锁。
[0062]查询模块13,用于根据身份信息确定到所述core占用的锁并释放所述锁。
[0063]实施本发明的实施例,能根据锁配置的身份信息,在core需要释放锁时,能根据身份信息确定到需要释放的锁,以便使其他的core获得该锁的拥有权,实现对该锁对应的临界资源的访问,避免出现死锁的现象,提高了多核系统运行的可靠性。
[0064]参见图4,为本发明实施例的一种多核系统中回收临界资源的装置的另一结构示意图,包括:
[0065]配置模块11,用于配置身份信息至临界资源对应的锁,所述身份信息表示获取到锁的core的身份。
[0066]具体的,本实施例中,多核系统中的某个core访问临界资源时,该core在获取到临界资源对应的锁时,配置模块11配置一个自身的身份信息至锁,具体的,假设多核系统中有4个core,将所有的core进行编号,例如编号为core0、corel、core2和core3,假设编号为coreO的core获取需要访问临界资源,配置模块11将该临界资源对应的锁的内存记录中增加一个占用该锁的core的身份信息,即core的编号coreO。
[0067]查询模块12,用于如果需要释放一个core所占用的锁时,确定所有拥有身份信息的锁。
[0068]通常的,core中止访问当前的临界资源均需要释放core所占用的锁,以便其他的core后续能访问该临界资源。在系统运行过程中,core可能会在没有释放所占用的锁的情况下退出,这样会造成其他的core无法获得该锁的情况,从而其他的锁无法访问该锁所对应的临界资源,因此需要检测这种情况的发生。本实施例中,查询模块12监控core等待锁的时长超过预定值时,则确定到发生超时的core。
[0069]当需要释放core所占用的锁时,查询模块12查询所有拥有身份信息的锁,在实际应用中,在任意时刻拥有身份信息的锁的数量并不会很多,因此采用查询所用用于身份信息的锁的方法,对系统性能的影响很小。
[0070]释放模块13,用于根据身份信息确定到所述core占用的锁并释放所述锁。
[0071]动态调节模块14,用于监测所述多核系统的负载量,当所述负载量小于预定值时,控制预定数量的core停止工作。
[0072]具体的,当多核系统的负载量小时,小于预定值,动态调节模块14可以主动停止预定数量的core的运行,释放模块13释放需要停止运行的core占用的锁,采用此方法,可以到达节能的作用
[0073]其中,释放模块13具体用于更改所述锁对应的内存记录中记录的代表锁使用状态的数值。
[0074]具体的,存储器中开辟一块内存用于记录锁的使用状态,并且内存中的指定的位赋值来表示某个锁是否被占用,例如内存中该位的数值置I表示对应的锁已被占用,置O表示该位对应的锁已被释放。具体实施时,并不限制对内存位赋值的方法,也可以采用对内存块赋值的方法,预先设置锁被占用状态和已释放状态分别对应的值,当需要释放锁时,释放模块13更改所述锁对应的内存记录中记录代表锁使用状态的数值。
[0075]在本发明的一些实施例中,释放模块13具体用于如果需要释放的锁为读写锁且所述读写锁对临界资源进行读操作,将内存记录中记录的占用所述读写锁的core的数量减1,并清除内存记录中占用所述读写锁的core身份信息。
[0076]当需要释放某个core所占用的锁资源时,查询模块12查询所有拥有身份信息的锁,释放模块13如果发现某个自旋锁属于该core,释放模块13就将该锁恢复到初始状态,即没有被占用的状态,释放模块13如果发现某个读写锁属于该core,当所述读写锁进行读操作时,释放模块13就将将内存记录中记录的占用所述读写锁的core的数量减1,当所述读写锁进行写操作时,释放模块13就将该锁恢复到初始状态,即没有被占用的状态。
[0077]查询模块12还用于监控core等待锁的时长超过预定值时,根据所述锁的身份信息确定到所述core。
[0078]实施本发明的实施例,能根据锁配置的身份信息,在core需要释放锁时,能根据身份信息确定到需要释放的锁,以便使其他的core获得该锁的拥有权,实现对该锁对应的临界资源的访问,避免出现死锁的现象,提高了多核系统运行的可靠性。
[0079]参见图5,为本发明实施例的一种多核系统中回收临界资源的装置的又一实施例结构示意图,该装置包括:
[0080]处理器15和存储器16,装置I中的处理器15的数量可以是一个或多个。图5以一个处理器为例,处理器15为多核处理器,预置其中一个core为监控core,由所述监控core执行如下步骤。本发明的一些实施例中,处理器15和存储器16可通过总线或其他方式连接,图5中以总线连接为例。
[0081]其中,处理器15调用存储器16中储存的程序执行如下步骤:[0082]配置身份信息至临界资源对应的锁,所述身份信息表示获取到锁的core的身份;
[0083]如果需要释放一个core所占用的锁,查询所有拥有身份信息的锁;
[0084]根据身份信息确定所述core占用的锁并释放所述锁。
[0085]在本发明的一些实施例中,处理器15还用于执行步骤:
[0086]如果所述core中止访问当前的临界资源,查询所有拥有身份信息的锁。
[0087]在本发明的另一些实施例中,处理器15还用于执行监控core等待锁的时长超过预定值时,根据所述锁的身份信息确定到所述core。
[0088]在本发明的一些实施例中,处理器15还用于执行:
[0089]更改所述锁对应的内存记录中记录的代表锁使用状态的数值。
[0090]在本发明的一些实施例中,处理器15还用于执行:
[0091]如果需要释放的锁为读写锁且所述读写锁对临界资源进行读操作,将内存记录中记录的占用所述读写锁的core的数量减1,并清除内存记录中占用所述读写锁的core身份信息。
[0092]在本发明的一些实施例中,处理器15还用于执行:
[0093]监测所述多核系统的负载量,当所述负载量小于预定值时,控制预定数量的核心core工作,并确定被停止工作的所述核心需要释放所述core所占用的锁。
[0094]本发明实施例还提供一种包括上述装置的电子设备,如多核手机、多核服务器和多核计算机等。
[0095]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件,如处理器和存储器来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random Access Memory, RAM)等。
[0096]以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
【权利要求】
1.一种多核系统中回收临界资源的方法,其特征在于,包括: 配置身份信息至临界资源对应的锁,所述身份信息表示获取到锁的核心core的身份; 如果需要释放一个核心所占用的锁,查询所有拥有身份信息的锁; 根据身份信息确定所述核心占用的锁并释放所述锁。
2.如权利要求1所述的方法,其特征在于,所述如果需要释放一个核心所占用的锁,查询所有拥有身份信息的锁的步骤包括: 如果所述核心中止访问当前的临界资源,查询所有拥有身份信息的锁。
3.如权利要求2所述的方法,其特征在于,还包括: 监控到核心等待锁的时长超过预定值时,根据所述锁的身份信息确定到所述核心。
4.如权利要求3所述的方法,其特征在于,所述释放所述锁包括: 更改所述锁对应的内存记录中记录的代表锁使用状态的数值。
5.如权利要求4所述的方法,其特征在于,所述释放所述锁包括: 如果需要释放的锁为读写锁且占用所述读写锁的核心对临界资源进行读操作,将内存记录中记录的占用所述读写锁的核心的数量减1,并清除内存记录中占用所述读写锁的核心的身份信息。
6.如权利要求1-5所述的方法,其特征在于,所述如果需要释放一个核心所占用的锁,查询所有拥有身份信息的锁的步骤之前包括: 监测所述多核系统的负载量,当所述负载量小于预定值时,控制预定数量的核心停止工作,并确定被停止工作的所述核心需要释放所述核心所占用的锁。
7.一种多核系统中回收临界资源的装置,其特征在于,包括: 配置模块,用于配置身份信息至临界资源对应的锁,所述身份信息表示获取到锁的核心的身份; 查询模块,用于如果需要释放一个核心所占用的锁,查询所有拥有身份信息的锁; 释放模块,用于根据身份信息确定到所述核心占用的锁并释放所述锁。
8.如权利要求6所述的装置,其特征在于,所述查询模块还用于监控核心等待锁的时长超过预定值时,根据所述锁的身份信息确定到所述核心。
9.如权利要求7所述的装置,其特征在于,所述释放模块具体用于更改所述锁对应的内存记录中记录的代表锁使用状态的数值。
10.如权利要求8所述的装置,其特征在于,所述释放模块具体用于如果需要释放的锁为读写锁且占用所述读写锁的核心对临界资源进行读操作,将内存记录中记录的占用所述读写锁的核心的数量减1,并清除内存记录中占用所述读写锁的核心的身份信息。
11.如权利要求7-10所述的装置,其特征在于,还包括: 动态调节模块,用于监测所述多核系统的负载量,当所述负载量小于预定值时,控制预定数量的核心停止工作,并确定被停止工作的所述核心需要释放所述核心所占用的锁。
12.一种电子设备,其特征在于,包括如权利要求7-11任一项所述的装置。
【文档编号】G06F9/46GK103778002SQ201210396162
【公开日】2014年5月7日 申请日期:2012年10月18日 优先权日:2012年10月18日
【发明者】周正波, 徐永新 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1