操作系统学习-12.实时调度

本文介绍了实时调度的基础知识,包括实时调度的基本条件,如提供必要信息、系统处理能力和快速切换机制。文章详细讨论了非抢占式和抢占式调度算法,如非抢占式轮转调度和优先调度算法,以及抢占式调度的时钟中断和立即抢占策略。重点讲解了最早截止时间优先(EDF)和最低松弛度优先(LLF)两种实时调度算法的应用场景和原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面:

这一部分学习一下实时调度算法的基本知识,这部分内容以记忆理解为主。实时调度主要用于对实时要求有特殊要求的系统中,在实时系统中都存在着若干个实时进程或任务,它们用来反应或控制某个(些)外部事件,往往带有某种程度的紧迫性,前面所介绍的多种调度算法并不能很好地满足实时系统对调度的要求,为此,需要引入一种新的调度,即实时调度。

实时调度的基本条件

实时调度必须能满足实时任务对截止时间的要求,为此,实现实时调度应具备下述几个条件:

1.提供必要的信息:
(1) 就绪时间;(2) 开始截止时间和完成截止时间;(3) 处理时间;(4) 资源要求;(5) 优先级;

2.系统处理能力强:
假定系统中有 m 个周期性的硬实时任务,它们的处理时间可表示为 Ci,周期时间表示为 Pi,则在单处理机情况下,必须满足下面的限制条件:
这里写图片描述

解决系统不可调度的方法是提高系统的处理能力,其途径有二:其一仍是采用单处理机系统,但须增强其处理能力,以显著地减少对每一个任务的处理时间;其二是采用多处理机系统。假定系统中的处理机数为 N,则应将上述的限制条件改为:
这里写图片描述

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

对于一些小型实时系统,如果能预知任务的开始截止时间,则对实时任务的调度可采用非抢占调度机制,以简化调度程序和对任务调度时所花费的系统开销。

4.具有快速切换机制
在实时系统中还应具有快速切换机制,以保证能进行任务的快速切换。该机制应具有如下两方面的能力:
(1) 对外部中断的快速响应能力。为使在紧迫的外部事件请求中断时系统能及时响应,要求系统具有快速硬件中断机构,还应使禁止中断的时间间隔尽量短,以免耽误时机(其它紧迫任务)。
(2) 快速的任务分派能力。在完成任务调度后,便应进行任务切换。为了提高分派程序进行任务切换时的速度,应使系统中的每个运行功能单位适当地小,以减少任务切换的时间开销。

实时调度算法的分类

可以按不同方式对实时调度算法加以分类,如根据实时任务性质的不同,可将实时调度的算法分为硬实时调度算法和软实时调度算法;而按调度方式的不同,又可分为非抢占调度算法和抢占调度算法;可因调度程序调度时间的不同而分成静态调度算法和动态调度算法;在多处理机环境下,还可将调度算法分为集中式调度和分布式调度两种算法。

1.非抢占式调度算法
由于非抢占式调度算法比较简单,易于实现,故在一些小型实时系统或要求不太严格的实时控制系统中经常采用之。

1) 非抢占式轮转调度算法
该算法常用于工业生产的群控系统中,由一台计算机控制若干个相同的(或类似的)对象,为每一个被控对象建立一个实时任务,并将它们排成一个轮转队列。调度程序每次选择队列中的第一个任务投入运行。当该任务完成后,便把它挂在轮转队列的末尾,等待下次调度运行,而调度程序再选择下一个(队首)任务运行。这种调度算法可获得数秒至数十秒的响应时间,可用于要求不太严格的实时控制系统中。

2) 非抢占式优先调度算法
如果在实时系统中存在着要求较为严格(响应时间为数百毫秒)的任务,则可采用非抢占式优先调度算法为这些任务赋予较高的优先级。当这些实时任务到达时,把它们安排在就绪队列的队首,等待当前任务自我终止或运行完成后才能被调度执行。这种调度算法在做了精心的处理后,有可能获得仅为数秒至数百毫秒级的响应时间,因而可用于有一定要求的实时控制系统中。

2.抢占式调度算法
在要求较严格的(响应时间为数十毫秒以下)的实时系统中,应采用抢占式优先权调度算法。可根据抢占发生时间的不同而进一步分成以下两种调度算法。

1) 基于时钟中断的抢占式优先权调度算法
在某实时任务到达后,如果该任务的优先级高于当前任务的优先级,这时并不立即抢占当前任务的处理机,而是等到时钟中断到来时,调度程序才剥夺当前任务的执行,将处理机分配给新到的高优先权任务。这种调度算法能获得较好的响应效果,其调度延迟可降为几十毫秒至几毫秒。因此,此算法可用于大多数的实时系统中。

2) 立即抢占(Immediate Preemption)的优先权调度算法
在这种调度策略中,要求操作系统具有快速响应外部事件中断的能力。一旦出现外部中断,只要当前任务未处于临界区,便立即剥夺当前任务的执行,把处理机分配给请求中断的紧迫任务。这种算法能获得非常快的响应,可把调度延迟降低到几毫秒至 100 微秒,甚至更低。

图1. 实时进程调度
这里写图片描述

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

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

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

1) 非抢占式调度方式用于非周期实时任务

2) 抢占式调度方式用于周期实时任务

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

该算法是根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度愈高,为该任务所赋予的优先级就愈高,以使之优先执行。例如,一个任务在 200 ms 时必须完成,而它本身所需的运行时间就有 100 ms,因此,调度程序必须在 100 ms 之前调度执行,该任务的紧急程度(松弛程度)为 100 ms。

在实现该算法时要求系统中有一个按松弛度排序的实时任务就绪队列,松弛度最低的任务排在队列最前面,调度程序总是选择就绪队列中的队首任务执行。

该算法主要用于可抢占调度方式中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值