CN1629821A - 一种多线程处理器线程死锁检测的方法及其系统 - Google Patents
一种多线程处理器线程死锁检测的方法及其系统 Download PDFInfo
- Publication number
- CN1629821A CN1629821A CN 200310123980 CN200310123980A CN1629821A CN 1629821 A CN1629821 A CN 1629821A CN 200310123980 CN200310123980 CN 200310123980 CN 200310123980 A CN200310123980 A CN 200310123980A CN 1629821 A CN1629821 A CN 1629821A
- Authority
- CN
- China
- Prior art keywords
- thread
- multiline procedure
- deadlock
- procedure processor
- processor
- 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种多线程处理器线程死锁的检测方法及其系统。本发明中采用了一个数据存储设备保存针对各个线程的计数器计数值的技术方案,这样,检测设备只需要对保存的计数值定时检测即可以实时监测到是否发生线程死锁现象。因此,本发明提供了一种简便、快捷的线程死锁检测手段,从而可以快速地对发生线程死锁现象的线程处理器进行相应的处理,以避免由于线程死锁现象的出现导致整个系统瘫痪,提高了系统的健壮性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种多线程处理器线程死锁检测的方法及其系统。
背景技术
随着计算机技术的发展,多线程处理器的技术应用目前已经非常广泛;所述的线程是指程序的一次执行过程,所述的多线程则是指同一个程序能有几个并发执行的路径,这些线程共享内存地址空间,可以并发异步执行。根据处理器厂家的设计不同,处理器的多线程的设计可以由硬件设计支持,也可由软件设计实现,无论哪一种最终还是以提高系统资源利用率和提高处理性能为目的。所以多线程技术的应用大大提高了计算机系统资源的利用率,同时也提高了系统的执行和处理的速度。
但是,在多线程技术的应用中线程死锁是一个非常致命的问题。所述的线程死锁是指两个或两个以上的线程中每个都在等待其中另一个线程释放资源而被封锁,它们都无法向前推进,这种现象便是线程死锁。线程死锁通常都会导致整个系统瘫痪。触发线程死锁的因素很多,有软件程序本身的设计问题,也有处理器本身的硬件设计问题。为避免线程死锁对整个系统造成重大影响,提高系统的健壮性,需要有一个行之有效的检测方法检测线程死锁,以及时发现线程死锁,并采用相应的技术手段进行调整,避免系统运行状态的进一步恶化。
基于上述需要,目前通常采用上报消息包的方式实时监测是否发生线程死锁现象。具体的处理过程为:各个线程CPU(中央处理器)定时给检测的CPU上报消息,对于超时未上报消息的线程CPU,检测CPU会认为该线程CPU的线程已经死掉,如果不及时处理将进一步引发严重的问题,因此,由检测CPU负责对该线程CPU进行复位操作。
目前所采用的监测线程死锁的装置如图1所示,可以看出,各个线程CPU均需要与检测CPU相连,导致检测CPU和线程CPU之间的接口复杂;而且,当系统的线程CPU比较多时,线程CPU和检测CPU之间的消息流量大大增加,这必然会增加检测CPU的消息处理负担。同时,由于接口之间是采用消息方式进行信息的传递,所以当消息传送出现较大延迟或消息丢失时,将会导致检测CPU误判断和误操作,从而使得整个系统的可靠性无法得到很好地保证。
发明内容
本发明的目的是提供一种多线程处理器死锁检测的方法及其系统,从而使得可以简便、有效地对线程死锁现象进行检测,保证系统的良好运行。
本发明的目的是采用以下技术方案实现的:
本发明提供了一种多线程处理器线程死锁检测的方法,包括:
A、为多线程处理器的各个线程分别建立对应的计数器,多线程处理器每一次执行,则对应的线程的计数器进行计数;
B、定时检测多线程处理器各个线程的计数器计数值,并根据计数值确定多线种处理器是否发生线程死锁。
所述的步骤A还包括:
将多线程处理器的各个线程的计数器计数值保存。
所述的步骤B包括:
B1、定时检测多线程处理器各个线程的计数器计数值;
B2、判断本次检测时各个线程的计数器的计数值是否与上一次检测时对应线程的计数值相同,如果相同,执行步骤B3,否则,执行步骤B4;
B3、确定多线种处理器的相应线程发生线程死锁;
B4、确定未发生线程死锁。
所述的步骤B还包括:
保存本次检测时线程的计数器计数值与上一次检测时对应线程计数值相同的线程的本次检测时的相应线程的计数器计数值。
本发明还提供了一种多线程处理器线程死锁的检测系统,包括:
检测设备:用于定时获取数据存储设备中保存的各个线程的计数器计数值,并根据该值及其对应的上一次计数值判断是否发生线程死锁;
数据存储设备:用于保存多线程处理器的各个线程的计数器计数值;
多线程处理器计数设备:用于对多线程处理器的各个线程执行的次数进行计数,并将相应的计数值保存于数据存储设备中。
所述的检测设备为单独设置,或者设置于已有的处理器中。
所述的检测设备进一步包括:
历史数据存储模块:用于向线程死锁检测模块提供保存的上一次检测时的各个线程的计数器计数值,并保存本次检测过程中由数据存储设备提供的未发生线程死锁的线程的计数器计数值;
线程死锁检测模块:根据数据存储设备提供的上一次检测时的各个线程的计数器计数值,以及数据存储设备提供的本次检测的各个线程的计数器计数值确定是否发生线程死锁。
所述的数据存储设备为单独设置,或内置于多线程处理器或检测设备中。
所述的多线程执行计数设备为设置于处理器中,或者单独设置,或者与检测设备或数据存储设备集中设置为一个器件。
所述的多线程执行计数设备为设置于多线程处理器中。
由上述技术方案可以看出,本发明中采用了一个数据存储设备保存针对各个线程的计数器计数值的技术方案,这样,检测设备只需要对保存的计数值定时检测即可以实时监测到是否发生线程死锁现象。因此,本发明提供了一种简便、快捷的线程死锁检测手段,从而可以快速地对发生线程死锁现象的线程处理器进行相应的处理,以避免由于线程死锁现象的出现导致整个系统瘫痪,提高了系统的健壮性。
附图说明
图1为现有技术中多线程处理器线程死锁检测装置的结构示意图;
图2为本发明所述的多线程处理器线程死锁检测的方法流程图;
图3为本发明所述的系统的结构示意图。
具体实施方式
在现有的通信系统中,大多处理器都是采用多线程处理技术来提高系统的处理性能。然而,在实际的系统应用中,多线程处理器的线程死锁问题常常导致系统运行的故障,线程死锁通常都是由于系统本身的软件设计问题所导致或者由于处理器生产厂商的硬件自身设计问题所导致。所以系统必须要有一个有效的检测方法,确保系统运行的稳定。本发明的目的便是提供一种多线程处理器线程死锁检测的方法,且该方法接口设计简单,处理简便、可靠、而且准确,以克服现有技术中所采用的多线程处理器死锁检测方法所存在的缺点。
本发明所述的多线程处理器线程死锁检测的方法如图3所示,具体包括以下步骤:
步骤21:为多线程处理器的各个线程分别建立对应的计数器,用于统计各个线程的执行情况;
步骤22:多线程处理器的各个线程每一次执行,则对应的线程的计数器进行计数,即某一个线程执行一次,则该线程的计数器计数值加1;
步骤23:保存多线程处理器的各个线程的计数器计数值,以便于根据实时保存的计数器计数值确定是否发生线程死锁;
步骤24:定时检测多线程处理器各个线程的计数器计数值,及定时获取保存的多线程处理器的各个线程的计数器计数值;
步骤25:判断本次检测时各个线程的计数器的计数值是否与上一次检测时对应的各个线程的计数值相同,如果相同,执行步骤26,否则,执行步骤27;
该步骤通常为各个线程逐个进行是否发生线程死锁的检测,即依次判断各个线程的计数值是否与上一次检测时的计数值相同,以确定各个分别是否发生线程死锁;
步骤26:确定多线程处理器的相应线程发生线程死锁,并对多线程处理器进行相应的处理;
确定多线程处理器的某个线程发生死锁后,则通常需要对该多线程处理器进行复位处理,当然也可以采用其他的处理方法,具体采用的处理方法根据计算机系统的设置确定;
步骤27:确定未发生线程死锁,并执行步骤28;
步骤28:保存本次检测时各线程的计数器计数值,即保存未发生线程死锁的多线程处理器的各线程的本次检测时的各线程的计数器计数值,以便于下一次检测时使用,并执行步骤24。
通过上述过程可以看出,循环执行步骤24至步骤28即可以实现对多线程处理器进行准确、可靠的线程死锁检测,以便及时发现线程死锁现象,及时处理,以避免给整个系统造成重大的影响,如导致整个系统瘫痪等。
基于上述方法,本发明还提供了一种多线程处理器线程死锁的检测系统,如图3所示,具体包括:
检测设备:用于定时获取数据存储设备中保存的各个线程的计数器计数值,并根据该值及其对应的上一次计数值判断是否发生线程死锁,即如果两次检测某一线程的计数器计数值未发生变化,则认为该线程发生了线程死锁,否则,认为该线程工作正常;
所述的检测设备或者单独设置,或者设置于所在的计算机系统已有的处理器中,且所述的检测设备进一步包括:
历史数据存储模块:用于向线程死锁检测模块提供保存的上一次检测时的各个线程的计数器计数值,并保存本次检测过程中由数据存储设备提供的未发生线程死锁的线程的计数器计数值;
线程死锁检测模块:根据数据存储设备提供的上一次检测时的各个线程的计数器计数值,以及数据存储设备提供的本次检测的各个线程的计数器计数值确定是否发生线程死锁;
即当需要进行线程死检测时,首先由线程死锁检测模块向数据存储设备获取其保存的当前各个线程的计数器计数值,作为本次检测的各个线程的计数器计数值,并调用历史数据存储模块中保存的上一次检测时各个线程的计数器计数值,并根据两个计数值是否相同确定是否发生线程死锁,对于未发生线程死锁的线程对应的本次检测的线程的计数器计数值需要保存于历史数据存储模块中替换上一次检测时各个线程的计数器计数值,即刷新历史数据存储模块中未发生线程死锁的线程的计数值。
数据存储设备:用于保存多线程处理器的各个线程的计数器计数值;所述的数据存储设备为单独设置,或内置于多线程处理器或检测设备中。
多线程处理器计数设备:用于对多线程处理器的各个线程执行的次数进行计数,并将相应的计数值保存于数据存储设备中;所述的多线程执行计数设备为设置于已有的处理器中,或者单独设置,例如,所述的多线程执行计数设备可以设置于多线程处理器中。
本发明的述的检测系统中,所述的检测设备、数据存储设备及多线程处理器计数设备可以根据需要进行集中或分散设置,例如,将检测设备、数据存储设备及多线程处理器计数设备集中设置为单个器件,或者将检测设备、数据存储设备及多线程处理器计数设备其中的两种设备进行集中,与另一种设备分散设置,或者将检测设备、数据存储设备及多线程处理器计数设备分别分散设置。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
Claims (10)
1、一种多线程处理器线程死锁检测的方法,其特征在于包括:
A、为多线程处理器的各个线程分别建立对应的计数器,多线程处理器每一次执行,则对应的线程的计数器进行计数;
B、定时检测多线程处理器各个线程的计数器计数值,并根据计数值确定多线种处理器是否发生线程死锁。
2、根据权利要求1所述的多线程处理器线程死锁的检测方法,其特征在于所述的步骤A还包括:
将多线程处理器的各个线程的计数器计数值保存。
3、根据权利要求1或2所述的多线程处理器线程死锁的检测方法,其特征在于所述的步骤B包括:
B1、定时检测多线程处理器各个线程的计数器计数值;
B2、判断本次检测时各个线程的计数器的计数值是否与上一次检测时对应线程的计数值相同,如果相同,执行步骤B3,否则,执行步骤B4;
B3、确定多线种处理器的相应线程发生线程死锁;
B4、确定未发生线程死锁。
4、根据权利要求1或2所述的多线程处理器线程死锁的检测方法,其特征在于所述的步骤B还包括:
保存本次检测时线程的计数器计数值与上一次检测时对应线程计数值相同的线程的本次检测时的相应线程的计数器计数值。
5、一种多线程处理器线程死锁的检测系统,其特征在于包括:
检测设备:用于定时获取数据存储设备中保存的各个线程的计数器计数值,并根据该值及其对应的上一次计数值判断是否发生线程死锁;
数据存储设备:用于保存多线程处理器的各个线程的计数器计数值;
多线程处理器计数设备:用于对多线程处理器的各个线程执行的次数进行计数,并将相应的计数值保存于数据存储设备中。
6、根据权利要求5所述的多线程处理器线程死锁的检测系统,其特征在于所述的检测设备为单独设置,或者设置于已有的处理器中。
7、根据权利要求5或6所述的多线程处理器线程死锁的检测系统,其特征在于所述的检测设备进一步包括:
历史数据存储模块:用于向线程死锁检测模块提供保存的上一次检测时的各个线程的计数器计数值,并保存本次检测过程中由数据存储设备提供的未发生线程死锁的线程的计数器计数值;
线程死锁检测模块:根据数据存储设备提供的上一次检测时的各个线程的计数器计数值,以及数据存储设备提供的本次检测的各个线程的计数器计数值确定是否发生线程死锁。
8、根据权利要求7所述的多线程处理器线程死锁的检测系统,其特征在于所述的数据存储设备为单独设置,或内置于多线程处理器或检测设备中。
9、根据权利要求8所述的多线程处理器线程死锁的检测系统,其特征在于所述的多线程执行计数设备为设置于处理器中,或者单独设置,或者与检测设备或数据存储设备集中设置为一个器件。
10、根据权利要求9所述的多线程处理器线程死锁的检测系统,其特征在于所述的多线程执行计数设备为设置于多线程处理器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101239806A CN1324478C (zh) | 2003-12-19 | 2003-12-19 | 一种多线程处理器线程死锁检测的方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101239806A CN1324478C (zh) | 2003-12-19 | 2003-12-19 | 一种多线程处理器线程死锁检测的方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1629821A true CN1629821A (zh) | 2005-06-22 |
CN1324478C CN1324478C (zh) | 2007-07-04 |
Family
ID=34844912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101239806A Expired - Fee Related CN1324478C (zh) | 2003-12-19 | 2003-12-19 | 一种多线程处理器线程死锁检测的方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1324478C (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819466A (zh) * | 2012-06-29 | 2012-12-12 | 华为技术有限公司 | 操作系统异常的处理方法及其装置 |
CN103279417A (zh) * | 2013-06-05 | 2013-09-04 | 福州瑞芯微电子有限公司 | 检测锁异常的方法与装置 |
CN103678122A (zh) * | 2013-11-29 | 2014-03-26 | 华为技术有限公司 | 一种死锁检测方法、设备及系统 |
CN103761182A (zh) * | 2013-12-26 | 2014-04-30 | 上海华为技术有限公司 | 一种死锁检测方法及装置 |
CN104636259A (zh) * | 2015-03-18 | 2015-05-20 | 厦门雅迅网络股份有限公司 | 一种基于运行期动态跟踪的函数执行超时与死锁检测方法 |
CN107247630A (zh) * | 2017-06-05 | 2017-10-13 | 努比亚技术有限公司 | 线程检测方法、终端及计算机可读存储介质 |
WO2017206901A1 (zh) * | 2016-05-31 | 2017-12-07 | 广东欧珀移动通信有限公司 | 进程控制方法及相关设备 |
CN109271298A (zh) * | 2018-11-19 | 2019-01-25 | 武汉达梦数据库有限公司 | 一种数据库无响应故障的检测方法 |
CN111090528A (zh) * | 2019-12-25 | 2020-05-01 | 北京天融信网络安全技术有限公司 | 死锁确定方法、装置及电子设备 |
CN113407414A (zh) * | 2021-06-24 | 2021-09-17 | 厦门科灿信息技术有限公司 | 程序运行监测方法、装置、终端及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5016167A (en) * | 1987-12-21 | 1991-05-14 | Amdahl Corporation | Resource contention deadlock detection and prevention |
US6782537B1 (en) * | 1999-09-23 | 2004-08-24 | International Business Machines Corporation | Establishing a communicator across multiple processes in a multithreaded computing environment |
US6631009B1 (en) * | 1999-09-24 | 2003-10-07 | Xerox Corporation | Avoiding deadlock situations in a printing system using a locking time-out mechanism |
US6898617B2 (en) * | 1999-11-18 | 2005-05-24 | International Business Machines Corporation | Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations by dynamically altering eligible thread pools |
-
2003
- 2003-12-19 CN CNB2003101239806A patent/CN1324478C/zh not_active Expired - Fee Related
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819466A (zh) * | 2012-06-29 | 2012-12-12 | 华为技术有限公司 | 操作系统异常的处理方法及其装置 |
CN102819466B (zh) * | 2012-06-29 | 2015-08-19 | 华为技术有限公司 | 操作系统异常的处理方法及其装置 |
CN103279417A (zh) * | 2013-06-05 | 2013-09-04 | 福州瑞芯微电子有限公司 | 检测锁异常的方法与装置 |
CN103678122A (zh) * | 2013-11-29 | 2014-03-26 | 华为技术有限公司 | 一种死锁检测方法、设备及系统 |
CN103678122B (zh) * | 2013-11-29 | 2016-03-30 | 华为技术有限公司 | 一种死锁检测方法、设备及系统 |
CN103761182A (zh) * | 2013-12-26 | 2014-04-30 | 上海华为技术有限公司 | 一种死锁检测方法及装置 |
CN104636259A (zh) * | 2015-03-18 | 2015-05-20 | 厦门雅迅网络股份有限公司 | 一种基于运行期动态跟踪的函数执行超时与死锁检测方法 |
CN104636259B (zh) * | 2015-03-18 | 2020-05-22 | 厦门雅迅网络股份有限公司 | 一种基于运行期动态跟踪的函数执行超时与死锁检测方法 |
WO2017206901A1 (zh) * | 2016-05-31 | 2017-12-07 | 广东欧珀移动通信有限公司 | 进程控制方法及相关设备 |
US10719351B2 (en) | 2016-05-31 | 2020-07-21 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for controlling states of processes and related device |
US10754684B2 (en) | 2016-05-31 | 2020-08-25 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for controlling process and related device |
CN107247630A (zh) * | 2017-06-05 | 2017-10-13 | 努比亚技术有限公司 | 线程检测方法、终端及计算机可读存储介质 |
CN109271298A (zh) * | 2018-11-19 | 2019-01-25 | 武汉达梦数据库有限公司 | 一种数据库无响应故障的检测方法 |
CN111090528A (zh) * | 2019-12-25 | 2020-05-01 | 北京天融信网络安全技术有限公司 | 死锁确定方法、装置及电子设备 |
CN111090528B (zh) * | 2019-12-25 | 2023-09-26 | 北京天融信网络安全技术有限公司 | 死锁确定方法、装置及电子设备 |
CN113407414A (zh) * | 2021-06-24 | 2021-09-17 | 厦门科灿信息技术有限公司 | 程序运行监测方法、装置、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN1324478C (zh) | 2007-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1801106A (zh) | 用于计算机系统中的多个分区的错误监视的方法 | |
CN1324478C (zh) | 一种多线程处理器线程死锁检测的方法及其系统 | |
DE102012210232B4 (de) | Vorbeugende Speicherreparatur auf der Grundlage der Analyse einer Vielzahl von Symbolen und Bereinigungszyklen | |
US9495199B2 (en) | Management of bottlenecks in database systems | |
CN108021487B (zh) | 一种gpu图形处理性能监测与分析方法 | |
CN1902598A (zh) | 基于动态性能监控的存储器管理方法 | |
CN1141644C (zh) | 一种嵌入处理机内存的检测和监控方法 | |
CN1808386A (zh) | 处理多线程/多任务/多处理器的方法 | |
CN105243004A (zh) | 一种故障资源检测方法及装置 | |
CN1109976C (zh) | 监视计时器系统 | |
CN1932772A (zh) | 一种隔离总线故障的方法、装置与一种单板 | |
DE112020000146T5 (de) | Handhabung einer eingabe-/ausgabe-speicheranweisung | |
CN1851826A (zh) | 随机存储器失效的检测处理方法及其系统 | |
CN1776644A (zh) | 一种基于有限状态机的对内存变量改写进行监控的方法 | |
US8499074B2 (en) | Method and apparatus for accessing files stored in a storage access network (SAN) or network attached storage (NAS) | |
CN1740983A (zh) | 进程管理系统 | |
CN1924810A (zh) | 一种业务进程的分布式分优先级监控方法 | |
CN1252140A (zh) | 采用存储器监视信号出现预定断点条件的数字电路 | |
CN1400529A (zh) | 一种实时嵌入系统的故障定位方法 | |
CN1477512A (zh) | 嵌入式软件任务死循环监控方法 | |
CN101048754A (zh) | 在多处理器系统中从至少一个数据源分配数据的方法和设备 | |
CN101055556A (zh) | 一种多cpu系统及cpu之间消息传递的方法 | |
CN1581100A (zh) | 一种用于网络处理器的数据老化方法 | |
CN1786926A (zh) | 一种处理器中使用缓存区的方法 | |
CN1756377A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070704 Termination date: 20151219 |
|
EXPY | Termination of patent right or utility model |