微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 汽车电子 > 车载操作系统的调度算法分析与改进

车载操作系统的调度算法分析与改进

时间:09-20 来源:互联网 点击:
1 引 言

随着现场总线技术、嵌入式微控制技术的发展,现代列车的过程控制已从集中型的直接数字控制系统发展成为基于网络的分布式控制系统。高速列车以保汪旅客乘车安全与舒适为基础,必须对车辆的制动、防滑、车门、供电及空调等设备分别进行控制、检测和诊断;各设备分别由相应的车载微机进行控制,构成各个子系统;子系统之间通过现场总线互联,形成全列车的网络控制系统。实际情况下,车载微机需要对多点的压力、温度以及许多其他的状态参量进行采集与监测.单一编程较为复杂,应选用嵌入式实时操作系统来完成这些任务。任务中有些需要按时间片进行调度,分时完成各个任务;而现有的源码开放的嵌入式实时操作系统一般都是抢占式多任务内核,因此需要对现有实时操作系统的任务调度机制进行改造,从而满足车载操作系统的实际需求。

2 调度算法分析

调度算法是指在有限的处理单元上对具有某些已知特征的任务集执行顺序的设计。在嵌入式实时系统中,任务的执行要面对两种限制:时间限制和资源限制。实时任务要求系统有良好的响应时间以满足截止时间,在嵌入式系统中只有有限的RAM和CPU等资源,所以调度的好坏在很大程度上决定了系统的性能。

2.1 RMS调度算法

RMS算法足在1973年由C.L.Liu和J.Layland提出的。该算法是基于统计任务执行频率的一种任务调度方法。RMS算法将最高优先级赋予最高执行频率的任务,以单调的顺序对余下的任务分配优先级。分析中,RMS算法作了以下假设:

  • 所有任务都是周期性的;

  • 任务间不需要同步,没有共亨资源,没有任务间数据交换等问题;

  • CPU必须总是执行优先级最高且处于就绪态的任务,即须用可剥夺型内核调度法。

由于采用抢占式的凋度方式,高优先级的任务就绪后立即抢占正在运行的较低优先级的任务。设系统中有n项不同的任务,由于RMS算法要求调度的独立的周期性任务总能满足其截止时间,即要求系统中的所有任务必须满足硬实时条件,于是有下列不等式成立:


式中:Uk为任务k最长执行时间,Tk是任务k的执行周期,Vk/Tk即任务k所需的CPU时间利用率。当系统中的任务数n趋于无穷大时,S(n)的值为Ln2,即0.693。于是,若要使所有的任务都满足硬实时要求,则有:


亦即所有有时间限制的任务的总CPU时间利用率应低于70%。其实,系统设计中,使CPU的时间利用率达到100%并不好。如果那样,程序就没有修改的余地了,也无法增加新的功能。实际情况下,CPU的时间利用率应在60%~70%以下。RMS算法的优点是灵活性强、开销小、可调度件测试简单。但在某些情况下.执行频率最高的任务并非最重要的任务。

2.2 EDF调度算法

抢占式EDF调度算法是一种动态优先级驱动的调度算法,其中分配给每个任务的优先级根据它们当前对最终截止时问的要求而定。当前请求的截止时间最近的任务具有最高的优先级,而请求截止时间最远的任务被分配最低优先级。这个算法能够保证在出现某个任务的截止时问不能满足之前,不存在处理器的空闲时间。

C.L.Liu和J.Layland证明了对于一个具有n个任务的集合,截止时间驱动的调度算法的可行条件为:


任务的最长响应时间Tr是可测的,须满足Tr小于截止时间,任务才能被调度。对于Tr可用下式表达:


式中;Trun_i为任务i的执行时间;Tlok_i为任务i的闭锁时间;Tspd_i为任务i的调度开销时间;Trdy_j为任务j再次就绪的时间;max{Tr/Trdy_j}·Trun_j为低优先级任务i被高优先级任务j剥夺后,高优先级任务占用的总时间。

抢占式EDF调度算法最大的优势在于,当系统的负载相对较低时非常有效,对于任何给定的任务集,只要处理器的利用率不超过100%,就能够保证它的可调度性。EDF的劣势在于不能解决过载问题,当系统负载较重时,可能引起大量任务错过截止时间,导致CPU的时间大量花费在调度上,这时系统的性能很低。

2.3 改进调度算法

在嵌入式实时系统中资源非常有限,所以开销要尽可能减小;而RMS和EDF调度算法的问题就在于它们的开销——运行开销和调度开销。本文以uC/OS-II为例,结合Linux的调度算法,对uC/OS-II内核的任务调度算法进行改进.使其成为抢占式与时间片轮转调度相结合的调度算法,而系统的开销并无多大改变。

以车载系统中常用的数据采集任务为例,可将uC/OS-II就绪表中的8个进程设为数据采集专用的进程。对于这8个进程,采用时间片轮转的任务调度算法,在TCB控制块中增加一项变量counter作为任务调度的权值。如果就绪队列中有优先级比这8个进程高的任务,则无条件让出CPU使用权,系统执行任务切换程序。如果当前就绪队列中优先级最高的进程属于数据采集专用的8个进程之一,则顺序遍历所有就绪的数据采集专用进程,计算其时间片counter的值,取出时间片最大的进程运行。若遇到时间片大小相同的进程,则取出优先级高的进程运行。改进后的任务调度算法如下:

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top