CN105740079A - 一种死锁处理方法与系统 - Google Patents
一种死锁处理方法与系统 Download PDFInfo
- Publication number
- CN105740079A CN105740079A CN201610057109.8A CN201610057109A CN105740079A CN 105740079 A CN105740079 A CN 105740079A CN 201610057109 A CN201610057109 A CN 201610057109A CN 105740079 A CN105740079 A CN 105740079A
- Authority
- CN
- China
- Prior art keywords
- deadlock
- situation
- analyzed
- type
- target process
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种死锁处理方法与系统,对各目标进程进行分析,判断各所述目标进程是否出现死锁现象,当出现所述死锁现象时,确定所述死锁现象的类型以及对应的目标解决方式,使用所述目标解决方式对所述死锁现象进行处理,对解锁后的各所述目标进程进行资源调度,对所有已存在进行分析,判断死锁现象是否存在并确定死锁类型,利用对应的解决方式解决死锁,并为解锁后的进行调度资源,可以及时有效地解决思索异常,提高资源调度利用的效率。
Description
技术领域
本发明涉及操作系统资源调度领域,特别是涉及一种死锁处理方法与系统。
背景技术
死锁(deadlocks)是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。
产生死锁有四个必要条件:一、互斥条件,一个资源每次只能被一个进程使用;二、请求与保持条件,一个进程因请求资源而阻塞时,对已经获得的资源保持不放;三、不剥夺条件,进程已获得的资源,在未使用完之前,不能强行剥夺;四、循环等待条件,多个进程之间形成一种头尾互接的循环等待资源关系。
当执行程序中两个或多个线程发生永久堵塞(等待),每个线程都在等待被其它线程占用并堵塞了的资源,则为交叉持锁死锁的情形。例如,如果线程1锁住了记录A并等待记录B,而线程2锁住了记录B并等待记录A,这样两个线程就发生了死锁现象。死锁现象会导致进程无法推进,降低了资源的利用率。
发明内容
有鉴于此,本发明的主要目的在于提供一种死锁处理方法与系统,及时有效地解决死锁异常,提高资源的利用率。
为实现上述目的,本发明提供了一种死锁处理方法,包括:
对各目标进程进行分析,判断各所述目标进程是否出现死锁现象;
当出现所述死锁现象时,确定所述死锁现象的类型以及对应的目标解决方式,使用所述目标解决方式对所述死锁现象进行处理;
对解锁后的各所述目标进程进行资源调度。
优选地,对解锁后的各所述目标进程进行资源调度后还包括:
对所述死锁现象以及处理所述死锁现象的过程进行分析,得到异常处理记录并显示。
优选地,对各目标进程进行分析包括:
使用PSTACK和GDB对各目标进程进行分析。
优选地,所述死锁现象的类型包括:互斥型死锁以及交叉型死锁。
本发明还提供了一种死锁处理系统,包括:
死锁分析模块,用于对各目标进程进行分析,判断各所述目标进程是否出现死锁现象;
死锁处理模块,用于当出现所述死锁现象时,确定所述死锁现象的类型以及对应的目标解决方式,使用所述目标解决方式对所述死锁现象进行处理;
死锁调度模块,用于对解锁后的各所述目标进程进行资源调度。
优选地,所述死锁处理系统还包括:
死锁异常处理模块,用于对所述死锁现象以及处理所述死锁现象的过程进行分析,得到异常处理记录并显示。
优选地,所述死锁分析模块具体用于:
使用PSTACK和GDB对各目标进程进行分析,判断各所述目标进程是否出现死锁现象。
优选地,所述死锁现象的类型包括:互斥型死锁以及交叉型死锁。
应用本发明提供的一种死锁处理方法与系统,对各目标进程进行分析,判断各所述目标进程是否出现死锁现象,当出现所述死锁现象时,确定所述死锁现象的类型以及对应的目标解决方式,使用所述目标解决方式对所述死锁现象进行处理,对解锁后的各所述目标进程进行资源调度,对所有已存在进行分析,判断死锁现象是否存在并确定死锁类型,利用对应的解决方式解决死锁,并为解锁后的进行调度资源,可以及时有效地解决思索异常,提高资源调度利用的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明一种死锁处理方法实施例的流程图;
图2为本发明一种死锁处理方法实施例的交叉死锁现象的示意图;
图3为本发明一种死锁处理方法又一实施例的流程图;
图4为本发明一种死锁处理系统实施例的结构示意图;
图5为本发明一种死锁处理系统又一实施例的结构示意图;
图6为本发明一种死锁处理系统的工作流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种死锁处理方法,图1示出了本发明死锁处理方法实施例的流程图,包括:
步骤S101:对各目标进程进行分析,判断各所述目标进程是否出现死锁现象;
对已经存在的所有进程进行分析,可使用PSTACK以及GDB等分析工具对各目标进程进行分析,PSTACK是K-UNIX系统下的工具,它的功能是将此进程的堆栈信息打印输出,可以输出对应进程所有线程的调用关系栈;GDB是GNU开源组织发布的UNIX下的程序调试工具,K-UNIX系统中包含了GNU调试程序GDB,它是一个用来调试C和C++程序的调试器,可以使程序开发者在程序运行时观察程序的内部结构和内存的使用情况,使用分析工具对进程进行分析,判断是否出现死锁现象。
步骤S102:当出现所述死锁现象时,确定所述死锁现象的类型以及对应的目标解决方式,使用所述目标解决方式对所述死锁现象进行处理;
当确定出现进程死锁现象时,确定死锁现象的类型,有互斥型死锁以及交叉型死锁,如图2所示,为交叉型死锁的示意图,线程1锁住了记录A并等待记录B,而线程2锁住了记录B并等待记录A,这样两个线程就发生了交叉型死锁现象。确定不同类型的死锁现象的发生原因来找到对应的解决方案,对死锁现象进行处理,使各进程解锁。
步骤S103:对解锁后的各所述目标进程进行资源调度。
死锁现象解除后,对解锁后的目标进程进行有效的资源调度,进行有序合理的资源分配,避免再次出现死锁现象。
应用本实施例提供的一种死锁处理方法,对各目标进程进行分析,判断各所述目标进程是否出现死锁现象,当出现所述死锁现象时,确定所述死锁现象的类型以及对应的目标解决方式,使用所述目标解决方式对所述死锁现象进行处理,对解锁后的各所述目标进程进行资源调度,对所有已存在进行分析,判断死锁现象是否存在并确定死锁类型,利用对应的解决方式解决死锁,并为解锁后的进行调度资源,可以及时有效地解决思索异常,提高资源调度利用的效率。
图3示出了本发明死锁处理方法又一实施例的流程图,对应于图1,还包括:
步骤S104:对所述死锁现象以及处理所述死锁现象的过程进行分析,得到异常处理记录并显示。
对出现死锁现象的进程的死锁类型、原因已经处理过程进行分析,分析可能出现的异常情况,记录并进行显示。
本发明还提供了一种死锁处理系统,图4示出了本发明死锁处理系统实施例的结构示意图,包括:
死锁分析模块101,用于对各目标进程进行分析,判断各所述目标进程是否出现死锁现象;
死锁处理模块102,用于当出现所述死锁现象时,确定所述死锁现象的类型以及对应的目标解决方式,使用所述目标解决方式对所述死锁现象进行处理;
死锁调度模块103,用于对解锁后的各所述目标进程进行资源调度。
本实施例中可使用PSTACK和GDB等分析工具对各目标进程进行分析,判断各所述目标进程是否出现死锁现象,
所述死锁现象的类型包括:互斥型死锁以及交叉型死锁。
应用本实施例提供的一种死锁处理系统,对各目标进程进行分析,判断各所述目标进程是否出现死锁现象,当出现所述死锁现象时,确定所述死锁现象的类型以及对应的目标解决方式,使用所述目标解决方式对所述死锁现象进行处理,对解锁后的各所述目标进程进行资源调度,对所有已存在进行分析,判断死锁现象是否存在并确定死锁类型,利用对应的解决方式解决死锁,并为解锁后的进行调度资源,可以及时有效地解决思索异常,提高资源调度利用的效率。
图5为本发明死锁处理系统又一实施例的结构示意图,对应于图4,还包括:
死锁异常处理模块104,用于对所述死锁现象以及处理所述死锁现象的过程进行分析,得到异常处理记录并显示。
图6为本发明死锁处理系统的执行流程示意图,首先排查死锁现象,对系统中已经存在的进程通过死锁分析模块进行定时而且动态的有效分析,调用PSTACK以及GDB等工具,进行解析处理;
通过死锁处理模块进行对解析结果有效地处理,分析死锁的具体原因并给出死锁问题解决的具体方案和实施步骤,进行死锁现象的处理;
调用死锁调度模块,通过对死锁处理模块的处理结果进行分析,将解锁后的进程进行资源的有效调度;
当解锁成功后,通过调用死锁异常模块对发生死锁的问题进行解析,并给出直观的表现方式,进行异常处理分析显示。
对各目标进程进行分析,判断各所述目标进程是否出现死锁现象,当出现所述死锁现象时,确定所述死锁现象的类型以及对应的目标解决方式,使用所述目标解决方式对所述死锁现象进行处理,对解锁后的各所述目标进程进行资源调度,对所有已存在进行分析,判断死锁现象是否存在并确定死锁类型,利用对应的解决方式解决死锁,并为解锁后的进行调度资源,可以及时有效地解决思索异常,提高资源调度利用的效率。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的方法和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种死锁处理方法,其特征在于,包括:
对各目标进程进行分析,判断各所述目标进程是否出现死锁现象;
当出现所述死锁现象时,确定所述死锁现象的类型以及对应的目标解决方式,使用所述目标解决方式对所述死锁现象进行处理;
对解锁后的各所述目标进程进行资源调度。
2.根据权利要求1所述的死锁处理方法,其特征在于,对解锁后的各所述目标进程进行资源调度后还包括:
对所述死锁现象以及处理所述死锁现象的过程进行分析,得到异常处理记录并显示。
3.根据权利要求1所述的死锁处理方法,其特征在于,对各目标进程进行分析包括:
使用PSTACK和GDB对各目标进程进行分析。
4.根据权利要求1所述的死锁处理方法,其特征在于,所述死锁现象的类型包括:互斥型死锁以及交叉型死锁。
5.一种死锁处理系统,其特征在于,包括:
死锁分析模块,用于对各目标进程进行分析,判断各所述目标进程是否出现死锁现象;
死锁处理模块,用于当出现所述死锁现象时,确定所述死锁现象的类型以及对应的目标解决方式,使用所述目标解决方式对所述死锁现象进行处理;
死锁调度模块,用于对解锁后的各所述目标进程进行资源调度。
6.根据权利要求5所述的死锁处理系统,其特征在于,还包括:
死锁异常处理模块,用于对所述死锁现象以及处理所述死锁现象的过程进行分析,得到异常处理记录并显示。
7.根据权利要求5所述的死锁处理系统,其特征在于,所述死锁分析模块具体用于:
使用PSTACK和GDB对各目标进程进行分析,判断各所述目标进程是否出现死锁现象。
8.根据权利要求5所述的死锁处理系统,其特征在于,所述死锁现象的类型包括:互斥型死锁以及交叉型死锁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610057109.8A CN105740079A (zh) | 2016-01-27 | 2016-01-27 | 一种死锁处理方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610057109.8A CN105740079A (zh) | 2016-01-27 | 2016-01-27 | 一种死锁处理方法与系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105740079A true CN105740079A (zh) | 2016-07-06 |
Family
ID=56247800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610057109.8A Pending CN105740079A (zh) | 2016-01-27 | 2016-01-27 | 一种死锁处理方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105740079A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109240811A (zh) * | 2018-08-09 | 2019-01-18 | 武汉斗鱼网络科技有限公司 | 一种任务执行方法和装置 |
CN110058948A (zh) * | 2019-04-28 | 2019-07-26 | 恒生电子股份有限公司 | 一种资源监控方法、装置、设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070233924A1 (en) * | 2006-03-31 | 2007-10-04 | Chauvet Philip R | Apparatus, system, and method for resolving computing resource deadlocks |
CN103268276A (zh) * | 2012-03-29 | 2013-08-28 | 威盛电子股份有限公司 | 微处理器及微处理器死锁或活锁状态解除方法 |
CN103473137A (zh) * | 2013-09-16 | 2013-12-25 | 东软集团股份有限公司 | 避免死锁的资源分配方法及系统 |
CN104239147A (zh) * | 2014-10-20 | 2014-12-24 | 浪潮(北京)电子信息产业有限公司 | 一种处理死锁循环方法及系统 |
CN104461871A (zh) * | 2014-11-18 | 2015-03-25 | 合肥康捷信息科技有限公司 | 一种基于petri网的死锁检测方法 |
CN104820622A (zh) * | 2015-05-22 | 2015-08-05 | 上海斐讯数据通信技术有限公司 | 一种共享内存锁管理控制方法及系统 |
-
2016
- 2016-01-27 CN CN201610057109.8A patent/CN105740079A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070233924A1 (en) * | 2006-03-31 | 2007-10-04 | Chauvet Philip R | Apparatus, system, and method for resolving computing resource deadlocks |
CN103268276A (zh) * | 2012-03-29 | 2013-08-28 | 威盛电子股份有限公司 | 微处理器及微处理器死锁或活锁状态解除方法 |
CN103473137A (zh) * | 2013-09-16 | 2013-12-25 | 东软集团股份有限公司 | 避免死锁的资源分配方法及系统 |
CN104239147A (zh) * | 2014-10-20 | 2014-12-24 | 浪潮(北京)电子信息产业有限公司 | 一种处理死锁循环方法及系统 |
CN104461871A (zh) * | 2014-11-18 | 2015-03-25 | 合肥康捷信息科技有限公司 | 一种基于petri网的死锁检测方法 |
CN104820622A (zh) * | 2015-05-22 | 2015-08-05 | 上海斐讯数据通信技术有限公司 | 一种共享内存锁管理控制方法及系统 |
Non-Patent Citations (1)
Title |
---|
于东海 等: "一个Linux上分析死锁的简单方法", 《HTTPS://WWW.IBM.COM/DEVELOPERWORKS/CN/LINUX/L-CN-DEADLOCK/INDEX.HTML》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109240811A (zh) * | 2018-08-09 | 2019-01-18 | 武汉斗鱼网络科技有限公司 | 一种任务执行方法和装置 |
CN109240811B (zh) * | 2018-08-09 | 2020-07-31 | 武汉斗鱼网络科技有限公司 | 一种任务执行方法和装置 |
CN110058948A (zh) * | 2019-04-28 | 2019-07-26 | 恒生电子股份有限公司 | 一种资源监控方法、装置、设备及介质 |
CN110058948B (zh) * | 2019-04-28 | 2022-01-28 | 恒生电子股份有限公司 | 一种资源监控方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8234631B2 (en) | Method and system for tracing individual transactions at the granularity level of method calls throughout distributed heterogeneous applications without source code modifications | |
CN104794047B (zh) | 性能指标的相关性分析的方法和系统 | |
Zhou et al. | Delta debugging microservice systems | |
US8028277B2 (en) | Self-healing system and method for code optimization in a computing environment | |
CN102073588B (zh) | 一种基于代码静态分析的多线程死锁检测方法及系统 | |
US20090178036A1 (en) | Method and Apparatus for Call Stack Sampling Using a Virtual Machine | |
US20060259823A1 (en) | Determining operating context of an executed instruction | |
CN108762905B (zh) | 一种多任务事件的处理方法和装置 | |
CN111488290B (zh) | 基于智能电表操作系统的线程测试方法和装置 | |
CN103019942A (zh) | 一种基于安卓系统的待测应用自动测试方法和系统 | |
US10725889B2 (en) | Testing multi-threaded applications | |
CN104298623B (zh) | 电子装置、操作系统以及访问控制方法 | |
US20120089990A1 (en) | System and method for reporting a synchronization event in a runtime system of a computer system | |
CN105740079A (zh) | 一种死锁处理方法与系统 | |
CN105550028B (zh) | 一种基于缓存锁的多任务时序执行方法及系统 | |
Marynowski et al. | Testing MapReduce-based systems | |
CN111124694B (zh) | 一种基于petri网的可达图的死锁检测和解决方法 | |
US10235264B2 (en) | Method and system for monitoring health of a virtual environment | |
US7506319B2 (en) | Generating a model of software in execution | |
CN106598708B (zh) | 一种时间触发的嵌入式任务通讯装置与方法 | |
EP3832985B1 (en) | Method and apparatus for processing local hot spot, electronic device and storage medium | |
US20100269117A1 (en) | Method for Monitoring System Resources and Associated Electronic Device | |
CN101140529A (zh) | 一种基于同步事件多路分离器的多事件处理方法及装置 | |
CN110109755B (zh) | 进程的调度方法及装置 | |
CN103927157A (zh) | 构建分布式计算系统实体方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160706 |