常用实时调度算法

  • 夺式调度方式。常用的实时调度算法都是基于仟务的优先权,根据确定优先级方法的不同而形成以下几种实时调度算法。1)最早截止时间优先(EarliestDeadlineFirst,EDF)算法该算法是根据任务的开始截止时间来确定任务的优先级。截止时间愈早,其优先级愈高。该算法要求在系统中保持一个实时任务就绪队列,当一个事件发生时,对应的进程就被加入就绪进程队列。该队列
  • 目前已有许多用于实时系统的调度算法,其中有的算法仅适用于剥夺式或非剥夺式调度,时有的算法则既适用于非剥夺式,也适用于剥夺式调度方式。常用的实时调度算法都是基于仟务的优先权,根据确定优先级方法的不同而形成以下几种实时调度算法。

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

    该算法是根据任务的开始截止时间来确定任务的优先级。截止时间愈早,其优先级愈高。该算法要求在系统中保持一个实时任务就绪队列,当一个事件发生时,对应的进程就被加入就绪进程队列。该队列按各任务截止时间的早晚排序,具有最早截止时间的任务排在队列的最前面。调度程序在选择任务时,总是选择就绪队列中的第一个仟务,即截止时间最近的那个进程,为之分配处理机,使之投入运行。

    最早截止间优先算法既可用于剥夺式调度,也可用于非剥夺式调度方式中。

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

    该算法是根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度愈高,该任务被赋予的优先级就愈高,以使之优先执行。松弛度(又叫裕度)即进程的富裕间,例如,一个任务在达到200ms时必须完成,而它本身所需的运行时间就有100ms,因此,凋度程序必须在100ms之前调度执行,该任务的紧急程度(松弛程度)为100ms。又如,另一任务在达到400ms时必须完成,它本身需要运行150ms,则其松弛程度为250ms。在实现该算法时首先计算各个进程的松弛度,组织一个按松弛度排序的实时任务就绪队列,松弛度最低的任务排在队列最前面,调度程序总是选择就绪队列中的队首任务,即富裕度最少的进程执行。该算法主要用于可剥夺调度方式中。

    尽管在理论上采取了实时调度算法后就可以把一个通用操作系统改造成实时操作系统,但实际上,通用操作系统的进程切换开销太大,以至于只能满足那些间限制较松的应用的实时性要求。这就导致多数实时系统使用专用的实时操作系统。这些系统具有一些很重要的特征,典型的包括:规模小、中断时间很短、进程切换很快、中断被屏蔽的时间很短,以及能够管理毫秒或微秒级的多个定时器。




你可能感兴趣的:(Java基础知识)