实时系统的进程调度策略

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实时系统的进程调度策略

摘要:本文说明实时系统的定义及分类。对各种实时系统进程调度策略进行了讨论,他们是基于优先级,基于比例共享,基于时间的进程调度算法,其中第一种是大多数实时系统采用的。再就四种实时操作系统采用的调度策略进行了分析比较,他们采用的策略是各种因素的折中。

1实时系统概述

1.1实时系统定义

POSIX标准对实时系统作了这样的定义:指系统能够在限定的响应时间内提供所需水平的服务。而一个更为大家接受的定义是:一个实时系统是指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果产生的时间,如果系统的时间约束条件得不到满足,将会发生系统出错。

1.2实时系统分类

实时系统根据其对于实时性要求的不同,可以分为软实时和硬实时两种类型。硬实时系统就是系统必须及时地对事件做出反应,绝对不能发生错过事件处理或超出截止期的情况。例如控制火箭发射的系统;而在软实时系统中,当系统负载较高时允许发生少数事件处理错过截止期的情况,像实时多媒体系统就是一种软实时系统。

目前世界上比较有影响力的实时操作系统主要有Lynx实时系统公司的LynxOS、QNX软件系统有限公司的QNX以及两种具有代表性的实时Linux--新墨西哥工学院的RT-Linux和堪萨斯大学的KURT-Linux。

2实时系统调度策略

一个计算机系统为了提供对于实时性的支持,它的操作系统必须对于CPU 和其他资源进行有效的调度和管理。调度算法实际上就是系统所采取的调度策略。下面将先从分类的角度对各种实时任务调度算法进行讨论,再就以上提及的四种实时操作系统采用的调度策略分析比较。

各种实时操作系统的实时调度算法可以分为如下三种类别:基于优先级的调度算法

(Priority-driven scheduling-PD)、基于CPU使用比例的共享式的调度算法(Share-driven scheduling-SD)、以及基于时间的进程调度算法(Time-driven scheduling-TD),其中第一种算法是大多数实时系统所采用的。下面对这三种调度算法逐一进行介绍。

2.1. 基于优先级的调度算法

基于优先级的调度算法给每个进程分配一个优先级,在每次进程调度时,调度器总是调度那个具有最高优先级的任务来执行。根据不同的优先级分配方法,基于优先级的调度算法可以分为如下两种类型:

●静态优先级调度算法:

这种调度算法给那些系统中得到运行的所有进程都静态地分配一个优先级。它是在系统开始运行前进行调度的,严格的静态调度在系统运行时无法对任务进行重新调度.静态优先级的分配可以根据应用的属性来进行,比如任务的周期,用户优先级,或者其它的预先确定的策略。静态调度算法实现简单,调度的额外开销小,在系统超载时可预测性好. 但也具有很大的局限性,例如资源利用率低、受系统支持的优先级个数限制以及灵活性和自适应性差等. 下面介绍两种常见的静态调度算法.

✓速率单调调度( Rate Monotonic Scheduling)

RMS算法将最高优先级赋予最高执行频率的任务,以单调的顺序对剩余的任务分配优先级. 由于采用抢占式的调度方式,高优先级的任务就绪后立即抢占正在运行的任务.

RMS 算法的优点是开销小,灵活性好,可调度性测试简单. 在任务的截至时间等于其周期的条件下,速率单调算法已被证明是静态最优的调度算法.

✓截止时间单调调度( Deadline Monotonic Scheduling)

DMS算法是在速率单调调度的基础上发展起来的.不同的是任务的优先级按截止时间来分配. 截止时间短的任务优先级高,截止时间长的任务优先级低.截止时间调度具有与速率单调算法相同的优点. 但DMS 算法放松了对任务的周期必须等于其截止时间的限制. 在任务的截止时间小于或等于其周期的情况下,DMS 已被证明是静态最优的调度算法.

●动态优先级调度算法:

这种调度算法根据任务的资源需求来动态地分配任务的优先级,其目的就是在资源分配和调度时有更大的灵活性。非实时系统中就有很多这种调度算法,比如短作业优先的调度算法。下面介绍两种常见的动态调度算法

✓最早截止时间优先算法( Earliest Deadline First)

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

抢占式EDF 调度算法最大的优势在于,对于任何给定的任务集,只要处理器的利用率不超过100 % ,就能够保证它的可调度性. EDF 算法在系统的负载相对较低时非常有效. 但在系统负载较重时,系统性能急剧下降,引起大量任务错过截止期,甚至可能导致CPU 时间大量花费在调度上, 在这时系统的性能还不如FIFO方法.

最小松弛时间算法(Least Slack Time First)

LSF 算法计算任务的松弛时间,其中松弛时间为任务截止时间与剩余执行时间之差.

该算法在任意时刻把最高优先级分配给具有最小松弛时间的任务,以此来保证紧急任务的优先执行. 然而,由于等待任务的松弛时间是严格递减的,其等待执行的缓急程度也随时间越来越紧迫,因此在系统执行过程中,等待任务随时可能会抢占当前执行的任务.LSF 算法造成抖动现象较为严重. 抖动现象增大了系统开销,并限制了LSF 算法的应用.

2.2. 基于比例共享调度算法

前面所述算法是硬实时操作系统的调度,对于软实时应用,使用的是比例共享式的资源调度算法(SD 算法)。

比例共享调度算法指基于CPU 使用比例的共享式的调度算法,其基本思想就是按照一定的权重(比例)对一组需要调度的任务进行调度,让它们的执行时间与它们的权重完全成正比。

比例共享调度算法可以分为以下几个类别:轮转法、公平共享、公平队列、彩票调度法(Lottery)等。

比例共享调度算法的一个问题就是它没有定义任何优先级的概念;所有的任务都根据它们申请的比例共享CPU 资源,当系统处于过载状态时,所有的任务的执行都会按比例地变慢。所以为了保证系统中实时进程能够获得一定的CPU 处理时间,一般采用一种动态调节进程权重的方法。

2.3. 基于时间的进程调度算法

对于那些具有稳定、已知输入的简单系统,可以使用时间驱动(Time-driven:TD)的调度算法,它能够为数据处理提供很好的预测性。这种调度算法本质上是一种设计时就确定下来的离线的静态调度方法。在系统的设计阶段,在明确系统中所有的处理情况下,对于各个任务的开始、切换、以及结束时间等就事先做出明确的安排和设计。这种调度算法适合于那些很小的嵌入式系统、自控系统、传感器等应用环境。

这种调度算法的优点是任务的执行有很好的可预测性,但最大的缺点是缺乏灵活性,并且会出现有任务需要被执行而CPU 却保持空闲的情况。

相关文档
最新文档