操作系统理论 第三章(处理机调度与死锁)—第四节(实时调度)

写在前面:

  1. 本系列笔记主要以《计算机操作系统(汤小丹…)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:操作系统(汤小丹等第四版)_哔哩哔哩_bilibili

一、概述

1、实时调度的引入

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

2、实时系统中的两个任务

(1)硬实时任务(HRT)指必须满足最后期限的限制,否则会给系统带来不可接受的破坏或者致命错误。

(3)软实时任务(SRT)也有一个与之关联的最后期限,并希望能满足这个期限的要求,但这并不是强制的,即使超过了最后期限,调度和完成这个任务仍然是有意义的。

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

1、提供必要的信息

(1)就绪时间。是指某任务成为就绪状态的起始时间,在周期任务的情况下,它是事先预知的一串时间序列。

(2)开始截止时间和完成截止时间。对于典型的实时应用,只须知道开始截止时间,或者完成截止时间。

(3)处理时间。一个任务从开始执行,直至完成时所需的时间。

(4)资源要求。任务执行时所需的一组资源。

(5)优先级。如果某任务的开始截止时间错过,势必引起故障,则应为该任务赋予“绝对”优先级;如果其开始截止时间的错过,对任务的继续运行无重大影响,则可为其赋予“相对”优先级,供调度程序参考。

2、系统处理能力强

(1)在实时系统中,若处理机的处理能力不够强,则有可能因处理机忙不过而致使某些实时任务不能得到及时处理,从而导致发生难以预料的后果。

(2)假如系统中有M个周期性的硬实时任务,处理时间为C_{i},周期时间表示为P_{i},则单机系统中必须满足条件:

(3)提高系统处理能力的途径有二:

①采用单处理机系统,但须增强其处理能力,以著地减少对每一个任务的处理时间。

②采用多处理机系统。假定系统中的处理机数为N,则应将上述的限制条件改为:

3、采用抢占式调度机制

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

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

4、具有快速切换机制

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

        ①对外部中断的快速响应能力。要求系统具有快速硬件中断机构,使可在紧迫的外部事件请求中断时及时响应。

        ②快速的任务分派能力。在完成任务调度后,便应进行任务切换,为提高速度,应使系统中的运行功能单位适当的小,以减少任务切换的时间开销。

三、实时调度算法的分类

1、非抢占式调度算法

(1)非抢占式轮转调度算法:

        由一台计算机控制若干个相同的(或类似的)对象,为每一个被控对象建立一个实时任务,并将它们排成一个轮转队列,调度程序每次选择队列中的第一个任务投入运行,当该任务完成后,便把它挂在轮转队列的末尾等待,调度程序再选择下一个队首任务运行

        非抢占式轮转调度算法常用于工业生产的群控系统中,要求不太严格(响应时间约为数秒)。

(2)非抢占式优先调度算法:

        如果在系统中还含有少数具有一定要求的实时任务,则可采用非抢占式优先调度算法,系统为这些任务赋予了较高的优先级,当这些实时任务到达时,把它们安排在就绪队列的队首,等待当前任务自我终止或运行完成后,便可去调度执行队首的高优先进程

        这种调度算法在做了精心的处理后有可能使其响应时间减少到数秒至数百毫秒,因而可用于有一定要求的实时控制系统中。

2、抢占式调度算法

(1)基于时钟中断的抢占式优先权调度算法:

        在某实时任务到达后,如果它的优先级高于当前任务的优先级,这时并不立即抢占当前任务的处理机,而是等到时钟中断发生时调度程序才剥夺当前任务的执行,将处理机分配给新到的高优先级任务

        该算法能获得较好的响应效果,其调度延迟可降为几十至几毫秒,可用于大多数的实时系统中。

(2)立即抢占的优先权调度算法:

        在这种调度策略中,要求操作系统具有快速响应外部事件中断的能力,一旦出现外部中断,只要当前任务未处于临界区便能立即剥夺当前任务的执行,把处理机分配给请求中断的紧迫任务

        这种算法能获得非常快的响应,可把调度延迟降低到几亳秒至100微秒,甚至更低。

四、最早截止时间优先算法(EDF)

1、概述

(1)该算法是根据任务的截止时间确定任务的优先级,任务的截止时间愈早,其优先级愈高,具有最早截止时间的任务排在队列的队首。调度程序在选择任务时,总是选择就绪队列中的第一个任务,为之分配处理机。

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

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

3、抢占式调度方式用于周期实时任务

五、最低松弛度优先算法(LLF)

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

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

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

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
处理机调度是指操作系统对CPU的分配和调度,以便高效地完成各种任务。在多道程序环境下,由于有多个进程需要占用CPU,因此需要进行处理机调度,以便各个进程都能够得到合理的CPU时间片,并且能够尽早地完成任务。 处理机调度算法主要有以下几种: 1. 先来先服务 (FCFS):按照进程到达的先后顺序进行处理机分配,即谁先到谁先得到CPU的使用权。 2. 短作业优先 (SJF):按照进程的执行时间进行处理机分配,即先处理执行时间最短的进程。 3. 优先级调度 (Priority Scheduling):按照进程的优先级进行处理机分配,即优先级高的进程先执行。 4. 时间片轮转 (Round Robin):将CPU时间片分成多个时间段,每个进程在一个时间段内执行一定时间,然后切换到下一个进程,直到所有进程都执行完毕。 死锁是指在多进程环境下,由于资源竞争而导致的一种进程无限等待的现象。死锁的发生通常由于以下四个条件的同时满足: 1. 互斥条件:一个资源同时只能被一个进程使用。 2. 不可抢占条件:进程在使用一个资源时,不能被其他进程抢占。 3. 占有和等待条件:一个进程在持有一个资源的同时,可以等待其他资源。 4. 循环等待条件:多个进程之间形成一种循环等待资源的关系。 避免死锁的方法主要有以下几种: 1. 破坏互斥条件:允许多个进程同时访问一个资源。 2. 破坏不可抢占条件:允许进程在使用一个资源时被抢占。 3. 破坏占有和等待条件:一个进程在申请资源时,必须释放已经占有的资源。 4. 破坏循环等待条件:对所有资源进行编号,每个进程按照编号顺序申请资源,释放资源时按照相反的顺序释放。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值