死锁检测方法、装置以及相关设备制造方法及图纸

技术编号:35586135 阅读:12 留言:0更新日期:2022-11-16 15:00
本申请实施例公开了一种死锁检测方法,应用于操作系统领域。方法包括:获取第一调度实体的第一RPC调用链。第一RPC调用链包括体现执行实体A1调用执行实体B1的调用关系的信息。获取第一服务端进程的第一锁等待链。第一锁等待链包括体现执行实体A2等待执行实体A1的等待关系的信息。其中,执行实体A2为锁A的等待者,执行实体A1为锁A的持有者。若执行实体B1为执行实体A2,或执行实体B1和执行实体A2存在关联关系,则确定存在死锁。在本申请的中,通过使用锁等待链和RPC调用链进行死锁检测,可以提高死锁检测的准确性。死锁检测的准确性。死锁检测的准确性。

【技术实现步骤摘要】
死锁检测方法、装置以及相关设备


[0001]本申请涉及操作系统领域,尤其涉及死锁检测方法、装置以及相关设备。

技术介绍

[0002]在操作系统中,当多个线程并发执行时,会有一定几率导致两个或两个以上的线程之间出现互相等待而停滞不前的现象,这就是死锁。发生死锁会导致系统效率低下,甚至造成操作系统故障。
[0003]通过锁等待链检查,可以确定操作系统中是否存在死锁。具体地,当锁的持有者为锁的等待者,锁的持有者和锁的等待者之间成环时,则可以确定存在死锁。例如,线程A拥有锁A。线程A在等锁B。线程B拥有锁B。线程B在等锁A。此时,锁A的持有者线程A为锁B的等待者(简写为A

B),锁B的持有者线程B为锁A的等待者(简写为B

A)。并且,线程A和线程B之间成环(A

B

A)。
[0004]为了减小进程间通信(Inter

Process Communication,IPC)所带来的性能损失,可以采用执行和调度分离的机制。在执行和调度分离的场景中,线程被分为执行实体和调度实体两部分。执行实体位于服务端进程。调度实体通过向服务端进程发起远程过程调用(Remote Procedure Call,RPC)来运行执行实体。
[0005]在执行和调度分离的机制中,锁等待链检查的准确性不高。具体地,当锁的持有者不为锁的等待者,锁的持有者和锁的等待者之间不成环时,操作系统中仍可能存在死锁。

技术实现思路

[0006]本申请提供了一种死锁检测方法、装置以及相关设备。通过使用锁等待链和RPC调用链进行死锁检测,可以提高确定死锁的准确性。
[0007]本申请第一方面提供了一种死锁检测方法。死锁检测方法应用于操作系统。死锁检测方法包括:操作系统获取第一调度实体的第一RPC调用链。第一RPC调用链包括体现执行实体A1调用执行实体B1的调用关系的信息(简写为A1

B1)。操作系统获取第一服务端进程的第一锁等待链。第一锁等待链包括体现执行实体A2等待执行实体A1的等待关系的信息(简写为A2

A1)。其中,执行实体A2为锁A的等待者,执行实体A1为锁A的持有者。若执行实体B1为执行实体A2,或执行实体B1和执行实体A2存在关联关系,则确定存在死锁。其中,关联关系包括调用关系;或关联关系包括等待关系;或关联关系包括调用关系和等待关系的集合。
[0008]在本申请的中,当执行实体B1和执行实体A2存在关联关系时,关联关系简写为B1

A2。此时,执行实体检查链A1

B1

A2

A1成环。在环中,不仅包括锁等待链,还包括RPC调用链。当缺少RPC调用链时,环无法成立,即通过锁等待链检查无法确定存在死锁。因此,本申请可以提高死锁检测的准确性。
[0009]为了方便描述,本申请中引入执行实体检查链的概念。执行实体检查链的起点为A1。当执行实体检查链包括第一RPC调用链时,执行实体检查链包括A1

B1。通过不断引入
RPC调用链和锁等待链,执行实体检查链的长度可以不断增加。当执行实体检查链成环时,表征操作系统中存在死锁。
[0010]在第一方面的一种可选方式中,操作系统在第一调度实体中的内核态空间中获取第一RPC调用链。操作系统在第一服务端进程中的用户态空间中获取第一锁等待链。其中,通过将锁等待链存入用户态空间,可以减少内核态空间的数据,提高系统的安全性和可靠性。
[0011]在第一方面的一种可选方式中,在操作系统获取第一调度实体的第一RPC调用链之前,死锁检测方法还包括:操作系统获取第一调度实体的等锁时长。若第一调度实体的等锁时长大于第一阈值,则操作系统获取第一调度实体的第一RPC调用链。其中,当存在死锁时,调度实体会停止运行,进入等锁状态。等锁状态记录了调度实体等待锁的时长(简称为等锁时长)。在等锁时长大于第一阈值的情况下,操作系统进行死锁检测,获取第一调度实体的第一RPC调用链。因此,通过设置第一阈值,可以灵活控制操作系统进行死锁检测,合理利用系统资源。
[0012]在第一方面的一种可选方式中,执行实体B1是第一调度实体调用的最后一个执行实体。在操作系统获取第一调度实体的第一RPC调用链之后,死锁检测方法还包括:若第一RPC调用链表征第一调度实体中不存在死锁,则操作系统获取第二服务端进程的第二锁等待链。第二锁等待链包括体现执行实体B1等待执行实体B2的等待关系的信息(简写为B1

B2)。执行实体B1为锁B的等待者,执行实体B2为锁B的持有者。其中,当通过第一RPC调用链无法确定存在死锁时,表征当前的执行实体检查链不成环。此时,通过执行实体B1引入锁等待链,可以增加执行实体检查链的长度,提高确定死锁的准确性。
[0013]在第一方面的一种可选方式中,可以通过以下步骤获取第二锁等待链:操作系统根据执行实体B1对应的寄存器获取执行实体B1的基地址。操作系统根据执行实体B1的基地址和第一偏移量确定执行实体B1的lock

wait字段。操作系统获取执行实体B1的lock

wait字段中的锁B的基地址。当执行实体B1的lock

wait字段中有锁B的基地址时,表征执行实体B1为锁B的等待者。操作系统根据锁B的基地址和第二偏移量确定lock

owner字段。操作系统获取lock

owner字段中执行实体B2的标识。当lock

owner字段中有执行实体B2的标识时,表征执行实体B2为锁B的持有者。
[0014]在第一方面的一种可选方式中,执行实体B2的标识为执行实体B2的基地址。其中,若执行实体B2的标识为其它内容,例如字母B2。此时,系统需要存在字母B2和执行实体B2映射关系。然后在执行实体B2对应的寄存器上获取执行实体B1的基地址。因此,当执行实体B2的标识为执行实体B2的基地址时,可以提高获取锁等待链的效率。
[0015]在第一方面的一种可选方式中,在操作系统获取第二服务端进程的第二锁等待链之后,死锁检测方法还包括:操作系统确定正在运行执行实体B2的第二调度实体。操作系统获取第二调度实体的第二RPC调用链。第二RPC调用链包括体现执行实体B2调用执行实体A2的调用关系的信息(简写为B2

A2)。若存在执行实体B1等待执行实体B2的等待关系,以及执行实体B2调用执行实体A2的调用关系,则操作系统确定存在死锁。其中,当第一RPC调用链和第二锁等待链无法确实存在死锁时,表征当前的执行实体检查链不成环。通过执行实体B2引入第二RPC调用链,可以增加执行实体检查链的长度,提高确定死锁的准确性。在操作系统获取第二RPC调用链后,B1

A2可以表征为B1

B2,B2
...

【技术保护点】

【技术特征摘要】
1.一种死锁检测方法,其特征在于,包括:获取第一调度实体的第一RPC调用链,所述第一RPC调用链包括体现执行实体A1调用执行实体B1的调用关系的信息;获取第一服务端进程的第一锁等待链,所述第一锁等待链包括体现执行实体A2等待执行实体A1的等待关系的信息,其中,所述执行实体A2为锁A的等待者,所述执行实体A1为所述锁A的持有者;若所述执行实体B1为所述执行实体A2,或所述执行实体B1和所述执行实体A2存在关联关系,则确定存在死锁;其中,所述关联关系包括调用关系、等待关系、或调用关系和等待关系的集合。2.根据权利要求1所述的方法,其特征在于,所述获取第一调度实体的第一RPC调用链包括:在所述第一调度实体中的内核态空间中获取所述第一RPC调用链;所述获取第一服务端进程的第一锁等待链包括:在所述第一服务端进程中的用户态空间中获取所述第一锁等待链。3.根据权利要求1或2所述的方法,其特征在于,在获取第一调度实体的第一RPC调用链之前,所述方法还包括:获取所述第一调度实体的等锁时长;若所述第一调度实体的等锁时长大于第一阈值,则获取所述第一调度实体的所述第一RPC调用链。4.根据权利要求1至3中任意一项所述的方法,其特征在于,所述执行实体B1是所述第一调度实体调用的最后一个执行实体,在获取第一调度实体的第一RPC调用链之后,所述方法还包括:若所述第一RPC调用链表征所述第一调度实体中不存在死锁,则获取第二服务端进程的第二锁等待链,所述第二锁等待链包括体现所述执行实体B1等待执行实体B2的等待关系的信息,其中,所述执行实体B1为锁B的等待者,所述执行实体B2为所述锁B的持有者。5.根据权利要求4中所述的方法,其特征在于,所述获取第二服务端进程的第二锁等待链包括:根据所述执行实体B1对应的寄存器获取所述执行实体B1的基地址;根据所述执行实体B1的基地址和第一偏移量确定所述执行实体B1的lock

wait字段;获取所述执行实体B1的lock

wait字段中的锁B的基地址,其中,所述锁B的基地址表征所述执行实体B1为锁B的等待者;根据所述锁B的基地址和第二偏移量确定lock

owner字段;获取所述lock

owner字段中所述执行实体B2的标识,其中,所述执行实体B2的标识表征所述执行实体B2为锁B的持有者。6.根据权利要求5中所述的方法,其特征在于,所述执行实体B2的标识为所述执行实体B2的基地址。7.根据权利要求4至6中任意一项所述的方法,其特征在于,在获取第二服务端进程的第二锁等待链之后,所述方法还包括:确定正在运行所述执行实体B2的第二调度实体;
获取所述第二调度实体的第二RPC调用链,所述第二RPC调用链包括体现所述执行实体B2调用所述执行实体A2的调用关系的信息;若所述执行实体B1和所述执行实体A2存在关联关系,则确定存在死锁包括:若存在所述执行实体B1等待所述执行实体B2的等待关系,以及所述执行实体B2调用所述执行实体A2的调用关系,则确定存在死锁。8.根据权利要求1至7中任意一项所述的方法,其特征在于,在确定存在死锁后,所述方法还包括:生成死锁告警,所述死锁告警包括所述第一RPC调用链,所述关联关系和所述第一锁等待链;其中,所述关联关系包括所述第二锁等待链和所述第二RPC调用链。9.根据权利要求1至3中任意一项所述的方法,其特征在于,所述执行实体B1是所述第一调度实体调用的最后一个执行实体,在获取第一调度实体的第一RPC调用链之后,所述方法还包括:若所述第一RPC调用链表征不存在死锁,则获取第二服务端进程的第二锁等待链;若所述第二锁等待链表征所述执行实体B1不是锁B的等待者,则开始第三调度实体的死锁检测。10.根据权利要求9所述的方法,其特征在于,所述方法还包括:生成告警,所述告警包括所述第一RPC调用链,所述告警表征所述第一调度实体处于死循环或阻塞状态。11.一种死锁检测装置,其特征在于,包括:第一获取模块,用于获取第一调度实体的第一RPC调用链,所述第一RPC调用链包括体现执行实体A1调用执行实体B1的调用关系的信息;第二获取模块,用于获取第一服务端进程的第一锁等待链,所述第一锁等待链包括体现执行实体A2等待执行实体A1的等待关系的信息,其中,所述执行实体A...

【专利技术属性】
技术研发人员:王楠陈立福何绍亮张建华
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1