一种嵌入式实时操作系统的两级优先调度方法技术方案

技术编号:38384549 阅读:11 留言:0更新日期:2023-08-05 17:40
本发明专利技术公开了一种嵌入式实时操作系统的调度算法优化方法,在嵌入式实时系统μC/OS

【技术实现步骤摘要】
一种嵌入式实时操作系统的两级优先调度方法


[0001]本专利技术涉及嵌入式实时操作系统内核
,具体涉及一种嵌入式实时操作系统μC/OS

II的任务调度算法的优化方法。

技术介绍

[0002]μC/OS

II是一款功能强大、可靠性高的实时操作系统(Real Time Operating System,RTOS),具有高度的可移植性、可裁剪性和可配置性,通过采用抢占式优先级调度算法满足不同任务的实时调度需求。
[0003]原μC/OS

II任务优先级机制设有唯一的一级优先级,使用优先级位图来管理。μC/OS

II中每个任务的优先级大小与该整数值成反比,即0为最大优先级,数值越大,优先级越小。这种设计可以确保系统中任务的优先级是有序的,使得任务可以按照优先级的高低来调度和执行。由于任务数量和优先级数目的增加,使用一般的数据结构(例如链表)来管理任务的优先级可能会导致查找和更新就绪任务的时间过长,从而影响系统的实时性能。为了解决这一问题,μC/OS

II采用了优先级位图来管理任务优先级。优先级位图使用一个位数组OSRdyTbl和一个位变量OSRdyGrp来表示系统中所有任务的就绪状态。其中,OSRdyTbl由8个元素组成,每个元素有8位,共64位,每一位对应一个任务的优先级。如果该任务处于就绪状态,则相应的位为1,否则为0;OSRdyGrp是一个8位变量,每一位对应OSRdyTbl中的一组,1表示该组至少有一个就绪任务,0表示该组没有就绪任务。另外优先级判断表OSUnMapTbl是μC/OS

II任务调度算法中的一种优化策略,其基本思想是“以空间换时间”。优先级判断表是一个256个元素的数组,它记录了8位整型的最低有效位,即从最低位开始,第一个1所在的位数。优先级判断表的作用是为了快速地从就绪态任务中查找优先级最高的任务,并且保证时间复杂度可控。这种查找方式通过将任务的优先级位图与优先级判断表进行按位与运算,可以快速得到优先级最高的任务,避免了使用循环或者排序等耗时的算法,从而将查找的时间复杂度降低到了O(1)。优先级判断表会消耗有限的存储空间,但是相比较于时间效率的提升而言,这种消耗可以忽略不计。
[0004]然而,μC/OS

II不允许多个任务具有相同优先级,限制了并发任务的数量和灵活性。在嵌入式实时计算领域中,具有相同优先级的多任务应用场景较为常见,例如在路由管理中,有时需要为每个连接创建一个任务,而一个SNAT协议的路由其连接的最大可行数量达到了800个左右。如果强行为这些多任务应用分配不同的优先级,则必须添加额外的代码逻辑来维护任务调度的正确性和实时性,从而增加系统的复杂性和不一致性。此外,不允许任务有相同的优先级,还会限制μC/OS

II任务并发的数量。μC/OS

II最多只能创建64个优先级,除去保留系统使用的8个优先级,最多只支持56个任务,显然这无法满足一些复杂的应用场景。
[0005]虽然一些RTOS(如FreeRTOS)支持相同优先级任务以及较大的并发任务量。但这些系统通常在实时性、可靠性以及对FS、USB、GUI及CAN等应用场景支持方面较弱,不具备替代μC/OS

II的能力。
[0006]综上所述,在μC/OS

II有不可替代的优势的背景下,现存的μC/OS

II的单优先级机制难以满足现实背景下大量出现的具有相同优先级的多任务应用的需求,限制了并发任务的数量和灵活性,有必要对其优先级机制进行扩展。

技术实现思路

[0007]本专利技术的目的在于为嵌入式实时操作系统μC/OS

II扩展两级优先调度算法,在该嵌入式系统中支持两级优先级实时调度并扩展其可支持的任务调度总数以解决上述问题。
[0008]本专利技术通过下述技术方案实现:一种嵌入式实时操作系统的任务调度算法优化方法,在嵌入式实时系统μC/OS

II中支持两级优先级实时调度,包括以下步骤:步骤S1:任务就绪,任务就绪并等待内核调度时,任务调度模块根据所有就绪任务的用户定义的一级优先级prio1更新就绪状态表,输出更新后的优先级就绪组OSRdyGrp、一级优先级就绪表OSRdyTbl和二级优先级就绪表OSRdyTbl_2;步骤S2:任务查找,查找最高优先级就绪任务,利用优先级位图OSUnMap与优先级判断表OSUnMapTbl,结合二级优先级就绪表OSRdyTbl_2,根据一级和二级优先级查找最高优先级就绪任务,输出由一级优先级prio1与二级优先级prio2构成的任务序列号;步骤S3:任务结束,一个任务结束时根据其一级优先级prio1与二级优先级prio2构成的任务序列号将其从就绪状态中移除,同时对优先位图、一级与二级优先级就绪表进行更新。
[0009]本专利技术所述两级优先级层级功能包括:一级优先级prio1:由用户决定,允许用户直接为多个功能或重要性一致的任务分配相优先级;以及二级优先级prio2:根据用户指定的优先级策略由系统自动分配,同一优先级下的任务可以按照二级优先级进行调度。
[0010]本专利技术所述扩展的二级优先级就绪表OSRdyTbl_2被指定为一个大小为64*2
n
(n>1)的数组,通过prio2=OSRdyTbl_2[prio1]的形式实现任务一、二级优先级之间的映射。扩展后可支持的任务调度总数,二级优先级的数量可以根据需要分为2
n
(n>1)个,系统支持的任务调度总数可以扩充到2
m
(m=n+6)个。特别地,当二级优先级分为4个时,可以利用μC/OS

II优先级数据剩余的两位存储二级优先级的数据。在一些对内存空间特别敏感的环境中(例如8位机),这种优化可以减少内存空间的占用。如需处理更多任务,可以设定更多的二级优先级,以增加系统的并发能力。所述扩展后任务优先级表征的具有唯一性,即扩展后每个任务的优先级仍然是唯一的,其形式为prio1/prio2。
[0011]本专利技术允许用户自行定义二级优先级策略,策略可以根据实际情况满足特定场景下效率、实时性、公平性等性质的需要,并由用户具体指定;系统根据指定的策略自动赋予二级优先级。
[0012]进一步地,所述任务就绪阶段的控制过程S1包括以下步骤:步骤S101:计算出任务所在一级优先级prio1对应在一级优先级就绪表中的第x组的第y位;步骤S102:更新一级优先级就绪表,将OSRdyGrp的第x位和OSRdyTbl[x]的第y位置1,表示内核中有一级优先级为prio1的任务就绪;步骤S103:更新任务的对应的二级优先级,根据由用户自行定义的优先策略计算
得到任务的二级优先级更新OSRdyTbl_2;某一任务的一级与二级优先级通过二级优先级就绪表OSRdyTbl_本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种嵌入式实时操作系统的两级优先调度方法,在嵌入式实时系统μC/OS

II中支持两级优先级实时调度,包括以下步骤:步骤S1:任务就绪,任务就绪并等待内核调度时,任务调度模块根据所有就绪任务的用户定义的一级优先级prio1更新就绪状态表,输出更新后的优先级就绪组OSRdyGrp、一级优先级就绪表OSRdyTbl和二级优先级就绪表OSRdyTbl_2;步骤S2:任务查找,查找最高优先级就绪任务,利用优先级位图OSUnMap与优先级判断表OSUnMapTbl,结合二级优先级就绪表OSRdyTbl_2,根据一级和二级优先级查找最高优先级就绪任务,输出由一级优先级prio1与二级优先级prio2构成的任务序列号;步骤S3:任务结束,一个任务结束时根据其一级优先级prio1与二级优先级prio2构成的任务序列号将其从就绪状态中移除,同时对优先位图、一级与二级优先级就绪表进行更新。2.根据权利要求1所述一种嵌入式实时操作系统的两级优先调度方法,其特征在于,所述两级优先级层级功能包括:一级优先级prio1:由用户决定,允许用户直接为多个功能或重要性一致的任务分配相同的优先级;以及二级优先级prio2:根据用户指定的优先级策略由系统自动分配,同一优先级下的任务可以按照二级优先级进行调度。3.根据权利要求1所述一种嵌入式实时操作系统的两级优先调度方法,其特征在于,所述扩展的二级优先级就绪表OSRdyTbl_2:OSRdyTbl_2被指定为一个大小为64*2
n
(n>1)的数组,通过prio2=OSRdyTbl_2[prio1]的形式实现任务一、二级优先级之间的映射。4.根据权利要求2所述一种嵌入式实时操作系统的两级优先调度方法,其特征在于,扩展后可支持的任务调度总数:二级优先级的数量可以根据需要分为2
n
(n>1)个,系统支持的任务调度总数可以扩充到2
m
(m=n+6)个。5.根据权利要求2所述一种嵌入式实时操作系统的两级优先调度方法,其特征在于,所述扩展后任务优先级表征的唯一性:扩展后每个任务的优先级仍然是唯一的,其形式为prio1/prio2。6.根据权利要求2所述一种嵌入式实时操作...

【专利技术属性】
技术研发人员:李启明房文宇杨霞孙海泳
申请(专利权)人:电子科技大学
类型:发明
国别省市:

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

1