一种死锁检测的方法、系统、设备及可读存储介质技术方案

技术编号:26170326 阅读:68 留言:0更新日期:2020-10-31 13:37
本申请公开了一种死锁检测的方法,包括:当进行加锁操作后获取锁的地址信息;对地址信息进行哈希运算,得到对应的哈希值;判断预设记录表中是否存有哈希值;若是,则根据哈希值对应的地址信息确定死锁发生的位置。本申请通过采用哈希算法对发生的死锁进行检测,当预设记录表中存有哈希值时则表明此前已经对此锁进行过加锁操作了,再次加锁造成了死锁,此时根据哈希值对应的地址信息确定死锁发生的位置,提高了问题修复的效率,提升了产品的质量以及操作系统的稳定性。本申请同时还提供了一种死锁检测的系统、设备及可读存储介质,具有上述有益效果。

【技术实现步骤摘要】
一种死锁检测的方法、系统、设备及可读存储介质
本申请涉及死锁检测领域,特别涉及一种死锁检测的方法、系统、设备及可读存储介质。
技术介绍
在现代操作系统及软件开发中,多核的并发程序以其资源利用率高、计算速度快等优点在实际应用中得到了广泛应用。但是由多核的并发行为的不确定性及复杂性,使得其开发和维护比单核更困难。因此在多核编程中,为了保证数据操作的一致性,操作系统引入了锁机制,用于保证临界区代码的安全。然而,锁机制的引入同时也导致了操作系统死锁的风险,由于多核处理器运行程序的不确定性往往会导致死锁的发生,而在死锁发生时运维人员往往需要很长时间才能检测到死锁发生的位置,极大的影响了问题修复的效率。因此,如何在死锁发生时迅速检测到死锁发生的位置是本领域技术人员目前需要解决的技术问题。
技术实现思路
本申请的目的是提供一种死锁检测的方法、系统、设备及可读存储介质,用于在死锁发生时迅速检测到死锁发生的位置。为解决上述技术问题,本申请提供一种死锁检测的方法,该方法包括:当进行加锁操作后获取锁的地址信息;对所述地址信息进行哈希运算,得到对应的哈希值;判断预设记录表中是否存有所述哈希值;若是,则根据所述哈希值对应的地址信息确定死锁发生的位置。可选的,当所述预设记录表中未存有所述哈希值时,还包括:将所述哈希值和所述地址信息的对应关系存入所述预设记录表中。可选的,还包括:当进行解锁操作时,将所述预设记录表中待解锁的地址信息与哈希值的对应关系删除。可选的,还包括:获取所述预设记录表中所有对应关系的存储时间;根据所述存储时间超过阈值的对应关系确定死锁发生的位置。本申请还提供一种死锁检测的系统,该系统包括:第一获取模块,用于当进行加锁操作后获取锁的地址信息;运算模块,用于对所述地址信息进行哈希运算,得到对应的哈希值;判断模块,用于判断预设记录表中是否存有所述哈希值;第一确定模块,用于当所述预设记录表中存有所述哈希值时,根据所述哈希值对应的地址信息确定死锁发生的位置。可选的,还包括:存储模块,用于当所述预设记录表中未存有所述哈希值时,将所述哈希值和所述地址信息的对应关系存入所述预设记录表中。可选的,还包括:删除模块,用于当进行解锁操作时,将所述预设记录表中待解锁的地址信息与哈希值的对应关系删除。可选的,还包括:第二获取模块,用于获取所述预设记录表中所有对应关系的存储时间;第二确定模块,用于根据所述存储时间超过阈值的对应关系确定死锁发生的位置。本申请还提供一种死锁检测设备,该死锁检测设备包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上述任一项所述死锁检测的方法的步骤。本申请还提供一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述死锁检测的方法的步骤。本申请所提供死锁检测的方法,包括:当进行加锁操作后获取锁的地址信息;对地址信息进行哈希运算,得到对应的哈希值;判断预设记录表中是否存有哈希值;若是,则根据哈希值对应的地址信息确定死锁发生的位置。本申请所提供的技术方案,通过在进行加锁操作后获取锁的地址信息,然后对地址信息进行哈希运算,得到对应的哈希值,当预设记录表中存有哈希值时则表明此前已经对此锁进行过加锁操作了,再次加锁造成了死锁,此时根据哈希值对应的地址信息确定死锁发生的位置,本申请通过采用哈希算法对发生的死锁进行检测,并记录了死锁的信息,进而在死锁发生时能够迅速检测到死锁发生的位置,提高了问题修复的效率,提升了产品的质量以及操作系统的稳定性。本申请同时还提供了一种死锁检测的系统、设备及可读存储介质,具有上述有益效果,在此不再赘述。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本申请实施例所提供的一种死锁检测的方法的流程图;图2为本申请实施例所提供的一种死锁检测的系统的结构图;图3为本申请实施例所提供的另一种死锁检测的系统的结构图;图4为本申请实施例所提供的一种死锁检测设备的结构图。具体实施方式本申请的核心是提供一种死锁检测的方法、系统、设备及可读存储介质,用于在死锁发生时迅速检测到死锁发生的位置。为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。请参考图1,图1为本申请实施例所提供的一种死锁检测的方法的流程图。其具体包括如下步骤:S101:当进行加锁操作后获取锁的地址信息;在多线程编程中,操作系统引入了锁机制。通过锁机制,能够保证在多核多线程环境中,在某一个时间点上,只能有一个线程进入临界区代码,从而保证临界区中操作数据的一致性。基于锁机制的引入导致了操作系统死锁的风险,由于多核处理器运行程序的不确定性往往会导致死锁的发生,而在死锁发生时运维人员往往需要很长时间才能检测到死锁发生的位置,极大的影响了问题修复的效率,故本申请提供了一种死锁检测的方法,用于解决上述问题。S102:对地址信息进行哈希运算,得到对应的哈希值;在本步骤中,对地址信息进行哈希运算,得到对应的哈希值的目的在于得到与地址信息唯一对应的哈希值,然后根据该哈希值判断该地址信息对应的锁在之前是否进行过加锁操作,进而确定此次加锁操作是否造成了死锁。S103:判断预设记录表中是否存有该哈希值;若是,则进入步骤S104;当预设记录表中存有哈希值时,则表明在此次加锁操作之前已经进行过加锁操作了,则此次加锁一定造成了死锁,此时执行步骤S104根据哈希值对应的地址信息确定死锁发生的位置,以使运维人员能够及时定位到死锁发生的位置,进而提高问题修复的效率。可选的,当预设记录表中未存有哈希值时,则表明在此次加锁操作之前未进行过加锁操作,则此次加锁不能造成死锁,此时还可以将哈希值和地址信息的对应关系存入预设记录表中,以表明当前地址信息所在位置已经进行过加锁操作。可选的,当进行解锁操作时,还可以将预设记录表中待解锁的地址信息与哈希值的对应关系删除,以减少已经解锁的地址信息对死锁检测造成影响。可选的,当预设记录表中的对应关系一直存在时,则表明该锁一直未被解锁,极大可能是由于等待其他加锁导致产生死锁,此时还可以执行以下步骤确定死锁发生的位置:本文档来自技高网...

【技术保护点】
1.一种死锁检测的方法,其特征在于,包括:/n当进行加锁操作后获取锁的地址信息;/n对所述地址信息进行哈希运算,得到对应的哈希值;/n判断预设记录表中是否存有所述哈希值;/n若是,则根据所述哈希值对应的地址信息确定死锁发生的位置。/n

【技术特征摘要】
1.一种死锁检测的方法,其特征在于,包括:
当进行加锁操作后获取锁的地址信息;
对所述地址信息进行哈希运算,得到对应的哈希值;
判断预设记录表中是否存有所述哈希值;
若是,则根据所述哈希值对应的地址信息确定死锁发生的位置。


2.根据权利要求1所述的方法,其特征在于,当所述预设记录表中未存有所述哈希值时,还包括:
将所述哈希值和所述地址信息的对应关系存入所述预设记录表中。


3.根据权利要求1所述的方法,其特征在于,还包括:
当进行解锁操作时,将所述预设记录表中待解锁的地址信息与哈希值的对应关系删除。


4.根据权利要求1所述的方法,其特征在于,还包括:
获取所述预设记录表中所有对应关系的存储时间;
根据所述存储时间超过阈值的对应关系确定死锁发生的位置。


5.一种死锁检测的系统,其特征在于,包括:
第一获取模块,用于当进行加锁操作后获取锁的地址信息;
运算模块,用于对所述地址信息进行哈希运算,得到对应的哈希值;
判断模块,用于判断预设记录表中是否存有所述哈希值;
第一确定模块,...

【专利技术属性】
技术研发人员:刘欢
申请(专利权)人:广东浪潮大数据研究有限公司
类型:发明
国别省市:广东;44

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

1