一种多核操作系统的自旋锁死锁检测方法技术方案

技术编号:37580661 阅读:11 留言:0更新日期:2023-05-15 07:55
本发明专利技术提供了一种多核操作系统的自旋锁死锁检测方法,方法包括获取操作系统处理器核集,依次查找各处理器核的变量;将变量中无待获取自旋锁信息的处理器核集中去除形成待检测核集;使用位图染色法循环查找待检测核集中运行检测程序的处理器核待获取自旋锁是否已被其他处理器核获取,如果有则发生了死锁,没有则将该处理器核剔除,并对其他处理器一一进行检测直至此待检测核集为空,多核操作系统不存在死锁,检测结束。本发明专利技术设计的方法具有高效、精确、简单方便的优点,可以尽早发现死锁问题并及时进行反馈,使用户可以根据反馈结果采取相应的解除死锁措施,从而保证系统继续运行。行。行。

【技术实现步骤摘要】
一种多核操作系统的自旋锁死锁检测方法


[0001]本专利技术涉及计算机系统软件设计
,具体为一种多核操作系统的自旋锁死锁检测方法。

技术介绍

[0002]当前多核操作系统的发展滞后于多核处理器的发展,多个核间的同步与互斥是多核操作系统研究的重点难点,多个核间互斥机制主要包括原子操作、自旋锁、内存栅栏、互斥信号量,其中自旋锁在提供全局资源保护的同时也带来操作的不确定等待问题,即出现自旋锁的死锁情况。
[0003]自旋锁死锁是多核操作系统中两个或者大于两个处理器核为了争夺自旋锁而相互等待的情况,如果没有外部推动则这些处理器核将无法继续运行。在一些实时性要求较高的关键软件中,必须防止处理器核处于相互等待进而出现死锁情况。
[0004]目前,操作系统层中防止死锁发生的有效方式包括死锁避免,自旋锁死锁避免策略通过操作系统对于自旋锁的使用进行严格的限制,其可对因自旋锁而引起的死锁情况进行防范。但是在面对用户复杂应用场景下的程序实现,避免死锁的措施无法满足应用要求,此时需要提供自旋锁死锁检测的方法。

技术实现思路

[0005]为了对多核操作系统中是否有自旋锁死锁的情况进行检测判断,并及时上报以避免一直出现自旋锁死锁的情况,确保多核操作系统的正常运行,本专利技术设计了一种多核操作系统的自旋锁死锁检测方法。
[0006]实现专利技术目的的技术方案如下:一种多核操作系统的自旋锁死锁检测方法,包括以下步骤:
[0007]S1、获取操作系统的处理器核集;
[0008]S2、基于待获取自旋锁信息,从所述处理器核集中提取待检测核集;
[0009]S3、判断所述待检测核集是否为空;
[0010]若为空,则操作系统中的处理器核不存在死锁;
[0011]若不为空,则操作系统中的处理器核存在死锁,进入并执行S4;
[0012]S4、在所述待检测核集任意选择一个处理器核作为当前核;
[0013]S5、基于待获取自旋锁信息和已获取自旋锁集,对当前核是否处于死锁状态进行判断;
[0014]若判断所述当前核处于死锁状态,则上报死锁结果;
[0015]若判断所述当前核不处于死锁状态,则进入并执行S6;
[0016]S6、删除所述当前核,并重复步骤S4~S5,直至所述待检测核集中所有处理器核均检测完。
[0017]在一个实施例中,上述步骤S1中,操作系统的处理器核集均为使能的处理器核,且
所述使能的处理器核标记为1。
[0018]在另一个实施例中,上述步骤S1中,操作系统的处理器核集中包括使能的处理器核和未使能的处理器核,所述使能的处理器核标记为1,所述未使能的处理器核标记为0。
[0019]在上述实施例的一个改进实施例中,上述步骤S2中,基于待获取自旋锁信息,从处理器核集中提取待检测核集的方法,包括:
[0020]S201、获取所述处理器核集中各处理器核的变量;
[0021]S202、提取所述变量中的所述待获取自旋锁信息;
[0022]S203、剔除所述处理器核集中没有所述待获取自旋锁信息所对应的处理器核,形成所述待检测核集。
[0023]在上述实施例的一个改进实施例中,上述步骤S5中,基于待获取自旋锁信息和已获取自旋锁集,对当前核是否处于死锁状态进行判断的方法,包括;
[0024]S501、获取所述待检测核集中所述当前核的待获取自旋锁信息,获取剩余处理器核的已获取自旋锁集;
[0025]S502、基于所述已获取自旋锁集,对所述待获取自旋锁信息判断;
[0026]S503、若所述待获取自旋锁信息不在已获取自旋锁集中,则判断所述当前核不是死锁状态;若所述待获取自旋锁信息在已获取自旋锁集中,则判断所述当前核是死锁状态。
[0027]在一个施例中,多核操作系统的自旋锁死锁检测方法还包括步骤S0,即对操作系统中每个处理器核定义一个变量,所述变量包括所述待获取自旋锁信息、所述已获取自旋锁集,所述已获取自旋锁集包括处理器核已获取的自旋锁。
[0028]与现有技术相比,本专利技术的有益效果是:本专利技术设计的多核操作系统的自旋锁死锁检测方法,具有高效、精确、简单方便的优点,可以检测系统停滞时是否发生了由于获取自旋锁引发的死锁,以及引发死锁的处理器核和该处理器核等待获取的自旋锁,从而尽早发现问题、反馈问题,使用户可以根据反馈的死锁结果(包括发生死锁的处理器核及其等待获取的自旋锁)采取相应的解除死锁措施,从而保证系统继续运行。
附图说明
[0029]为了更清楚地说明本专利技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
[0030]图1为具体实施方式方式中多核操作系统的自旋锁死锁检测方法的流程图。
具体实施方式
[0031]下面结合具体实施例来进一步描述本专利技术,本专利技术的优点和特点将会随着描述而更为清楚。但这些实施例仅是范例性的,并不对本专利技术的范围构成任何限制。本领域技术人员应该理解的是,在不偏离本专利技术的精神和范围下可以对本专利技术技术方案的细节和形式进行修改或替换,但这些修改和替换均落入本专利技术的保护范围内。
[0032]多核操作系统中包括两个及两个以上个处理器核,各个处理器核之间使用自旋锁进行互斥保护操作,为了避免两个及两个以上的处理器核等待同一个自旋锁而发生死锁情况,导致操作系统停滞的问题,本具体实施方式公开了一种多核操作系统的自旋锁死锁检测方法。
[0033]在进行自旋锁死锁检测前,本专利技术操作系统定义一个等待自旋锁核集位图,位图中每一个处理器核对应一位,在操作系统上电运行时对等待自旋锁核集位图进行初始化,将每一个处理器核的位初始化为0。同时,对操作系统中每个处理器核定义一个变量(即步骤S0),变量包括各处理器核的待获取自旋锁信息和已获取自旋锁集,所述已获取自旋锁集包括处理器核已获取的自旋锁。其中,在获取自旋锁前,运行当前检测程序的处理器核的变量中,保存该自旋锁ID在待获取自旋锁集成员中;成功获取该自旋锁后,将该自旋锁ID保存在已获取自旋锁集成员中,并清除待获取自旋锁集中该自旋锁;释放该自旋锁时,在清除已获取自旋锁集中该自旋锁的信息。
[0034]参见图1所示,多核操作系统的自旋锁死锁检测方法,包括以下步骤:
[0035]S1、获取操作系统的处理器核集。
[0036]本具体实施方式中,由于多核处理器中有使能的处理器核,也有未使能的处理器核,且在运行自旋锁死锁检测程序时,包括当前检测处理器核、已检测处理器核、未检测处理器核,为了对上述处理器核的不同状态进行区分,本专利技术采用位图染色法对处理器核集中各处理器核进行标记。
[0037]例如,在本步骤的一个实施例中,操作系统的处理器核集中包括使能的处理器核和未使能的处理器核,在该处理器核集中,将使能的处理器核标记为1,未使能的处理器核标记为0。
[0038]再例如,在本步骤的另一个实施例中,操作系统的处理器核集根据系统配置只提取使能的处理器核,并对使能的处本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多核操作系统的自旋锁死锁检测方法,其特征在于,包括以下步骤:S1、获取操作系统的处理器核集;S2、基于待获取自旋锁信息,从所述处理器核集中提取待检测核集;S3、判断所述待检测核集是否为空;若为空,则操作系统中的处理器核不存在死锁;若不为空,则操作系统中的处理器核存在死锁,进入并执行S4;S4、在所述待检测核集任意选择一个处理器核作为当前核;S5、基于待获取自旋锁信息和已获取自旋锁集,对当前核是否处于死锁状态进行判断;若判断所述当前核处于死锁状态,则上报死锁结果;若判断所述当前核不处于死锁状态,则进入并执行S6;S6、删除所述当前核,并重复步骤S4~S5,直至所述待检测核集中所有处理器核均检测完。2.根据权利要求1所述的自旋锁死锁检测方法,其特征在于:步骤S1中,操作系统的处理器核集均为使能的处理器核,且所述使能的处理器核标记为1。3.根据权利要求1所述的自旋锁死锁检测方法,其特征在于:步骤S1中,操作系统的处理器核集中包括使能的处理器核和未使能的处理器核,所述使能的处理器核标记为1,所述未使能的处理器核标记为0。4.根据权利要求1~3任一项所述的自旋锁死锁检...

【专利技术属性】
技术研发人员:仝敏张东杨静远杨弋杜妍高雅濛
申请(专利权)人:中国航空工业集团公司西安航空计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1