一种中断处理方法和装置的制作方法

文档序号:6334951阅读:367来源:国知局
专利名称:一种中断处理方法和装置的制作方法
技术领域
本发明涉及中断处理技术领域,特别是涉及一种中断处理方法和装置。
背景技术
中断是计算机系统实时地处理内部或外部事件的一种内部机制。当某种内部或外 部事件发生时,中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中 断处理完毕后,又返回被中断的程序处,继续执行下去。其中,所述对中断事件进行处理的 处理程序称为中断处理程序。通常地,CPU内部有一个寄存器,该寄存器存放的“二进制信息”被专门用来描述是 否已经发生了中断的中断状态,该中断状态也被称为中断标识flag,例如,flag = 0描述没 有中断,flag = 1描述有中断发生。假设照相机在拍摄完毕后,会产生中断,通知CPU将摄像数据从内存保存到存储
ο现有技术一会在第一程序里进行死循环地判断中断标识,而在中断来了之后,会 在第二程序(以下称中断函数)里修改该中断标识;直至该中断标识修改(flag = 1),所 述第一程序才会结束判断,进行中断来了之后的功能处理,对应上例,所述功能处理则是将 摄像数据从内存保存到存储器。所述第一程序进行死循环地判断中断标识,但是,中断来的时间是不定的,这样, 在所述时间很长时,所述死循环会浪费CPU资源,从而降低CPU效率。为避免CPU资源的浪费,现有技术二在中断来了之后,会在中断处理程序中修改 该中断标识,并且,根据修改后的中断标识,进行来了中断后的功能处理;这样,在中断来了 之后的功能处理时间比较长时,所以中断处理程序执行的时间就比较长;此时如果有新的 中断到来,就会丢失新的中断,因此增加了丢失中断的概率。总之,需要本领域技术人员迫切解决的一个技术问题就是如何能够节省CPU资 源,提高CPU效率。

发明内容
本发明所要解决的技术问题是提供一种中断处理方法和装置,用以节省CPU资 源,提高CPU效率。为了解决上述问题,本发明公开了一种中断处理方法,包括针对中断,建立相应的功能处理线程,所述功能处理线程建立时的初始状态为未 开启;在中断到来时,激活相应的功能处理线程;运行所述功能处理线程;在运行完毕时,将所述功能处理线程挂起或关闭。优选的,所述在中断到来时,激活相应的功能处理线程的步骤,包括
4
在当前中断对应的功能处理线程为未开启状态时,将该线程开启;或者,在当前中断对应的功能处理线程为开启状态下的挂起子状态时,将该线程唤醒。优选的,所述方法还包括设置所述功能处理线程的线程优先级;所述运行所述功能处理线程的步骤,包括根据所述线程优先级,运行多个功能处理线程。优选的,所述针对中断,建立相应的功能处理线程的步骤,包括发送操作命令,其中,所述操作命令引发某中断;建立与该中断相应的功能处理线程,并将其初始状态设置为未开启。优选的,所述在中断到来时,激活相应的功能处理线程的步骤,包括在中断线程中,修改当前中断的中断标识;激活与当前中断相应的功能处理线程;退出所述中断线程。依据另一实施例,本发明还公开了一种中断处理装置,包括线程建立模块,用于针对中断,建立相应的功能处理线程,所述功能处理线程建立 时的初始状态为未开启;线程激活模块,用于在中断到来时,激活相应的功能处理线程;线程运行模块,用于运行所述功能处理线程;及线程中止模块,用于在运行完毕时,将所述功能处理线程挂起或关闭。优选的,所述线程激活模块,具体用于在当前中断对应的功能处理线程为未开启 状态时,将该线程开启;或者,在当前中断对应的功能处理线程为开启状态下的挂起子状态 时,将该线程唤醒。优选的,所述装置还包括优先级设置模块,用于设置所述功能处理线程的线程优先级;所述线程运行模块,具体用于根据所述线程优先级,运行多个功能处理线程。优选的,所述线程建立模块包括发送单元,用于发送操作命令,其中,所述操作命令引发某中断;建立单元,用于建立与该中断相应的功能处理线程,并将其初始状态设置为未开
启ο优选的,所述线程激活模块包括修改单元,用于在中断线程中,修改当前中断的中断标识;激活单元,用于激活与当前中断相应的功能处理线程;退出单元,用于退出所述中断线程。与现有技术相比,本发明具有以下优点本发明针对可能的中断,建立相应的功能处理线程,其中,所述功能处理线程建立 时的初始状态为未开启。由于所述功能处理线程,只有在中断到来时才被激活进行相应的 中断处理,并在处理完毕后被挂起或关闭,而未开启、挂起或关闭状态的线程无需CPU干 预,因而可以节省CPU资源,提高CPU使用效率;
5
再者,在中断到来时,由于在中断线程中,只需执行如下两个操作修改当前中断 的中断标识flag,以及,激活与当前中断相应的功能处理线程,故执行速度很快;由于中断 线程的处理时间越短,中断丢失的概率越小,因此,相对于现有技术二,本发明可以大大降 低中断丢失的概率。


图1是本发明一种中断处理方法实施例的流程图;图2是本发明一种中断处理方法应用示例的流程图;图3是本发明一种中断处理装置实施例的结构图。
具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本发明作进一步详细的说明。参照图1,示出了本发明一种中断处理方法实施例的流程图,具体可以包括步骤101、针对中断,建立相应的功能处理线程,所述功能处理线程建立时的初始 状态为未开启;本发明实施例可以适用于各种中断的处理,例如,其可以是时钟中断、操作员控制 台中断、多处理机系统中CPU到CPU之间的通信中断等各种外部中断,也可以是硬件出错 (如突然掉电、奇偶校验错等)、运算出错(除数为零、运算溢出、单步中断等)所引起的内 部中断,等等。应用本发明实施例,在具体实现中,可针对各种可能到来的中断,建立相应的功能 处理线程,并将其初始状态设置为未开启,由于未开启的线程无需CPU干预,故不会占用 CPU资源。例如,如果用户欲执行“抓图操作”,会向CPU发送“抓图操作”请求,此时,CPU可 根据实际情况配置“抓图操作”的相关参数,并发送相关的操作命令;由芯片根据该操作命 令执行相关抓图功能,并在完成该功能后,触发相应功能对应的中断。假设该中断是通知 CPU “抓图操作”执行完毕,需要CPU来将抓图数据从内存保存到存储器,并回到系统预设的 状态,如预览状态等。所述“抓图操作”引发了芯片中断,这里,芯片只是作为示例,本发明 对具体的中断源不加以限制。因此,在本发明的一种优选实施例中,可以根据实际情况,判断中断的到来,具体 而言,所述步骤101可以包括子步骤A1、发送操作命令,其中,所述操作命令可以引发某中断;子步骤A2、建立与该中断相应的功能处理线程,并将其初始状态设置为未开启。所述功能处理线程用于进行中断事件的处理;对应上例,则是将抓图数据从内存 保存至存储器,并回到系统预设的状态,如预览状态等。步骤102、在中断到来时,激活相应的功能处理线程;应用本发明实施例,可采用中断线程激活所述功能处理线程,相应地,所述步骤 102具体可以包括子步骤B1、在中断线程中,修改当前中断的中断标识;
子步骤B2、激活与当前中断相应的功能处理线程;子步骤B3、退出所述中断线程。在中断到来时,由于在中断线程中,只需执行如下两个操作修改当前中断的中断 标识flag,以及,激活与当前中断相应的功能处理线程,所以执行速度很快,因而,相对于现 有技术二,本发明实施例可以迅速退出中断线程,从而降低中断丢失的概率。步骤103、运行所述功能处理线程;在激活所述功能处理线程后,即可运行该线程,以进行中断处理。一旦线程开始运 行,它不需要始终保持运行。事实上,线程在运行过程中有时需要被中断,目的是使其他线 程获得运行的机会,这就是线程调度。线程调度的细节取决于操作系统所提供的服务。例如,抢占式调度的系统给每个 可运行的线程一个时间片来处理任务。当这个时间片用完时,操作系统剥夺该线程对资源 的占用,使其他线程有机会运行。在选择下一个线程时,操作系统会考虑线程的优先级。又 如,分时调度的系统让所有的线程轮流获得CPU的使用权,并且平均分配每个线程占用的 CPU的时间片。在本发明的一种优选实施例中,为实现所述抢占式调度,还可以设置所述功能处 理线程的线程优先级;所述线程优先级为各功能处理线程的接受系统资源的优先等级的参数。在实际 中,可按一定的要求对它指定优先级例如,按功能处理线程的的性质或其长度,或是按所 述功能处理线程的来源等;具体地,所述来源可以包括所述功能处理线程的重要程度,例 如,可以是与其相应的中断的优先级等;本发明具体的线程优先级的设置方式不加以限制。例如,所述线程优先级从高到低分别为1、2、3、4、5。这里,所述线程优先级可与中 断优先级相应,也即,线程优先级1对应中断优先级1 ;或者,可以单独设置某个功能处理线 程的线程优先级,本发明对此不加以限制。这样,本发明实施例可根据所述线程优先级,运行多个功能处理线程。在本发明的一种应用示例中,所述运行步骤具体可以包括子步骤CI、TO时亥lj,中断1到来,步骤102激活与中断1相应的功能处理线程1, 并且,步骤103运行功能处理线程1 ;子步骤C2、T0+2时刻,中断2到来,步骤102激活与中断2相应的功能处理线程 2 ;子步骤C3、调度器检查功能处理线程2的优先级是否高于当前运行的功能处理线 程1,如果是,则功能处理线程2抢占当前线程的资源并开始运行,否则,等待当前线程运行 完毕后运行。对于2个以上功能处理线程的运行,由于其与2个功能处理线程的运行过程相似, 故在此不作赘述,具体参照即可。步骤104、在运行完毕时,将所述功能处理线程挂起或关闭。在当前功能处理线程运行完毕时,本领域技术人员可以根据实际需要,对该线程 进行处理,以释放运行时占用的CPU资源例如,如果与该线程相应的中断还有可能到来, 则将其挂起,否则,与该线程相应的中断不再到来,或者,到来的概率比较小,则直接将其删 除。
可以理解,对于删除的功能处理线程,如果将来还有相应的中断发生,步骤101则 可以重新建立该线程,本发明对其不加以限制。另外,在本发明的一种优选实施例中,所述步骤102可以包括两种情形情形1、本情形针对新建立的功能处理线程,具体而言,在当前中断对应的功能处理线程 为未开启状态时,将该线程开启;情形2、本情形针对已被使用过的功能处理线程,也即,在当前中断对应的功能处理线程 为开启状态下的挂起子状态时,将该线程唤醒。本发明具有如下优点1)针对可能的中断,建立相应的功能处理线程,并设置其初始状态为未开启,这 样,当中断到来时,只需激活相应的功能处理线程,并在所述功能处理线程运行完毕时,将 其挂起或关闭。由于未开启、挂起或关闭状态的线程无需CPU干预,因而可以节省CPU资源, 提高CPU使用效率;2)在中断到来时,由于在中断线程中,只需执行如下两个操作修改当前中断的 中断标识flag,以及,激活与当前中断相应的功能处理线程,所以执行速度很快,因而,相对 于现有技术二,本发明实施例可以迅速退出中断线程,从而降低中断丢失的概率。 为使本领域技术人员更好地理解本发明,以下结合示例进一步说明,所述示例涉 及,对“抓图操作”引发的中断进行处理,参照图2,具体可以包括步骤201、发送“抓图操作”命令,其中,所述操作命令可以引发数据保存中断;步骤202、建立与所述数据保存中断相应的功能处理线程,并将其初始状态设置为 未开启;步骤203、硬件根据“抓图操作”命令,执行相应的功能,并在执行完毕时触发所述 数据保存中断;步骤204、在所述数据保存中断到来时,中断线程修改该中断的中断标识;步骤205、中断线程判断所述功能处理线程是否IsAlive (开启),如果为False,即 表示该线程未开启,则执行步骤206 ;如果为True,即表示该线程开启,则执行步骤207 ;步骤206、将所述功能处理线程Start (开启);步骤207、若所述功能处理线程的ThreadState (线程状态)为Suspended (挂起), 则将该线程Resume (唤醒);步骤208、退出所述中断线程;步骤209、运行所述功能处理线程;步骤210、在运行完毕时,将所述功能处理线程挂起(Suspend)或关闭。对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是 本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些 步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述 的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。与前述方法实施例相应,本发明还公开了一种中断处理装置,参照图3,具体可以 包括
线程建立模块301,用于针对中断,建立相应的功能处理线程,所述功能处理线程 建立时的初始状态为未开启;线程激活模块302,用于在中断到来时,激活相应的功能处理线程;线程运行模块303,用于运行所述功能处理线程 ’及线程中止模块304,用于在运行完毕时,将所述功能处理线程挂起或关闭。在本发明的一种优选实施例中,可以根据实际情况,判断中断的到来,具体而言, 所述线程建立模块301具体可以包括发送单元,用于发送操作命令,其中,所述操作命令引发某中断;及建立单元,用于建立与该中断相应的功能处理线程,并将其初始状态设置为未开
启o在本发明实施例中,优选的,所述线程激活模块302,可具体用于在当前中断对应 的功能处理线程为未开启状态时,将该线程开启;或者,在当前中断对应的功能处理线程为 开启状态下的挂起子状态时,将该线程唤醒。在本发明的另一种优选实施例中,所述装置还可以包括优先级设置模块,用于设置所述功能处理线程的线程优先级;所述线程运行模块303,可具体用于根据所述线程优先级,运行多个功能处理线 程。在本发明的再一种优选实施例中,可采用中断线程激活所述功能处理线程,相应 地,所述线程激活模块302可以进一步包括修改单元,用于在中断线程中,修改当前中断的中断标识;激活单元,用于激活与当前中断相应的功能处理线程;及退出单元,用于退出所述中断线程。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与 其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例 而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部 分说明即可。以上对本发明所提供的一种中断处理方法和装置,进行了详细介绍,本文中应用 了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解 本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具 体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明 的限制。
权利要求
一种中断处理方法,其特征在于,包括针对中断,建立相应的功能处理线程,所述功能处理线程建立时的初始状态为未开启;在中断到来时,激活相应的功能处理线程;运行所述功能处理线程;在运行完毕时,将所述功能处理线程挂起或关闭。
2.如权利要求1所述的方法,其特征在于,所述在中断到来时,激活相应的功能处理线 程的步骤,包括在当前中断对应的功能处理线程为未开启状态时,将该线程开启; 或者,在当前中断对应的功能处理线程为开启状态下的挂起子状态时,将该线程唤醒。
3.如权利要求1或2所述的方法,其特征在于,还包括 设置所述功能处理线程的线程优先级;所述运行所述功能处理线程的步骤,包括 根据所述线程优先级,运行多个功能处理线程。
4.如权利要求1或2所述的方法,其特征在于,所述针对中断,建立相应的功能处理线 程的步骤,包括发送操作命令,其中,所述操作命令引发某中断; 建立与该中断相应的功能处理线程,并将其初始状态设置为未开启。
5.如权利要求1或2所述的方法,其特征在于,所述在中断到来时,激活相应的功能处 理线程的步骤,包括在中断线程中,修改当前中断的中断标识; 激活与当前中断相应的功能处理线程; 退出所述中断线程。
6.一种中断处理装置,其特征在于,包括线程建立模块,用于针对中断,建立相应的功能处理线程,所述功能处理线程建立时的 初始状态为未开启;线程激活模块,用于在中断到来时,激活相应的功能处理线程; 线程运行模块,用于运行所述功能处理线程;及 线程中止模块,用于在运行完毕时,将所述功能处理线程挂起或关闭。
7.如权利要求6所述的装置,其特征在于,所述线程激活模块,具体用于在当前中断对 应的功能处理线程为未开启状态时,将该线程开启;或者,在当前中断对应的功能处理线程 为开启状态下的挂起子状态时,将该线程唤醒。
8.如权利要求6或7所述的装置,其特征在于,还包括 优先级设置模块,用于设置所述功能处理线程的线程优先级;所述线程运行模块,具体用于根据所述线程优先级,运行多个功能处理线程。
9.如权利要求6或7所述的装置,所述线程建立模块包括 发送单元,用于发送操作命令,其中,所述操作命令引发某中断;建立单元,用于建立与该中断相应的功能处理线程,并将其初始状态设置为未开启。
10.如权利要求6或7所述的装置,其特征在于,所述线程激活模块包括 修改单元,用于在中断线程中,修改当前中断的中断标识; 激活单元,用于激活与当前中断相应的功能处理线程; 退出单元,用于退出所述中断线程。
全文摘要
本发明提供了一种中断处理方法和装置,其中的方法具体包括针对中断,建立相应的功能处理线程,所述功能处理线程建立时的初始状态为未开启;在中断到来时,激活相应的功能处理线程;运行所述功能处理线程;在运行完毕时,将所述功能处理线程挂起或关闭。本发明用以节省CPU资源,提高CPU效率。
文档编号G06F9/48GK101976206SQ20101052978
公开日2011年2月16日 申请日期2010年10月28日 优先权日2010年10月28日
发明者冯备战 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1