一种多线程处理器线程死锁检测的方法及其系统技术方案

技术编号:2862438 阅读:270 留言:0更新日期:2012-04-11 18:40
一种多线程处理器线程死锁检测的方法,其特征在于包括:    A、为多线程处理器的各个线程分别建立对应的计数器,多线程处理器每一次执行,则对应的线程的计数器进行计数;    B、定时检测多线程处理器各个线程的计数器计数值,并根据计数值确定多线种处理器是否发生线程死锁。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及一种多线程处理器线程死锁检测的方法及其系统
技术介绍
随着计算机技术的发展,多线程处理器的技术应用目前已经非常广泛;所述的线程是指程序的一次执行过程,所述的多线程则是指同一个程序能有几个并发执行的路径,这些线程共享内存地址空间,可以并发异步执行。根据处理器厂家的设计不同,处理器的多线程的设计可以由硬件设计支持,也可由软件设计实现,无论哪一种最终还是以提高系统资源利用率和提高处理性能为目的。所以多线程技术的应用大大提高了计算机系统资源的利用率,同时也提高了系统的执行和处理的速度。但是,在多线程技术的应用中线程死锁是一个非常致命的问题。所述的线程死锁是指两个或两个以上的线程中每个都在等待其中另一个线程释放资源而被封锁,它们都无法向前推进,这种现象便是线程死锁。线程死锁通常都会导致整个系统瘫痪。触发线程死锁的因素很多,有软件程序本身的设计问题,也有处理器本身的硬件设计问题。为避免线程死锁对整个系统造成重大影响,提高系统的健壮性,需要有一个行之有效的检测方法检测线程死锁,以及时发现线程死锁,并采用相应的技术手段进行调整,避免系统运行状态的进一步恶化。基于上述需要,目前通常采用上报消息包的方式实时监测是否发生线程死锁现象。具体的处理过程为各个线程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本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:马辉李志同吴向斌张振华黄伟才李珲毕连柱
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1
相关领域技术
  • 暂无相关专利