0
点赞
收藏
分享

微信扫一扫

处理机调度与死锁


文章目录

  • ​​1. 处理机调度的基本概念​​
  • ​​1.1 处理机调度的层次​​
  • ​​高级调度​​
  • ​​低级调度​​
  • ​​中级调度​​
  • ​​1.2 处理机调度的目标​​
  • ​​2. 调度算法​​
  • ​​3. 实时调度​​
  • ​​3.1 实现实时调度的基本条件​​
  • ​​3.2 实时调度方式和算法的选择​​
  • ​​3.3 常用的几种实时调度算法​​
  • ​​3.4 优先级倒置​​
  • ​​4. 死锁的基本概念​​
  • ​​4.1 死锁的定义​​
  • ​​4.2 产生死锁的原因​​
  • ​​4.3 产生死锁的必要条件​​
  • ​​5. 处理死锁的基本方法​​
  • ​​5.1 预防死锁​​
  • ​​5.2 避免死锁​​
  • ​​5.3 死锁的检测与解除​​

1. 处理机调度的基本概念

通过处理机调度,动态地将 CPU 按某种算法分配给处于就绪状态的一个进程。

1.1 处理机调度的层次

高级调度

又称作业调度、长程调度。高级调度用于决定把外存后被队列中的哪些作业调入内存,为它们分配必要的资源,创建进程。在批处理系统中,大多数配有作业调度,但在分时和实时系统中,往往不配置作业调度。作业调度运行的频率很低,几分钟一次。

低级调度

又称进程调度或短程调度。用来决定就绪队列中哪个进程先获得处理机,并将处理机分配给选中的进程。进程调度是最基本的调度,在三种类型的操作系统中都必须配置进程调度。几十毫秒运行一次。
主要任务是保存当前进程的处理机现场,按照某种调度算法选取投入执行的新进程,以及把处理器分配给新进程。
非抢占式。一旦进程获得 CPU,它将一直执行,直至该进程完成或发生某事件而阻塞时,才将 CPU 分配给其它进程。
抢占方式。当一进程正在处理机上执行时,系统可根据某种原则暂停它的执行,并将已分配给它的处理机重新分配给另一个进程。
抢占原则:

  1. 优先权原则。就绪的高优先权进程有权抢占低优先权进程的 CPU。
  2. 短作业优先原则。就绪的短作业(进程)有权抢占长作业(进程)的 CPU。
  3. 时间片原则。一个时间片用完后,系统重新进行进程调度。

中级调度

又称为内存调度或中程调度,它按一定的算法将外存中已具备运行条件的进程换入内存,而将内存中处理阻塞状态的某些进程换至外存。中级调度的目的是解决内存进制问题,它常用在分时系统及具有虚拟存储器的系统中。它的运行频率介于上述两种调度之间。

1.2 处理机调度的目标

调度方式和算法的选择取决于操作系统的类型及其目标,一般系统都要求调度能达到系统吞吐量大、处理机利用率高、各类资源能平衡利用以及对不同类型的作业具有公平性等目标。

2. 调度算法

算法

说明

作业/进程

抢占/非抢占

优点

缺点

先来先服务(FCFS)

将选择最先进入就绪队列的进程投入执行

作业、进程

非抢占

简单易于实现

不利于短作业和 I/O 型的作业的运行

短作业优先(SJF)

选择就绪队列中估计运行时间最短的进程投入执行

作业、进程

抢占(最短剩余时间优先算法)、非抢占

有效缩短作业的平均周转时间,提高系统的吞吐量

不利于长作业和紧迫作业的运行,估计运行时间不准确

优先级调度算法(PSA)

用于进程调度时,系统根据进程的紧迫程度赋予每个进程一个优先权,选择优先权最高的进程。(1)静态优先权。创建进程时,根据进程的类型、进程对资源的要求和用户的要求等确定它的优先权,以后优先权不再变化。(2)动态优先权。创建进程时所确定的优先权,可以随着进程的推进而改变,响应比计算见公式

作业、进程

抢占、非抢占

避免进程处于饥饿状态以及垄断处理机情况

高响应比优先调度算法(HRRN)

动态优先权调度算法,既照顾短作业,又考虑到作业的等待时间,使长作业不会长期等待,每次调度前,计算响应比

作业、进程

时间片轮转法(RR)

在分时系统中都采用时间片轮转算法进行进程调度,系统将所有的就绪进程按FIFO规则排成一个队列,将 CPU 分配给队首进程,且规定它最多只能连续执行一个时间片,若时间片用完时进程仍未完成,也必须将其插入就绪队列末尾,并把 CPU 交给下一个进程

进程

抢占

简单易行、平均响应时间短

不利于处理紧急作业

多级队列调度算法

将系统中不同类型或性质的就绪进程固定分配到不同的就绪队列中,每个就绪队列可采用自己的调度算法;而在队列之间,通常采用固定优先权的抢占调度方式

进程

多级反馈队列调度算法(FB)

(1)设置了多个不同优先级的就绪队列,并赋予各个队列大小不同的时间片,使优先级越高的队列时间片越小。(2)就绪的进程总是先进入第一级(即最高优先级)队列的末尾,并按FCFS原则等待调度;当轮到该进程执行时,如它能在规定的时间片内完成便可撤离系统,否则它转入第二级队列末尾,当一个长作业从第一级队列降到最后一级队列时,便在该队列中采取时间片轮转方式进行。(3)系统总是调度第一级队列上的进程执行,仅当第一级队列空时,才调度第二级队列上的进程执行。

进程

抢占

满足终端型作业用户、短批处理作业和长批处理作业等各种类型用户的需要

处理机调度与死锁_调度方式

3. 实时调度

3.1 实现实时调度的基本条件

保证实时任务对截至时间的要求,系统必须具备足够强的处理能力和快速的切换机制。在提交实时任务时,系统将该任务的截止时间、所需的处理时间、资源要求和优先级等信息一起提交给调度程序,若系统能即使处理该任务,调度程序便接受该任务,否则,拒绝接受该任务。

3.2 实时调度方式和算法的选择

在小型实时系统或要求不太严格的实时控制系统中,常采用非抢占式轮转调度方式,它仅可获得数秒至数十秒的响应时间;而在有一定要求的实时控制系统中,可采用非抢占式优先权调度算法,它仅可获得数秒至数百毫秒级的响应时间;在要求比较严格的实时系统中,采用比较复杂的抢占调度方式,基于时钟中断的抢占式优先权调度算法,可获得几十毫秒至几毫秒的响应时间。

3.3 常用的几种实时调度算法

1. 最早截至时间优先(EDF)算法。根据任务的开始截止时间来确定任务的优先级,任务开始时间越早,优先级越高。系统中保持一个实时任务就绪队列,该队列按各任务的截至时间的早晚排序。EDF 算法既可以采用非抢占式调度方式,也可以采用抢占式调度方式。在抢占调度方式中,如果新任务的开始截至时间比正在执行的任务早,则它将立即抢占 CPU。
2. 最低松弛度优先(LLF)算法松弛度=任务必须完成的时间-任务还需运行时间-当前时间。任务松弛度越低,优先权越高。抢占方式,当以任务最低松弛度为0时,立即抢占 CPU,当出现多个最低时,按“最久未调度”来抢占。

3.4 优先级倒置

当高优先级B进程被低优先级A进程阻塞时,可以让A进程暂时继承B进程的优先权,从而避开A进程被优先权高于A但低于B的进程抢占。

4. 死锁的基本概念

4.1 死锁的定义

一个进程集合中的每一个进程都在等待只能由该集合中的其他进程才能引发的事件,那么该进程进入死锁状态。

4.2 产生死锁的原因

竞争资源。当系统中供多个进程共享的资源不足,而这些资源又属于不可抢占资源,将引起进程对资源的竞争而产生死锁。
进程推进顺序非法。进程在运行过程中具有异步性特征,如果它们之间的推进顺序不当,也同样会导致进程产生死锁。

4.3 产生死锁的必要条件

  1. 互斥条件。进程所竞争的资源必须被互斥使用。
  2. 请求与保持条件。当前已拥有资源的进程,仍能申请新的资源,而且,当该进程因新的资源被其他进程占用而阻塞时,它对自己已获得的资源仍保持不放。
  3. 不剥夺条件。进程已获得的资源,只能在使用完时自行释放,而不能抢占。
  4. 环路等待条件。存在一个至少包含两个进程的循环等待链,链中的每个进程都正在等待下一个进程所占有的资源。

5. 处理死锁的基本方法

5.1 预防死锁

破坏产生死锁的某个必要条件来防止死锁的发生。

  1. 摒弃“请求与保持”条件。可规定进程都必须一次性申请其在运行过程中所需的全部资源。该方法可以加以改进,允许一个进程只获得运行初期所需的资源后,便可开始运行;运行过程中,它可逐步释放已分配给自己的资源,当这些资源全部释放完毕后,它可以再次请求新的所需资源。
  2. 摒弃“不剥夺”条件。可规定一个已经保持了某些资源的进程,在提出新的资源请求而不能立即得到满足时,必须释放它已获得的所有资源。该方法代价较大,因为一个资源在使用一段时间后被释放,可能会造成前阶段工作的失效,而反复地申请和释放资源,又会使进程的执行无限推迟,从而进一步增加系统的开销,降低系统的吞吐量。
  3. 摈弃“环路等待”条件。要摒弃“环路等待”条件,可将系统中的资源按类型赋予不同的序号,并规定所有的进程必须严格按照资源序号递增的顺序申请资源,这样,占据较低序号资源的进程可能等待占据较高序号资源的进程释放资源,但不可能存在反向的等待,这样就不会形成循环等待链。

5.2 避免死锁

  1. 安全与不安全状态。所谓安全状态,是指系统能按某种进程顺序,来为每个进程分配其所需资源,直至最大需求,使每个进程都可顺利地完成,这样的序列称为安全序列。当系统进入不安全状态后,便可能进入死锁状态,只要系统处于安全状态,系统便可避免进入死锁状态。
  2. 银行家算法。
  3. 安全性算法。

5.3 死锁的检测与解除

  1. 资源分配图。描述进程和资源间申请和分配的一个有向图。通常用圆圈代表一个进程节点,方框代表一个资源节点,请求边则是由进程节点指向资源节点,表示进程申请一个对应的资源。将有请求边,但目前可用资源无法满足其要求的进程结点称作阻塞节点。将既没有请求边也没有分配边与之相连的进程结点称作孤立节点。
  2. 死锁定理。死锁状态的充分条件是:当且仅当S状态的资源分配图是不可完全简化的。
  3. 死锁检测——算法。
  4. 死锁解除。a.剥夺资源,从其他进程中剥夺足够数量的资源给死锁进程。b.撤销进程,撤销死锁进程。


举报

相关推荐

0 条评论