CN115658278B - 一种支持高并发协议交互的微任务调度机 - Google Patents
一种支持高并发协议交互的微任务调度机 Download PDFInfo
- Publication number
- CN115658278B CN115658278B CN202211560794.8A CN202211560794A CN115658278B CN 115658278 B CN115658278 B CN 115658278B CN 202211560794 A CN202211560794 A CN 202211560794A CN 115658278 B CN115658278 B CN 115658278B
- Authority
- CN
- China
- Prior art keywords
- micro
- task
- module
- scheduler
- scheduling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种支持高并发协议交互的微任务调度机,包括:操作系统抽象层模块、配置管理模块、微任务装卸模块、微任务调度模块和微任务执行模块;其中,所述操作系统抽象层模块设置有宏配置选项,使得所述微任务调度机能够编译支持各操作系统;所述配置管理模块提供了调度机的初始化与销毁函数接口,能够在编译前由调用者来定义优先级级数以及是否运行调试模式;所述微任务装卸模块提供了各类型微任务的添加接口、卸载接口;所述微任务调度模块提供了调度函数接口,能够根据配置管理模块确定的调度算法,从就绪队列调度出一个微任务;所述微任务执行模块能够执行微任务调度模块调度出来的微任务,并执行完毕后回收微任务结构体所占内存资源。
Description
技术领域
本发明属于任务调度领域,尤其涉及一种支持高并发协议交互的微任务调度机。
背景技术
任务调度功能是多任务操作系统的核心功能之一,根据操作系统对硬件平台资源占用、任务执行实时性响应等方面的需求定位,会对任务调度机制进行一定定制化设计与调优。如Linux操作系统以进程为调度单位、也提供了以线程为调度单位的占用系统资源相对更少的多线程编程机制。VxWorks操作系统以任务为调度单位。不同操作系统均可以进行调度策略的初始配置、任务优先级动态调整等措施进行宏观调度管理。
针对星型结构协议交互模型,采用CPU实现的中心侧网络协议软件为满足多连接、高并发协议处理需求,开发人员一般会使用嵌入式操作系统多线程机制实现协议软件,利用系统定时器、socket(套接字)多路复用、互斥锁机制等操作系统提供的编程手段确保线程内协议软件执行及线程之间协议软件的数据共享。协议软件内部划分了微任务功能模块,实现了微任务状态管理、微任务调度执行等功能,事实上实现了“微任务调度”的相关功能。
但由于开发人员协议软件设计与实现自主性较高,在软件架构设计、软件可移植性、软件性能等方面差异均较大,对需求的满足上参差不齐。
发明内容
本发明的目的在于:现有技术中,单CPU硬件架构下要支撑高并发协议交互的应用场景,在协议软件实现上,采用传统嵌入式操作系统任务/进程级调度机制比较耗资源、调度效率较低。采用线程级调度有所优化,但还有进一步优化提升空间。有必要对协议软件内部“微任务调度”相关功能进行三方面提升。
为了克服现有技术问题,公开了一种支持高并发协议交互的微任务调度机,本发明公开的微任务调度机,一是提供了统一的微任务调度机编程接口,使网络协议软件开发方法标准化;二是提供了系统抽象层,增强应用层协议软件跨操作系统移植便捷性;三是提供了微任务级调度处理机制,满足中心侧协议软件多连接、高并发交互、低资源消耗需求。
本发明目的通过下述技术方案来实现:
一种支持高并发协议交互的微任务调度机,所述微任务调度机包括:操作系统抽象层模块、配置管理模块、微任务装卸模块、微任务调度模块和微任务执行模块;
其中,所述操作系统抽象层模块设置有宏配置选项,使得所述微任务调度机能够编译支持各操作系统;
所述配置管理模块提供了调度机的初始化与销毁函数接口,能够在编译前由调用者来定义优先级级数以及是否运行调试模式;
所述微任务装卸模块提供了各类型微任务的添加接口、卸载接口,能够将微任务添加至不同的队列,或从对应队列中卸载;
所述微任务调度模块提供了调度函数接口,能够根据配置管理模块确定的调度算法,从就绪队列调度出一个微任务;
所述微任务执行模块提供了执行函数接口,能够执行微任务调度模块调度出来的微任务,并执行完毕后回收微任务结构体所占内存资源。
根据一个优选的实施方式,所述微任务调度机的各子模块经同一头文件统一提供外部接口。
根据一个优选的实施方式,所述微任务调度机能够编译支持的操作系统包括:Linux、VxWorks、Windows。其中,Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统。VxWorks是Wind River System 公司推出的一个实时操作系统。Windows是微软公司以图形用户界面为基础研发的操作系统。
根据一个优选的实施方式,在进行协议软件开发过程中,所述微任务调度机通过配置管理模块完成微任务调度机的初始化,通过微任务装卸模块完成微任务添加,通过微任务调度模块完成微任务成功调度,通过微任务执行模块完成微任务执行,并基于配置管理模块完成微任务调度机销毁。
根据一个优选的实施方式,所述微任务调度模块在执行微任务调度时被配置为按如下流程运行:
mtask fetch函数首先遍历timer(定时器)等待队列,将已超时的微任务移至对应优先级就绪队列;
然后,利用协议栈socket(套接字)多路复用中的select函数,按照调度机预定义的最小时间片阻塞监测fd(file descriptor,文件描述符)集合的状态,有fd可读写时,则将该fd对应的微任务从等待队列移至就绪队列;
最后,检查就绪队列,将优先级相对最高的微任务指针返回,供后续mtask call函数执行该微任务。
根据一个优选的实施方式,在进行fd集合状态监测过程中,确保既能够监测每个fd状态,又能够尽快退出select,以实现就绪队列的微任务能够即时执行。
前述本发明主方案及其各进一步选择方案可以自由组合以形成多个方案,均为本发明可采用并要求保护的方案。本领域技术人员在了解本发明方案后根据现有技术和公知常识可明了有多种组合,均为本发明所要保护的技术方案,在此不做穷举。
本发明的有益效果:
针对网络通信协议、中心侧会话数并发数都可能较多的应用场景,使用本发明微任务调度机能够统一不同操作系统上的协议软件开发方法、不必考虑资源互斥等编程技巧、整体上降低开发难度、还能降低移植代价。
在硬件物理内存资源及协议栈缓存大小相关配置充裕情况下,基于本微任务调度机设计方法实现的协议软件,理论上中心侧可以利用socket(套接字)多路复用的能力上限,支持趋近65535个并发数的协议会话连接与交互处理,非常适合有高并发协议交互需求的网络协议软件开发,相较系统级进程/线程调度,本微任务调度机支撑实现的相同功能的协议软件占用资源更小。
附图说明
图1是本发明微任务调度机主要数据结构关系示意图;
图2是本发明微任务调度机的功能模块组成示意图;
图3是本发明微任务调度机的使用流程示意图;
图4是本发明微任务调度机中微任务调度模块的微任务调度流程示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于描述,本发明将process(Linux进程)、thread(线程)和task(VxWorks任务)统称为任务。本发明基于操作系统任务调度基本原理与机制,设计了能够运行于任务内部的微任务调度机,它是一个对下可适配主流操作系统、对上提供统一编程接口、可支撑高并发交互协议软件开发的软件中间件模块。
开发人员通过将协议软件的功能以适当的粒度、较低的耦合度进行划分或组合,创建为若干mtask(微任务)。微任务可归纳为三种类型:输入输出(I/O,包括网络读、网络写)类型,event(事件)类型,timer(定时器)类型。在协议软件初始化过程或运行过程中添加微任务到调度机,调度机能够以微任务作为最小调度单位,依据调度算法执行各微任务,可支撑高并发交互的协议软件高效自动运行。
微任务调度机内部定义有几个主要的数据结构,关系示意图如图 1所示。
mtask master(微任务管理器结构体):每个协议实体都会实例化一个微任务管理器,根据PRI MAX(优先级级数宏)的取值,缺省管理了优先级0-7的8个微任务就绪队列、3种不同类型的微任务等待队列(net read网络读、net write网络写、timer定时器)、1个微任务回收队列,记录了微任务结构体分配数、当前调度的就绪队列索引等全局信息;
mtask list(微任务链表结构体):管理了微任务链表及链表内节点数等信息;
mtask(微任务结构体):记录了微任务所属的管理结构体指针、微任务优先级、微任务类型、类型相关的主要参数、执行函数指针等信息。
实施例1:
参考图2所示,本实施例公开了一种支持高并发协议交互的微任务调度机,所述微任务调度机包括:操作系统抽象层模块、配置管理模块、微任务装卸模块、微任务调度模块和微任务执行模块。
其中,所述操作系统抽象层模块:提供了相应的宏配置选项,使微任务调度机可编译支持Linux、VxWorks、Windows等主流操作系统,屏蔽了操作系统相关的头文件引用、字节序定义、基本数据类型等细节
配置管理模块提供了调度机的初始化与销毁函数接口,能够在编译前由调用者来定义优先级级数以及是否运行调试模式。
微任务装卸模块提供了各类型微任务的添加接口、卸载接口,能够将微任务添加至不同的队列,或从对应队列中卸载。
微任务调度模块提供了调度函数接口,能够根据配置管理模块确定的调度算法,从就绪队列调度出一个微任务。
微任务执行模块提供了执行函数接口,能够执行微任务调度模块调度出来的微任务,并执行完毕后回收微任务结构体所占内存资源。
所述微任务调度机的各子模块经同一头文件统一提供外部接口。表1至表3为对主要接口简要说明。
表1 外部接口说明
表2 外部接口说明
表3 外部接口说明
参考图3所示,在进行协议软件开发过程中,本发明微任务调度机通过配置管理模块完成微任务调度机的初始化,通过微任务装卸模块完成微任务添加,通过微任务调度模块完成微任务成功调度,通过微任务执行模块完成微任务执行,并基于配置管理模块完成微任务调度机销毁。
具体地,参考图4所示。所述微任务调度模块在执行微任务调度时:
mtask fetch函数首先遍历timer(定时器)等待队列,将已超时的微任务移至对应优先级就绪队列。
然后,利用协议栈socket(套接字)多路复用中的select函数,按照调度机预定义的最小时间片阻塞监测fd(file descriptor,文件描述符)集合的状态,有fd可读写时,则将该fd对应的微任务从等待队列移至就绪队列。
在进行fd集合状态监测过程中,确保既能够监测每个fd状态,又能够尽快退出select,以实现就绪队列的微任务能够即时执行。
最后,检查就绪队列,将优先级相对最高的微任务指针返回,供后续mtask call函数执行该微任务。
针对网络通信协议、中心侧会话数并发数都可能较多的应用场景,使用本发明微任务调度机能够统一不同操作系统上的协议软件开发方法、不必考虑资源互斥等编程技巧、整体上降低开发难度、还能降低移植代价。
在硬件物理内存资源及协议栈缓存大小相关配置充裕情况下,基于本微任务调度机设计方法实现的协议软件,理论上中心侧可以利用socket多路复用的能力上限,支持趋近65535个并发数的协议会话连接与交互处理,非常适合有高并发协议交互需求的网络协议软件开发,相较系统级进程/线程调度,本微任务调度机支撑实现的相同功能的协议软件占用资源更小。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种支持高并发协议交互的微任务调度机,其特征在于,所述微任务调度机包括:操作系统抽象层模块、配置管理模块、微任务装卸模块、微任务调度模块和微任务执行模块;
微任务为开发人员通过将协议软件的功能以设定的粒度和耦合度进行划分或组合创建得到;微任务归纳为三种类型:输入输出类型,事件类型,定时器类型;在协议软件初始化过程或运行过程中添加微任务到调度机,调度机能够以微任务作为最小调度单位,依据调度算法执行各微任务,支撑高并发交互的协议软件高效自动运行;
其中,所述操作系统抽象层模块设置有宏配置选项,使得所述微任务调度机能够编译支持各操作系统;
所述配置管理模块提供了调度机的初始化与销毁函数接口,能够在编译前由调用者来定义优先级级数以及是否运行调试模式;
所述微任务装卸模块提供了各类型微任务的添加接口、卸载接口,能够将微任务添加至不同的队列,或从对应队列中卸载;
所述添加接口基于MTASK*add_event函数添加事件类型微任务到master管理器,并初始化event微任务各参数,将event微任务按优先级挂接到就绪队列;
所述添加接口基于MTASK*add_timer函数添加timer类型微任务到master管理器,并以秒为时间间隔参数,初始化微任务各参数,将timer微任务挂接到timer等待队列;
所述添加接口基于MTASK*add_timer_timeval函数添加timer类型微任务到master管理器,以osal_timeval为时间间隔参数的定时器,初始化微任务各参数,将timer微任务挂接到timer等待队列;
所述添加接口基于MTASK*add_net_read函数添加read类型微任务到master管理器,并初始化微任务各参数,将read微任务挂接到网络read等待队列;
所述添加接口基于MTASK*add_net_write函数添加write类型微任务到master管理器,并初始化微任务各参数,将write微任务挂接到网络write等待队列;
所述卸载接口基于int mtask_cancel函数从调度机中卸载微任务;所述卸载接口基于int mtask_cancel_event函数卸载就绪队列中满足参数条件arg的event微任务;所述卸载接口基于int mtask_cancel_timer函数卸载等待队列timer链表中满足参数条件arg的微任务;所述卸载接口基于int
mtask_cancel_net_read函数卸载等待队列的net_read链表中满足参数条件arg的微任务;所述卸载接口基于int mtask_cancel_net_write函数卸载等待队列的net_write链表中满足参数条件arg的微任务;
所述微任务调度模块提供了调度函数接口,能够根据配置管理模块确定的调度算法,从就绪队列调度出一个微任务;
所述微任务调度模块在执行微任务调度时被配置为按如下流程运行:
mtask fetch函数首先遍历timer等待队列,将已超时的微任务移至对应优先级就绪队列;然后,利用协议栈socket多路复用中的select函数,按照调度机预定义的最小时间片阻塞监测fd集合的状态,有fd可读写时,则将该fd对应的微任务从等待队列移至就绪队列;最后,检查就绪队列,将优先级相对最高的微任务指针返回,供后续mtask call函数执行该微任务;
所述微任务执行模块提供了执行函数接口,能够执行微任务调度模块调度出来的微任务,并执行完毕后回收微任务结构体所占内存资源。
2.如权利要求1所述的微任务调度机,其特征在于,所述微任务调度机的各子模块经同一头文件统一提供外部接口。
3.如权利要求1所述的微任务调度机,其特征在于,所述微任务调度机能够编译支持的操作系统包括:Linux、VxWorks、Windows。
4.如权利要求1所述的微任务调度机,其特征在于,在进行协议软件开发过程中,所述微任务调度机通过配置管理模块完成微任务调度机的初始化,通过微任务装卸模块完成微任务添加,通过微任务调度模块完成微任务成功调度,通过微任务执行模块完成微任务执行,并基于配置管理模块完成微任务调度机销毁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211560794.8A CN115658278B (zh) | 2022-12-07 | 2022-12-07 | 一种支持高并发协议交互的微任务调度机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211560794.8A CN115658278B (zh) | 2022-12-07 | 2022-12-07 | 一种支持高并发协议交互的微任务调度机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115658278A CN115658278A (zh) | 2023-01-31 |
CN115658278B true CN115658278B (zh) | 2023-05-05 |
Family
ID=85017035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211560794.8A Active CN115658278B (zh) | 2022-12-07 | 2022-12-07 | 一种支持高并发协议交互的微任务调度机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115658278B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117082008B (zh) * | 2023-10-17 | 2023-12-15 | 深圳云天畅想信息科技有限公司 | 虚拟弹性网络数据传输调度方法、计算机装置及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011046913A1 (en) * | 2009-10-13 | 2011-04-21 | Turck Holding Gmbh | Single-stack real-time operating system for embedded systems |
CN108874513A (zh) * | 2017-05-11 | 2018-11-23 | 北京京东尚科信息技术有限公司 | 处理定时任务的方法、系统、电子设备和计算机可读介质 |
CN109558227B (zh) * | 2018-11-12 | 2023-03-31 | 中国航空工业集团公司西安飞行自动控制研究所 | 一种基于任务执行预算的单调速率任务调度方法 |
EP4035002A1 (en) * | 2019-09-27 | 2022-08-03 | Amazon Technologies, Inc. | On-demand execution of object filter code in output path of object storage service |
CN112416546A (zh) * | 2020-11-10 | 2021-02-26 | 光华临港工程应用技术研发(上海)有限公司 | 多任务调度方法、电子装置和计算机存储介质 |
CN113835851A (zh) * | 2021-08-19 | 2021-12-24 | 威胜信息技术股份有限公司 | 一种实时操作系统定时器实现方法 |
CN114489989A (zh) * | 2022-01-28 | 2022-05-13 | 中国建设银行股份有限公司 | 一种基于代理客户端并行调度的方法及系统 |
CN114461365A (zh) * | 2022-02-08 | 2022-05-10 | 中国农业银行股份有限公司 | 一种进程调度处理方法、装置、设备和存储介质 |
CN114461396A (zh) * | 2022-02-08 | 2022-05-10 | 亿咖通(湖北)技术有限公司 | 基于lxc的资源调度方法、装置、设备及存储介质 |
-
2022
- 2022-12-07 CN CN202211560794.8A patent/CN115658278B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115658278A (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9779042B2 (en) | Resource management in a multicore architecture | |
US7925869B2 (en) | Instruction-level multithreading according to a predetermined fixed schedule in an embedded processor using zero-time context switching | |
JP5311732B2 (ja) | マルチコアアーキテクチャにおけるスケジューリング | |
US9798595B2 (en) | Transparent user mode scheduling on traditional threading systems | |
CN101226487B (zh) | 基于嵌入式Linux操作系统的内核级线程库的实现方法 | |
US20070150895A1 (en) | Methods and apparatus for multi-core processing with dedicated thread management | |
US8321874B2 (en) | Intelligent context migration for user mode scheduling | |
JP2009532754A (ja) | 継続ベースのメタランタイムのための抽象実行モデル | |
CN105045658A (zh) | 一种利用多核嵌入式dsp实现动态任务调度分发的方法 | |
WO2007112635A1 (fr) | Système d'exploitation intégré pour carte à puce et procédé de traitement de tâche | |
EP1730628A1 (en) | Resource management in a multicore architecture | |
EP1716482A2 (en) | Sharing idled processor execution resources | |
CN107977369B (zh) | 便于移植的嵌入式数据库管理系统 | |
US10782999B2 (en) | Method, device, and single-tasking system for implementing multi-tasking in single-tasking system | |
CN115658278B (zh) | 一种支持高并发协议交互的微任务调度机 | |
EP2282265A1 (en) | A hardware task scheduler | |
Kato et al. | A loadable real-time scheduler suite for multicore platforms | |
Li et al. | Rosgm: A real-time gpu management framework with plug-in policies for ros 2 | |
US20190196874A1 (en) | Method and system for predicting optimal number of threads for application running on electronic device | |
CN114911538A (zh) | 一种运行系统的启动方法及计算设备 | |
CN106997304B (zh) | 输入输出事件的处理方法及设备 | |
Zhou et al. | An event-driven multi-threading real-time operating system dedicated to wireless sensor networks | |
US9201688B2 (en) | Configuration of asynchronous message processing in dataflow networks | |
CN117093355B (zh) | 一种进程内伪线程调度方法 | |
CN118170520A (zh) | 基于嵌入式多核实时操作系统的dag任务调度方法、计算机程序产品、存储介质及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |