处理多线程/多任务/多处理器的方法技术

技术编号:2851245 阅读:193 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种处理多线程/多任务/多处理器的方法,使用本发明专利技术,首先检查线程/任务/处理器是否处于运行状态;然后将未处于运行状态的所述线程/任务/处理器进行异常处理,本发明专利技术在每次运行监控级线程/进程时,增加了判断被监控线程、任务是否处于运行状态的步骤,通过该步骤,能够及时了解到各个线程/进程的当前状态,进而作出相应的处理。

【技术实现步骤摘要】

本专利技术涉及计算机领域,具体涉及计算机中单/多处理器对于多线程/多任务的处理方法。
技术介绍
随着计算机运算速度的飞速增长,出现了很多多处理器、多线程、多任务的计算机系统,即由多个处理器并行工作,或者在一个处理器中多个独立的任务或者线程并行工作。目前的计算机操作系统大都是支持多任务的,基于该功能所提供的多任务空间,程序员可以完全控制应用程序中每个片段的运行,从而编写出高效的应用程序。通常,对于多处理器系统,存在多个并行运行的处理器,各个处理器中的最高优先级的任务处理一般是无限循环的,例如不断的检查各个中断源、定时器、或者接口消息等;对于单处理器多线程的情况,其各个线程/任务一般也是无限循环的。目前处理多线程/多任务的方法是,系统检查各个处理器的系统时钟,判断是否到达各中断源、定时器、或者接口消息的运行时间,然后同时运行到达运行时间的多个线程/任务。但是当多个线程/多个任务/多个处理器同时运行时,经常出现由于某个线程/任务出现故障而影响其他线程/任务执行的情况。任务或者线程一般有休眠态、运行态、挂起态和就绪态等,操作系统或者其他软件或许可以判断某个任务/线程处于某种状态,但是除运行状态之外,其他的状态无法判断它是否能够到达正常运行状态。如果因为某些原因,某些线程或者任务再也无法运行,没有相应的手段可以检测出来。因此无法及时了解各个线程/任务的状态,从而无法及时的作出相应的处理。
技术实现思路
本专利技术要解决的技术问题在于提供一种处理多线程/多任务的方法,能够及时监测各个线程/任务/处理器的工作状态,以便采取相应的措施保证系统的正常运行。为解决上述技术问题,本专利技术提供一种,包括步骤1)检查线程/任务/处理器是否处于运行状态;2)将未处于运行状态的所述线程/任务/处理器进行异常处理。其中,步骤1)判断所述线程/任务/处理器是否处于运行状态的过程具体为若所述线程/任务/处理器到达运行时刻,则将系统时间进行存储;判断当前线程/任务/处理器存储的系统时间与其前次存储的系统时间是否相同;若相同,则判断该线程/任务未处于运行状态。其中,步骤1)判断所述线程/任务/处理器是否处于运行状态的过程还可以具体为若所述线程/任务/处理器到达运行时刻,则将运行次数进行存储;判断当前保存的运行次数与前次保存过的运行次数是否相同,若相同,则判断该线程/任务/处理器未处于运行状态。其中,按照下述步骤保存所述系统时间为被监控的线程/任务/处理器分配存储器;被监控的线程/任务/处理器将所述系统时间存入上述所述存储器;为最高优先级线程/任务/处理器分配临时存储器;最高优先级线程/任务/处理器读取被监控的线程/任务/处理器对应的存储器到临时存储器;其中,按照下述步骤保存所述运行次数为被监控的线程/任务/处理器分配存储器;被监控的线程/任务/处理器将所述运行次数存入上述所述存储器; 为最高优先级线程/任务/处理器分配临时存储器;最高优先级线程/任务/处理器读取被监控的线程/任务/处理器对应的存储器到临时存储器;另外,所述步骤还包括被监控的线程/任务/处理器更新所述系统时间;或者还包括被监控的线程/任务/处理器更新所述运行次数。其中,步骤3)所述异常处理包括产生告警、复位发生故障的处理器、杀死和重启故障线程/任务/多处理器。与现有技术相比,本专利技术的有益效果是本专利技术在每次运行监控级线程/进程时,增加了判断被监控线程、任务是否处于运行状态的步骤,通过该步骤,能够及时了解到各个线程/进程的当前状态,进而作出相应的处理。另外,本专利技术通过在优先级最高的线程/任务中保存每次运行线程/任务的系统时间,或者通过在优先级最高的线程/任务中保存线程/任务的运行次数的方法,判断到达运行时间的线程/任务是否处于运行状态。如果利用在优先级最高的线程/任务中保存每次运行线程/任务的系统时间的方法检测各线程/任务的工作状态,则当发生故障时能够获悉发生故障时的系统时间,如果多个模块出现故障,可以借此知道故障的时间顺序,从而方便了问题定位。附图说明图1是本专利技术中被监控的线程/任务/处理器的流程图;图2是本专利技术中监控级线程/任务/处理器的工作流程示意图。具体实施例方式在现代的计算机中,CPU的处理速度越来越快,但是因为物理限制,外部设备甚至内存的读写速度远远低于CPU的速度,因此很多情况下,需要CPU等待某操作后才能完成后续操作,在此过程中,可以运行其他的线程或者任务,出现线程或者任务的切换。如果因为某些原因(硬件故障或者软件问题),线程或者任务再也不能切换回来,那么,就会有线程或者任务处于吊死状态。当处理器存在多个由硬件进行切换的独立运行的程序实例时,称为多线程的系统,各个线程共享一个处理器,但是使用不同的硬件资源,即运行不同的上下文;当只有一个处理器,且只能通过操作系统进行切换时,称为多任务的系统,各个任务共享一个处理器,但是只能同时运行一个实例;对于存在多个硬件上独立的CPU的情况,属于分布式多处理器系统,一般有主处理器和从处理器之分,各个处理器可以是多任务或者多线程工作方式。主处理器需要监控其他处理器的工作。本专利技术提供了一种,能够及时检测各个处理器或线程/任务的工作状态,以便采取相应的措施保证系统的正常运行。使用本专利技术时,首先检查线程/任务/处理器是否处于运行状态;然后将未处于运行状态的所述线程/任务/处理器进行异常处理。本专利技术中最高优先级任务或者线程或处理器对其他任务/线程/处理器进行监控。检查线程/任务/处理器是否到达运行时刻。一般可以采用定时器定期触发的方式,对于判断到达运行时刻的线程/任务/处理器是否处于运行状态的方法可以为最高优先级任务/线程/处理器分配一段存储器,在足够大的时间内(根据实际情况定,需要考虑各个线程或任务的调度周期,例如1秒),检查各个线程/任务/处理器对应的存储器值是否变化;若判断结果为是,则各个线程/任务/处理器运行正常;否则,可以判断线程/任务/处理器的运行异常。为了保证判断的可靠性,可以连续检测N次(例如3),如果连续N次均不变化,可以确认线程/任务/处理器故障,应该进行异常处理。本专利技术提供了两种判断被监控的线程/任务是否处于运行状态的方法,一种是为被监控的线程/任务/处理器分配存储器;被监控的线程/任务/处理器将所述系统时间存入上述所述存储器;然后为最高优先级线程/任务/处理器分配临时存储器;最高优先级线程/任务/处理器读取被监控的线程/任务/处理器对应的存储器到临时存储器,然后将当前时刻与保存过的系统时间进行比较,通过判断当前时刻与线程/任务/处理器前次保存的系统时间是否相同,来判断该线程/任务是否处于运行状态。另一种方法是为被监控的线程/任务/处理器分配存储器;被监控的线程/任务/处理器将所述运行次数存入上述所述存储器;为最高优先级线程/任务/处理器分配临时存储器;最高优先级线程/任务/处理器读取被监控的线程/任务/处理器对应的存储器到临时存储器;然后根据当前运行次数与保存过的运行次数,判断该线程/任务是否处于运行状态。当检测到故障时,则进行异常处理,异常处理包括产生告警、复位发生故障的处理器、杀死和重启故障线程/任务。以下是本专利技术涉及的具体工作原理一般来说,对于多处理器系统,存在多个并行运行的处理器,各个处理器中的最高优本文档来自技高网...

【技术保护点】
一种处理多线程/多任务/多处理器的方法,其特征在于,包括步骤:1)检查线程/任务/处理器是否处于运行状态;2)将未处于运行状态的所述线程/任务/处理器进行异常处理。

【技术特征摘要】
1.一种处理多线程/多任务/多处理器的方法,其特征在于,包括步骤1)检查线程/任务/处理器是否处于运行状态;2)将未处于运行状态的所述线程/任务/处理器进行异常处理。2.根据权利要求1所述的处理多线程/多任务/多处理器的方法,其特征在于,步骤1)判断所述线程/任务/处理器是否处于运行状态的过程具体为若所述线程/任务/处理器到达运行时刻,则将系统时间进行存储;判断当前线程/任务/处理器存储的系统时间与其前次存储的系统时间是否相同;若相同,则判断该线程/任务未处于运行状态。3.根据权利要求1所述的处理多线程/多任务/多处理器的方法,其特征在于,步骤1)判断所述线程/任务/处理器是否处于运行状态的过程具体为若所述线程/任务/处理器到达运行时刻,则将运行次数进行存储;判断当前保存的运行次数与前次保存过的运行次数是否相同,若相同,则判断该线程/任务/处理器未处于运行状态。4.根据权利要求2所述的处理多线程/多任务/多处理器的方法,其特征在于,按照下述步骤保存所述系统时间为被监控的线程/任务/处理器分配存储器;被监控的线程/任务/处...

【专利技术属性】
技术研发人员:邱伟民
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

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

1