一种支持高并发协议交互的微任务调度机的制作方法

文档序号:33098949发布日期:2023-02-01 00:22阅读:44来源:国知局
一种支持高并发协议交互的微任务调度机的制作方法

1.本发明属于任务调度领域,尤其涉及一种支持高并发协议交互的微任务调度机。


背景技术:

2.任务调度功能是多任务操作系统的核心功能之一,根据操作系统对硬件平台资源占用、任务执行实时性响应等方面的需求定位,会对任务调度机制进行一定定制化设计与调优。如linux操作系统以进程为调度单位、也提供了以线程为调度单位的占用系统资源相对更少的多线程编程机制。vxworks操作系统以任务为调度单位。不同操作系统均可以进行调度策略的初始配置、任务优先级动态调整等措施进行宏观调度管理。
3.针对星型结构协议交互模型,采用cpu实现的中心侧网络协议软件为满足多连接、高并发协议处理需求,开发人员一般会使用嵌入式操作系统多线程机制实现协议软件,利用系统定时器、socket(套接字)多路复用、互斥锁机制等操作系统提供的编程手段确保线程内协议软件执行及线程之间协议软件的数据共享。协议软件内部划分了微任务功能模块,实现了微任务状态管理、微任务调度执行等功能,事实上实现了“微任务调度”的相关功能。
4.但由于开发人员协议软件设计与实现自主性较高,在软件架构设计、软件可移植性、软件性能等方面差异均较大,对需求的满足上参差不齐。


技术实现要素:

5.本发明的目的在于:现有技术中,单cpu硬件架构下要支撑高并发协议交互的应用场景,在协议软件实现上,采用传统嵌入式操作系统任务/进程级调度机制比较耗资源、调度效率较低。采用线程级调度有所优化,但还有进一步优化提升空间。有必要对协议软件内部“微任务调度”相关功能进行三方面提升。
6.为了克服现有技术问题,公开了一种支持高并发协议交互的微任务调度机,本发明公开的微任务调度机,一是提供了统一的微任务调度机编程接口,使网络协议软件开发方法标准化;二是提供了系统抽象层,增强应用层协议软件跨操作系统移植便捷性;三是提供了微任务级调度处理机制,满足中心侧协议软件多连接、高并发交互、低资源消耗需求。
7.本发明目的通过下述技术方案来实现:一种支持高并发协议交互的微任务调度机,所述微任务调度机包括:操作系统抽象层模块、配置管理模块、微任务装卸模块、微任务调度模块和微任务执行模块;其中,所述操作系统抽象层模块设置有宏配置选项,使得所述微任务调度机能够编译支持各操作系统;所述配置管理模块提供了调度机的初始化与销毁函数接口,能够在编译前由调用者来定义优先级级数以及是否运行调试模式;所述微任务装卸模块提供了各类型微任务的添加接口、卸载接口,能够将微任务添加至不同的队列,或从对应队列中卸载;
所述微任务调度模块提供了调度函数接口,能够根据配置管理模块确定的调度算法,从就绪队列调度出一个微任务;所述微任务执行模块提供了执行函数接口,能够执行微任务调度模块调度出来的微任务,并执行完毕后回收微任务结构体所占内存资源。
8.根据一个优选的实施方式,所述微任务调度机的各子模块经同一头文件统一提供外部接口。
9.根据一个优选的实施方式,所述微任务调度机能够编译支持的操作系统包括:linux、vxworks、windows。其中,linux,全称gnu/linux,是一种免费使用和自由传播的类unix操作系统。vxworks是wind river system 公司推出的一个实时操作系统。windows是微软公司以图形用户界面为基础研发的操作系统。
10.根据一个优选的实施方式,在进行协议软件开发过程中,所述微任务调度机通过配置管理模块完成微任务调度机的初始化,通过微任务装卸模块完成微任务添加,通过微任务调度模块完成微任务成功调度,通过微任务执行模块完成微任务执行,并基于配置管理模块完成微任务调度机销毁。
11.根据一个优选的实施方式,所述微任务调度模块在执行微任务调度时被配置为按如下流程运行:mtask fetch函数首先遍历timer(定时器)等待队列,将已超时的微任务移至对应优先级就绪队列;然后,利用协议栈socket(套接字)多路复用中的select函数,按照调度机预定义的最小时间片阻塞监测fd(file descriptor,文件描述符)集合的状态,有fd可读写时,则将该fd对应的微任务从等待队列移至就绪队列;最后,检查就绪队列,将优先级相对最高的微任务指针返回,供后续mtask call函数执行该微任务。
12.根据一个优选的实施方式,在进行fd集合状态监测过程中,确保既能够监测每个fd状态,又能够尽快退出select,以实现就绪队列的微任务能够即时执行。
13.前述本发明主方案及其各进一步选择方案可以自由组合以形成多个方案,均为本发明可采用并要求保护的方案。本领域技术人员在了解本发明方案后根据现有技术和公知常识可明了有多种组合,均为本发明所要保护的技术方案,在此不做穷举。
14.本发明的有益效果:针对网络通信协议、中心侧会话数并发数都可能较多的应用场景,使用本发明微任务调度机能够统一不同操作系统上的协议软件开发方法、不必考虑资源互斥等编程技巧、整体上降低开发难度、还能降低移植代价。
15.在硬件物理内存资源及协议栈缓存大小相关配置充裕情况下,基于本微任务调度机设计方法实现的协议软件,理论上中心侧可以利用socket(套接字)多路复用的能力上限,支持趋近65535个并发数的协议会话连接与交互处理,非常适合有高并发协议交互需求的网络协议软件开发,相较系统级进程/线程调度,本微任务调度机支撑实现的相同功能的协议软件占用资源更小。
附图说明
16.图1是本发明微任务调度机主要数据结构关系示意图;图2是本发明微任务调度机的功能模块组成示意图;图3是本发明微任务调度机的使用流程示意图;图4是本发明微任务调度机中微任务调度模块的微任务调度流程示意图。
具体实施方式
17.以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
18.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
19.为便于描述,本发明将process(linux进程)、thread(线程)和task(vxworks任务)统称为任务。本发明基于操作系统任务调度基本原理与机制,设计了能够运行于任务内部的微任务调度机,它是一个对下可适配主流操作系统、对上提供统一编程接口、可支撑高并发交互协议软件开发的软件中间件模块。
20.开发人员通过将协议软件的功能以适当的粒度、较低的耦合度进行划分或组合,创建为若干mtask(微任务)。微任务可归纳为三种类型:输入输出(i/o,包括网络读、网络写)类型,event(事件)类型,timer(定时器)类型。在协议软件初始化过程或运行过程中添加微任务到调度机,调度机能够以微任务作为最小调度单位,依据调度算法执行各微任务,可支撑高并发交互的协议软件高效自动运行。
21.微任务调度机内部定义有几个主要的数据结构,关系示意图如图 1所示。
22.mtask master(微任务管理器结构体):每个协议实体都会实例化一个微任务管理器,根据pri max(优先级级数宏)的取值,缺省管理了优先级0-7的8个微任务就绪队列、3种不同类型的微任务等待队列(net read网络读、net write网络写、timer定时器)、1个微任务回收队列,记录了微任务结构体分配数、当前调度的就绪队列索引等全局信息;mtask list(微任务链表结构体):管理了微任务链表及链表内节点数等信息;mtask(微任务结构体):记录了微任务所属的管理结构体指针、微任务优先级、微任务类型、类型相关的主要参数、执行函数指针等信息。
23.实施例1:参考图2所示,本实施例公开了一种支持高并发协议交互的微任务调度机,所述微任务调度机包括:操作系统抽象层模块、配置管理模块、微任务装卸模块、微任务调度模块和微任务执行模块。
24.其中,所述操作系统抽象层模块:提供了相应的宏配置选项,使微任务调度机可编译支持linux、vxworks、windows等主流操作系统,屏蔽了操作系统相关的头文件引用、字节序定义、基本数据类型等细节配置管理模块提供了调度机的初始化与销毁函数接口,能够在编译前由调用者来
定义优先级级数以及是否运行调试模式。
25.微任务装卸模块提供了各类型微任务的添加接口、卸载接口,能够将微任务添加至不同的队列,或从对应队列中卸载。
26.微任务调度模块提供了调度函数接口,能够根据配置管理模块确定的调度算法,从就绪队列调度出一个微任务。
27.微任务执行模块提供了执行函数接口,能够执行微任务调度模块调度出来的微任务,并执行完毕后回收微任务结构体所占内存资源。
28.所述微任务调度机的各子模块经同一头文件统一提供外部接口。表1至表3为对主要接口简要说明。
29.表1 外部接口说明表2 外部接口说明
表3 外部接口说明
参考图3所示,在进行协议软件开发过程中,本发明微任务调度机通过配置管理模块完成微任务调度机的初始化,通过微任务装卸模块完成微任务添加,通过微任务调度模块完成微任务成功调度,通过微任务执行模块完成微任务执行,并基于配置管理模块完成微任务调度机销毁。
30.具体地,参考图4所示。所述微任务调度模块在执行微任务调度时:mtask fetch函数首先遍历timer(定时器)等待队列,将已超时的微任务移至对应优先级就绪队列。
31.然后,利用协议栈socket(套接字)多路复用中的select函数,按照调度机预定义的最小时间片阻塞监测fd(file descriptor,文件描述符)集合的状态,有fd可读写时,则将该fd对应的微任务从等待队列移至就绪队列。
32.在进行fd集合状态监测过程中,确保既能够监测每个fd状态,又能够尽快退出select,以实现就绪队列的微任务能够即时执行。
33.最后,检查就绪队列,将优先级相对最高的微任务指针返回,供后续mtask call函数执行该微任务。
34.针对网络通信协议、中心侧会话数并发数都可能较多的应用场景,使用本发明微任务调度机能够统一不同操作系统上的协议软件开发方法、不必考虑资源互斥等编程技巧、整体上降低开发难度、还能降低移植代价。
35.在硬件物理内存资源及协议栈缓存大小相关配置充裕情况下,基于本微任务调度机设计方法实现的协议软件,理论上中心侧可以利用socket多路复用的能力上限,支持趋近65535个并发数的协议会话连接与交互处理,非常适合有高并发协议交互需求的网络协议软件开发,相较系统级进程/线程调度,本微任务调度机支撑实现的相同功能的协议软件占用资源更小。
36.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1