嵌入式OSEK/VDX操作系统的优化与应用
发布时间:2021-01-15 10:57
为了解决嵌入式OSEK/VDX操作系统在高负载、抢占模式下低优先级任务长时间得不到执行的问题,利用OSEK/VDX标准中的报警机制提出了一种优化的最小空闲时间优先调度算法来完善嵌入式OSEK/VDX操作系统的调度策略。给出了该算法的具体实现方案,在理论上分析了该算法的可行性,最后将该算法应用于汽车简单和复杂的电控系统。测试结果表明:在高负载、抢占模式下,使用该算法能够明显改善低优先级任务的执行。
【文章来源】:汽车工程. 2016,38(04)北大核心
【文章页数】:5 页
【部分图文】:
-LSF算法流程
i的报警时刻;tad,i为任务τi的剩余报警时间;ts1,i为任务τi第一次设置报警的时刻。针对LSF算法中di的计算有多种研究,文献[12]中以任务周期Ti的结束时刻作为LSF算法的截止期限,在此基础上开发了针对多处理器调度的LSFR算法。实际中di的取值与Ti紧密相关,为了计算方便仍将任务在执行周期Ti结束的时刻作为di。图2为A-LSF算法的时序简图。由图可知,在A-LSF算法中,当任务τi的第k次设置报警结束时,本次任务τi的截止期限为di=ts1,i+k·Ti(1)图2A-LSF时序简图根据嵌入式OSEK/VDX操作系统中的报警机制,计算在t时刻任务τi的剩余报警时间:tad,i=di-t-ri(2)tad,i=ts1,i+k·Ti-t-ri(3)得k=t-ts1,iTi(4)tad,i=ts1,i+t-ts1,iTi·Ti-t-ri(5)由于ts1,i可以视为常数,故在给定时刻t,任务的剩余报警时间tad,i是任务周期Ti和任务剩余时间ri的函数。对LSF算法采用相同的思路计算可得:di=ta1,i+k·Ti(6)Di=di-t-ri(7)Di=ta1,i+t-ta1,iTi·Ti-t-ri(8)式(5)和式(8)只有常数项ts1,i与ta1,i不同,A-LSF算法中tad,i的概念等同于LSF算法中Di的概念。在A-LSF算法中,报警发生时意味着任务剩余报警时间tad,i=0,即Di=0,此时才会提升该任务的优先级,否则任务只能拥有原来相对较低的静态优先级,这正是LSF算法中“最小空闲时间优先”的思想。
葱衅魇?拷隙啵?刂扑惴ㄒ埠芨丛印R虼耍?系统的任务数量多,负载较大。假设现有控制系统中,包含任务τ0,τ1,…,τ9,任务优先级由1到10逐次升高,均配置为抢占模式。此时用户需要根据具体的测试数据来配置系统的调度策略。假设测得任务τ0,τ1较长时间得不到执行,运行周期严重偏离用户预期,此时需要使用A-LSF算法,按照表2来配置系统的调度策略。表2调度策略配置方案参数任务0任务1任务2-任务9调度策略A-LSFA-LSFDefaultpm值44Default按照表2的配置方案,各个任务的调度策略如图3所示。图3任务调度策略配置结果任务1和任务2配置为A-LSF,即使用A-LSF算法,任务3-任务10配置为Default,即不使用A-LSF算法。pm值设置为4,意味着在A-LSF算法运行时,任务1和任务2的优先级最多升高至4。在决定了系统的调度策略之后,最重要的是完成报警的设置和处理。(1)任务τ1和任务τ2中在应用层代码结束的位置设置基于系统计数器的“分配优先级”报警,因为设置报警的API函数具有恢复任务静态优先级的功能,所以放到用户代码之后算法才有意义。由图2可知,设置报警的时长由任务的周期和执行时间决定,但是图2仅仅是理想的情况,实际中当报警发生之后,任务仍然可能被更高优先级任务抢占,不会连续执行至结束。因此报警发生的时刻应该比图2中的时刻提前一些,具体的提前量须由用户实际测试后确定。(2)在系统时钟的中断服务程序中调用处理报警的API函数。3.2简单的汽车电控系统在相对简单的汽车电控系统中,任务数量一般较少,系统负载较校任务的实时性比较容易满足要求。因此,在这类系统中无须为任何任务配置A-LSF算法,调度策略配置结果如图4所示,操作系统与优化前相比没有任何?
【参考文献】:
期刊论文
[1]OSEK/VDX嵌入式实时操作系统在汽车稳定性控制器中的应用[J]. 郜文,李继来,梁华为. 计算机系统应用. 2010(04)
[2]基于OSEK标准任务调度算法的改进[J]. 蒋建春,张慧. 计算机工程. 2009(20)
[3]OSEK实时操作系统任务调度的优化[J]. 马明礼,李华,裴朝,王延君,丁志盛. 单片机与嵌入式系统应用. 2007(10)
[4]改进的最小空闲时间优先调度算法[J]. 金宏,王宏安,王强,戴国忠. 软件学报. 2004(08)
[5]EDF调度算法抢占行为的研究及其改进[J]. 王济勇,林涛,王金东,韩光洁,赵海. 电子学报. 2004(01)
本文编号:2978780
【文章来源】:汽车工程. 2016,38(04)北大核心
【文章页数】:5 页
【部分图文】:
-LSF算法流程
i的报警时刻;tad,i为任务τi的剩余报警时间;ts1,i为任务τi第一次设置报警的时刻。针对LSF算法中di的计算有多种研究,文献[12]中以任务周期Ti的结束时刻作为LSF算法的截止期限,在此基础上开发了针对多处理器调度的LSFR算法。实际中di的取值与Ti紧密相关,为了计算方便仍将任务在执行周期Ti结束的时刻作为di。图2为A-LSF算法的时序简图。由图可知,在A-LSF算法中,当任务τi的第k次设置报警结束时,本次任务τi的截止期限为di=ts1,i+k·Ti(1)图2A-LSF时序简图根据嵌入式OSEK/VDX操作系统中的报警机制,计算在t时刻任务τi的剩余报警时间:tad,i=di-t-ri(2)tad,i=ts1,i+k·Ti-t-ri(3)得k=t-ts1,iTi(4)tad,i=ts1,i+t-ts1,iTi·Ti-t-ri(5)由于ts1,i可以视为常数,故在给定时刻t,任务的剩余报警时间tad,i是任务周期Ti和任务剩余时间ri的函数。对LSF算法采用相同的思路计算可得:di=ta1,i+k·Ti(6)Di=di-t-ri(7)Di=ta1,i+t-ta1,iTi·Ti-t-ri(8)式(5)和式(8)只有常数项ts1,i与ta1,i不同,A-LSF算法中tad,i的概念等同于LSF算法中Di的概念。在A-LSF算法中,报警发生时意味着任务剩余报警时间tad,i=0,即Di=0,此时才会提升该任务的优先级,否则任务只能拥有原来相对较低的静态优先级,这正是LSF算法中“最小空闲时间优先”的思想。
葱衅魇?拷隙啵?刂扑惴ㄒ埠芨丛印R虼耍?系统的任务数量多,负载较大。假设现有控制系统中,包含任务τ0,τ1,…,τ9,任务优先级由1到10逐次升高,均配置为抢占模式。此时用户需要根据具体的测试数据来配置系统的调度策略。假设测得任务τ0,τ1较长时间得不到执行,运行周期严重偏离用户预期,此时需要使用A-LSF算法,按照表2来配置系统的调度策略。表2调度策略配置方案参数任务0任务1任务2-任务9调度策略A-LSFA-LSFDefaultpm值44Default按照表2的配置方案,各个任务的调度策略如图3所示。图3任务调度策略配置结果任务1和任务2配置为A-LSF,即使用A-LSF算法,任务3-任务10配置为Default,即不使用A-LSF算法。pm值设置为4,意味着在A-LSF算法运行时,任务1和任务2的优先级最多升高至4。在决定了系统的调度策略之后,最重要的是完成报警的设置和处理。(1)任务τ1和任务τ2中在应用层代码结束的位置设置基于系统计数器的“分配优先级”报警,因为设置报警的API函数具有恢复任务静态优先级的功能,所以放到用户代码之后算法才有意义。由图2可知,设置报警的时长由任务的周期和执行时间决定,但是图2仅仅是理想的情况,实际中当报警发生之后,任务仍然可能被更高优先级任务抢占,不会连续执行至结束。因此报警发生的时刻应该比图2中的时刻提前一些,具体的提前量须由用户实际测试后确定。(2)在系统时钟的中断服务程序中调用处理报警的API函数。3.2简单的汽车电控系统在相对简单的汽车电控系统中,任务数量一般较少,系统负载较校任务的实时性比较容易满足要求。因此,在这类系统中无须为任何任务配置A-LSF算法,调度策略配置结果如图4所示,操作系统与优化前相比没有任何?
【参考文献】:
期刊论文
[1]OSEK/VDX嵌入式实时操作系统在汽车稳定性控制器中的应用[J]. 郜文,李继来,梁华为. 计算机系统应用. 2010(04)
[2]基于OSEK标准任务调度算法的改进[J]. 蒋建春,张慧. 计算机工程. 2009(20)
[3]OSEK实时操作系统任务调度的优化[J]. 马明礼,李华,裴朝,王延君,丁志盛. 单片机与嵌入式系统应用. 2007(10)
[4]改进的最小空闲时间优先调度算法[J]. 金宏,王宏安,王强,戴国忠. 软件学报. 2004(08)
[5]EDF调度算法抢占行为的研究及其改进[J]. 王济勇,林涛,王金东,韩光洁,赵海. 电子学报. 2004(01)
本文编号:2978780
本文链接:https://www.wllwen.com/kejilunwen/qiche/2978780.html