一种中断处理方法和装置转让专利

申请号 : CN200910148428.X

文献号 : CN101587448B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王江

申请人 : 华为技术有限公司

摘要 :

本发明的实施例提供了一种中断处理方法,包括:接收内核发送的中断信息;依据中断信息中包含的中断标识调用与中断标识对应的中断处理程序处理中断,所述预置中断处理程序按照与中断标识对应的方式存储在内核外的预设空间中。与现有技术相比,本发明的实施例中,将中断处理程序存储在内核之外的预设空间中,当系统需要调用中断处理程序的时候可以通过进程中的中断任务代理调用中断处理程序,解决了现有技术的不足。

权利要求 :

1.一种中断处理方法,其特征在于,包括:

内核将各个进程自身能够处理的中断信息和中断信息对应的进程标识存储在内核中预设位置;

内核依据中断的中断信息从内核的预设位置中查找能处理该中断信息的进程;

所述被查找到的进程接收内核发送的该中断信息;

依据中断信息中包含的中断标识调用与中断标识对应的中断处理程序处理中断,所述中断处理程序按照与中断标识对应的方式存储在操作系统的内核外的预设空间中。

2.根据权利要求1所述的方法,其特征在于,在内核将各个进程自身能够处理的中断信息和中断信息对应的进程标识存储在内核中预设位置之前还包括:各个进程将自身能够处理的中断信息和所述中断信息对应的进程标识发送给内核。

3.根据权利要求1或2所述的方法,其特征在于,所述中断标识为中断的中断向量号;

所述中断处理程序按照与中断向量号对应的方式存储。

4.根据权利要求2所述的方法,其特征在于:各个进程通过中断连接函数将自身能够处理的中断信息和所述中断信息对应的进程标识发送给内核。

5.根据权利要求1所述的方法,其特征在于:所述接收内核发送的中断信息的步骤是由进程通过内核中断连接函数来实现。

6.根据权利要求1所述的方法,其特征在于,所述依据中断信息中包含的中断标识调用与中断标识对应的中断处理程序处理中断具体包括:预先在进程中建立中断任务代理;

中断任务代理依据中断信息中包含的中断标识调用与中断标识对应的中断处理程序处理中断。

7.一种中断处理装置,其特征在于,包括:

第一接收单元,用于接收内核发送的中断信息,所述内核预先将各个进程自身能够处理的中断信息和中断信息对应的进程标识存储在内核中预设位置,并依据中断的中断信息从内核的预设位置中查找能处理该中断信息的进程,并将该中断信息发送到该能处理该中断信息的进程中的中断处理装置;

调用处理单元,用于依据第一接收单元接收到的中断信息中包含的中断标识调用与中断标识对应的中断处理程序处理中断,所述中断处理程序按照与中断标识对应的方式存储在操作系统的内核外的预设空间中。

说明书 :

一种中断处理方法和装置

技术领域

[0001] 本发明涉及网络技术领域,更具体地说,涉及一种中断处理方法和装置。

背景技术

[0002] 在计算机系统中,中断是一种发生了一个外部的事件时调用相应的处理程序的过程。在计算机系统中,在响应一个特定中断的时候,内核或者进程会执行一个函数,该函数叫做中断处理程序。
[0003] 在现有的嵌入式操作系统的应用中,通常是将中断处理程序加载在内核中作为内核一部分,当进程中出现中断时,内核调用自身预存的中断处理程序来处理中断。随着操作系统的技术发展,逐步采用内核和进程分离的技术,采用这样的技术,内核不能直接调用上层软件的中断处理程序;同时随着应用环境的日益复杂,中断种类也越来越多,如果进程中出现中断,而出现的中断的类型又是内核中预存的中断处理程序无法处理的,这种情况下,现有的中断处理方法就无能为力了。因此需要提供一种能处理进程中中断的方法。

发明内容

[0004] 本发明的实施例提供了一种中断处理方法,包括:内核将各个进程自身能够处理的中断信息和中断信息对应的进程标识存储在内核中预设位置;
[0005] 内核依据中断的中断信息从内核的预设位置中查找能处理该中断信息的进程;
[0006] 该被查找到的进程接收内核发送的中断信息;依据中断信息中包含的中断标识调用与中断标识对应的中断处理程序处理中断,中断处理程序按照与中断标识对应的方式存储在操作系统的内核外的预设空间中。
[0007] 本发明的实施例提供了一种中断处理装置,包括:第一接收单元,用于接收内核发送的中断信息,该内核预先将各个进程自身能够处理的中断信息和中断信息对应的进程标识存储在内核中预设位置,并依据中断的中断信息从内核的预设位置中查找能处理该中断信息的进程,并将该中断信息发送到该能处理该中断信息的进程中的中断处理装置;调用处理单元,用于依据第一接收单元接收到的中断信息中包含的中断标识调用与中断标识对应的中断处理程序处理中断,预置中断处理程序按照与中断标识对应的方式存储在操作系统的内核外的预设空间中。
[0008] 本发明的实施例还提供的一种中断处理装置,包括:第二接收单元,用于接收各个进程发送的各个进程自身能够处理的中断信息和中断信息对应的进程标识;查找单元,用于依据中断的中断信息,从第二接收单元接收到的信息中查找能处理该中断信息的进程;发送单元,用于将中断信息发送给所述查找单元查找到的进程;以及中央处理单元。
[0009] 从上述的技术方案可以看出,与现有技术相比,本发明的实施例中,将中断处理程序存储在内核之外的预设空间中,当系统需要调用中断处理程序的时候可以通过进程中的中断任务代理调用中断处理程序,解决了现有技术的不足。另外当需要增加或修改中断处理程序的时候,只需要在预设空间中增加或者修改中断处理程序,相对于现有技术中解决同类问题需要编辑内核程序要简单许多。

附图说明

[0010] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0011] 图1为本发明方法实施例一的流程图;
[0012] 图2为本发明方法实施例二的流程图;
[0013] 图3为本发明装置实施例三的结构示意图;
[0014] 图4为本发明装置实施例四的结构示意图。

具体实施方式

[0015] 本发明实施例提供了一种中断处理方法和装置。
[0016] 为了引用和清楚起见,本文中使用的技术名词、简写或缩写总结如下:
[0017] RTP,Real-time Process,即:实时进程;
[0018] Bitmap,即:位图图像。
[0019] 在背景技术中介绍了现有技术中的不足之处,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述本发明的技术方案是如何来解决现有技术的不足的。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0020] 实施例一:
[0021] 参见图1,为本发明提供的一种中断处理方法的实施例一,实施例一从进程的角度来描述的,具体可以包括:
[0022] 步骤101,接收内核发送的中断信息;
[0023] 步骤102,依据中断信息中包含的中断标识调用与中断标识对应的中断处理程序处理中断,中断处理程序按照与中断标识对应的方式存储在内核外的预设空间中。
[0024] 实施例一中,系统中运行的进程只有一个的时候,当发生中断,则内核将中断信息发送给唯一的进程,进程调用相应的中断处理程序来处理中断。但是,实际的情况是,系统中运行的进程往往有多个,当发生中断的时候就需要内核有针对性的向相应的进程发送中断信息,内核要做出有针对性的发送判断,因此需要增加了一些步骤使得内核能够有针对性的发送中断信息,具体可以为在步骤101之前,还可以包括:
[0025] 步骤99,各个进程将自身能够处理的中断信息和所述中断信息对应的进程标识发送给内核;
[0026] 步骤100,内核依据中断的中断信息查找能处理该中断信息的进程;
[0027] 在具体实施的时候,步骤100中,内核依据中断的中断信息查找能处理该中断信息的进程,这个被查找到的进程就是实施例一的步骤101中接收内核发送的中断信息的进程,即所述接收内核发送的中断信息的进程为所述内核依据中断的中断信息查找到能处理该中断信息的进程。
[0028] 在具体实施的时候,中断标识可以为中断的中断向量号,在步骤102中,所述预置中断处理程序按照与中断标识对应的方式存储在内核外的预设空间中可以是将所述预置中断处理程序按照与中断向量号对应的方式存储。
[0029] 在上述实施例一中,中断处理程序存储在内核之外的预设空间中,当发生中断需要调用中断处理程序的时候可以通过进程中的中断任务代理调用中断处理程序,解决了现有技术中的不足。实施例一所采用的技术方案也解决了随着应用环境的日益复杂,不容易修改和编辑中断处理程序的问题,现有技术中,因为中断处理程序存储在内核里或者是作为内核的一部分,如果要修改编辑中断程序就需要修改编辑内核程序,而修改编辑内核中的中断处理程序的工作难度和工作量都比修改编辑内核外预设空间的中断处理程序要复杂很多。实施例一中的中断处理程序存储在内核外的预设空间中,当需要修改和编辑的时候只需要在预设空间中增加或者修改中断处理程序,相对于现有技术中解决同类问题需要编辑内核程序要简单许多。
[0030] 实施例一对于进程如何依据中断信息调用中断处理程序没有详细的描述,为了能更清楚的理解本发明,在下面描述中给出了进程如何依据中断信息调用对应的中断处理程序处理中断的具体实现的方式,可以包括:
[0031] 预先在进程中建立中断任务代理;中断任务代理依据中断信息调用对应的中断处理程序处理中断。
[0032] 按照上述实施例一给出的方式来实现本发明的方法在进行步骤99和步骤100的时候,可以发现每一次中断发生后或者每一次中断发生前,各个进程都需要将自身能够处理的中断信息和所述中断信息对应的进程标识发送给内核以供内核能有针对性的发送中断信息;采用这样的方式,内核可以不用存储各个进程发来的信息,节省了内核的存储空间;在内核存储空间足够大或者存储空间较空闲的情况下,也可以将各个进程发来的信息存储在内核中,免得各个进程多次的向内核发送自身能够处理的中断信息和所述中断信息对应的进程标识这些内容重复的信息,具体实现方式可以在所述的各个进程将自身能够处理的中断信息和所述中断信息对应的进程标识发送给内核之后,进一步包括:内核将各个进程自身能够处理的中断信息和中断信息对应的进程标识存储在内核中预设位置;内核依据中断的中断信息查找能处理该中断信息的进程具体为:内核依据中断的中断信息从内核的预设位置中查找能处理该中断信息的进程。
[0033] 在具体实施上述本发明方法实施例的时候,各个进程可以通过中断连接函数将各个进程将自身能够处理的中断信息和所述中断信息对应的进程标识发送给内核。进程可以通过内核中断连接函数接收内核发送的中断信息。
[0034] 下面举一个具体应用的例子以便于更好的理解上述发明的方法。以在RTP进程为例:预先将各种中断处理程序按照与中断向量号对应的方式存入到内核外的预设空间中,在实际操作中可以将各种中断处理程序保存到专门分配的中断结构控制块中;RTP进程将自身能够处理的中断信息和所述中断信息对应的进程标识发送给内核,内核将收到的上述信息存储在内核中的预设位置;在每一个RTP的进程中,建立一个中断任务代理,当有中断发生的时候,内核根据该中断对应的中断信息查找到对应的RTP进程,然后给该RTP进程中的中断任务代理发送一个中断事件信息;RTP进程中的中断任务代理不停的查询来自内核发出的中断事件信息,当接收到内核发出的中断事件信息后,通过中断事件信息的bitmap数组位置得到中断对应的中断向量号,中断任务代理依据中断向量号从预设空间中调用该中断向量号对应的中断处理程序,使用该中断处理程序来处理发生的中断。
[0035] 在上述的具体应用的例子中,进程可以通过中断连接函数将各个进程将自身能够处理的中断信息和所述中断信息对应的进程标识发送给内核。内核可以通过内核中断连接函数,例如intConnect函数,把中断产生后的中断信息发送给进程。
[0036] 在上面的实施例中介绍了如何采用本发明提供的中断处理方法来处理中断,在背景技术中还介绍了现有技术无法在进程中加载驱动,在实际应用中可以将需要加载的驱动程序看作是特殊的一种中断处理程序,将加载驱动的请求看作是一种特殊的中断。在下面的实施例二中将介绍如何采用本发明的方法来处理进程中加载驱动程序。
[0037] 实施例二:
[0038] 参见图2,在进程中加载驱动程序可以包括如下步骤:
[0039] 步骤201,将进程能够处理的驱动程序标识和驱动程序标识对应的进程标识发给内核;
[0040] 步骤202,内核接收加载请求信息,所述加载请求信息包括需要加载的驱动程序标识;
[0041] 步骤203,内核依据驱动程序标识找到对应的进程标识,将加载请求信息发送给进程标识对应的进程,该进程调用与该驱动程序标识对应的预置驱动程序来响应加载请求,所述预置驱动程序存储在内核外的预设空间中。
[0042] 在具体实施步骤202时,当有加载驱动程序的需求时,内核接收这样的请求之后,就把这个加载请求认为是一个中断。
[0043] 在实施步骤203时,进程可以调用预置驱动程序来响应内核发送的加载请求,也就是说进程可以调用预置驱动程序来满足系统需要加载驱动程序的需求。
[0044] 下面举一个具体应用的例子以便于更好的理解上述发明的方法。在具体实施的时候,预先将各种驱动程序存入到内核外的指定空间中,可以将各种驱动程序保存到专门分配的中断结构控制块中,进程将自身标识和自身能够处理的驱动程序标识通过中断连接函数发送给内核,在每一个的进程中,建立一个加载任务代理,当有加载请求发生的时候,内核通过内核中断连接函数给进程中的加载任务代理发送一个加载事件信息;进程中的加载任务代理不停的查询来自内核发出的加载事件信息,当接收到内核发出的加载事件信息后,通过加载事件信息中的驱动程序标识,从预设空间中调用该驱动程序标识对应的驱动程序。通过加载调用的驱动程序来完成处理该加载事件,完成系统加载驱动程序的请求。在将各种驱动程序预先存入到指定位置的时候每个驱动程序预设有唯一对应的驱动程序标识。采用实施例二的技术方案解决了进程中无法加载程序的问题;另外当需要增加或修改加载程序的时候,只需要在预设空间中增加或者修改加载程序就可以了,这样需要解决的只是应用程序层面上的编辑问题,相对于编辑内核程序要简单许多。之前说了可以将加载驱动程序看作一个特殊的中断来处理,因此在具体实现实施例二的时候可以相应的参见实施例一的实现方法,两个实施例最大的区别就在于进程所调用的程序不同,在实施一中是中断处理程序,在实施例二中为驱动程序。
[0045] 本发明实施例三还提供了一种中断处理装置,参见图3,包括:
[0046] 第一接收单元301,用于接收内核发送的中断信息;
[0047] 调用处理单元302,用于依据第一接收单元接收到的中断信息中包含的中断标识调用与中断标识对应的中断处理程序处理中断,中断处理程序按照与中断标识对应的方式存储在内核外的预设空间中。
[0048] 在实际应用中,可以将中断处理装置的功能软件化之后作为进程的组成部分,在采用本发明的中断处理方法处理中断过程中,第一接收单元301接收内核发送的中断信息,然后调用处理单元302依据第一接收单元301接收到的中断信息调用对应的中断处理程序处理中断,预置中断处理程序存储在内核外的预设空间中。
[0049] 本发明实施例四提供了一种中断处理装置,用于向进程发送中断信息,参见图4,包括:中央处理单元401,第二接收单元402,查找单元403,发送单元404;该中断处理装置可以作为内核的一部分,或者也可以理解为内核具有中断处理的功能模块。中央处理单元401,用于处理、运算计算机内部的所有数据,中央处理单元401可以指挥协调第二接收单元402,使第二接收单元处于接收/不接收的状态,第二接收单元402用于接收各个进程发送的各个进程自身能够处理的中断信息和中断信息对应的进程标识,在这个准备工作完成之后,当发生中断时,查找单元403依据中断的中断信息,从第二接收单元402接收到的信息中查找能处理该中断信息的进程,然后通过发送单元404将中断信息发送给所述查找单元403查找到的进程。该装置还可以包括存储单元405,存储单元405可以用于存储第二接收单元接收到的各个进程发送的各个进程自身能够处理的中断信息和中断信息对应的进程标识。在具体实施的时候,该中断装置可以设置在内核中,作为内核的一部分。
[0050] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0051] 专业人员可以理解,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0052] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,所述程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
[0053] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。