System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于双向链式延时队列的嵌入式实时操作系统调度方法技术方案_技高网

基于双向链式延时队列的嵌入式实时操作系统调度方法技术方案

技术编号:40237786 阅读:6 留言:0更新日期:2024-02-02 22:37
本发明专利技术提供一种基于双向链式延时队列的嵌入式实时操作系统调度方法,包括:S1,将Alarm模块和/或ScheduleTable模块组成的双向链式延时队列按照其触发时间进行从小到大排序,将Counter模块相邻于触发时间最小的节点设置;S2,Counter模块进入中断时,采用头节点的触发时间为Counter模块的下一节点触发时间赋值;S3,若判定Counter模块的当前计数时间与其下一节点触发时间相一致,则执行下一节点对应的处理函数;若不一致,则退出Counter模块的中断;S4,删除执行完成的模块,双向链式延时队列的下一个待执行模块作为新的头节点;S5,重复步骤S2~S4,直至执行完队列中的全部模块。本发明专利技术优化了嵌入式实时操作系统调度机制,提升了系统调度效率。

【技术实现步骤摘要】

本专利技术涉及嵌入式软件cp(classical platform autosar)rtos(实时操作系统),更具体地,涉及一种基于双向链式延时队列的嵌入式实时操作系统调度方法


技术介绍

1、在嵌入式软件cp(classical platform autosar)的os(操作系统)中,scheduletable(调度表)模块和alarm(告警表)模块都是由counter(计数器)模块去驱动,且一个counter模块可以驱动多个scheduletable模块或多个alarm模块,在现有技术的背景下,常见的有两种调度机制:

2、①一种是由counter分别驱动alarm和scheduletable模块(基于每个counter的alarm和scheduletable都有自己独立的一个链表),在每次counter中断到达时,调度模块需要在中断处理函数中去分别遍历alarm和scheduletable的两张链表中的节点,比较某个节点的触发时间是否到达。这种调度机制代码实现逻辑简单,且插入节点效率较高,但alarm和scheduletable很多操作类似,存在很多代码冗余,不利于维护。

3、②另一种是把alarm模块和scheduletable模块放在线性延时队列中,用各自的标识符(alarmid和scheduletableid)作区分,然后由counter管理这个线性延时队列(在classical platform autosar中,alarm和scheduletable的数量在程序运行前可以被用户确定,遂数据结构采用线性数组的方式),这种调度机制的优势在于查询时有很高的效率,但是在插入时,需要对队列中的元素进行搬移,影响系统调度效率。

4、因此,有必要设计一种能够提高系统调度效率的方案。


技术实现思路

1、本专利技术针对现有技术中存在的技术问题,提供一种基于双向链式延时队列的嵌入式实时操作系统调度方法,以优化嵌入式实时操作系统调度机制,提升系统调度效率。

2、根据本专利技术的第一方面,提供了一种基于双向链式延时队列的嵌入式实时操作系统调度方法,包括:

3、s1,将多个节点组成双向链式延时队列,并将多个节点按照其触发时间expiretime进行从小到大排序,所述节点为alarm模块或scheduletable模块;将counter模块相邻于触发时间expire time最小的节点设置;

4、s2,counter模块进入中断时,采用触发时间expire time最小节点的触发时间expire time为counter模块的下一节点触发时间next expire time赋值,采用系统定时器时间为counter模块的当前计数时间current time赋值;

5、s3,若判定counter模块的当前计数时间current time与其下一节点触发时间next expire time相一致,则执行下一节点对应的处理函数;若不一致,则退出counter模块的中断;

6、s4,删除执行完成的模块,双向链式延时队列的下一个待执行模块作为新的头节点;

7、s5,重复步骤s2~s4,若执行完双向链式延时队列中的全部模块,则退出counter模块的中断。

8、在上述技术方案的基础上,本专利技术还可以作出如下改进。

9、可选的,所述将多个节点组成双向链式延时队列,并将多个节点按照其触发时间expire time进行从小到大排序,所述节点为alarm模块或scheduletable模块,包括:

10、提取各个模块中alarm模块和scheduletable模块共通的特性作为单个节点,全部节点组成模块drvobjectmodule,所述模块drvobjectmodule的数据存储结构为双向链式延时队列;其中,所述节点的prev指向上一节点中entry成员的首地址,所述节点的next指向下一节点中entry成员的首地址;

11、在双向链式延时队列中,对alarm模块与scheduletable模块的差异部分,使用注册模块处理函数的方式进行区分;

12、对双向链式延时队列中各模块的触发时间expire time进行从小到大排序,得到升序排列的双向链式延时队列。

13、可选的,所述对alarm模块与scheduletable模块的差异部分,使用注册模块处理函数的方式进行区分,包括:

14、对各个节点的所述alarm模块或scheduletable模块分别设置函数指针,以指向各模块对应的处理函数;当运行所述alarm模块或scheduletable模块时,通过运行当前执行模块的函数指针,以调用当前执行模块的处理函数。

15、可选的,将counter模块相邻于触发时间expire time最小的节点设置,包括:

16、将counter模块相邻于头节点设置,其中,所述头节点为双向链式延时队列中触发时间expire time最小的节点;

17、所述头节点的prev指向counter模块的成员list首地址,头节点的next指向下一节点中entry成员的首地址,counter模块的prev指向尾节点中entry成员的首地址,counter模块的next指向头节点中entry成员的首地址,尾节点的prev指向上一节点的entry成员的首地址,尾节点的next指向counter模块的成员list首地址,其中,尾节点为双向链式延时队列中触发时间expire time最大的节点,list为counter模块的链表头节点。

18、可选的,s4,删除执行完成的模块,双向链式延时队列的下一个待执行模块作为新的头节点,包括:

19、删除当前头节点已执行完成的模块,将counter模块的next指向双向链式延时队列中下一个节点中entry成员的首地址,且下一个节点的prev指向counter模块的list成员首地址,以将下一个待执行模块更新为新的头节点;

20、采用新的头节点的触发时间expire time为counter模块的下一节点触发时间next expire time赋值,采用当前系统定时器时间更新counter模块的当前计数时间current time。

21、可选的,next的值通过下一个节点的首地址加上成员entry在下一个节点中的偏移量获取,prev的值通过上一个节点的首地址加上成员entry在上一个节点中的偏移量获取。

22、可选的,根据是否需要周期性调度已执行的模块,在所述处理函数中设置是否将已执行的对应模块重新插入双向链式延时队列中。

23、根据本专利技术的第二方面,提供一种基于双向链式延时队列的嵌入式实时操作系统调度系统,包括:

24、构建模块,用于将多个节点组成双向链式延时队列,并将多个节点按照其触发时间expire time进行从小到大排序,所述节点为alar本文档来自技高网...

【技术保护点】

1.一种基于双向链式延时队列的嵌入式实时操作系统调度方法,其特征在于,包括:

2.根据权利要求1所述的一种基于双向链式延时队列的嵌入式实时操作系统调度方法,其特征在于,所述将多个节点组成双向链式延时队列,并将多个节点按照其触发时间Expire Time进行从小到大排序,所述节点为Alarm模块或ScheduleTable模块,包括:

3.根据权利要求2所述的一种基于双向链式延时队列的嵌入式实时操作系统调度方法,其特征在于,所述对Alarm模块与ScheduleTable模块的差异部分,使用注册模块处理函数的方式进行区分,包括:

4.根据权利要求2或3所述的一种基于双向链式延时队列的嵌入式实时操作系统调度方法,其特征在于,将Counter模块相邻于触发时间Expire Time最小的节点设置,包括:

5.根据权利要求4所述的一种基于双向链式延时队列的嵌入式实时操作系统调度方法,其特征在于,S4,删除执行完成的模块,双向链式延时队列的下一个待执行模块作为新的头节点,包括:

6.根据权利要求5所述的一种基于双向链式延时队列的嵌入式实时操作系统调度方法,其特征在于,next的值通过下一个节点的首地址加上成员entry在下一个节点中的偏移量获取,prev的值通过上一个节点的首地址加上成员entry在上一个节点中的偏移量获取。

7.根据权利要求2或3所述的一种基于双向链式延时队列的嵌入式实时操作系统调度方法,其特征在于,根据是否需要周期性调度已执行的模块,在所述处理函数中设置是否将已执行的对应模块重新插入双向链式延时队列中。

8.一种基于双向链式延时队列的嵌入式实时操作系统调度系统,其特征在于,包括:

9.一种电子设备,其特征在于,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机管理类程序时实现如权利要求1-7任一项所述的基于双向链式延时队列的嵌入式实时操作系统调度方法的步骤。

10.一种计算机可读存储介质,其特征在于,其上存储有计算机管理类程序,所述计算机管理类程序被处理器执行时实现如权利要求1-7任一项所述的基于双向链式延时队列的嵌入式实时操作系统调度方法的步骤。

...

【技术特征摘要】

1.一种基于双向链式延时队列的嵌入式实时操作系统调度方法,其特征在于,包括:

2.根据权利要求1所述的一种基于双向链式延时队列的嵌入式实时操作系统调度方法,其特征在于,所述将多个节点组成双向链式延时队列,并将多个节点按照其触发时间expire time进行从小到大排序,所述节点为alarm模块或scheduletable模块,包括:

3.根据权利要求2所述的一种基于双向链式延时队列的嵌入式实时操作系统调度方法,其特征在于,所述对alarm模块与scheduletable模块的差异部分,使用注册模块处理函数的方式进行区分,包括:

4.根据权利要求2或3所述的一种基于双向链式延时队列的嵌入式实时操作系统调度方法,其特征在于,将counter模块相邻于触发时间expire time最小的节点设置,包括:

5.根据权利要求4所述的一种基于双向链式延时队列的嵌入式实时操作系统调度方法,其特征在于,s4,删除执行完成的模块,双向链式延时队列的下一个待执行模块作为新的头节点,包括:

6.根据权...

【专利技术属性】
技术研发人员:王军德徐九红郑乐新
申请(专利权)人:武汉光庭信息技术股份有限公司
类型:发明
国别省市:

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

1