CN112527532A - 一种基于消息的路径调度方法 - Google Patents
一种基于消息的路径调度方法 Download PDFInfo
- Publication number
- CN112527532A CN112527532A CN202011535034.2A CN202011535034A CN112527532A CN 112527532 A CN112527532 A CN 112527532A CN 202011535034 A CN202011535034 A CN 202011535034A CN 112527532 A CN112527532 A CN 112527532A
- Authority
- CN
- China
- Prior art keywords
- message
- task
- priority
- scheduler
- cpu
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明涉及一种基于消息的路径调度方法。包括多个CPU构成的系统,每个CPU均维护一个消息邻接表,还包括一个消息调度器,当任务发送消息进入消息调度器,消息调度器根据该消息的目标任务的信息,判断该目标任务是否运行在当前cpu上,若任务不是运行在当前cpu上则将该消息放入目标cpu的readylist上,并发送IPI通知目标cpu发起调度,若该消息为当前cpu处理的消息则将消息放入当前cpu消息队列,并触发调度,比较当前cpu正在处理的消息优先级和该消息的优先级确定是否发起抢占,若当前cpu正在处理的消息优先级低于该消息优先级,则抢占当前运行的任务,把当前正在处理的任务放入readylist中。本发明能根据消息的优先级计算出需要调度的任务并进行调度。
Description
技术领域
本发明涉及一种基于消息的路径调度方法。
背景技术
随着物联网技术的发展,各种嵌入式设备越来越多,嵌入式设备上软件栈也越来越复杂;而目前市面上嵌入式设备所运行的操作系统各种各样,有freertos、ucos、threadx、nucleus、pikeos、nxp、linux,也有一些基于微内核架构的OS,如L4等。而这些系统上的调度算法都是基于任务来进行调度,我们常见的有基于静态优先级或者动态优先级的调度算法,如Linux系统上的RT调度类就是基于实时任务的优先级来进行任务调度。
随着嵌入式系统复杂度地逐步升高,系统内任务越来越多,任务的复杂度也越来越高,单纯通过对任务优先级的配置很难确满足整个系统的可调度性,譬如某个关键任务增加了某种类型的消息处理则会明显影响整个系统的调度性随着嵌入式系统复杂度地逐步升高,系统内任务越来越多,任务的复杂度也越来越高,存在某一个关键任务需要处理不同类型的消息,不同的消息可能存在不同的优先级,一旦关键任务在处理某一个非关键类型的消息时可能会阻塞其余关键消息的处理。
发明内容
本发明的目的就是要解决上述背景技术的不足,提供一种基于消息的路径调度方法,能根据消息的优先级计算出需要调度的任务并进行调度,解决同一个任务可以处理不同优先级的消息,保证系统关键路径的端到端时延。
为解决上述问题,本发明采用如下技术方案:一种基于消息的路径调度方法,其特征在于包括多个CPU构成的系统,
每个CPU均维护一个消息邻接表,还包括一个消息调度器,消息调度器完成初始化后,等待消息到来进行消息调度,消息调度器调度执行发送消息和等待消息,两个流程如下:
当任务等待消息进入消息调度器,消息调度器判断当前cpu上readylist上是否存在被抢占的任务,若不存在被抢占的任务则直接从消息队列中取出最高优先级的消息进行处理,处理完毕并返回该步骤;
若存在被抢占的任务,则比较被抢占任务的最高优先级的消息跟当前消息队列中最高优先级的消息对应的优先级,若被抢占任务的消息优先级大于等于消息队列中的最大优先级则阻塞当前任务并恢复被抢占任务,若被抢占任务的优先级小于消息队列中的最大优先级则去除最大优先级的消息,阻塞当前任务,恢复最高优先级消息处理任务,并返回该消息;
当任务发送消息进入消息调度器,消息调度器根据该消息的目标任务的信息,判断该目标任务是否运行在当前cpu上,若任务不是运行在当前cpu上则将该消息放入目标cpu的readylist上,并发送IPI通知目标cpu发起调度,若该消息为当前cpu处理的消息则将消息放入当前cpu消息队列,并触发调度,比较当前cpu正在处理的消息优先级和该消息的优先级确定是否发起抢占,若当前cpu正在处理的消息优先级低于该消息优先级,则抢占当前运行的任务,把当前正在处理的任务放入readylist中。
所述消息调度器的初始化流程为:系统上电后开始进入系统初始化阶段,开始调用消息调度器初始化接口进入消息调度器的初始化流程所述的消息调度器首先读取消息优先级配置文件,并创建全局消息ID跟优先级的mapping表。
本发明的有益效果在于创新地提出了一种基于消息的调度器,能对离线的消息优先级分析及动态配置方法,具有抢占式的消息处理机制,提供高优先级消息实时抢占低优先级消息处理的功能,解决同一个任务可以处理不同优先级的消息,保证系统关键路径的端到端时延。在复杂场景下,关键路径的端到端响应时间缩短40%,进一步提升系统的可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明系统流程图。
图2系统消息优先级示意图。
图3消息调度器初始化示意图。
图4为消息调度器等待消息调度流程图。
图5为消息调度器发送消息调度流程图。
图6为确定消息优先级的具体实施例示意图。
具体实施方式
下面结合附图对本发明的优选实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
参阅图1至图5所示,本发明的一种基于消息的路径调度方法,包括多个CPU构成的系统,每个CPU均维护一个消息邻接表,还包括一个消息调度器,消息调度器先完成初始化,初始化流程为:系统上电后开始进入系统初始化阶段,开始调用消息调度器初始化接口进入消息调度器的初始化流程所述的消息调度器首先读取消息优先级配置文件,并创建全局消息ID跟优先级的mapping表。等待消息到来进行消息调度,消息调度器调度执行发送消息和等待消息,两个流程如下:
当任务等待消息进入消息调度器,消息调度器判断当前cpu上readylist上是否存在被抢占的任务,若不存在被抢占的任务则直接从消息队列中取出最高优先级的消息进行处理,处理完毕并返回该步骤;
若存在被抢占的任务,则比较被抢占任务的最高优先级的消息跟当前消息队列中最高优先级的消息对应的优先级,若被抢占任务的消息优先级大于等于消息队列中的最大优先级则阻塞当前任务并恢复被抢占任务,若被抢占任务的优先级小于消息队列中的最大优先级则去除最大优先级的消息,阻塞当前任务,恢复最高优先级消息处理任务,并返回该消息;
当任务发送消息进入消息调度器,消息调度器根据该消息的目标任务的信息,判断该目标任务是否运行在当前cpu上,若任务不是运行在当前cpu上则将该消息放入目标cpu的readylist上,并发送IPI通知目标cpu发起调度,若该消息为当前cpu处理的消息则将消息放入当前cpu消息队列,并触发调度,比较当前cpu正在处理的消息优先级和该消息的优先级确定是否发起抢占,若当前cpu正在处理的消息优先级低于该消息优先级,则抢占当前运行的任务,把当前正在处理的任务放入readylist中。
具体实施例,如图6所示,
1.msg1是msg5的前驱;
2.msg2是msg6的前驱;
3.msg3、msg4分别被Task D和Task E处理完成,不需要后续处理;
4.根据业务场景确定关键路径消息流,假设msg5是系统中的关键消息,设优先级为31(假设消息的优先级为0-31,数据越大优先级越高),那么根据消息的依赖关系可以得出msg1也需要设置相同的优先级。
如图6所示,在这样场景下:
1.假设优先级的顺序为msg1=msg5>msg2=msg6>msg3=msg4。
2.假设msg1、msg2、msg3、msg4被同时触发。
3.假设任务的优先级Task A=Task B=Task C<Task D=Task E<Task F=TaskG,可以看到在任务优先级调度器的作用下在单核场景下消息的执行顺序存在非常多的情况:
1.因为Task D和Task E的优先级一样,Task E和Task D的先后顺序并不固定。
2.同样在Task D和Task E的内部处理逻辑中,msg1、msg3的先后顺序也无法保证;同样msg2、msg4的先后顺序也无法保证。
但是应用本发明的调度方法可以看到在消息调度器的作用下在单核场景下消息的执行顺序只能为下面两种情况:
1.msg1->msg5->msg2->msg6->msg3->msg4。
2.msg1->msg5->msg2->msg6->msg4->msg3。
因为msg3和msg4优先级相同触发时间也相同,所以处理的先后顺序按照先进先出的原则进行。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何不经过创造性劳动想到的变化或替换,都应涵盖在本发明保护范围为准。
Claims (2)
1.一种基于消息的路径调度方法,其特征在于包括多个CPU构成的系统,每个CPU均维护一个消息邻接表,还包括一个消息调度器,消息调度器完成初始化后,等待消息到来进行消息调度,消息调度器调度执行发送消息和等待消息,两个流程如下:
当任务等待消息进入消息调度器,消息调度器判断当前cpu上readylist上是否存在被抢占的任务,若不存在被抢占的任务则直接从消息队列中取出最高优先级的消息进行处理,处理完毕并返回该步骤;
若存在被抢占的任务,则比较被抢占任务的最高优先级的消息跟当前消息队列中最高优先级的消息对应的优先级,若被抢占任务的消息优先级大于等于消息队列中的最大优先级则阻塞当前任务并恢复被抢占任务,若被抢占任务的优先级小于消息队列中的最大优先级则去除最大优先级的消息,阻塞当前任务,恢复最高优先级消息处理任务,并返回该消息;
当任务发送消息进入消息调度器,消息调度器根据该消息的目标任务的信息,判断该目标任务是否运行在当前cpu上,若任务不是运行在当前cpu上则将该消息放入目标cpu的readylist上,并发送IPI通知目标cpu发起调度,若该消息为当前cpu处理的消息则将消息放入当前cpu消息队列,并触发调度,比较当前cpu正在处理的消息优先级和该消息的优先级确定是否发起抢占,若当前cpu正在处理的消息优先级低于该消息优先级,则抢占当前运行的任务,把当前正在处理的任务放入readylist中。
2.根据权利要求1所述的一种基于消息的路径调度方法,其特征在于所述消息调度器的初始化流程为:系统上电后开始进入系统初始化阶段,开始调用消息调度器初始化接口进入消息调度器的初始化流程所述的消息调度器首先读取消息优先级配置文件,并创建全局消息ID跟优先级的mapping表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011535034.2A CN112527532A (zh) | 2020-12-22 | 2020-12-22 | 一种基于消息的路径调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011535034.2A CN112527532A (zh) | 2020-12-22 | 2020-12-22 | 一种基于消息的路径调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112527532A true CN112527532A (zh) | 2021-03-19 |
Family
ID=74975833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011535034.2A Pending CN112527532A (zh) | 2020-12-22 | 2020-12-22 | 一种基于消息的路径调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112527532A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113032154A (zh) * | 2021-04-19 | 2021-06-25 | 深信服科技股份有限公司 | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 |
-
2020
- 2020-12-22 CN CN202011535034.2A patent/CN112527532A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113032154A (zh) * | 2021-04-19 | 2021-06-25 | 深信服科技股份有限公司 | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 |
CN113032154B (zh) * | 2021-04-19 | 2023-11-07 | 深信服科技股份有限公司 | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102455940B (zh) | 一种定时器和异步事件的处理方法及系统 | |
US20060010446A1 (en) | Method and system for concurrent execution of multiple kernels | |
CN102455933B (zh) | 一种通过线程管理提高多任务处理效率的方法 | |
CN109684060B (zh) | 一种多类型时间关键任务的混合调度方法 | |
WO2023246044A1 (zh) | 调度方法及装置、芯片、电子设备及存储介质 | |
CN107203428B (zh) | 一种基于Xen的VCPU多核实时调度算法 | |
CN102750132A (zh) | 多线程虚拟流水线处理器的线程控制和调用方法及其处理器 | |
CN109947552A (zh) | 基于进程与线程调度的边缘控制器动态任务调度方法 | |
CN113179227B (zh) | 基于队列的at指令控制方法 | |
CN113535362B (zh) | 一种分布式调度系统架构和微服务工作流调度方法 | |
CN103412755A (zh) | 一种硬件实时操作系统 | |
CN116724294A (zh) | 一种任务分配方法及装置 | |
CN112527532A (zh) | 一种基于消息的路径调度方法 | |
KR20000060827A (ko) | 실시간 운영체계 커널(Real-time operating systemKernel)의 이벤트 전달 체계 구현방법 | |
WO2021046932A1 (zh) | 基于实时操作系统的消息驱动方法和装置 | |
CN110503318A (zh) | 综合模块化航空电子处理系统资源配置与仿真评估平台 | |
US20030163600A1 (en) | Method and system where one thread can handle several different services concurrently | |
CN111400073A (zh) | 基于汽车开放架构系统到统一软硬件表示的形式化系统模型转换和可靠性分析方法 | |
Gaitan et al. | Methods to improve the performances of the real-time operating systems for small microcontrollers | |
US20050060706A1 (en) | Method and apparatus for performing real-time commands in a non real-time operating system environment | |
CN111930488B (zh) | 一种操作系统任务调度的优先级继承方法及系统 | |
US10949367B2 (en) | Method for handling kernel service request for interrupt routines in multi-core environment and electronic device thereof | |
CN114911538A (zh) | 一种运行系统的启动方法及计算设备 | |
WO2021179222A1 (zh) | 一种调度装置、调度方法、加速系统及无人机 | |
EP2637096B1 (en) | A system for schedule and executing best-effort, real-time and high-performance computing (HPC) processes |
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 |