CN113010275B - 一种中断处理方法和装置 - Google Patents
一种中断处理方法和装置 Download PDFInfo
- Publication number
- CN113010275B CN113010275B CN201911329835.0A CN201911329835A CN113010275B CN 113010275 B CN113010275 B CN 113010275B CN 201911329835 A CN201911329835 A CN 201911329835A CN 113010275 B CN113010275 B CN 113010275B
- Authority
- CN
- China
- Prior art keywords
- task
- register
- interrupt
- current user
- register context
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 8
- 238000000034 method Methods 0.000 claims description 46
- 238000000605 extraction Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种中断处理方法和装置,应用于具有操作系统的设备,所述设备设置有CPU;所述CPU具有任务管理器和寄存器;所述任务管理器包括第一任务管理器;包括:当所述CPU接收到中断信号时,确定处于运行状态的当前用户态任务;停止运行所述当前用户态任务;从所述寄存器中提取所述当前用户态任务对应的第一寄存器上下文;将所述第一寄存器上下文,保存在所述第一任务管理器中;确定所述中断信号对应的中断接收任务;获取所述中断接收任务的第二寄存器上下文;将所述第二寄存器上下文保存在所述寄存器中;采用所述第二寄存器上下文运行所述中断接收任务。从而不会产生非预期的任务切换,可以快速、可靠地响应中断信号。
Description
技术领域
本发明涉及信号处理技术领域,特别是涉及一种中断处理方法和一种中断处理装置。
背景技术
由于需要限制不同的程序之间的访问能力,防止他们获取别的程序的内存数据,或者获取外围设备的数据,并发送到网络,CPU划分出两个权限等级:用户态和内核态。
所有的用户程序都是运行在操作系统的用户态,但当硬件产生中断的时候,需要在操作系统的内核态运行中断服务程序,中断服务程序需要唤醒用户态的中断接收任务。待中断接收任务执行完毕后,再返回断点继续执行原来的程序。
现有的操作系统中内核态中断服务程序唤醒用户态中断接收任务的这一操作不是实时的,在此过程中,会发生多次任务调度操作,进而产生非预期的任务切换。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种中断处理方法和相应的一种中断处理装置。
为了解决上述问题,本发明实施例公开了一种中断处理方法,所述方法应用于具有操作系统的设备,所述设备设置有CPU;所述CPU具有任务管理器和寄存器;所述任务管理器包括第一任务管理器;所述的方法包括:
当所述CPU接收到中断时,确定处于运行状态的当前用户态任务;
停止运行所述当前用户态任务;
从所述寄存器中提取所述当前用户态任务对应的第一寄存器上下文;
将所述第一寄存器上下文,保存在所述第一任务管理器中;
确定所述中断信号对应的中断接收任务;
获取所述中断接收任务的第二寄存器上下文;
将所述第二寄存器上下文保存在所述寄存器中;
采用所述第二寄存器上下文运行所述中断接收任务。
可选地,所述的方法还包括:
当所述中断接收任务运行完成时,继续运行所述当前用户态任务。
可选地,所述继续运行所述当前用户态任务的步骤,包括:
清除所述寄存器中的所述第二寄存器上下文;
将所述第一任务管理器中的所述第一寄存器上下文,保存至所述寄存器中;
采用所述第一寄存器上下文,运行所述当前用户态任务。
可选地,所述任务管理器还包括第二任务管理器;所述获取所述中断接收任务的第二寄存器上下文的步骤,包括:
从所述第二任务管理器中,获取所述中断接收任务的第二寄存器上下文。
本发明实施例还公开了一种中断处理装置,所述的装置包括:
当前用户态任务确定模块,用于当所述CPU接收到中断时,确定处于运行状态的当前用户态任务;
停止模块,用于停止运行所述当前用户态任务;
第一寄存器上下文提取模块,用于从所述寄存器中提取所述当前用户态任务对应的第一寄存器上下文;
第一寄存器上下文保存模块,用于将所述第一寄存器上下文,保存在所述第一任务管理器中;
中断接收任务确定模块,用于确定所述中断信号对应的中断接收任务;
第二寄存器上下文获取模块,用于获取所述中断接收任务的第二寄存器上下文;
第二寄存器上下文保存模块,用于将所述第二寄存器上下文保存在所述寄存器中;
中断接收任务运行模块,用于采用所述第二寄存器上下文运行所述中断接收任务。
可选地,所述的装置还包括:
当前用户态任务继续运行模块,用于当所述中断接收任务运行完成时,继续运行所述当前用户态任务。
可选地,所述当前用户态任务继续运行模块,包括:
第二寄存器上下文清除子模块,用于清除所述寄存器中的所述第二寄存器上下文;
第一寄存器上下文保存子模块,用于将所述第一任务管理器中的所述第一寄存器上下文,保存至所述寄存器中;
当前用户态任务运行子模块,用于采用所述第一寄存器上下文,运行所述当前用户态任务。
可选地,所述任务管理器还包括第二任务管理器;所述第二寄存器上下文获取模块,包括:
第二寄存器上下文获取子模块,用于从所述第二任务管理器中,获取所述中断接收任务的第二寄存器上下文。
本发明实施例还公开了一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个计算机存储介质,当由所述一个或多个处理器执行时,使得所述装置执行如上所述的一个或多个的方法。
本发明实施例还公开了一个或多个计算机存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-4所述的一个或多个的方法。
本发明实施例包括以下优点:本发明实施例在CPU接收到中断信号时,首先停止运行当前用户态任务,并将当前用户态任务的第一寄存器上下文保存在对应的第一任务管理器中,再将中断信号对应的中断接收任务的第二寄存器上下文保存在CPU的寄存器中,使得CPU可以基于第二寄存器上下文运行中断接收任务。从而不会产生非预期的任务切换,可以快速、可靠地响应中断信号。
附图说明
图1是Linux系统中CPU处理中断信号的流程;
图2是本发明的一种中断处理方法实施例的步骤流程图;
图3是本发明的一种中断处理方法的另一种实施例的步骤流程图;
图4是本发明的中断处理在一个CPU上的任务执行流程示意图;
图5是本发明的一种中断处理装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
现有的操作系统中,内核态中断服务程序唤醒用户态中断接收任务的这一操作不是实时的,在此过程中,会发生多次任务调度操作,进而产生非预期任务切换。
以Linux操作系统为例,图1示出了Linux操作系统中,CPU处理中断信号的流程。
其中,中断任务代表处理中断的任务,对运行在Linux系统用户态的应用程序来说,当中断任务接收到中断信号才算完成中断信号的接收。从硬件上中断信号的产生到中断任务接收到中断信号之间的时间开销为系统的额外开销。如图1所示,首先中断任务要调用int Wait函数等待中断,这时中断任务陷入内核空间进入休眠等待态(如图中a所示)。当硬件中断产生的时候,硬件中断信号传递到处理器(如图中b所示),处理器根据中断向量表,将代码执行段跳转到内核的中断处理代码,通过内核中断处理代码唤醒处于休眠等待态的中断任务。但是由于Linux系统是多任务系统,在内核中断处理代码唤醒中断任务的时候,CPU可能在执行别的任务,使得内核中断处理代码唤醒中断任务的操作并不能立刻生效。此时,只能设置中断任务的运行状态为就绪态(如图中c所示),进入任务等待队列。等待内核态调度器从任务等待队列中选择任务并运行(如图中d、e)。然而,Linux内核管理着上万个任务,同一时刻处于就绪态的任务可能较多,而且Linux内核执行调度操作的时机也是有限的,不会立刻选择处于就绪态的中断任务投入运行。这便会带来比较大的延迟时间。而这一部分延迟时间在整个中断处理过程所耗费的时间的占比较大,从而无法保证中断任务在规定时间内处理完成。
本发明实施例的核心构思之一在于,提出了一种中断处理方法,当CPU接收到中断信号时,先中断当前用户态任务的运行,保存其寄存器上下文,再将中断信号对应的中断接收任务的寄存器上下文保存在CPU的寄存器中,使得CPU可以基于寄存器中的寄存器上下文运行中断接收任务。
以下通过具体实施方式进行说明:
参照图2,示出了本发明的一种中断处理方法实施例的步骤流程图,所述方法应用于具有操作系统的设备,所述设备设置有CPU,所述CPU具有任务管理器和寄存器;所述任务管理器包括第一任务管理器;所述的方法具体可以包括如下步骤:
步骤101,当所述CPU接收到中断信号时,确定处于运行状态的当前用户态任务;
在本发明实施例中,CPU是指具有运行有操作系统的设备上的CPU,其中,操作系统可以是Linux系统、Window系统等,本发明不对操作系统的类型做限制。
中断,是计算机中的一个十分重要的概念,在现代计算机中毫无例外地都要采用中断技术。在计算机执行程序的过程中,由于出现某个特殊情况(或称为“事件”),使得CPU中止现行程序,而转去执行处理该事件的处理程序(中断处理或中断服务程序),待中断服务程序执行完毕,再返回断点继续执行原来的程序,这个过程称为中断。
中断信号,是软件或硬件产生的,指示CPU处理相应中断进程的请求信息。
用户态,在CPU的设计中,用户态指非特权状态。在此状态下,执行的代码被硬件限定,不能进行某些操作,比如写入其他进程的存储空间,以防止给操作系统带来安全隐患。
在本发明实施例中,当CPU接收到中断信号时,首先需要确定处于运行状态的当前用户态任务。
步骤102,停止运行所述当前用户态任务;
在确定了处于运行状态的当前用户态任务后,为了响应中断信号执行对应的中断任务,需要先打断当前用户态任务的运行,以便执行中断信号对应的任务。之后进入CPU的内核态(内核态是操作系统的一种运行级别,在这种运行级别下,CPU可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,CPU也可以将自己从一个程序切换到另一个程序。),运行本发明自定义的内核中断处理程序。
步骤103,从所述寄存器中提取所述当前用户态任务对应的第一寄存器上下文;
寄存器上下文里面包含了寄存器的变量。
在本发明自定义的内核中断处理程序中,首先需要从CPU的寄存器中的提取当前用户态任务的第一寄存器上下文。
步骤104,将所述第一寄存器上下文,保存在所述第一任务管理器中;
将第一寄存器上下文保存在处理当前用户态任务的第一任务管理器中,以便后续处理完中断后,可以继续执行该当前用户态任务。
步骤105,确定所述中断信号对应的中断接收任务;
中断接收任务是中断信号所指向的需要执行的事件。
在CPU接收到中断信号的时候,可以根据中断信号确定对应的中断接收任务。
步骤106,获取所述中断接收任务的第二寄存器上下文;
在确定了中断接收任务后,可以获取中断接收任务的第二寄存器上下文。
步骤107,将所述第二寄存器上下文保存在所述寄存器中;
将第二寄存器上下文保存在寄存器中。用户态可以基于寄存器中的数据执行相应的任务。
步骤108,采用所述第二寄存器上下文运行所述中断接收任务。
在寄存器中保存第二寄存器上下文后,可以使用中断返回指令从内核态切换到用户态中,执行用户态中中断信号对应的中断接收任务。
本发明实施例包括以下优点:本发明实施例在CPU接收到中断信号时,首先停止运行当前用户态任务,并将当前用户态任务的第一寄存器上下文保存在对应的第一任务管理器中,再将中断信号对应的中断接收任务的第二寄存器上下文保存在CPU的寄存器中,使得CPU可以基于第二寄存器上下文运行中断接收任务。从而不会产生非预期的任务切换,可以快速、可靠地响应中断信号。
参照图3,示出了本发明的一种中断处理方法的另一种实施例的步骤流程图,具体可以包括以下步骤:
步骤201,当所述CPU接收到中断信号时,确定处于运行状态的当前用户态任务;
在本发明实施例中,CPU是指具有运行有操作系统的设备上的CPU,其中,操作系统可以是Linux系统、window系统等,本发明不对操作系统的类型做限制。
中断,是计算机中的一个十分重要的概念,在现代计算机中毫无例外地都要采用中断技术。在计算机执行程序的过程中,由于出现某个特殊情况(或称为“事件”),使得CPU中止现行程序,而转去执行处理该事件的处理程序(中断处理或中断服务程序),待中断服务程序执行完毕,再返回断点继续执行原来的程序,这个过程称为中断。
中断信号,是软件或硬件产生的,指示CPU处理相应中断进程的请求信息。
用户态,在CPU的设计中,用户态指非特权状态。在此状态下,执行的代码被硬件限定,不能进行某些操作,比如写入其他进程的存储空间,以防止给操作系统带来安全隐患。
在本发明实施例中,当CPU接收到中断信号时,首先需要确定处于运行状态的当前用户态任务。
步骤202,停止运行所述当前用户态任务;
在确定了处于运行状态的当前用户态任务后,为了响应中断信号执行对应的中断任务,需要先打断当前用户态任务的运行,以便执行中断信号对应的任务。之后进入CPU的内核态,运行本发明自定义的内核中断处理程序。
步骤203,从所述寄存器中提取所述当前用户态任务对应的第一寄存器上下文;
寄存器上下文里面包含了寄存器的变量。
在该中断处理程序中,首先需要从CPU的寄存器中的提取当前用户态任务的第一寄存器上下文。
步骤204,将所述第一寄存器上下文,保存在所述第一任务管理器中;
将第一寄存器上下文保存在处理当前用户态任务的第一任务管理器中,以便后续处理完中断后,可以继续执行该当前用户态任务。
步骤205,确定所述中断信号对应的中断接收任务;
中断接收任务是中断信号所指向的需要执行的事件。
在CPU接收到中断信号的时候,可以根据中断信号确定对应的中断接收任务。
步骤206,获取所述中断接收任务的第二寄存器上下文;
在确定了中断接收任务后,可以获取中断接收任务的第二寄存器上下文。
在一个示例中,任务管理器还可以包括第二任务管理器,获取中断接收任务的第二寄存器上下文的步骤可以包括:
从第二任务管理器中获取中断接收任务的第二寄存器上下文,其中,第二任务管理器用于管理中断接收任务。
步骤207,将所述第二寄存器上下文保存在所述寄存器中;
将第二寄存器上下文保存在寄存器中。用户态可以基于寄存器中的数据执行相应的任务。
步骤208,采用所述第二寄存器上下文运行所述中断接收任务。
在寄存器中保存第二寄存器上下文后,可以使用中断返回指令从内核态切换到用户态中,执行用户态中终端信号对应的中断接收任务。
步骤209,当所述中断接收任务运行完成时,继续运行所述当前用户态任务。
当中断接收任务完成后,可以切换到上述被打断的当前用户态任务,继续执行该当前用户态任务。
在一个示例中,所述任务管理器还可以包括第二任务管理器,步骤209可以包括以下子步骤:
S11,清除所述寄存器中的所述第二寄存器上下文;
S12,将所述第一任务管理器中的所述第一寄存器上下文,保存至所述寄存器中;
在本发明实施例中,为了重新执行上述当前用户态任务,需要使用到当前用户态任务的第一寄存器上下文,此时,需要先清除保存在寄存器中的第二寄存器上下文。再将第一任务管理器中的第一寄存器上下文保存在CPU的寄存器中。
S13,采用所述第一寄存器上下文,运行所述当前用户态任务。
当在寄存器中保存了第一寄存器上下文后,便可以使用中断返回指令,返回用户态继续执行被打断的当前用户态任务。
为了便于理解,以下通过一个具体示例来描述本发明的方案。
如图4所示,是本发明的中断处理在一个CPU上的任务执行流程示意图。
当5G基站系统的硬件产生中断的时候,打断CPU用户空间正在运行的用户态任务,进入到CPU内核空间,在内核态中运行本发明实施例自定义的内核中断处理程序;该内核中断处理程序包括以下两个步骤:
1、获取当前中断打断的当前用户态任务的寄存器上下文,确定当前用户态任务的任务管理器,将当前用户态任务的寄存器上下文保存到当前用户态任务对应的任务管理器中。
2、获取用户态中断接收任务的寄存器上下文,将用户态中断接收任务的寄存器上下文保存到当前CPU的寄存器中,使用中断返回指令从内核态切换到用户态中,执行用户态中断接收任务。
在执行完用户态中断接收任务后,根据用户态调度器策略,切换到被中断打断的用户态任务继续运行被打断的用户态任务。
本发明实施例在CPU接收到中断信号时,首先停止运行当前用户态任务,并将当前用户态任务的第一寄存器上下文保存在对应的第一任务管理器中,再将中断信号对应的中断接收任务的第二寄存器上下文保存在CPU的寄存器中,使得CPU可以基于第二寄存器上下文运行中断接收任务。从而不会产生非预期的任务切换,可以快速、可靠地响应中断信号。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图5,示出了本发明的一种中断处理装置实施例的结构框图,具体可以包括如下模块:
当前用户态任务确定模块501,用于当所述CPU接收到中断信号时,确定处于运行状态的当前用户态任务;
停止模块502,用于停止运行所述当前用户态任务;
第一寄存器上下文提取模块503,用于从所述寄存器中提取所述当前用户态任务对应的第一寄存器上下文;
第一寄存器上下文保存模块504,用于将所述第一寄存器上下文,保存在所述第一任务管理器中;
中断接收任务确定模块505,用于确定所述中断信号对应的中断接收任务;
第二寄存器上下文获取模块506,用于获取所述中断接收任务的第二寄存器上下文;
第二寄存器上下文保存模块507,用于将所述第二寄存器上下文保存在所述寄存器中;
中断接收任务运行模块508,用于采用所述第二寄存器上下文运行所述中断接收任务。
在本发明实施例中,所述的装置还可以包括:
当前用户态任务继续运行模块,用于当所述中断接收任务运行完成时,继续运行所述当前用户态任务。
可选地,所述当前用户态任务继续运行模块,可以包括:
第二寄存器上下文清除子模块,用于清除所述寄存器中的所述第二寄存器上下文;
第一寄存器上下文保存子模块,用于将所述第一任务管理器中的所述第一寄存器上下文,保存至所述寄存器中;
当前用户态任务运行子模块,用于采用所述第一寄存器上下文,运行所述当前用户态任务。
可选地,所述任务管理器还包括第二任务管理器;所述第二寄存器上下文获取模块,可以包括:
第二寄存器上下文获取子模块,用于从所述第二任务管理器中,获取所述中断接收任务的第二寄存器上下文。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明实施例还提供了一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个计算机存储介质,当由所述一个或多个处理器执行时,使得所述装置执行本发明实施例所述的方法。
本发明实施例还提供了一个或多个计算机存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本发明实施例所述的方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种中断处理方法和一种中断处理装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种中断处理方法,其特征在于,所述方法应用于具有操作系统的设备,所述设备设置有CPU;所述CPU具有任务管理器和寄存器;所述任务管理器包括第一任务管理器、第二任务管理器;所述的方法包括:
当所述CPU接收到中断信号时,确定处于运行状态的当前用户态任务;
停止运行所述当前用户态任务;
从所述寄存器中提取所述当前用户态任务对应的第一寄存器上下文;
将所述第一寄存器上下文,保存在所述第一任务管理器中;
确定所述中断信号对应的中断接收任务;
从所述第二任务管理器中获取所述中断接收任务的第二寄存器上下文;
将所述第二寄存器上下文保存在所述寄存器中;采用所述第二寄存器上下文运行所述中断接收任务。
2.根据权利要求1所述的方法,其特征在于,所述的方法还包括:
当所述中断接收任务运行完成时,继续运行所述当前用户态任务。
3.根据权利要求2所述的方法,其特征在于,所述继续运行所述当前用户态任务的步骤,包括:
清除所述寄存器中的所述第二寄存器上下文;
将所述第一任务管理器中的所述第一寄存器上下文,保存至所述寄存器中;
采用所述第一寄存器上下文,运行所述当前用户态任务。
4.一种中断处理装置,其特征在于,所述的装置包括:
当前用户态任务确定模块,用于当CPU接收到中断信号时,确定处于运行状态的当前用户态任务;
停止模块,用于停止运行所述当前用户态任务;
第一寄存器上下文提取模块,用于从所述寄存器中提取所述当前用户态任务对应的第一寄存器上下文;
第一寄存器上下文保存模块,用于将所述第一寄存器上下文,保存在第一任务管理器中;
中断接收任务确定模块,用于确定所述中断信号对应的中断接收任务;
第二寄存器上下文获取模块,用于从第二任务管理器中获取所述中断接收任务的第二寄存器上下文;
第二寄存器上下文保存模块,用于将所述第二寄存器上下文保存在所述寄存器中;中断接收任务运行模块,用于采用所述第二寄存器上下文运行所述中断接收任务。
5.根据权利要求4所述的装置,其特征在于,所述的装置还包括:
当前用户态任务继续运行模块,用于当所述中断接收任务运行完成时,继续运行所述当前用户态任务。
6.根据权利要求5所述的装置,其特征在于,所述当前用户态任务继续运行模块,包括:
第二寄存器上下文清除子模块,用于清除所述寄存器中的所述第二寄存器上下文;
第一寄存器上下文保存子模块,用于将所述第一任务管理器中的所述第一寄存器上下文,保存至所述寄存器中;
当前用户态任务运行子模块,用于采用所述第一寄存器上下文,运行所述当前用户态任务。
7.一种电子设备,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个计算机存储介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-3任一项所述的方法。
8.一个或多个计算机存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-3任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911329835.0A CN113010275B (zh) | 2019-12-20 | 2019-12-20 | 一种中断处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911329835.0A CN113010275B (zh) | 2019-12-20 | 2019-12-20 | 一种中断处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113010275A CN113010275A (zh) | 2021-06-22 |
CN113010275B true CN113010275B (zh) | 2024-01-30 |
Family
ID=76382873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911329835.0A Active CN113010275B (zh) | 2019-12-20 | 2019-12-20 | 一种中断处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113010275B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115599505B (zh) * | 2021-06-28 | 2024-07-05 | 华为技术有限公司 | 用户态中断请求的处理方法及装置 |
CN115774574B (zh) * | 2021-09-06 | 2024-06-04 | 华为技术有限公司 | 一种操作系统内核切换方法和装置 |
CN116360930A (zh) * | 2021-12-28 | 2023-06-30 | 华为技术有限公司 | 一种任务处理的方法及装置 |
CN114416317B (zh) * | 2022-01-20 | 2022-12-02 | 科东(广州)软件科技有限公司 | 核间中断执行方法、处理方法及装置、设备和存储介质 |
CN117407054A (zh) * | 2022-07-07 | 2024-01-16 | 华为技术有限公司 | 中断处理方法、电子设备和存储介质 |
CN117632533A (zh) * | 2022-08-19 | 2024-03-01 | 华为技术有限公司 | 一种中断消息处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440169A (zh) * | 2013-08-21 | 2013-12-11 | 华为技术有限公司 | 一种进程中断处理的方法及装置 |
WO2017070861A1 (zh) * | 2015-10-28 | 2017-05-04 | 华为技术有限公司 | 一种中断响应方法、装置及基站 |
CN107046508A (zh) * | 2016-02-05 | 2017-08-15 | 华为技术有限公司 | 报文接收方法及网络设备 |
CN107526622A (zh) * | 2017-08-16 | 2017-12-29 | 北方工业大学 | Linux的快速异常处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050015768A1 (en) * | 2002-12-31 | 2005-01-20 | Moore Mark Justin | System and method for providing hardware-assisted task scheduling |
-
2019
- 2019-12-20 CN CN201911329835.0A patent/CN113010275B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440169A (zh) * | 2013-08-21 | 2013-12-11 | 华为技术有限公司 | 一种进程中断处理的方法及装置 |
WO2017070861A1 (zh) * | 2015-10-28 | 2017-05-04 | 华为技术有限公司 | 一种中断响应方法、装置及基站 |
CN107046508A (zh) * | 2016-02-05 | 2017-08-15 | 华为技术有限公司 | 报文接收方法及网络设备 |
CN107526622A (zh) * | 2017-08-16 | 2017-12-29 | 北方工业大学 | Linux的快速异常处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113010275A (zh) | 2021-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113010275B (zh) | 一种中断处理方法和装置 | |
US7406699B2 (en) | Enhanced runtime hosting | |
US7698540B2 (en) | Dynamic hardware multithreading and partitioned hardware multithreading | |
EP2431876B1 (en) | Method and device for exception handling in embedded system | |
US7992042B2 (en) | Debug support device, and program for directing computer to perform debugging method | |
EP1685486B1 (en) | Interrupt handling in an embedded multi-threaded processor to avoid priority inversion and maintain real-time operation | |
CN112035318B (zh) | 一种异常进程的定位方法、系统及相关装置 | |
US9092255B2 (en) | Multi-core processor system, computer product, and control method for interrupt execution | |
US20150261565A1 (en) | Extract cpu time facility | |
US20200311000A1 (en) | Processor and interrupt controller | |
CN105359101A (zh) | 用于多核处理器的系统管理中断处理 | |
US20070245111A1 (en) | Methods, systems, and computer program products for managing temporary storage | |
CN108241522B (zh) | 虚拟化环境中的睡眠状态切换方法、装置及电子设备 | |
CN112256419A (zh) | 一种基于定时器时钟控制的嵌入式系统多任务调度方法 | |
US12032989B2 (en) | Timer processing method, apparatus, electronic device and computer storage medium | |
US20060150185A1 (en) | Hard real-time response | |
CN115098230A (zh) | 管理线程的方法及装置 | |
CN117407054A (zh) | 中断处理方法、电子设备和存储介质 | |
WO2018031311A1 (en) | Guest enlightened virtual faults | |
CN110795231B (zh) | 一种虚拟cpu的处理方法及装置 | |
CN112416536A (zh) | 提取处理器执行上下文的方法及处理器 | |
US9223637B1 (en) | Method and apparatus to advise spin and yield decisions | |
CN112673354A (zh) | 一种系统状态检测方法、系统状态装置及终端设备 | |
JPS6336023B2 (zh) | ||
CN114327767B (zh) | 任务处理的方法、装置、电子设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |