一种微内核调度的方法和装置制造方法及图纸

技术编号:19964003 阅读:18 留言:0更新日期:2019-01-03 12:42
本申请实施例提供了一种微内核调度的方法和装置,所述方法应用于软件平台,包括:接收针对当前微内核的调度指令;将当前微内核切换为目标微内核。本实施例通过调度指令直接对微内核进行切换,而不需要通过软件平台的线程来完成上述过程,解决了现有技术中将微内核与软件平台的线程一一对应所带来的微内核切换成本较高,实时性较差的问题。

A Microkernel Scheduling Method and Device

The embodiment of this application provides a method and device for micro-kernel scheduling, which is applied to software platforms, including receiving scheduling instructions for current micro-kernels and switching current micro-kernels to target micro-kernels. In this example, the micro-kernel is switched directly by scheduling instructions, without the need for software platform threads to complete the above process. The problem of high cost and poor real-time performance of micro-kernel switching caused by matching the micro-kernel and the software platform threads in the existing technology is solved.

【技术实现步骤摘要】
一种微内核调度的方法和装置
本申请涉及通信
,特别是涉及一种微内核调度的方法和一种微内核调度的装置。
技术介绍
随着物联网(InternetofThings,简称IoT)的兴起,应用于物联网的MCU(MicroControllerUnit,微控制单元)软件越来越复杂,针对MCU软件的开发调试工作也就显得越来越重要。但是,传统的打log(日志)的方式已经不再适用于当前的物联网开发;另一方面,由于受到MCU设备资源的限制,一些复杂的程序调试(debug)工具也无法直接在MCU上运行。因此,通过将IoT微内核运行在Linux系统上,复用Linux系统的开发工具进行软件的开发调试便成为了一个明智的选择。现有技术中,当微内核在Linux系统上运行时,每一个微内核对应一个Linux线程,微内核的调度与Linux的线程调度混合在一起,统一由Linux系统控制各个微内核之间的切换,切换成本较高,实时性较差。
技术实现思路
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种微内核调度的方法和相应的一种微内核调度的装置。为了解决上述问题,本申请公开了一种微内核调度的方法,应用于软件平台,所述方法包括:接收针对当前微内核的调度指令;将当前微内核切换为目标微内核。可选地,所述软件平台运行有主线程和/或基于内核的虚拟机KVM,所述微内核运行于所述主线程和/或所述KVM中。可选地,各个微内核具有对应的微内核控制单元,各个微内核控制单元分别具有相应的控制数值,所述将当前微内核切换为目标微内核的步骤包括:确定目标微内核对应的第一控制数值;采用所述目标微内核对应的第一控制数值替换所述当前微内核对应的第二控制数值。可选地,所述调度指令包括针对setjmp函数和longjmp函数的指令。可选地,所述接收针对当前微内核的调度指令的步骤包括:接收由外部设备输入的调度指令;依据所述调度指令,调用setjmp函数和longjmp函数。可选地,还包括:采用所述目标微内核模拟软件运行。可选地,还包括:接收软件平台发送的事件消息。可选地,所述软件平台还运行有主线程,以及代理线程或代理进程,所述接收软件平台发送的事件消息的步骤包括:软件平台发送事件消息至代理线程或代理进程;所述代理线程或代理进程转发所述事件消息至主线程;所述主线程将所述事件消息转换为中断事件;接收所述主线程发送的所述中断事件。可选地,所述软件平台发送事件消息至代理线程或代理进程的步骤包括:软件平台接收外部设备输入的信息;所述软件平台将所述信息转换为事件消息并发送至代理线程或代理进程。可选地,还包括:向软件平台发送微内核事件消息。可选地,所述向软件平台发送微内核事件消息的步骤包括:向代理线程或代理进程发送微内核事件消息;所述代理线程或代理进程将所述微内核事件消息转发至所述软件平台。可选地,所述软件平台为Linux平台。可选地,所述微内核控制单元为CPU寄存器,所述控制数值为寄存器数值。可选地,所述代理线程或代理进程具有对应的实体,所述实体包括网卡或虚拟网卡。为了解决上述问题,本申请公开了一种微内核调度的装置,应用于软件平台,所述装置包括:接收模块,用于接收针对当前微内核的调度指令;切换模块,用于将当前微内核切换为目标微内核。可选地,所述软件平台运行有主线程和/或基于内核的虚拟机KVM,所述微内核运行于所述主线程和/或所述KVM中。可选地,各个微内核具有对应的微内核控制单元,各个微内核控制单元分别具有相应的控制数值,所述切换模块包括:确定子模块,用于确定目标微内核对应的第一控制数值;替换子模块,用于采用所述目标微内核对应的第一控制数值替换所述当前微内核对应的第二控制数值。可选地,所述调度指令包括针对setjmp函数和longjmp函数的指令。可选地,所述接收模块包括:接收子模块,用于接收由外部设备输入的调度指令;调用子模块,依据所述调度指令,调用setjmp函数和longjmp函数。可选地,所述装置还包括:模拟模块,用于采用所述目标微内核模拟软件运行。可选地,所述装置还包括:事件消息接收模块,用于接收软件平台发送的事件消息。可选地,所述软件平台还运行有主进程,以及代理线程或代理进程,所述事件消息接收模块包括:事件消息发送子模块,用于软件平台发送事件消息至代理线程或代理进程;事件消息转发子模块,用于所述代理线程或代理进程转发所述事件消息至所述主线程;转换子模块,用于所述主线程将所述事件消息转换为中断事件;中断事件接收子模块,用于接收所述主线程发送的所述中断事件。可选地,所述事件消息发送子模块包括:接收单元,用于软件平台接收外部设备输入的信息;转换单元,用于所述软件平台将所述信息转换为事件消息并发送至代理线程或代理进程。可选地,所述装置还包括:微内核事件消息发送模块,用于向软件平台发送微内核事件消息。可选地,所述微内核事件消息发送模块包括:微内核事件消息发送子模块,用于向代理线程或代理进程发送微内核事件消息;微内核事件消息转发子模块,用于所述代理线程或代理进程将所述微内核事件消息转发至所述软件平台。可选地,所述软件平台为Linux平台。可选地,所述微内核控制单元为CPU寄存器,所述控制数值为寄存器数值。可选地,所述代理线程或代理进程具有对应的实体,所述实体包括网卡或虚拟网卡。本申请实施例包括以下优点:本申请实施例,通过接收针对当前微内核的调度指令,将当前微内核切换为目标微内核,从而可以采用该目标微内核模拟软件运行。本实施例通过调度指令直接对微内核进行切换,而不需要通过软件平台的线程来完成上述过程,解决了现有技术中将微内核与软件平台的线程一一对应所带来的微内核切换成本较高,实时性较差的问题。其次,本申请实施例可以直接使用setjmp/longjmp函数实现微内核的调度,保证切换过程与Linux线程无关。并且,通过将微内核与软件平台分离,使得微内核能够自主地完成内核处理阶段的堆栈初始化以及内存分配过程,从而可以使用例如valgrid(一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具)等内存泄露工具检测是否发生内存泄露,及时定位故障发生的位置,提高软件开发调试的效率。另一方面,本申请实施例为了将微内核与Linux平台分离,还可以提供newlib仓库替换Linux平台的glibc仓库,软件在运行过程中可以直接调用newlib仓库中的各个接口,进一步切断了微内核与Linux平台线程之间的联系。第三,本申请实施例通过将微内核运行于软件平台上,使得在进行模拟软件运行时,不会受到MCU设备资源的限制,能够在现有的资源条件下,完成软件的模拟运行,提高了软件的模拟运行的效率。第四,本申请实施例还可以使用代理线程或代理进程对接Linux事件消息,实现对网卡或外部设备的模拟。附图说明图1是本申请的一种微内核调度的方法实施例一的步骤流程图;图2是本申请的一种微内核调度的方法实施例二的步骤流程图;图3是本申请的微内核调度的示意图;图4是本申请的一种微内核调度的装置实施例的结构框图。具体实施方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。参照图1,示出了本申请的一种微内核调度的方法实施例一的步骤流程图,所本文档来自技高网...

【技术保护点】
1.一种微内核调度的方法,其特征在于,应用于软件平台,所述方法包括:接收针对当前微内核的调度指令;将当前微内核切换为目标微内核。

【技术特征摘要】
1.一种微内核调度的方法,其特征在于,应用于软件平台,所述方法包括:接收针对当前微内核的调度指令;将当前微内核切换为目标微内核。2.根据权利要求1所述的方法,其特征在于,所述软件平台运行有主线程和/或基于内核的虚拟机KVM,所述微内核运行于所述主线程和/或所述KVM中。3.根据权利要求1所述的方法,其特征在于,各个微内核具有对应的微内核控制单元,各个微内核控制单元分别具有相应的控制数值,所述将当前微内核切换为目标微内核的步骤包括:确定目标微内核对应的第一控制数值;采用所述目标微内核对应的第一控制数值替换所述当前微内核对应的第二控制数值。4.根据权利要求1或2或3所述的方法,其特征在于,所述调度指令包括针对setjmp函数和longjmp函数的指令。5.根据权利要求4所述的方法,其特征在于,所述接收针对当前微内核的调度指令的步骤包括:接收由外部设备输入的调度指令;依据所述调度指令,调用setjmp函数和longjmp函数。6.根据权利要求1所述的方法,其特征在于,还包括:采用所述目标微内核模拟软件运行。7.根据权利要求1所述的方法,其特征在于,还包括:接收软件平台发送的事件消息。8.根据权利要求7所述的方法,其特征在于,所述软件平台还运行有主线程,以及代理线程或代理进程,所述接收软件平台发送的事件消息的步骤包括:软件平台发送事件消息至代理线程或代理进程;所述代理线程或代理进程转发所述事件消息至主线程;所述主线程将所述事件消息转换为中断事件;接收所述主线程发送的所述中断事件。9.根据权利要求8所述的方法,其特征在于,所述软件平台发送事件消息至代理线程或代理进程的步骤包括:软件平台接收外部设备输入的信息;所述软件平台将所述信息转换为事件消息并发送至代理线程或代理进程。10.根据权利要求7或8或9所述的方法,其特征在于,还包括:向软件平台发送微内核事件消息。11.根据权利要求10所述的方法,其特征在于,所述向软件平台发送微内核事件消息的步骤包括:向代理线程或代理进程发送微内核事件消息;所述代理线程或代理进程将所述微内核事件消息转发至所述软件平台。12.根据权利要求1所述的方法,其特征在于,所述软件平台为Linux平台。13.根据权利要求3所述的方法,其特征在于,所述微内核控制单元为CPU寄存器,所述控制数值为寄存器数值。14.根据权利要求8所述的方法,其特征在于,所述代理线程或代理进程具有对应的实体,所述实体包括网卡或虚拟网卡。15.一种微内核调度的装置,其特征在于,应用于软件平台,所述装置包括:接收模块,用于接收针对当前微内核的调度指令;切换模块,用于将当前微内核切换为目...

【专利技术属性】
技术研发人员:蔡俊杰曾旭朱亮亮
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1