一种资源死锁的检测方法和装置制造方法及图纸

技术编号:32025651 阅读:16 留言:0更新日期:2022-01-22 18:54
本申请提供了一种资源死锁的检测方法和装置,涉及计算机技术领域,可用于金融领域或其他领域。该方法包括:获取第一进程对数据库中多个资源的访问顺序和第二进程对数据库中多个资源的访问顺序;基于第一进程对数据库中多个资源的访问顺序,确定第一资源对集合;基于第二进程对数据库中多个资源的访问顺序,确定第二资源对集合;确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁。本申请提供的资源死锁的检测方法可以在系统运行前就可以将存在资源死锁的进程排除,降低资源死锁的风险,减少可能对系统运行带来不利影响的因素,从而有利于提高系统可靠性。性。性。

【技术实现步骤摘要】
一种资源死锁的检测方法和装置


[0001]本申请涉及计算机
,尤其涉及一种资源死锁的检测方法和装置。

技术介绍

[0002]在系统运行过程中,如果两个进程在执行时,按照相反的顺序访问数据库中的两个资源,比如,进程1按照“资源1

资源2”的顺序访问数据库,但进程2按照“资源2

资源1”的顺序访问数据库,就有可能出现如下情况:进程1锁住了资源1,进程2锁住了资源2,但进程1等待资源2,而进程2等待资源1。这种情况可以称为死锁。死锁的出现可能导致系统运行出现风险。
[0003]因此,希望提供一种技术,能够尽早识别出资源死锁,以降低对系统运行带来的影响。

技术实现思路

[0004]本申请提供了一种资源死锁的检测方法和装置,以期尽早识别出资源死锁,进而可以降低对系统运行带来的影响。
[0005]第一方面,本申请提供了一种资源死锁的检测方法,该方法包括:获取第一进程对数据库中多个资源的访问顺序和第二进程对数据库中多个资源的访问顺序,第一进程和第二进程为同一系统中的两个进程;基于第一进程对数据库中多个资源的访问顺序,确定第一资源对集合,第一资源对集合包括由第一进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照第一进程的访问顺序排布的两个资源;基于第二进程对数据库中多个资源的访问顺序,确定第二资源对集合,第二资源对集合包括由第二进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照第二进程的访问顺序排布的两个资源;确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁,其中,存在资源死锁的两个资源对包括相同的两个资源,但访问顺序相反。
[0006]本申请提供的资源死锁的检测方法,基于进程的代码进行静态扫描,以获取每个进程访问资源的顺序,进而将对资源相同、访问顺序相反的两个资源识别出来。因此,可以在系统运行前识别出死锁进程,降低资源死锁的风险,减少可能对系统运行带来不利影响的因素,从而有利于提高系统可靠性。
[0007]结合第一方面,在第一方面的某些可能的实现方式中,获取第一进程对数据库中多个资源的访问顺序和第二进程对数据库中多个资源的访问顺序,包括:获取第一进程的代码和第二进程的代码;基于第一进程的代码,获取第一进程对数据库中多个资源的访问顺序;基于第二进程的代码,获取第二进程对数据库中多个资源的访问顺序。
[0008]结合第一方面,在第一方面的某些可能的实现方式中,基于第一进程的代码,获取第一进程对数据库中多个资源的访问顺序,包括:基于第一进程的代码确定第一进程的访问链,第一进程的访问链是按照第一进程对数据库中多个资源的访问顺序连接而成的链路,用于指示第一进程访问数据库中多个资源的先后顺序;以及于第二进程的代码,获取第
二进程对数据库中多个资源的访问顺序,包括:基于第二进程的代码确定第二进程的访问链,第二进程的访问链是按照第二进程对数据库中多个资源的访问顺序连接而成的链路,用于指示第二进程访问数据库中多个资源的先后顺序。
[0009]应当理解,访问链是进程对资源访问顺序的一种表现形式,还可以是序列、表格等形式,本申请对此不作任何限定。
[0010]结合第一方面,在第一方面的某些可能的实现方式中,第一进程的访问链包括多个第一资源;该方法还包括:对第一进程的访问链中的多个第一资源进行去重处理,以得到去重后的访问链,去重后的访问链中的资源互不相同,且第一资源在去重后的访问链中的位置根据第一资源在去重前的访问链中首次出现的位置确定。
[0011]去重处理可以避免误识别的情况发生。如果不进行去重处理,一些本来不会产生资源死锁的情况可能会被误识别为产生资源死锁。
[0012]结合第一方面,在第一方面的某些可能的实现方式中,资源对为按照访问链的顺序,从在先访问的一个资源指向在后访问的一个资源的向量,第一资源对集合为包括多个向量的第一向量集合,第二资源对集合为包括多个向量的第二向量集合,以及确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁,包括:基于预定义的乘法运算的规则、第一向量集合中的多个向量和第二向量集合中的多个向量,得到多个运算结果,每个运算结果由第一向量集合中的一个向量和第二向量集合中的一个向量执行乘法运算得到;基于多个运算结果和预定义的目标值,确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁。
[0013]应当理解,向量可以是行向量,或者,列向量,本申请对此不做限定。
[0014]还应当理解,向量是资源对的一种表现形式,还可以是数组、表格等形式,本申请对此不作限定。
[0015]结合第一方面,在第一方面的某些可能的实现方式中,该方法还包括:在第一资源对集合中的资源对与第二资源对集合中的资源对存在资源死锁的情况下,输出检测结果,检测结果包括第一进程的标识和第二进程的标识。
[0016]可选地,检测结果还包括存在资源死锁的两个资源对。
[0017]第二方面,本申请提供了一种资源死锁的检测装置,该装置包括用于实现第一方面或第一方面任意一种可能实现方式中的方法的模块或单元。应理解,各个模块或单元可通过执行计算机程序来实现相应的功能。
[0018]第三方面,本申请提供了一种资源死锁的检测装置,包括处理器,所述处理器用于执行计算机程序,以执行第一方面以及第一方面任意一种可能的实现方式。
[0019]第四方面,本申请提供了一种计算机可读存储介质,包括计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行第一方面以及第一方面任一种可能实现方式中的方法。
[0020]第五方面,本申请提供了一种计算机程序产品,包括计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行第一方面以及第一方面任一种可能实现方式中的方法。
[0021]应当理解的是,本申请的第二方面至第五方面与本申请的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
[0022]需要说明的是,本申请提供的资源死锁的检测方法和装置可用于金融领域在资源死锁方面的检测,也可用于除金融领域之外任意领域在资源死锁方面的检测,本申请对资源死锁的检测方法和装置的应用领域不做限定。
附图说明
[0023]图1是适用于本申请实施例提供的资源死锁的检测方法的应用场景的示意图;
[0024]图2是本申请实施例提供的资源死锁的检测方法的示意性流程图;
[0025]图3是本申请实施例提供的资源死锁的检测装置的示意性框图;
[0026]图4是本申请实施例提供的资源死锁的检测装置的另一示意性框图。
具体实施方式
[0027]为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。
[0028]因此,以下对在附图本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种资源死锁的检测方法,其特征在于,包括:获取第一进程对数据库中多个资源的访问顺序和第二进程对所述数据库中多个资源的访问顺序,所述第一进程和所述第二进程为同一系统中的两个进程;基于所述第一进程对所述数据库中多个资源的访问顺序,确定第一资源对集合,所述第一资源对集合包括由所述第一进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照所述第一进程的访问顺序排布的两个资源;基于所述第二进程对所述数据库中多个资源的访问顺序,确定第二资源对集合,所述第二资源对集合包括由所述第二进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照所述第二进程的访问顺序排布的两个资源;确定所述第一资源对集合中的资源对是否与所述第二资源对集合中的资源对存在资源死锁,其中,存在资源死锁的两个资源对包括相同的两个资源,但访问顺序相反。2.如权利要求1所述的方法,所述获取第一进程对数据库中多个资源的访问顺序和第二进程对所述数据库中多个资源的访问顺序,包括:获取所述第一进程的代码和所述第二进程的代码;基于所述第一进程的代码,获取所述第一进程对所述数据库中多个资源的访问顺序;基于所述第二进程的代码,获取所述第二进程对所述数据库中多个资源的访问顺序。3.如权利要求2所述的方法,所述基于所述第一进程的代码,获取所述第一进程对所述数据库中多个资源的访问顺序,包括:基于所述第一进程的代码确定所述第一进程的访问链,所述第一进程的访问链是按照所述第一进程对所述数据库中多个资源的访问顺序连接而成的链路,用于指示所述第一进程访问所述数据库中多个资源的先后顺序;以及所述基于所述第二进程的代码,获取所述第二进程对所述数据库中多个资源的访问顺序,包括:基于所述第二进程的代码确定所述第二进程的访问链,所述第二进程的访问链是按照所述第二进程对所述数据库中多个资源的访问顺序连接而成的链路,用于指示所述第二进程访问所述数据库中多个资源的先后顺序。4.如权利要求3所述的方法,所述第一进程的访问链包括多个第一资源;所述方法还包括:对所述第一进程的访问链中的多个第一资源进行去重处理,以得到去重后的访问链,所述去重后的访问链中的资源互不相同,且所述第一资源在所述去重后的访问链中的位置根据所述第一资源在去重前的访问链中首次出现的位置确定。5.如权利要求4所述的方法,所述资源对为按照访问链的顺序,从在先访问的一个资源指向在后访问的一个资源的向量,所述第一资源对集合为包括多个向量的第一向量集合,所述第二资源对集合为包括多个向量的第二向量集合,以及所述确定所述第一资源对集合中的资源对是否与所述第二资源对集合中的资源对存在资源死锁,包括:基于预定义的乘法运算的规则、所述第一向量集合中的多个向量和所述第二向量集合中的多个向量,得到多个运算结果,每个运算结果由所述第一向量集合中的一个向量和所述第二向量集合中的一个向量执行乘法运算得到;
基于所述多个运算结果和预定义的目标值,确定所述第一资源对集合中的资源对是否与所述第二资源对集合中的资源对存在资源死锁。6.如权利要求1至5中任一项所述的方法,所述方法还包括:在所述第一资源对集合中的资源对与所述第二资源对集合中的资源对存在资源死锁的情况下,输出检测结果,所述检测结果包括所述第一进程的标识和所述第二进程的标识。7.一种资源死锁的检测装置,其特征在于,包括:获取模块,用于获取第一进程对数据库中多个资源的访问顺序和...

【专利技术属性】
技术研发人员:张浩潘丹铃朱武平邹宁
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:

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

1