Linux下CPU核间中断通信的实现方法及装置

文档序号:135141 发布日期:2021-10-22 浏览:13次 >En<

阅读说明:本技术 Linux下CPU核间中断通信的实现方法及装置 (Method and device for realizing inter-CPU (central processing unit) core interrupt communication under Linux ) 是由 葛正中 林坤 李涛 赵伦 马明礼 于 2020-04-14 设计创作,主要内容包括:本发明实施例提供一种Linux下CPU核间中断通信的实现方法及装置,所述方法包括:在用户空间执行向目标任务发送消息的操作,将消息写入用户空间消息队列中;执行写控制信号器件的操作,触发目标任务所在的目标CPU核发生中断;执行自定义内核中断处理流程,以使得目标CPU核直接跳转至目标任务;从用户空间消息队列中读取消息。本发明实施例消息内容的收发均在用户空间进行,通过外部的控制信号器件触发目标任务所在的目标CPU核发生中断,中断发生后,无须经过内核调度器触发重调度,即可快速从内核态返回到指定消息收发流程,整个过程高效、可靠,缩短了CPU核任务间消息收发的响应时间,可有效提升5G基站系统的实时性能。(The embodiment of the invention provides a method and a device for realizing inter-CPU (central processing unit) core interrupt communication under Linux, wherein the method comprises the following steps: executing the operation of sending the message to the target task in the user space, and writing the message into a user space message queue; executing the operation of a writing control signal device, and triggering a target CPU core where a target task is located to generate interruption; executing a custom kernel interrupt processing flow to enable a target CPU core to directly jump to a target task; the message is read from the user space message queue. The receiving and sending of the message content are carried out in the user space, the target CPU core where the target task is located is triggered to be interrupted through an external control signal device, after the interruption occurs, rescheduling can be quickly returned to the designated message receiving and sending flow from the kernel mode without triggering by a kernel scheduler, the whole process is efficient and reliable, the response time of message receiving and sending among the tasks of the CPU core is shortened, and the real-time performance of the 5G base station system can be effectively improved.)

Linux下CPU核间中断通信的实现方法及装置

技术领域

本发明涉及计算机技术领域,更具体地,涉及一种Linux下CPU核间中断通信的实现方法及装置。

背景技术

5G(the 5th Generation,第五代移动通信技术)基站系统的业务软件运行在多任务的Linux操作系统之上,每一个CPU(Central processing unit,中央处理器)核上会运行多个任务(进程),多个任务依靠操作系统内核的调度分时执行。Linux的消息收发机制在内核态完成,应用程序在使用Linux消息收发机制的时候就要涉及到消息内容在用户态、内核态之间的相互拷贝,这种拷贝属于系统开销。

当CPU处于高负荷、非空闲的情况下,一个CPU核上的任务向另外一个CPU核上的任务发送消息时,第一个CPU核上的任务需要进入到内核态,拷贝用户态的消息内容到内核态,唤醒第二个CPU核上的目标任务,触发第二个CPU核上的任务调度,通过操作系统内核的任务调度选择出要切换执行的任务,读取消息队列中的消息并拷贝到用户态,最终用户态任务接收到消息。

现有的CPU核间任务消息收发处理流程具有以下缺点:一个CPU核打断另外一个CPU核的运行需要进入内核态触发IPI中断(Inter processor interrupts,核间中断),从用户态进入内核态这个过程比较耗时;现有的消息收发内容的读取在内核态进行,发送消息时需要把消息从用户态拷贝到内核态,接收任务接收消息时又需要把消息从内核态拷贝到用户态;若目的任务所在CPU较为繁忙,目的CPU核需要经过内核调度才能切换到目的任务,这一过程不够实时,导致CPU核间任务消息收发响应时间变长,从而影响整个系统的实时性能。

发明内容

为了解决或者至少部分地解决CPU核间任务消息收发响应时间较长,影响实时性能的问题,本发明实施例提供一种Linux下CPU核间中断通信的实现方法及装置。

第一方面,本发明实施例提供一种Linux下CPU核间中断通信的实现方法,包括:

在用户空间执行向目标任务发送消息的操作,将所述消息写入用户空间消息队列中;

执行写控制信号器件的操作,触发所述目标任务所在的目标中央处理器CPU核发生中断;

执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务;

从所述用户空间消息队列中读取所述消息。

可选地,所述执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断,具体为:

向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向目标CPU核上的通用输入输出管脚发送控制信号;

所述目标CPU核上的通用输入输出管脚接收到所述控制信号后,触发所述目标CPU核发生中断。

可选地,所述执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断,具体为:

向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向高速外围组件互联PCIE接口发送控制信号;

所述PCIE接口接收到所述控制信号后,触发所述目标CPU核发生中断。

可选地,所述执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务,具体为:

保存被中断任务的上下文,查找所述目标任务对应的上下文;

若查找到所述目标任务对应的上下文,则直接跳转至所述目标任务。

可选地,所述控制信号器件具体为可擦除编程逻辑器件EPLD寄存器。

第二方面,本发明实施例提供一种Linux下CPU核间中断通信的实现装置,包括:

消息发送模块,用于在用户空间执行向目标任务发送消息的操作,将所述消息写入用户空间消息队列中;

中断触发模块,用于执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断;

中断处理模块,用于执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务;

消息读取模块,用于从所述用户空间消息队列中读取所述消息。

可选地,所述中断触发模块具体用于:

向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向目标CPU核上的通用输入输出管脚发送控制信号;

所述目标CPU核上的通用输入输出管脚接收到所述控制信号后,触发所述目标CPU核发生中断。

可选地,所述中断触发模块具体用于:

向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向高速外围组件互联PCIE接口发送控制信号;

所述PCIE接口接收到所述控制信号后,触发所述目标CPU核发生中断。

可选地,所述中断处理模块具体用于:

保存被中断任务的上下文,查找所述目标任务对应的上下文;

若查找到所述目标任务对应的上下文,则直接跳转至所述目标任务。

可选地,所述控制信号器件具体为可擦除编程逻辑器件EPLD寄存器。

第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的Linux下CPU核间中断通信的实现方法步骤。

第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的Linux下CPU核间中断通信的实现方法的步骤。

本发明实施例提供的Linux下CPU核间中断通信的实现方法及装置,消息内容的收发均在用户空间进行,消息内容无须经历发送时从用户空间拷贝到内核空间,接收时又从内核空间拷贝到用户空间的过程,通过外部的控制信号器件触发目标任务所在的目标CPU核发生中断,使得触发中断过程在用户态进行,中断发生后,目标CPU核执行自定义的中断处理流程,无须经过内核调度器触发重调度,即可快速从内核态返回到指定消息收发流程,整个过程高效、可靠,提高了系统中不同CPU核任务间消息收发的响应速度,缩短了CPU核间消息收发响应时间,在CPU高负荷状态下可有效地提升5G基站系统的实时性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为CPU高负荷状态下现有CPU核间任务消息处理的流程示意图;

图2为本发明实施例提供的Linux下CPU核间中断通信的实现方法的流程示意图;

图3为本发明另一实施例提供的Linux下CPU核间中断通信的实现方法的流程示意图;

图4为本发明实施例提供的Linux下CPU核间中断通信的实现装置的结构示意图;

图5为本发明实施例提供的电子设备的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为CPU高负荷状态下现有CPU核间任务消息处理的流程示意图,当CPU1、CPU2在高负荷、非空闲等待状态时,CPU1上运行的任务A发送消息到CPU2上的任务B,这时CPU2忙于执行其它的用户态任务,不能立即接收消息。这时的消息收发响应时间就会相对比较长且不能保证在理想时间内完成。如图1所示,步骤(1)所示为任务A发送消息,标准Linux系统发送消息需要经过系统调用进入内核,这一操作比较耗时;步骤(2)所示为任务A把发送的消息内容挂接到系统消息内容队列中,由于消息内容在用户态内存中,但是消息收发交互在内核态进行,所以此处需要先把用户态内存中的消息内容拷贝到内核态,再挂接到内核态消息结构中;步骤(3)所示为任务A发起通知任务B的操作,包括设置任务内核态消息结构B状态为就绪态;步骤(4)为任务A触发目的为CPU2的IPI中断,用来打断CPU2当前正在执行的任务,标准Linux系统触发IPI中断需要内核态权限;步骤(5)为CPU2收到IPI中断后触发内核调度器,内核调度器选择出CPU2下一个要运行的任务。内核调度器负责统筹整个Linux系统中的所有任务的运行,包括系统任务、用户任务、软中断任务等,基站系统中,内核调度器管理着上万个任务,同一时刻处于就绪态的任务也比较多,所以在CPU负荷比较高、比较繁忙的时候,不能保证内核调度器选出的下一个执行任务是任务B,也可能是一个优先级更高的系统任务,这时任务B最终接收到消息的时间就会不够实时;步骤(6)所示为任务B被成功选择执行后,读取内核态消息结构中的消息内容;步骤(7)所示为任务B拷贝读取到的消息内容到用户态内存中,最终返回到任务B的用户态部分接收到任务A发送的消息。

为了解决现有CPU核间任务消息收发响应时间较长,影响实时性能的问题,本发明实施例提出了Linux下CPU核间中断通信的实现方法及装置。

图2为本发明实施例提供的Linux下CPU核间中断通信的实现方法的流程示意图,如图2所示,Linux下CPU核间中断通信的实现方法包括:

步骤100、在用户空间执行向目标任务发送消息的操作,将所述消息写入用户空间消息队列中;

具体地,用户态任务开始执行向目标任务发送消息的操作,并将消息对应的内容数据挂接到目标任务可以访问的用户空间消息队列中,上述步骤在用户空间完成,不需要进入内核空间,不需要进行从用户空间拷贝消息内容数据到内核空间的操作,可有效地提高操作效率。

步骤101、执行写控制信号器件的操作,触发所述目标任务所在的目标中央处理器CPU核发生中断;

具体地,本实施例中,在将消息写入用户空间消息队列之后,用户态任务执行写控制信号器件的操作,触发目标任务所在的目标CPU核发生中断,打断目标CPU核的任务执行。这一操作在用户空间即可进行,不需要通过系统调用进入到内核空间,提高了打断目标CPU任务执行的时效性。

值得说明的是,触发目标任务所在的目标CPU核发生中断由外部的控制信号器件完成,属于硬件行为动作,进一步地提升了操作效率。

步骤102、执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务;

具体地,目标CPU核发生中断后,执行预先定义好的自定义内核中断处理流程,从而可以不经过Linux系统内核调度器的任务选择,直接跳转至用户态的目标任务。

由于本实施例中目标CPU核接收到中断后执行自定义中断处理流程,不需要经过Linux系统内核调度器的任务调度,即可直接跳转至用户态的目标任务。这一过程保证了目标任务接收消息的实时性和可靠性。

步骤103、从所述用户空间消息队列中读取所述消息。

最终,目标任务得以执行,访问用户空间消息队列,读取消息的具体内容,最终实现不同CPU核间任务消息的收发。这一操作避免了从内核空间拷贝数据到用户空间,从而更加高效。

本发明实施例提供的Linux下CPU核间中断通信的实现方法,消息内容的收发均在用户空间进行,消息内容无须经历发送时从用户空间拷贝到内核空间,接收时又从内核空间拷贝到用户空间的过程,通过外部的控制信号器件触发目标任务所在的目标CPU核发生中断,使得触发中断过程在用户态进行,中断发生后,目标CPU核执行自定义的中断处理流程,无须经过内核调度器触发重调度,即可快速从内核态返回到指定消息收发流程,整个过程高效、可靠,提高了系统中不同CPU核任务间消息收发的响应速度,缩短了CPU核间消息收发响应时间,在CPU高负荷状态下可有效地提升5G基站系统的实时性能。

本发明另一实施例,在上述实施例的基础上,所述执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断,具体为:

向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向目标CPU核上的通用输入输出管脚发送控制信号;

所述目标CPU核上的通用输入输出管脚接收到所述控制信号后,触发所述目标CPU核发生中断。

具体地,在将消息写入用户空间消息队列之后,用户态任务执行写控制信号器件的操作,触发目标任务所在的目标CPU核发生中断,打断目标CPU核的任务执行。

本实施例中,用户态任务通过执行写控制信号器件的操作,向控制信号器件写入中断操作指令值,所述控制信号器件接收到中断操作指令值后,发送控制信号至与所述中断操作指令值对应的亲和CPU核上的通用输入输出GPIO管脚,亲和CPU核即目标CPU核,目标CPU核上的GPIO管脚接收到控制信号后,触发中断,打断目标CPU核的运行。

例如,所述中断操作指令值为一个8bit的值,该值的每一位均对应CPU上的一个管脚,每个管脚对应触发亲和CPU核上的中断。

本实施例给出了执行写控制信号器件操作触发目标CPU核发生中断的一种实现方式,通过在用户空间写控制信号器件控制目标CPU核上的管脚触发目标CPU核中断,通过采用上述硬件方式触发中断,效率高,且避免了通过系统调用进入到内核空间,使得中断后的任务执行可以避免Linux内核调度器的调度,可有效地提升目标CPU任务执行的时效性。

本发明另一实施例,在上述实施例的基础上,所述执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断,具体为:

向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向高速外围组件互联PCIE接口发送控制信号;

所述PCIE接口接收到所述控制信号后,触发所述目标CPU核发生中断。

具体地,本实施例给出了执行写控制信号器件操作触发目标CPU核发生中断的另一种实现方式。用户态任务通过执行写控制信号器件的操作,向控制信号器件写入中断操作指令值,所述控制信号器件接收到中断操作指令值后,发送控制信号至PCIE(Peripheralcomponent interconnect express,高速外围组件互联)接口,PCIE接口向与所述中断操作指令值对应的亲和CPU核发送中断请求,亲和CPU核即目标CPU核,目标CPU核接收到中断请求后向所述PCIE接口发送中断应答,所述PCIE接口接收到所述中断应答后向目标CPU核返回中断向量值,所述目标CPU核根据中断向量值在内存中查找对应的中断服务程序,然后读取对应的中断服务程序,进而处理该中断。

本发明实施例提供的Linux下CPU核间中断通信的实现方法,通过在用户空间写控制信号器件控制PCIE接口触发目标CPU核中断,通过采用上述硬件方式触发中断,效率高,且避免了通过系统调用进入到内核空间,使得中断后的任务执行可以避免Linux内核调度器的调度,可有效地提升目标CPU任务执行的时效性。

基于上述实施例的内容,所述执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务,具体为:

保存被中断任务的上下文,查找所述目标任务对应的上下文;

若查找到所述目标任务对应的上下文,则直接跳转至所述目标任务。

具体地,目标CPU核发生中断后,执行自定义内核中断处理流程,首先保存被中断任务的上下文,进而挂接被中断的任务,然后查找目标任务对应的上下文,若查找到目标任务对应的上下文,则直接跳转至目标任务,执行目标任务。

本发明实施例提供的Linux下CPU核间中断通信的实现方法,目标CPU核执行自定义内核中断处理流程,避免了Linux内核调度器的调度,使得目标CPU核直接执行目标任务,提高了任务间消息传递的时效性。

本发明另一实施例,在上述实施例的基础上,所述控制信号器件具体为可擦除编程逻辑器件EPLD寄存器。

具体地,控制信号器件用于发出控制信号以触发目标CPU核发生中断,在本实施例中,控制信号器件可以是EPLD(Erasable Programmable Logic Device,可擦除编程逻辑器件)寄存器。

值得说明的是,EPLD寄存器是可选的,控制信号器件还可以采用其他可以发出控制信号的器件,比如FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)。

本发明实施例提供的Linux下CPU核间中断通信的实现方法,触发目标任务所在的目标CPU核发生中断由EPLD完成,属于硬件行为动作,进一步地提升了操作效率。

图3为本发明另一实施例提供的Linux下CPU核间中断通信的实现方法的流程示意图。如图3中步骤(1)所示,用户态任务A开始发送消息操作,把消息内容挂接到任务B可访问的队列中,这一操作在用户态进行,不需要进入内核态,不需要进行从用户态拷贝到内核态的操作,提高了操作效率;如图3中步骤(2)、步骤(3)、步骤(4)所示,挂接消息内容队列完成后,任务A写epld寄存器,epld收到指令后控制亲和CPU2的gpio管脚触发中断,打断CPU2的执行,这一操作在用户态即可进行,不需要通过系统调用进入内核态,提高了打断CPU2这一操作的时效性,触发中断操作由epld完成,属于硬件行为动作,效率也较高;如图3中步骤(5)、步骤(6)所示,目标CPU2收到中断后,执行自定义内核中断处理流程,先保存CPU2被打断任务的上下文,再查找目标任务B的上下文,获取到任务B的上下文后,不经过内核调度器的任务选择,直接跳转到任务B中,这一过程保证了任务B接收消息的实时性,可靠性;如图3中步骤(7)所示,任务B在用户态读取任务A发送的消息,这一过程避免了标准系统最终接收消息时从内核态拷贝数据到用户态这一操作,更加高效。

图4为本发明实施例提供的Linux下CPU核间中断通信的实现装置的结构示意图,包括:消息发送模块410、中断触发模块420、中断处理模块430和消息读取模块440,其中,

消息发送模块410,用于在用户空间执行向目标任务发送消息的操作,将所述消息写入用户空间消息队列中;

具体地,消息发送模块410用于执行向目标任务发送消息的操作,并将消息对应的内容数据挂接到目标任务可以访问的用户空间消息队列中,不需要从用户空间拷贝消息内容数据到内核空间,可有效地提高操作效率。

中断触发模块420,用于执行写控制信号器件的操作,触发所述目标任务所在的目标中央处理器CPU核发生中断;

具体地,中断触发模块420用于执行写控制信号器件的操作,触发目标任务所在的目标CPU核发生中断,打断目标CPU核的任务执行。这一操作在用户空间即可进行,不需要通过系统调用进入到内核空间,提高了打断目标CPU任务执行的时效性。

中断处理模块430,用于执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务;

具体地,中断处理模块430用于在目标CPU核发生中断后,执行预先定义好的自定义内核中断处理流程,从而可以不经过Linux系统内核调度器的任务选择,直接跳转至用户态的目标任务。

由于本实施例中目标CPU核接收到中断后执行自定义中断处理流程,不需要经过Linux系统内核调度器的任务调度,即可直接跳转至用户态的目标任务。这一过程保证了目标任务接收消息的实时性和可靠性。

消息读取模块440,用于从所述用户空间消息队列中读取所述消息。

最终,目标任务得以执行,消息读取模块440用于访问用户空间消息队列,读取消息的具体内容,最终实现不同CPU核间任务消息的收发。这一操作避免了从内核空间拷贝数据到用户空间,从而更加高效。

本发明实施例提供的Linux下CPU核间中断通信的实现装置,消息内容的收发均在用户空间进行,消息内容无须经历发送时从用户空间拷贝到内核空间,接收时又从内核空间拷贝到用户空间的过程,通过外部的控制信号器件触发目标任务所在的目标CPU核发生中断,使得触发中断过程在用户态进行,中断发生后,目标CPU核执行自定义的中断处理流程,无须经过内核调度器触发重调度,即可快速从内核态返回到指定消息收发流程,整个过程高效、可靠,提高了系统中不同CPU核任务间消息收发的响应速度,缩短了CPU核间消息收发响应时间,在CPU高负荷状态下可有效地提升5G基站系统的实时性能。

基于上述实施例的内容,所述中断触发模块420具体用于:

向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向目标CPU核上的通用输入输出管脚发送控制信号;

所述目标CPU核上的通用输入输出管脚接收到所述控制信号后,触发所述目标CPU核发生中断。

具体地,中断触发模块420将消息写入用户空间消息队列之后,执行写控制信号器件的操作,触发目标任务所在的目标CPU核发生中断,打断目标CPU核的任务执行。

本实施例中,中断触发模块420通过执行写控制信号器件的操作,向控制信号器件写入中断操作指令值,所述控制信号器件接收到中断操作指令值后,发送控制信号至与所述中断操作指令值对应的亲和CPU核上的通用输入输出GPIO管脚,亲和CPU核即目标CPU核,目标CPU核上的GPIO管脚接收到控制信号后,触发中断,打断目标CPU核的运行。

例如,所述中断操作指令值为一个8bit的值,该值的每一位均对应CPU上的一个管脚,每个管脚对应触发亲和CPU核上的中断。

本实施例给出了中断触发模块420执行写控制信号器件操作触发目标CPU核发生中断的一种实现方式,通过在用户空间写控制信号器件控制目标CPU核上的管脚触发目标CPU核中断,通过采用上述硬件方式触发中断,效率高,且避免了通过系统调用进入到内核空间,使得中断后的任务执行可以避免Linux内核调度器的调度,可有效地提升目标CPU任务执行的时效性。

本发明另一实施例,在上述实施例的基础上,所述中断触发模块420具体用于:

向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向高速外围组件互联PCIE接口发送控制信号;

所述PCIE接口接收到所述控制信号后,触发所述目标CPU核发生中断。

具体地,本实施例给出了中断触发模块420执行写控制信号器件操作触发目标CPU核发生中断的另一种实现方式。中断触发模块420通过执行写控制信号器件的操作,向控制信号器件写入中断操作指令值,所述控制信号器件接收到中断操作指令值后,发送控制信号至PCIE(Peripheral component interconnect express,高速外围组件互联)接口,PCIE接口向与所述中断操作指令值对应的亲和CPU核发送中断请求,亲和CPU核即目标CPU核,目标CPU核接收到中断请求后向所述PCIE接口发送中断应答,所述PCIE接口向目标CPU核返回中断向量值,所述目标CPU核根据中断向量值在内存中查找对应的中断服务程序,然后读取对应的中断服务程序,进而处理该中断。

本发明实施例提供的Linux下CPU核间中断通信的实现装置,通过在用户空间写控制信号器件控制PCIE接口触发目标CPU核中断,通过采用上述硬件方式触发中断,效率高,且避免了通过系统调用进入到内核空间,使得中断后的任务执行可以避免Linux内核调度器的调度,可有效地提升目标CPU任务执行的时效性。

基于上述实施例的内容,所述中断处理模块430具体用于:

保存被中断任务的上下文,查找所述目标任务对应的上下文;

若查找到所述目标任务对应的上下文,则直接跳转至所述目标任务。

具体地,中断处理模块430用于在目标CPU核发生中断后,执行自定义内核中断处理流程,首先保存被中断任务的上下文,进而挂接被中断的任务,然后查找目标任务对应的上下文,若查找到目标任务对应的上下文,则直接跳转至目标任务,执行目标任务。

本发明实施例提供的Linux下CPU核间中断通信的实现装置,目标CPU核执行自定义内核中断处理流程,避免了Linux内核调度器的调度,使得目标CPU核直接执行目标任务,提高了任务间消息传递的时效性。

基于上述实施例的内容,所述控制信号器件具体为可擦除编程逻辑器件EPLD寄存器。

具体地,控制信号器件用于发出控制信号以触发目标CPU核发生中断,在本实施例中,控制信号器件可以是EPLD(Erasable Programmable Logic Device,可擦除编程逻辑器件)寄存器。

值得说明的是,EPLD寄存器是可选的,控制信号器件还可以采用其他可以发出控制信号的器件,比如FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)。

本发明实施例提供的Linux下CPU核间中断通信的实现装置,触发目标任务所在的目标CPU核发生中断由EPLD完成,属于硬件行为动作,进一步地提升了操作效率。

图5为本发明实施例提供的电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(Communications Interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储在存储器530上并可在处理器510上运行的计算机程序,以执行上述各方法实施例所提供的Linux下CPU核间中断通信的实现方法,例如包括:在用户空间执行向目标任务发送消息的操作,将所述消息写入用户空间消息队列中;执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断;执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务;从所述用户空间消息队列中读取所述消息。

此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例提供的Linux下CPU核间中断通信的实现方法,例如包括:在用户空间执行向目标任务发送消息的操作,将所述消息写入用户空间消息队列中;执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断;执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务;从所述用户空间消息队列中读取所述消息。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种切换方法、可穿戴设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!