1.本技术涉及计算机技术领域,尤其涉及一种资源死锁的检测方法和装置。
背景技术:2.在系统运行过程中,如果两个进程在执行时,按照相反的顺序访问数据库中的两个资源,比如,进程1按照“资源1
→
资源2”的顺序访问数据库,但进程2按照“资源2
→
资源1”的顺序访问数据库,就有可能出现如下情况:进程1锁住了资源1,进程2锁住了资源2,但进程1等待资源2,而进程2等待资源1。这种情况可以称为死锁。死锁的出现可能导致系统运行出现风险。
3.因此,希望提供一种技术,能够尽早识别出资源死锁,以降低对系统运行带来的影响。
技术实现要素:4.本技术提供了一种资源死锁的检测方法和装置,以期尽早识别出资源死锁,进而可以降低对系统运行带来的影响。
5.第一方面,本技术提供了一种资源死锁的检测方法,该方法包括:获取第一进程对数据库中多个资源的访问顺序和第二进程对数据库中多个资源的访问顺序,第一进程和第二进程为同一系统中的两个进程;基于第一进程对数据库中多个资源的访问顺序,确定第一资源对集合,第一资源对集合包括由第一进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照第一进程的访问顺序排布的两个资源;基于第二进程对数据库中多个资源的访问顺序,确定第二资源对集合,第二资源对集合包括由第二进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照第二进程的访问顺序排布的两个资源;确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁,其中,存在资源死锁的两个资源对包括相同的两个资源,但访问顺序相反。
6.本技术提供的资源死锁的检测方法,基于进程的代码进行静态扫描,以获取每个进程访问资源的顺序,进而将对资源相同、访问顺序相反的两个资源识别出来。因此,可以在系统运行前识别出死锁进程,降低资源死锁的风险,减少可能对系统运行带来不利影响的因素,从而有利于提高系统可靠性。
7.结合第一方面,在第一方面的某些可能的实现方式中,获取第一进程对数据库中多个资源的访问顺序和第二进程对数据库中多个资源的访问顺序,包括:获取第一进程的代码和第二进程的代码;基于第一进程的代码,获取第一进程对数据库中多个资源的访问顺序;基于第二进程的代码,获取第二进程对数据库中多个资源的访问顺序。
8.结合第一方面,在第一方面的某些可能的实现方式中,基于第一进程的代码,获取第一进程对数据库中多个资源的访问顺序,包括:基于第一进程的代码确定第一进程的访问链,第一进程的访问链是按照第一进程对数据库中多个资源的访问顺序连接而成的链路,用于指示第一进程访问数据库中多个资源的先后顺序;以及于第二进程的代码,获取第
二进程对数据库中多个资源的访问顺序,包括:基于第二进程的代码确定第二进程的访问链,第二进程的访问链是按照第二进程对数据库中多个资源的访问顺序连接而成的链路,用于指示第二进程访问数据库中多个资源的先后顺序。
9.应当理解,访问链是进程对资源访问顺序的一种表现形式,还可以是序列、表格等形式,本技术对此不作任何限定。
10.结合第一方面,在第一方面的某些可能的实现方式中,第一进程的访问链包括多个第一资源;该方法还包括:对第一进程的访问链中的多个第一资源进行去重处理,以得到去重后的访问链,去重后的访问链中的资源互不相同,且第一资源在去重后的访问链中的位置根据第一资源在去重前的访问链中首次出现的位置确定。
11.去重处理可以避免误识别的情况发生。如果不进行去重处理,一些本来不会产生资源死锁的情况可能会被误识别为产生资源死锁。
12.结合第一方面,在第一方面的某些可能的实现方式中,资源对为按照访问链的顺序,从在先访问的一个资源指向在后访问的一个资源的向量,第一资源对集合为包括多个向量的第一向量集合,第二资源对集合为包括多个向量的第二向量集合,以及确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁,包括:基于预定义的乘法运算的规则、第一向量集合中的多个向量和第二向量集合中的多个向量,得到多个运算结果,每个运算结果由第一向量集合中的一个向量和第二向量集合中的一个向量执行乘法运算得到;基于多个运算结果和预定义的目标值,确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁。
13.应当理解,向量可以是行向量,或者,列向量,本技术对此不做限定。
14.还应当理解,向量是资源对的一种表现形式,还可以是数组、表格等形式,本技术对此不作限定。
15.结合第一方面,在第一方面的某些可能的实现方式中,该方法还包括:在第一资源对集合中的资源对与第二资源对集合中的资源对存在资源死锁的情况下,输出检测结果,检测结果包括第一进程的标识和第二进程的标识。
16.可选地,检测结果还包括存在资源死锁的两个资源对。
17.第二方面,本技术提供了一种资源死锁的检测装置,该装置包括用于实现第一方面或第一方面任意一种可能实现方式中的方法的模块或单元。应理解,各个模块或单元可通过执行计算机程序来实现相应的功能。
18.第三方面,本技术提供了一种资源死锁的检测装置,包括处理器,所述处理器用于执行计算机程序,以执行第一方面以及第一方面任意一种可能的实现方式。
19.第四方面,本技术提供了一种计算机可读存储介质,包括计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行第一方面以及第一方面任一种可能实现方式中的方法。
20.第五方面,本技术提供了一种计算机程序产品,包括计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行第一方面以及第一方面任一种可能实现方式中的方法。
21.应当理解的是,本技术的第二方面至第五方面与本技术的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
22.需要说明的是,本技术提供的资源死锁的检测方法和装置可用于金融领域在资源死锁方面的检测,也可用于除金融领域之外任意领域在资源死锁方面的检测,本技术对资源死锁的检测方法和装置的应用领域不做限定。
附图说明
23.图1是适用于本技术实施例提供的资源死锁的检测方法的应用场景的示意图;
24.图2是本技术实施例提供的资源死锁的检测方法的示意性流程图;
25.图3是本技术实施例提供的资源死锁的检测装置的示意性框图;
26.图4是本技术实施例提供的资源死锁的检测装置的另一示意性框图。
具体实施方式
27.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。
28.因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
29.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”以及任何变形,意图在于覆盖不排他的包含。
30.系统中的两个或两个以上的进程在执行时,由于竞争资源或者彼此通信而造成阻塞,若无外力作用,这些进程都将无法执行下去,这种现象称作死锁。本技术提供的资源死锁的检测方法适用于检测两个进程之间的资源死锁。
31.为了便于理解本技术,首先结合图1对适用于本技术提供的资源死锁检测的场景做简单说明。
32.图1是适用于本技术实施例提供的资源死锁的检测方法的应用场景的示意图。如图1所示,该资源死锁的检测方法的应用场景包括第一进程110、第二进程120、数据库130。其中,第一进程110包括依次执行的程序1和程序2,程序1从数据库130中依次访问资源1和资源3,程序2从数据库130中依次访问资源1和资源2;第二进程120包括依次执行的程序3和程序4,程序3从数据库130中依次访问资源1和资源2,程序4从数据库中依次访问资源3和资源4。
33.需要说明的是,进程访问的资源数量与该进程所包含的程序访问的资源数量相关。在一个进程包括多个程序的情况下,如果各个程序访问的资源互不相同,则该进程访问的资源数量可以是各个程序访问的资源数量之和;如果各个程序访问的资源有重复,则该进程访问的资源数量小于各个程序访问的资源数量之和。换言之,进程访问的资源数量不超过其所包含的各个程序访问的资源数量之和。
34.应理解,图1示出的场景中,每个进程包括了两个程序,每个程序访问的资源数为
2。但这不应构成任何限定。本技术对于每个进程包括的程序及其数量,每个程序访问的资源及其数量均不作限定。
35.再看图1,第一进程110访问数据库130中资源的顺序为资源1、资源3、资源1、资源2,第二进程120访问数据库130中资源的顺序为资源1、资源2、资源3、资源4。可以发现,第一进程110和第二进程120都需要访问资源2和资源3,不同的是,第一进程110先访问资源3后访问资源2;第二进程120先访问资源2后访问资源3。
36.在进程的执行过程中就有可能出现:第一进程110锁住了资源3,要访问资源2;第二进程120锁住了资源2,要访问资源3。两个进程各自锁住了对方要访问的资源,也都访问不到自己所需要的资源,这样就造成了资源死锁(也可简称为死锁),而发生资源死锁的两个进程,如上述的第一进程110和第二进程120,可以称为死锁进程。
37.在系统运行过程中,如果出现资源死锁,可能会对系统运行造成影响,比如,系统无法继续运行,严重时可能导致系统崩溃,系统可靠性不能保证。因此,运维人员需要查找出导致系统不能正常运行的根因,进而解决根因。但这也会造成系统运行被暂停,且死锁进程分别锁住了资源,其他未发生资源死锁的进程也可能会受到影响。
38.鉴于此,本技术提供了一种资源死锁的检测方法,旨在系统运行之前就提前检测出死锁进程。该方法基于进程的代码进行静态扫描,以获取每个进程访问资源的顺序,进而将对资源相同、访问顺序相反的两个资源识别出来,提前进行人工处理。因此在系统运行前就可以将死锁进程排除,降低资源死锁的风险,减少可能对系统运行带来不利影响的因素,从而有利于提高系统可靠性。
39.图2是本技术实施例提供的资源死锁的检测方法200的示意性流程图,如图2所示,该方法200可以包括步骤210至240,可以由资源死锁的检测装置来执行,该检测装置例如可以是计算机,或者配置于计算机中的部件,如芯片、芯片系统等。本技术对此不作限定。
40.需要说明的是,下文中为便于理解和说明,以第一进程和第二进程为例来描述了资源死锁的检测方法。其中,第一进程和第二进程是同一系统中的两个进程。但这并不代表该系统中只运行该两个进程。该系统中可以运行更多数量的进程,检测装置可以基于如下方法对系统中的多个进程进行检测,具体可以将多个进程两两组合,然后基于如下方法,对组合得到的每两个进程进行一次检测,以确认是否存在资源死锁。
41.下面对方法200中的各个步骤做详细说明。
42.在步骤210中,获取第一进程对数据库中多个资源的访问顺序和第二进程对数据库中多个资源的访问顺序。
43.其中,第一进程访问的多个资源和第二进程访问的多个资源可以是完全相同的,或者,也可以是部分相同的,或者,还可以是完全不同的。
44.示例性地,第一进程访问资源1、资源2、资源3,第二进程访问资源1、资源2、资源3,则第一进程访问的多个资源和第二进程访问的多个资源是完全相同的;第一进程访问资源1、资源2、资源3,第二进程访问资源1、资源2、资源4,则第一进程访问的多个资源和第二进程访问的多个资源是部分相同的;第一进程访问资源1、资源2,第二进程访问资源3、资源4,则第一进程访问的多个资源和第二进程访问的多个资源是完全不同的。
45.可以理解的是,如果第一进程访问的多个资源和第二进程访问的多个资源部分或全部相同,则有可能存在资源死锁的风险。本文中假设第一进程访问的多个资源和第二进
程访问的多个资源中,存在至少两个相同的资源。换言之,第一进程和第二进程有共同访问的至少两个资源。
46.由于各进程可以通过执行一个或多个程序来实现,每个程序可能需要访问数据库中的资源,因此各进程访问资源的顺序取决于进程中的程序访问资源的顺序。
47.示例性地,第一进程依次执行程序1和程序2,程序1依次访问资源1和资源3,程序2依次访问资源1和资源2,则第一进程访问资源的顺序为资源1、资源3、资源1、资源2;第二进程依次执行程序3和程序4,程序3依次访问资源1和资源2,程序4依次访问资源3和资源4,则第二进程访问资源的顺序为资源1、资源2、资源3、资源4。
48.在一种可能的实现方式中,检测装置可通过提前读取各进程代码的方式来获取各自的对资源的访问顺序。
49.可选地,步骤210具体包括:获取第一进程的代码和第二进程的代码;并基于第一进程的代码,获取第一进程对数据库中多个资源的访问顺序;基于第二进程的代码,获取第二进程对数据库中多个资源的访问顺序。
50.其中,第一进程的代码可以包括第一进程所涉及程序的全量代码,第一进程所涉及程序的全量代码可以包括第一进程的入口程序代码;第二进程的代码可以包括第二进程所涉及程序的全量代码,第二进程所涉及程序的全量代码可以包括第二进程的入口程序代码。每个进程所涉及的程序包括入口程序,以及后续的执行程序。
51.基于对第一进程的代码和第二进程的代码的读取,检测装置可以得到第一进程对多个资源的访问顺序以及第二进程对多个资源的访问顺序。
52.进程对资源的访问顺序可以通过不同的形式来表示。例如可以按照预先定义的排布顺序,将多个资源被进程访问的顺序以序列、表格的形式表示出来。该预先定义的顺序例如可以是从左到右、从上到下等等。本技术实施例对此不作限定。
53.在一种可能的设计中,进程对资源的访问顺序可以表现为访问链。访问链是按照进程对多个资源的访问顺序连接而成的链路,可用于指示进程访问资源的先后顺序。
54.示例性地,第一进程依次访问了资源1、资源3、资源1、资源2,则第一进程的访问链为:资源1
→
资源3
→
资源1
→
资源2;第二进程依次访问了资源1、资源2、资源3、资源4,则第二进程的访问链为:资源1
→
资源2
→
资源3
→
资源4。
55.在访问链中,可能存在重复的资源,比如,第一进程的访问链中,资源1重复出现。由于在一个进程的执行过程中,一旦访问某一资源,就在执行结束之前将该资源锁住而不释放,故没有必要将同一资源在访问链中多次出现,这反而可能造成误判,将一些本来不会产生资源死锁的情况可能会被误识别为产生资源死锁。为便于区分和说明,本文中将在访问链中重复出现的资源记为第一资源。可以理解,每个进程的访问链中都可能出现重复的第一资源,本文假设第一进程的访问链包括多个第一资源,如上例中的资源1。
56.针对重复出现的第一资源,可以对访问链进行去重处理。可选地,步骤210还包括:对第一进程的访问链中的多个第一资源进行去重处理,以得到去重后的访问链,去重后的访问链中的资源互不相同,且所述第一资源在所述去重后的访问链中的位置根据所述第一资源在去重前的访问链中首次出现的位置确定。
57.示例性地,第一进程的访问链在去重前为:资源1
→
资源3
→
资源1
→
资源2,经去重处理得到的去重后的访问链为:资源1
→
资源3
→
资源2。
58.在步骤220中,基于第一进程对数据库中多个资源的访问顺序,确定第一资源对集合。
59.在步骤230中,基于第二进程对数据库中多个资源的访问顺序,确定第二资源对集合。
60.其中,资源对为按照访问链的顺序,从在先访问的一个资源指向在后访问的一个资源的向量,第一资源对集合为包括多个向量的第一向量集合,第二资源对集合为包括多个向量的第二向量集合。
61.示例性地,向量(资源1,资源3)就表示该进程是先访问资源1再访问资源3。
62.基于上文列举的第一进程对多个资源的访问顺序,可以得到第一向量集合为{(资源1,资源3),(资源1,资源2),(资源3,资源2)};基于上文列举的第二进程对多个资源的访问顺序,可以得到第二向量集合为{(资源1,资源2),(资源1,资源3),(资源1,资源4),(资源2,资源3),(资源2,资源4),(资源3,资源4)}。
63.应理解,向量可以是行向量,或者,列向量,本技术对此不做限定。向量中两个元素的排布顺序可以预先定义,例如,在行向量中可以按从左到右或从右到左的顺序示出依次访问的资源,在列向量中可以按从上到下或从下到上的顺序示出依次访问的资源。
64.还应理解,向量只是资源对的一种表现形式,还可以是数组、表格等形式,本技术对此不作限定。
65.在步骤240中,确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁。
66.示例性地,检测装置可以先从第一资源对集合中取一个资源对,然后遍历第二资源对集合中的资源对,查找第二资源对集合中与该资源对存在资源死锁的资源对。如果查找到了,则输出该结果;如果没有查找到,则不输出结果。接下来,可以从第一资源对集合中取下一个资源对,重复上述步骤,直到将第一资源对集合中的所有资源对被遍历。
67.应理解,上述实现方式仅为一种示例,比如检测装置也可以先从第二资源对集合中取一个资源,遍历第一资源对集合中的资源对来查找,如此循环,直到第二资源对集合中的所有资源对被遍历。
68.在一种可能的设计中,可以基于上述的向量来设计乘法运算的规则,当两个向量包括相同的元素,相反的顺序时,则可将二者执行乘法运算的结果定义为目标值。若第一向量集合中的某一向量与第二向量集合中的某一向量的乘法运算结果为该目标值,则该两个向量存在死锁资源,该两个进程为死锁进程。
69.可选地,步骤240包括:基于预定义的乘法运算的规则、第一向量集合中的多个向量和第二向量集合中的多个向量,得到多个运算结果,每个运算结果由第一向量集合中的一个向量和第二向量集合中的一个向量执行乘法运算得到;基于多个运算结果和预定义的目标值,确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁。
70.示例性地,预定义的乘法运算的规则为:如果两个向量中的元素相同但顺序相反,则这两个向量的乘法运算结果为1;如果两个向量中的元素相同且顺序相同,或者,两个资源中有任意一个资源不同,则这两个向量的乘法运算结果为不为1,比如为0、-1或者其他值。本技术实施例对此不做限定。
71.其中,判断第一资源对集合中的资源对与第二资源对集合中的资源对存在资源死锁的预定义的目标值为1。
72.示例性地,第一向量集合中的(资源3,资源2)与第二向量集合中的(资源2,资源3)的乘法运算为:(资源3,资源2)
×
(资源2,资源3)=1;第一向量集合中的(资源1,资源3)与第二向量集合中的(资源1,资源3)的乘法运算为:(资源1,资源3)
×
(资源1,资源3)=0;第一向量集合中的(资源1,资源3)与第二向量集合中的(资源1,资源2)的乘法运算为:(资源1,资源3)
×
(资源1,资源2)=0。
73.为方便示出,下面将上述乘法运算结果用表格表示:
[0074][0075]
应理解,上文示出的乘法运算的运算结果是基于去重处理后的第一进程的访问链确定的第一向量集合而计算得到的。如果没有对第一进程的访问链中的多个第一资源进行去重处理,在第一向量集合中会包括有向量(资源3,资源1),而这个向量本来不应该出现在第一向量集合中。向量(资源3,资源1)会和第二向量集合中的向量(资源1,资源3)产生乘法运算,结果为1,与资源死锁的预定义的目标值相吻合。从而被误识别为产生资源死锁。
[0076]
应当理解,判断是否存在资源死锁的预定义目标值可以为1和0,或者,也可以为其他数字、字母或符号,本技术对此不做限定。
[0077]
可选地,该方法还包括:在第一资源对集合中的资源对与第二资源对集合中的资源对存在资源死锁的情况下,输出检测结果,检测结果包括第一进程的标识和第二进程的标识。
[0078]
为了便于运维人员更快地定位死锁的资源,该检测结果还可进一步包括存在资源死锁的两个资源对。
[0079]
示例性地,输出检测结果为:
[0080][0081]
基于输出检测结果,运维人员根据输出的检测结果对资源死锁的情况进行确认、评估及修改。
[0082]
示例性地,运维人员修改的方式为:调换第一进程中程序1和程序2的执行顺序,使第一进程访问数据库的顺序变为资源1、资源2、资源3;或者使第一进程访问另一个可以替代资源3的资源,如未列出的资源5等。
[0083]
应理解,运维人员会根据系统的具体情况决定修改的方式,本实施例仅作为示例,不对本技术的方案进行任何限定。
[0084]
需要说明的是,本技术提供的资源死锁的检测方法可用于金融领域在资源死锁方面的检测,也可用于除金融领域之外任意领域在资源死锁方面的检测,本技术对资源死锁的检测方法和装置的应用领域不做限定。例如,在金融领域中,本技术实施例中的“进程”可以为金融领域的“交易”,“资源”可以为数据库中的“表”。
[0085]
例如,在本技术实施例中,第一交易可以是第一进程的一例,包括依次执行的程序1和程序2,程序1从数据库中依次访问表1和表3,程序2从数据库中依次访问表1和表2,表1、表2和表3为第一交易在数据库中访问的多个资源,分别为资源1、资源2和资源3的一例;第二交易可以是第二进程的一例,包括依次执行的程序3和程序4,程序3从数据库中依次访问表1和表2,程序4从数据库中依次访问表3和表4,表1、表2、表3和表4为第二交易在数据库中访问的多个资源,分别为资源1、资源2、资源3和资源4的一例。
[0086]
因此,根据本技术实施例提供的资源死锁的检测方法,可以在系统运行之前基于进程的代码进行静态扫描,以获取每个进程访问资源的顺序,进而将对资源相同、访问顺序相反的两个资源识别出来,提前进行人工处理。因此在系统运行前就可以将死锁进程排除,降低资源死锁的风险,减少可能对系统运行带来不利影响的因素,从而有利于提高系统可靠性。
[0087]
图3是本技术实施例提供的资源死锁的检测装置的示意性框图。如图3所示,该资源死锁的检测装置300可以包括获取模块310和处理模块320。其中,该获取模块310可用于获取第一进程对数据库中多个资源的访问顺序和第二进程对数据库中多个资源的访问顺序,第一进程和第二进程为同一系统中的两个进程;该处理模块320可用于基于第一进程对数据库中多个资源的访问顺序,确定第一资源对集合,第一资源对集合包括由第一进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照第一进程的访问顺序排布的两个资源;并用于基于第二进程对数据库中多个资源的访问顺序,确定第二资源对集合,第二资源对集合包括由第二进程访问的多个资源两两组合得到的至少一个资源对,每个资源对包括按照第二进程的访问顺序排布的两个资源;还用于确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁,其中,存在资源死锁的两个资源对包括相同的两个资源,但访问顺序相反。
[0088]
可选地,获取模块310具体用于,获取第一进程的代码和第二进程的代码;处理模块320具体用于,基于第一进程的代码,获取第一进程对数据库中多个资源的访问顺序;基于第二进程的代码,所述第二进程对数据库中多个资源的访问顺序。
[0089]
可选地,处理模块320具体用于,基于第一进程的代码确定第一进程的访问链,第一进程的访问链是按照第一进程对数据库中多个资源的访问顺序连接而成的链路,用于指示第一进程访问数据库中多个资源的先后顺序;基于第二进程的代码确定第二进程的访问链,第二进程的访问链是按照第二进程对数据库中多个资源的访问顺序连接而成的链路,用于指示第二进程访问数据库中多个资源的先后顺序。
[0090]
可选地,第一进程的访问链包括多个第一资源;可选地,处理模块320具体用于,对第一进程的访问链中的多个第一资源进行去重处理,以得到去重后的访问链,去重后的访问链中的资源互不相同,且第一资源在去重后的访问链中的位置根据第一资源在去重前的访问链中首次出现的位置确定。
[0091]
可选地,资源对为按照访问链的顺序,从在先访问的一个资源指向在后访问的一
个资源的向量,第一资源对集合为包括多个向量的第一向量集合,第二资源对集合为包括多个向量的第二向量集合;以及处理模块320具体用于,基于预定义的乘法运算的规则、第一向量集合中的多个向量和第二向量集合中的多个向量,得到多个运算结果,每个运算结果由第一向量集合中的一个向量和第二向量集合中的一个向量执行乘法运算得到;基于多个运算结果和预定义的目标值,确定第一资源对集合中的资源对是否与第二资源对集合中的资源对存在资源死锁。
[0092]
可选地,该装置300还包括输出模块,用于在第一资源对集合中的资源对与第二资源对集合中的资源对存在资源死锁的情况下,输出检测结果,该检测结果包括第一进程的标识和第二进程的标识。
[0093]
可选地,该检测结果还包括存在资源死锁的两个资源对。
[0094]
应理解,本技术中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本技术中的各模块可以集成在一个设备中,也可以是单独物理存在。
[0095]
图4是本技术实施例提供的资源死锁的检测装置的另一示意性框图。如图4所示,该装置400可以包括至少一个处理器410,用于可用于实现本技术提供的方法中资源死锁检测的功能。具体参见方法示例中的详细描述,此处不做赘述。
[0096]
该装置400还可以包括一个存储器420,用于存储程序指令和/或数据。存储器420和处理器410耦合。本技术中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器410可能和存储器420协同操作。处理器410可能执行存储器420中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。
[0097]
该装置400还可以包括一个通信接口430,用于通过传输介质和其它设备进行通信,从而用于装置400中的装置可以和其它设备进行通信。所述通信接口430例如可以是收发器、接口、总线、电路或者能够实现收发功能的装置。处理器410可利用通信接口430收发数据和/或信息。
[0098]
本技术中不限定上述处理器410、存储器420以及通信接口430之间的具体连接介质。本技术在图4中以处理器410、存储器420以及通信接口430之间通过总线440连接。总线440在图4中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0099]
在本技术实施例中,处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
[0100]
根据本技术提供的方法,本技术还提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当该程序代码在计算机上运行时,使得该计算机执行图2所示实施例中资源死锁的检测方法。
[0101]
根据本技术提供的方法,本技术还提供一种计算机程序产品,该计算机程序产品
包括:计算机程序代码。当该计算机程序代码在计算机上运行时,使得该计算机执行图2所示实施例中资源死锁的检测方法。
[0102]
本技术提供的技术方案可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、终端设备或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线,例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质例如,数字视频光盘(digital video disc,dvd)、或者半导体介质等。
[0103]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。