Java教程

实时调度概念及其算法详解

本文主要是介绍实时调度概念及其算法详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

3.3 实时调度

由于在实时系统中都存在着若干个实施进程或任务,它们用来反应或控制某个(些)外部事件,往往带有某种程度的紧迫性,因而对实时系统中的调度提出了某些特殊要求,前面所介绍的多种调度算法,并不能很好的满足实时系统对调度的要求,为此,需要引入一种新的调度,即实时调度。

实时系统中包含两种任务:

  • 硬实时任务
    指必须满足最后期限的限制,否则会给系统带来不可接受的破坏或者致命错误。
  • 软实时任务
    也有一个与之关联的最后期限,并希望能满足这个期限的要求,但这并不是强制的,即使超过了最后期限,调度和完成这个任务仍然是有意义的。

一、实现实时调度的基本条件

二、实时调度算法的分类

三、常用的几种实时调度算法

一、实现实时调度的基本条件

在实时系统中,硬实时任务和软实时任务都联系着一个截止时间。为保证系统能正常工作,实时调度必须满足实时任务对截止时间的要求,为此,实现实时调度应具备下列四个条件:

  • 1、提供必要的信息
  • 2、系统处理能力强
  • 3、采用抢占式调度机制
  • 4、具有快速切换机制

1、提供必要的信息

为了实现实时调度,系统应向调度程序提供有关任务的下述信息:

  • 就绪时间:该任务成为就绪状态的时间
  • 开始截止时间、完成截止时间:只需知道一个
  • 处理时间:从开始执行到完成所需时间
  • 资源要求:任务执行时所需的一组资源
  • 优先级:根据任务性质赋予不同优先级

2、系统处理能力强

图片1

当≥1时,就会出现两个实时任务需要处理器处理的情况,这个时候一个处理器忙不过来。

所以对于这种情况,有如下两种解决方法:

图片2

3、采用抢占式调度机制

  • 在含有硬实时任务的实时系统中,广泛采用抢占机制。
  • 当一个优先权更高的任务到达时,允许将当前任务暂时挂起,令高优先权任务立即投入运行,这样可满足该实时任务对截止时间的要求。但此种机制比较复杂。

4、具有快速切换机制

为保证要求较高的硬实时任务能及时运行,在实时系统中还应具有快速切换机制,以保证任务的快速切换。需要以下两种能力:

  • 对外部中断的快速响应能力:
    要求系统具有快速硬件中断机制,使可在紧迫的外部事件请求中断时及时响应。
  • 快速的任务分派能力:
    在完成任务调度后,便应进行任务切换,为提高速度,应使系统中的运行功能单位适当的小,以减少任务切换的时间开销。

二、实时调度算法的分类

可按照不同方式对实时调度算法加以分类:

  • 根据实时任务性质的不同,分为硬实时调度算法和软实时调度算法
  • 按调度方式的不同,分为非抢占调度算法和抢占调度算法
  • 根据调度程序调度时间的不同,分为静态调度算法和动态调度算法
  • 多处理机环境下,可分为集中式调度和分布式调度两种算法

1、非抢占调度算法

图片3

图片4

2、抢占调度算法

图片5

图片6

三、常用的几种实时调度算法

目前有许多实时调度算法:

  • 最早截止时间优先EDF(Earliest Deadline First)算法
  • 最低松弛度优先LLF(Least Laxity First)算法

1、最早截止时间优先EDF(Earliest Deadline First)算法

  • 根据任务的截止时间来确定任务的优先级。截止时间越早,其优先级越高。
  • 该算法要求在系统中保持一个实时任务就绪队列,该队列按各任务截止时间的早晚排序,调度程序在选择任务时总是选择就绪队列中的第一个任务,为之分配处理机,使之投入运行。

EDF算法既可以用于抢占式调度,也可用于非抢占式调度。

图片7

图片8

图片9

任务A1必须在A2到达之前处理完,所以A1的截止时间(处理的最后期限)是20,其他类似。

当采用A优先级更高,或者B优先级更高的时候,总有进程会被错过,采用最早截止时间优先算法的时候就可以避免这种情况!

图片10

2、最低松弛度优先LLF(Least Laxity First)算法

图片11

松弛度越小的,优先级越高

在这里插入图片描述

           截止时间            到达时间          
   A1       20                  0                
   A2       40                 20               
   A3       60                 40               
   A4       80                 60               
   A5      100                 80               
   B1       50                  0                
   B2      100                 50               
   B3      150                100             
  • T0:A1,B1同时来到,A1的松弛度=20-10-0=10;B1的松弛度=50-25-0=25,先执行A1,A1从T0执行到T10,A1完成。
  • 此时A2还没有到,因此会继续执行B1,当B1执行到T20时,A2到来,此时开始计算A2的松弛度=40-10-20=10,此时A2的松弛度不为0,所以继续执行B1,当B1执行到T30时,此时A2的松弛度=40-10-30=0,所以需要进行任务切换,开始执行A2。
  • 所以在T30~T40阶段,处理A2。
  • 在T40时,A2处理完。A3到来,此时A3的松弛度=60-40-10=10,B1的松弛度=50-40-5=5,发生任务切换,开始执行B1。
  • B1执行到T45时 ,B1完成,开始执行A3。
  • 在T50时,B2到来,但是A3没有执行完,B2的松弛度也不为0,所以不发生任务切换,继续执行A3,到T55时,A3执行完,此时开始执行B2。
  • B2执行到T60时 ,A4到来。此时B2的松弛度=100-25-60=15,A4的松弛度也不为0,不发生切换……

最低松弛度算法发生任务切换只有2种情况:

  • 1、当前任务执行完
  • 2、新来的任务的松弛度是否等于0
这篇关于实时调度概念及其算法详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!