[发明专利]一种跨核调度方法和装置有效
申请号: | 201711215743.0 | 申请日: | 2017-11-28 |
公开(公告)号: | CN109840137B | 公开(公告)日: | 2021-01-22 |
发明(设计)人: | 马明礼;苏进喜 | 申请(专利权)人: | 大唐移动通信设备有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 刘醒晗 |
地址: | 100083*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 调度 方法 装置 | ||
1.一种跨核调度方法,其特征在于,包括:
在第一操作系统上创建一个单进程,在所述单进程上运行第二操作系统,所述第二操作系统的实时性要求高于所述第一操作系统;
在所述第一操作系统的用户态设置所述第二操作系统的寄生调度器,所述寄生调度器用于调度承载在所述第二操作系统上的任务集;
在所述第一操作系统内还设置中断线程,所述中断线程由所述第一操作系统的宿主调度器调度且所述宿主调度器工作在所述第一操作系统的内核态;
在第二线程向第一线程发送中断请求的情况下,触发所述中断线程,以使所述寄生调度器通过所述中断线程实现跨核调度,其中,所述第一线程和第二线程为所述单进程内的线程,通过所述第一线程虚拟第一操作系统的第一虚拟中央处理单元,通过所述第二线程虚拟第二操作系统的第二虚拟中央处理单元;
所述寄生调度器通过所述中断线程实现跨核调度,包括:
启动所述宿主调度器运行所述中断线程的中断任务并将第一任务的断点状态保存至所述第一线程的内存栈中;所述第一任务为所述第一线程正在执行的任务;
在运行所述中断线程的过程中执行第一线程的寄生调度器并将所述中断任务的断点状态保存至所述第一线程的第一任务的内存栈中,并触发第二线程的第二任务执行;在所述第二线程的第二任务执行完成后,执行所述寄生调度器从所述第一线程的第一任务的内存栈调度所述中断任务;
在所述中断任务执行完成后,启动所述宿主调度器从所述第一线程的内存栈调度所述第一任务。
2.如权利要求1所述的方法,其特征在于,
所述单进程包括多个线程,所述多个线程分别处理所述第二操作系统对应的各任务集;
在所述第一操作系统的用户态设置所述第二操作系统的寄生调度器,包括:
针对所述多个线程中任一线程,分别创建对应的寄生调度器,每个寄生调度器用于调度所述线程的任务集内的各任务。
3.如权利要求2所述的方法,其特征在于,
为每个线程设置各自的虚拟处理器,所述虚拟处理器根据物理处理器的数量确定。
4.如权利要求1所述的方法,其特征在于,所述执行第一线程的寄生调度器并将所述中断任务的断点状态保存至所述第一线程的第一任务的内存栈中,包括:
所述第一线程的寄生调度器通过第一跳转函数将所述中断任务的断点状态保存至所述第一线程的第一任务的内存栈中,所述第一跳转函数工作在用户态;
所述执行所述寄生调度器从所述第一线程的第一任务的内存栈调度所述中断任务,包括:
所述寄生调度器通过第二跳转函数从所述第一线程的第一任务的内存栈调度所述中断任务,所述第二跳转函数也工作在用户态。
5.如权利要求4所述的方法,其特征在于,所述第一跳转函数为长跳转压栈函数setjmp,所述第二跳转函数为长跳转出栈函数longjmp,且所述长跳转压栈函数setjmp和长跳转出栈函数longjmp成对使用以实现所述寄生调度器的调度功能。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大唐移动通信设备有限公司,未经大唐移动通信设备有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711215743.0/1.html,转载请声明来源钻瓜专利网。