处理机调度与死锁(二)——实时调度

文章目录

  • 实时调度
    • 一、实时系统与实时任务
      • 1.实时系统
      • 2.实时任务
    • 二、实时操作系统的特征
    • 三、实时调度算法分类
      • 1.非抢占式调度算法
      • 2.抢占式调度算法
    • 四、实时调度常用算法
      • 1.最早截止时间EDF算法
      • 2.最低松弛度优先LLF算法
    • 五、优先级倒置
      • 1.形成
      • 2.解决办法

实时调度

一、实时系统与实时任务

1.实时系统

实时系统 :指能及时响应外部事件的请求,在规定时间内完成对该事件的处理,并控制所有实时任务协调一致地运行计算机系统。
(一)实时控制系统
如:飞机的自动驾驶系统,导弹的制导系统
(二)实时信息处理系统
如:飞机订票系统,情报检索系统

实时操作系统的特点:
快速进行上下文切换
实时任务小
能够快速响应外部中断
具有进程间通信工具的多任务处理,如信号量、信号和事件
快速存储数据的文件
使用可以快速存储数据的特殊顺序文件
基于优先级的抢占式调度
最小化中断被禁用的时间间隔
将任务延迟固定时间
特殊警报和超时处理

2.实时任务

按任务执行时是否呈现周期性划分:
周期性实时任务
非周期性实时任务

根据截至时间的要求来划分:
硬实时任务:
必须在最后期限内开始或完成。否则会给系统带来不可接受的破坏或知名的错误。

软实时任务:时间限制较弱。

二、实时操作系统的特征

1.确定性
操作在固定的、预定的时间或预定的时间间隔内执行。
关心操作系统在确认中断之前延迟多长时间
2.响应性
获得中断信号以后,怎么去服务于这个事件
包括开始执行中断的时间
包括执行中断的时间
3.可靠性

三、实时调度算法分类

根据实时任务性质,分为硬实时调度和软实时调度

按调度方式,分为非抢占式调度算法和抢占式调度算法

1.非抢占式调度算法

(1)非抢占式轮转调度算法
由一台计算机控制若干个相同的(或类似的)对象,并为其建立对应的实时任务,将它们排成一个轮转队列。调度程序选择队首任务运行,运行结束后将它挂到队尾等待。
(2)非抢占式优先调度算法
在系统中还含有少量具有一定要求的实时任务,可采用非抢占式优先调度算法。系统为这些任务赋予较高的优先级,当这些实时任务到达时,将它们安排在就绪队列队首,当前任务自我终止或运行完成后,可去调度队首的高优先进程。

2.抢占式调度算法

(1)基于时钟中断的抢占式优先级调度算法
当某实时任务到达后,它的优先级高于当前任务的优先级,等到时钟中断发生时,调度程序才剥夺当前任务的执行,将处理机分配给新到的高优先级任务。
(2)立即抢占的优先级调度算法
一旦出现外部中断,只要当前任务未处于临界区,立即剥夺当前任务的执行,把处理机分配给请求中断的紧迫任务。
处理机调度与死锁(二)——实时调度_第1张图片

四、实时调度常用算法

1.最早截止时间EDF算法

根据任务的截止时间确定任务的优先级,具有最早截止时间的任务具有最高优先级,排在队伍的队首。
EDF算法既可用于抢占式调度算法中,也可用于非抢占式调度算法中。
(1)非抢占式调度方式用于非周期实时任务
处理机调度与死锁(二)——实时调度_第2张图片
该例中,有四个非周期性任务先后到达。根据开始截止时间的早晚来调度任务执行。先调度执行任务1,任务1执行期间任务2、3先后到达,因为任务3的开始截止时间早于任务2的,故系统在任务1后先调度任务3执行。后面与此类似。

(2)抢占式调度方式用于周期性实时任务
处理机调度与死锁(二)——实时调度_第3张图片
该例中两个周期任务A、B,其周期分别为20ms,50ms。每个周期的处理时间分别为10ms,25ms。
为了说明通常的优先级调度不能适用于实时系统,增加第二和第三行。第二行假定任务A具有较高的优先级,第三行假定任务B具有较高的优先级。会出现错过任务最后期限的问题,说明利用通常的优先级调度失败。
第四行采用最早截止时间优先算法的时间图。

2.最低松弛度优先LLF算法

该算法确定任务优先级根据的是任务的紧急(或松弛)程度。任务紧急程度越高,赋予该任务的优先级越高,以使之优先执行。
该算法只要用于可抢占调度方式中。
处理机调度与死锁(二)——实时调度_第4张图片
该例中有两个周期任务A、B,任务A要求每20ms执行一次,执行时间10ms,任务B要求每50ms执行一次,执行时间25ms。
在t1=0时,松弛度=必须完成时间-自身运行时间-当前时间,A1的松弛度10ms。B1的松弛度为25ms,故先调度A1执行。在t2=10ms时,A2的松弛度为20ms,B1的松弛度为15ms,故先调度B1运行。后面以此类推。

五、优先级倒置

1.形成

在系统中存在着影响进程运行的资源而可能产生“优先级倒置”的现象,即高优先级(或线程)被低优先级进程(或线程)延迟或阻塞。
处理机调度与死锁(二)——实时调度_第5张图片
不同优先级线程对共享资源的访问的同步机制。优先级为1和3的线程P3和线程P1需要访问共享资源,优先级为2的线程P2不访问该共享资源。当P1正在访问共享资源时,P3等待互斥体,但是此时P1被P2抢先了,导致P2运行P3阻塞。即优先级低的线程P2运行,优先级高的P3被阻塞。

2.解决办法

采用动态优先级继承方法
处理机调度与死锁(二)——实时调度_第6张图片
当高优先级进程P1要进入临界区,去使用临界资源R,如果已有一个低优先级进程P3正在使用该资源,此时一方面P1被阻塞,另一方面由P3继承P1的优先级,并一直保持到P3退出临界区。这样的目的在于不让比P3优先级稍高,但比P1优先级低的进程如P2插进来,导致延缓P3退出临界区。

你可能感兴趣的:(操作系统)