一种中断响应方法、装置及基站
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种中断响应方法、装置及基站。
背景技术
当中央处理器(Central Processing Unit,CPU)包括内存管理单元(MemoryManagement Unit,MMU)时,操作系统的工作状态可以包括内核态和用户态,内核态是操作系统内核所运行的模式,运行在该模式的进程,可以无限制地对系统内存、外设等进行访问;用户态指非特权状态,运行在该状态下的进程被硬件限制,不能进行某些特权操作。
当操作系统运行进程时,如果外界发生紧急情况,将要求操作系统暂停进程的运行转去处理这个紧急事件,处理完后,再继续运行暂停的进程,这样的过程称为中断。由于中断需要从用户态切换至内核态,因此,当运行某个进程时,如果存在多个中断,将需要操作系统在用户态和内核态之间进行频繁切换,降低了进程的运行效率。
发明内容
本发明实施例公开了一种中断响应方法、装置及基站,用于提高进程的运行效率。
本发明实施例第一方面公开一种基站,包括内存和中央处理器CPU,所述CPU中设置有内存管理单元MMU,所述CPU中还设置有至少两个寄存器,每个所述寄存器中存储有一个中断号和一个进程号,其中:
所述内存,用于存储进程和程序;
所述CPU通过内存总线与所述内存连接,所述CPU用于:
当接收到携带有中断号的中断请求时,中断用户态下运行的目标进程,并存储所述目标进程的上下文信息;
获取所述目标进程的进程号;
判断所述至少两个寄存器中是否存在寄存器存储有所述目标进程的进程号和所述中断号;
若存在寄存器存储有所述目标进程的进程号和所述中断号,则在所述用户态执行所述中断号对应的中断处理程序;
当所述中断处理程序执行完时,根据存储的所述目标进程的上下文信息继续运行所述目标进程。
结合本发明实施例第一方面,在本发明实施例第一方面的第一种可能的实现方式中,所述CPU还用于:
若不存在寄存器存储有所述目标进程的进程号和所述中断号,将由所述用户态切换至内核态;
在所述内核态执行所述中断号对应的中断处理程序;
当所述中断处理程序执行完时,将由所述内核态切换至所述用户态;
在所述用户态根据存储的所述目标进程的上下文信息继续运行所述目标进程。
结合本发明实施例第一方面的第一种可能的实现方式,在本发明实施例第一方面的第二种可能的实现方式中,所述CPU中还设置有传输后备缓冲器,所述传输后备缓冲器中存储有虚拟地址到物理地址的匹配表;
所述CPU在所述用户态执行所述中断号对应的中断处理程序的方式具体为:
在所述用户态根据所述传输后备缓冲器中存储的用户态对应的匹配表执行所述中断号对应的中断处理程序;
所述CPU将由所述用户态切换至内核态之后,所述CPU还用于:
将所述传输后备缓冲器中存储的用户态对应的匹配表刷新为内核态对应的匹配表;
所述CPU在所述内核态执行所述中断号对应的中断处理程序的方式具体为:
在所述内核态根据所述传输后备缓冲器中存储的内核态对应的匹配表执行所述中断号对应的中断处理程序;
所述CPU将由所述内核态切换至所述用户态之后,所述CPU还用于:
将所述传输后备缓冲器中存储的内核态对应的匹配表刷新为用户态对应的匹配表。
本发明实施例第二方面公开一种终端响应装置,所述装置设置于基站中,所述基站的中央处理器CPU中设置有内存管理单元MMU,所述CPU中还设置有至少两个寄存器,每个所述寄存器中存储有一个中断号和一个进程号,所述装置包括:
中断单元,用于当接收到携带有中断号的中断请求时,中断用户态下运行的目标进程;
存储单元,用于存储所述中断单元中断的目标进程的上下文信息;
获取单元,用于获取所述中断单元中断的目标进程的进程号;
判断单元,用于判断所述至少两个寄存器中是否存在寄存器存储有所述获取单元获取的目标进程的进程号和所述中断号;
第一执行单元,用于当所述判断单元的判断结果为存在寄存器存储有所述目标进程的进程号和所述中断号时,在所述用户态执行所述中断号对应的中断处理程序;
第一运行单元,用于当所述第一执行单元执行的中断处理程序执行完时,根据所述存储单元存储的所述目标进程的上下文信息继续运行所述中断单元中断的目标进程。
结合本发明实施例第二方面,在本发明实施例第二方面的第一种可能的实现方式中,所述装置还包括:
切换单元,用于当所述判断单元的判断结果为不存在寄存器存储有所述目标进程的进程号和所述中断号时,将由所述用户态切换至内核态;
第二执行单元,用于在所述切换单元切换的内核态执行所述中断号对应的中断处理程序;
所述切换单元,还用于当所述第二执行单元执行的中断处理程序执行完时,将由所述内核态切换至所述用户态;
第二运行单元,用于在所述用户态根据所述存储单元存储的所述目标进程的上下文信息继续运行所述中断单元中断的目标进程。
结合本发明实施例第二方面的第一种可能的实现方式,在本发明实施例第二方面的第二种可能的实现方式中,所述CPU中还设置有传输后备缓冲器,所述传输后备缓冲器中存储有虚拟地址到物理地址的匹配表;
所述第一执行单元,具体用于在所述用户态根据所述传输后备缓冲器中存储的用户态对应的匹配表执行所述中断号对应的中断处理程序;
所述装置还包括:
刷新单元,用于在所述切换单元将由所述用户态切换至内核态之后,将所述传输后备缓冲器中存储的用户态对应的匹配表刷新为内核态对应的匹配表;
所述第二执行单元,具体用于在所述内核态根据所述传输后备缓冲器中存储的内核态对应的匹配表执行所述中断号对应的中断处理程序;
所述刷新单元,还用于在所述切换单元将由所述内核态切换至所述用户态之后,将所述传输后备缓冲器中存储的内核态对应的匹配表刷新为用户态对应的匹配表。
本发明实施例第三方面公开一种中断响应方法,所述方法应用于中央处理器CPU中设置有内存管理单元MMU的基站,所述CPU中还设置有至少两个寄存器,每个所述寄存器中存储有一个中断号和一个进程号,所述方法包括:
当接收到携带有中断号的中断请求时,中断用户态下运行的目标进程,并存储所述目标进程的上下文信息;
获取所述目标进程的进程号;
判断所述至少两个寄存器中是否存在寄存器存储有所述目标进程的进程号和所述中断号;
若存在寄存器存储有所述目标进程的进程号和所述中断号,则在所述用户态执行所述中断号对应的中断处理程序;
当所述中断处理程序执行完时,根据存储的所述目标进程的上下文信息继续运行所述目标进程。
结合本发明实施例第三方面,在本发明实施例第三方面的第一种可能的实现方式中,所述方法还包括:
若不存在寄存器存储有所述目标进程的进程号和所述中断号,将由所述用户态切换至内核态;
在所述内核态执行所述中断号对应的中断处理程序;
当所述中断处理程序执行完时,将由所述内核态切换至所述用户态;
在所述用户态根据存储的所述目标进程的上下文信息继续运行所述目标进程。
结合本发明实施例第三方面的第一种可能的实现方式,在本发明实施例第三方面的第二种可能的实现方式中,所述CPU中还设置有传输后备缓冲器,所述传输后备缓冲器中存储有虚拟地址到物理地址的匹配表;
所述在所述用户态执行所述中断号对应的中断处理程序包括:
在所述用户态根据所述传输后备缓冲器中存储的用户态对应的匹配表执行所述中断号对应的中断处理程序;
所述将由所述用户态切换至内核态之后,所述方法还包括:
将所述传输后备缓冲器中存储的用户态对应的匹配表刷新为内核态对应的匹配表;
所述在所述内核态执行所述中断号对应的中断处理程序包括:
在所述内核态根据所述传输后备缓冲器中存储的内核态对应的匹配表执行所述中断号对应的中断处理程序;
所述将由所述内核态切换至所述用户态之后,所述方法还包括:
将所述传输后备缓冲器中存储的内核态对应的匹配表刷新为用户态对应的匹配表。
本发明实施例中,当存在寄存器存储有运行进程的进程号和中断号时,将在用户态进行中断响应,不需要由用户态切换至内核态,因此,可以提高进程的运行效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种基站的结构图;
图2是本发明实施例公开的一种中断响应装置的结构图;
图3是本发明实施例公开的一种中断响应方法的流程图;
图4是本发明实施例公开的另一种中断响应方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种中断响应方法、装置及基站,用于提高进程的运行效率。以下分别进行详细说明。
为了更好地理解本发明实施例,下面先对本发明实施例的应用场景进行描述。在本发明实施例中,基站的中央处理器(Central Processing Unit,CPU)中设置有内存管理单元(Memory Management Unit,MMU),基站操作系统的工作状态包括用户态和内核态。此外,CPU中还设置有至少两个寄存器,每个寄存器中存储有一个中断号和一个进程号,当在用户态运行一个寄存器中存储的进程号对应的进程时,如果接收到一个中断请求,且这个中断请求携带的中断号为这个寄存器中存储的中断号,基站操作系统可以直接在用户态响应这个中断请求。此外,CPU还设置有传输后备缓冲器(Translation Lookaside Buffer,TLB),TLB中存储有虚拟地址到物理地址的匹配表,当基站操作系统工作在用户态时,TLB中存储的是用户态对应的虚拟地址到物理地址的匹配表,当基站操作系统工作在内核态时,TLB中存储的是内核态对应的虚拟地址到物理地址的匹配表,因此,操作系统在内核态和用户态之间进行切换时,需要刷新TLB,以便将TLB中存储的匹配表刷新为对应的工作态对应的匹配表。
请参阅图1,图1是本发明实施例公开的一种基站的结构图。其中,该基站为上述介绍的基站。如图1所示,该基站100可以包括:
内存101,用于存储进程和程序;
CPU102通过内存总线103与内存101连接,CPU102用于:
当接收到携带有中断号的中断请求时,中断用户态下运行的目标进程,并存储目标进程的上下文信息;
获取目标进程的进程号;
判断至少两个寄存器中是否存在寄存器存储有目标进程的进程号和中断请求携带的中断号;
若存在寄存器存储有目标进程的进程号和中断请求携带的中断号,则在用户态执行中断请求携带的中断号对应的中断处理程序;
当中断处理程序执行完时,根据存储的目标进程的上下文信息继续运行目标进程。
作为一种可能的实施方式,CPU102还用于:
若不存在寄存器存储有目标进程的进程号和中断请求携带的中断号,将由用户态切换至内核态;
在内核态执行中断请求携带的中断号对应的中断处理程序;
当中断处理程序执行完时,将由内核态切换至用户态;
在用户态根据存储的目标进程的上下文信息继续运行目标进程。
作为一种可能的实施方式,CPU102在用户态执行中断请求携带的中断号对应的中断处理程序的方式具体为:
在用户态根据传输后备缓冲器中存储的用户态对应的匹配表执行中断请求携带的中断号对应的中断处理程序;
CPU102将由用户态切换至内核态之后,CPU102还用于:
将传输后备缓冲器中存储的用户态对应的匹配表刷新为内核态对应的匹配表;
CPU102在内核态执行中断请求携带的中断号对应的中断处理程序的方式具体为:
在内核态根据传输后备缓冲器中存储的内核态对应的匹配表执行中断请求携带的中断号对应的中断处理程序;
CPU102将由内核态切换至用户态之后,CPU102还用于:
将传输后备缓冲器中存储的内核态对应的匹配表刷新为用户态对应的匹配表。
在图1所描述的基站中,当存在寄存器存储有运行进程的进程号和中断号时,将在用户态进行中断响应,不需要由用户态切换至内核态,因此,可以提高进程的运行效率。
请参阅图2,图2是本发明实施例公开的一种中断响应装置。其中,该中断响应装置设置于上述介绍的基站中。如图2所示,该中断响应装置200可以包括:
中断单元201,用于当接收到携带有中断号的中断请求时,中断用户态下运行的目标进程;
存储单元202,用于存储中断单元201中断的目标进程的上下文信息;
获取单元203,用于获取中断单元201中断的目标进程的进程号;
判断单元204,用于判断至少两个寄存器中是否存在寄存器存储有获取单元203获取的目标进程的进程号和中断请求携带的中断号;
第一执行单元205,用于当判断单元204的判断结果为存在寄存器存储有目标进程的进程号和中断请求携带的中断号时,在用户态执行中断请求携带的中断号对应的中断处理程序;
第一运行单元206,用于当第一执行单元205执行的中断处理程序执行完时,根据存储单元202存储的目标进程的上下文信息继续运行中断单元201中断的目标进程。
作为一种可能的实施方式,该中断响应装置200还可以包括:
切换单元207,用于当判断单元204的判断结果为不存在寄存器存储有目标进程的进程号和中断请求携带的中断号时,将由用户态切换至内核态;
第二执行单元208,用于在切换单元207切换的内核态执行中断请求携带的中断号对应的中断处理程序;
切换单元207,还用于当第二执行单元208执行的中断处理程序执行完时,将由内核态切换至用户态;
第二运行单元209,用于在用户态根据存储单元202存储的目标进程的上下文信息继续运行中断单元201中断的目标进程。
具体地,切换单元207由内核态切换至用户态之后,将触发第二运行单元209在用户态根据存储单元202存储的目标进程的上下文信息继续运行中断单元201中断的目标进程。
作为一种可能的实施方式,第一执行单元205,具体用于在用户态根据传输后备缓冲器中存储的用户态对应的匹配表执行中断请求携带的中断号对应的中断处理程序;
该中断响应装置200还可以包括:
刷新单元210,用于在切换单元207将由用户态切换至内核态之后,将传输后备缓冲器中存储的用户态对应的匹配表刷新为内核态对应的匹配表;
第二执行单元208,具体用于在内核态根据传输后备缓冲器中存储的内核态对应的匹配表执行中断请求携带的中断号对应的中断处理程序;
刷新单元210,还用于在切换单元207将由内核态切换至用户态之后,将传输后备缓冲器中存储的内核态对应的匹配表刷新为用户态对应的匹配表。
在图2所描述的中断响应装置中,当存在寄存器存储有运行进程的进程号和中断号时,将在用户态进行中断响应,不需要由用户态切换至内核态,因此,可以提高进程的运行效率。
请参阅图3,图3是本发明实施例公开的一种中断响应方法的流程图。其中,该中断响应方法适用于上述介绍的基站。如图3所示,该中断响应方法可以包括以下步骤。
S301、当接收到携带有中断号的中断请求时,中断用户态下运行的目标进程,并存储目标进程的上下文信息。
本实施例中,在用户态运行目标进程的过程中,当接收到携带有中断号的中断请求时,将需要中断目标进程,并存储目标进程的上下文信息,以便后续需要继续运行目标进程时,可以从目标进程的中断位置继续运行目标进程中未运行的部分。其中,目标进程的上下文信息可以包括目标进程的中断位置信息、已运行部分信息和未运行部分信息。
S302、获取目标进程的进程号。
本实施例中,当接收到携带有中断号的中断请求时,将获取目标进程的进程号。其中,步骤S301与步骤S302可以串行执行,也可以并行执行,本实施例不作限定。
S303、判断至少两个寄存器中是否存在寄存器存储有目标进程的进程号和中断请求携带的中断号,若存在,则执行步骤S304,若未存在,则执行步骤S306。
本实施例中,获取到目标进程的进程号之后,将目标进程的进程号和中断请求携带的中断号与每个寄存器中存储的进程号和中断号进行比较。
S304、在用户态执行中断号对应的中断处理程序。
本实施例中,当有一个寄存器中存储的进程号与目标进程的进程号相同,且这个寄存器中存储的中断号与中断请求携带的中断号相同时,表明至少两个寄存器中存在寄存器存储有目标进程的进程号和中断请求携带的中断号,将在用户态执行中断请求携带的中断号对应的中断处理程序。
S305、当中断处理程序执行完时,根据存储的目标进程的上下文信息继续运行目标进程。
本实施例中,当检测到中断请求携带的中断号对应的中断处理程序在用户态执行完时,将在用户态根据存储的目标进程的上下文信息从目标进程的中断位置继续运行目标进程中未运行的部分。
S306、将由用户态切换至内核态,并在内核态执行中断请求携带的中断号对应的中断处理程序。
本实施例中,当至少两个寄存器中无寄存器中同时存储有目标进程的进程号和中断请求携带的中断号时,表明至少两个寄存器中不存在寄存器存储有目标进程的进程号和中断请求携带的中断号,将无法在用户态直接进行中断响应,因此,将由用户态切换至内核态,并在内核态执行中断请求携带的中断号对应的中断处理程序。
S307、当中断处理程序执行完时,将由内核态切换至用户态,并在用户态根据存储的目标进程的上下文信息继续运行目标进程。
本实施例中,由于目标进程需要在用户态进行运行,因此,当检测到中断请求携带的中断号对应的中断处理程序在内核态执行完时,将由内核态切换至用户态,并在用户态根据存储的目标进程的上下文信息从目标进程的中断位置继续运行目标进程的未运行部分。
在图3所描述的中断响应方法中,当存在寄存器存储有运行进程的进程号和中断号时,将在用户态进行中断响应,不需要由用户态切换至内核态,因此,可以提高进程的运行效率。
请参阅图4,图4是本发明实施例公开的另一种中断响应方法的流程图。其中,该中断响应方法适用于上述介绍的基站。如图4所示,该中断响应方法可以包括以下步骤。
S401、当接收到携带有中断号的中断请求时,中断用户态下运行的目标进程,并存储目标进程的上下文信息。
本实施例中,在用户态运行目标进程的过程中,当接收到携带有中断号的中断请求时,将需要中断目标进程,并存储目标进程的上下文信息,以便后续需要继续运行目标进程时,可以从目标进程的中断位置继续运行目标进程中未运行的部分。其中,目标进程的上下文信息可以包括目标进程的中断位置信息、已运行部分信息和未运行部分信息。
S402、获取目标进程的进程号。
本实施例中,当接收到携带有中断号的中断请求时,将获取目标进程的进程号。其中,步骤S401与步骤S402可以串行执行,也可以并行执行,本实施例不作限定。
S403、判断至少两个寄存器中是否存在寄存器存储有目标进程的进程号和该中断号,若存储有,则执行步骤S404,若未存储有,则执行步骤S406。
本实施例中,获取到目标进程的进程号之后,将目标进程的进程号和中断请求携带的中断号与每个寄存器中存储的进程号和中断号进行比较。
S404、在用户态根据TLB中存储的用户态对应的匹配表执行中断请求携带的中断号对应的中断处理程序。
本实施例中,当有一个寄存器中存储的进程号与目标进程的进程号相同,且这个寄存器中存储的中断号与中断请求携带的中断号相同时,表明至少两个寄存器中存在寄存器存储有目标进程的进程号和中断请求携带的中断号,将在用户态根据TLB中存储的用户态对应的匹配表执行中断请求携带的中断号对应的中断处理程序。
S405、当中断处理程序执行完时,根据存储的目标进程的上下文信息继续运行目标进程。
本实施例中,当检测到中断请求携带的中断号对应的中断处理程序在用户态执行完时,将在用户态根据存储的目标进程的上下文信息从目标进程的中断位置继续运行目标进程中未运行的部分。
S406、将由用户态切换至内核态,并将TLB中存储的用户态对应的匹配表刷新为内核态对应的匹配表。
本实施例中,当至少两个寄存器中无寄存器中同时存储有目标进程的进程号和中断请求携带的中断号时,表明至少两个寄存器中不存在寄存器存储有目标进程的进程号和中断请求携带的中断号,将无法在用户态直接进行中断响应,因此,将由用户态切换至内核态,并将TLB中存储的用户态对应的匹配表刷新为内核态对应的匹配表。
S407、在内核态根据TLB中存储的内核态对应的匹配表执行中断请求携带的中断号对应的中断处理程序。
S408、当中断处理程序执行完时,将由内核态切换至用户态,并将TLB中存储的内核态对应的匹配表刷新为用户态对应的匹配表。
本实施例中,由于目标进程需要在用户态进行运行,因此,当检测到中断请求携带的中断号对应的中断处理程序在内核态执行完时,将由内核态切换至用户态,并将TLB中存储的内核态对应的匹配表刷新为用户态对应的匹配表。
S409、在用户态根据存储的目标进程的上下文信息继续运行目标进程。
本实施例中,在用户态根据存储的目标进程的上下文信息从目标进程的中断位置继续运行目标进程的未运行部分。
在图4所描述的中断响应方法中,当存在寄存器存储有运行进程的进程号和中断号时,将在用户态进行中断响应,不需要由用户态切换至内核态,因此,可以提高进程的运行效率。
一个实施例中,本发明实施例进一步公开一种计算机存储介质,该计算机存储介质存储有计算机程序,当计算机存储介质中的计算机程序被读取到计算机时,能够使得计算机完成本发明实施例公开的数据传输方法的全部步骤。
需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上对本发明实施例所提供的中断响应方法、装置及基站进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。