操作系统——调度和死锁

一、调度

1. 处理机三级调度

a. 高级调度——作业调度:用于决定把外存输入井上处于作业后备队列上的哪些作业调入内存,并为它们创建进程、分配必要的资源,然后再将新创建的进程排在就绪队列上,准备执行。
       ~~~~~~        作业调度模型:
在这里插入图片描述

b. 低级调度——进程调度:决定就绪队列中哪个进程将获得处理机,然后由分派程序执行把处理机分配给该进程的操作。

c. 中级调度——对换:为了提高主存利用率和系统吞吐量。
在这里插入图片描述
任何操作系统都有进程调度
       ~~~~~~       

2. 高级调度

a. 作业及其分类:
       ~~~~~~        i. 根据需要处理工作的类型,作业分为计算型作业和I/O型作业
       ~~~~~~        ii. 按照提交方式不同,分为批处理作业和终端型作业
       ~~~~~~        iii. 作业的控制方式分为联机作业和脱机作业两种,表示该作业是联机操作还是脱机操作

b. 作业调度与终止作业:
       ~~~~~~        i. 作业调度程序按一定算法从后备作业队列中选一个满足资源要求的作业,分配它所要求的资源,建立一组相应的进程,设置该进程状态为就绪态,并将该进程插入内存就绪队列,参加CPU争夺
       ~~~~~~        ii. 当进程正常运行结束或因发生错误终止时,调用终止作业程序,它负责将输出文件缓冲输出到输出井,并调用SPOOLing系统输出进程将作业输出文件在打印机输出。同时回收作业所使用内外存、I/O设备等各种资源,最后调用记账程序结清作业费用

c. 作业控制块(JCB):
       ~~~~~~        i. 包含的信息:作业的名称、作业对资源的需求信息、作业的资源使用信息、作业的控制方式、作业类型、作业优先级和作业状态
       ~~~~~~        ii. 作业控制块是作业存在的标志,存在于作业的整个过程中,只有作业完成或退出系统时,作业控制块才被撤销。

d. 作业的状态:
       ~~~~~~        i. 提交状态
       ~~~~~~        ii. 后备状态
       ~~~~~~        iii. 执行状态
       ~~~~~~        iv. 完成状态
作业状态的划分比进程状态的划分更粗,进程是作业全部状态中的一个阶段体现。作业调度将作业从后备状态转换到内存执行状态。作业执行状态包含作业所对应进程的就绪、运行和阻塞状态。
       ~~~~~~       

3. 中级调度

中级调度是为了提高内存利用率和平衡系统负载而采取的一种利用外存补充内存的措施。
       ~~~~~~       

4. 低级调度

a. 低级调度又称为进程调度、短程调度,是按照一定的调度算法从内存的就绪队列中选择进程,为进程分配处理器,避免进程对处理器竞争的方法。

b. 进程调度与作业调度和中级调度比较,进程调度发生的频率最高,作业调度发生的频率最低,中级调度主要用于内存管理,特别是虚拟存储器管理。
       ~~~~~~       

5. 处理机三级调度模型

在这里插入图片描述
       ~~~~~~       

6. 进程调度中的基本机制

a. 排队器:按照一定的方式将进程就绪队列排成一个或多个队列

b. 分派程序:根据进程调度策略将所选中的进程从就绪队列中移出,然后进行进程上下文的切换,并将处理器分配给进程

c. 上下文切换机制:在操作系统分派程序的执行下完成处理器的切换过程,实现进程上下文的切换
       ~~~~~~       

7. 进程切换的实现

调度程序把处理器从一个正在执行的进程切换到另一个进程执行,实现了进程切换

a. 保存并恢复处理器信息

b. 更新进程控制块中的进程状态、进程达到时间、进程等待时间、进程优先级变化等信息,并将进程控制块移到相应的进程队列。被切换的进程状态从执行改为就绪或阻塞,其进程控制块也被插入就绪队列或阻塞队列。同样,被分配处理器的进程,其状态从就绪改为执行,进程控制块从就绪队列中移出

c. 更新存储器管理数据结构,维护进程的代码段和数据段。可见,操作系统执行进程切换过程需要付出一定的时间和空间开销,增加了系统负担。在实际应用中,如果进程切换频率太高,对系统的性能会产生一定的影响
       ~~~~~~       

8. 进程调度中的非抢占调度和抢占调度

a. 非抢占式调度是一种通常的调度方式,处理器分配给进程后,一直到进程结束或进程阻塞,进程才自动放弃处理器;非抢占式调度存在的问题是:如果执行进程正好在执行一个没有资源的无限等待,则执行进程不会放弃处理器,所有的就绪进程会永久等待,系统进入了一个僵持的状态。如果此时系统能够自身定期强制执行进程中断,则可以避免这种僵持状态

b. 强制执行进程中断的调度方式为抢占调度方式,又称为剥夺调度方式。是指一个进程正在处理器中运行时,操作系统可以根据规定的抢占原则,将已经分配给进程的处理器从进程剥夺,并分配给其它的进程。抢占是一种灵活和有效的处理进程调度方法,避免了进程永远不放弃处理器的现象,也为紧急情况下的进程运行创造了机会。但是抢占也带来了如下问题:
       ~~~~~~        1) 增加系统开销:进程切换次数增加
       ~~~~~~        2) 进程间共享数据不一致问题
       ~~~~~~        3) 影响操作系统内核程序设计问题
       ~~~~~~       

9. 调度算法

a. 作业调度算法
       ~~~~~~        i. 先来先服务算法:遵循先进入后备队列的作业,先进行调度的原则。
       ~~~~~~               ~~~~~~        1) 是一种非抢占式算法
       ~~~~~~               ~~~~~~        2) 实现简单
       ~~~~~~               ~~~~~~        3) 只考虑了作业的进入时间,而没有考虑需要执行的时间——
       ~~~~~~               ~~~~~~               ~~~~~~        a) 对长作业有利,对短作业不利
       ~~~~~~               ~~~~~~               ~~~~~~        b) 短作业的等待时间和周转时间很长
       ~~~~~~               ~~~~~~        4) 对CPU繁忙型的作业非常有利,对I/O繁忙型作业非常不利

       ~~~~~~        ii. 短作业优先调度算法:根据作业控制块中作业申请时指出的执行时间,选取执行时间最短的作业优先调度
       ~~~~~~               ~~~~~~        1) 是一种抢占式调度算法
       ~~~~~~               ~~~~~~        2) 如果系统规定可以抢占的话,则执行时间短的作业可以抢占执行时间长的作业。只要就绪队列中出现了需要执行时间比当前正在运行作业的剩余处理时间更短的作业,则该作业会抢占当前正在运行的作业
       ~~~~~~               ~~~~~~        3) 只照顾短作业的利益,对长作业不利;
       ~~~~~~               ~~~~~~        4) 需要先估计作业的执行时间,作业的执行时间很难预先精确估计,如果估计过低,则系统可能提前终止作业;如果估计过高,会造成作业得不到调度

       ~~~~~~        iii. 响应比高者优先调度算法:
       ~~~~~~               ~~~~~~        1) 响应比:作业的响应时间与作业需要处理的时间之比
       ~~~~~~               ~~~~~~        2) 该算法能够客观地对待长作业和短作业

       ~~~~~~        iv. 优先权高者优先调度算法:
       ~~~~~~               ~~~~~~        1) 根据作业的优先权进行作业调度,每次总是选取优先权高的作业调度
       ~~~~~~               ~~~~~~        2) 优先数越大,优先权越低

       ~~~~~~        v. 分类调度算法:
       ~~~~~~               ~~~~~~        1) 为了均衡使用系统资源和兼顾不同大小的作业,分类调度算法按照使用系统资源或作业的大小的不同,首先分别对作业进行分类,然后再根据作业的类型进行调度
       ~~~~~~               ~~~~~~        2) 在分类调度算法中,系统还可以进一步将同一类别的作业再按照优先级进行排队
       ~~~~~~       
b. 进程调度算法
       ~~~~~~        i. 先来先服务调度算法

       ~~~~~~        ii. 时间片轮转调度算法
       ~~~~~~               ~~~~~~        1) 首先将处理器的处理时间划分为大小相等的时间片。调度程序每次从就绪队列中选择队首的进程,为之分配处理器的一个时间片并让进程运行。当进程运行的时间片到时,强迫进程放弃处理器,到就绪队列中再次排队,并将处理器的下一个时间片分配给就绪队列中队首的进程。所有就绪队列中的进程按照这样的形式轮转使用处理器时间片

       ~~~~~~        iii. 优先级调度算法:
       ~~~~~~               ~~~~~~        1) 与作业的优先级调度一样,进程的优先级也分为静态优先级和动态优先级:
       ~~~~~~               ~~~~~~               ~~~~~~        a) 静态优先级:进程创建时指定的优先级在整个进程存在期间不改变
       ~~~~~~               ~~~~~~               ~~~~~~        b) 动态优先级:进程创建时指定的优先级是进程的初始优先级,随着进程的推进,进程的优先级会发生改变:如等待时间长,进程的优先级升高;被处理器执行过的时间长,进程的优先级降低
       ~~~~~~               ~~~~~~        2) 进程的优先级调度也可以采取抢占的方式,优先级高的进程可以抢占优先级低的进程

       ~~~~~~        iv. 多级队列调度算法:
       ~~~~~~               ~~~~~~        1) 根据进程类型的不同,将进程就绪队列分为若干个独立的就绪队列,不同的就绪队列采用不同的调度算法,同一个就绪队列采用同一种进程调度算法

       ~~~~~~        v. 多级反馈队列调度算法:
       ~~~~~~               ~~~~~~        1) 是一种基于时间片的进程多级队列调度算法的改进算法。
       ~~~~~~               ~~~~~~               ~~~~~~        a) 既克服了时间片调度算法中时间片不能变化的缺点,又利用了多级队列调度的优势,是一种较好的进程调度算法
       ~~~~~~               ~~~~~~               ~~~~~~        b) 多级反馈队列调度算法按照进程的优先级,将就绪队列分为多个级别,最高级就绪队列的优先级最高,随着就绪队列级别的降低优先级依次下降
       ~~~~~~               ~~~~~~               ~~~~~~        c) 最高就绪队列的进程,分配的处理器时间片最短,然后依次增加
新创建的进程首先进入最高优先级队列,随着得到处理器处理的次数增加,进程逐渐进入下级就绪队列
       ~~~~~~       

10. 线程调度

线程的实现方式有用户级线程和内核级线程两种
       ~~~~~~        i. 用户级线程:
       ~~~~~~               ~~~~~~        1) 为了实现简单,线程调度算法会选择先来先服务的方式
       ~~~~~~        ii. 内核级线程:
       ~~~~~~               ~~~~~~        1) 与用户级线程调度不同,线程调度在处理器调度中起决定性作用
       ~~~~~~       

11. 实时调度

a. 需要满足的条件:
       ~~~~~~        i. 系统向实时调度提供与实时任务相关的信息:
       ~~~~~~               ~~~~~~        1) 就绪起始时间
       ~~~~~~               ~~~~~~        2) 截止时间
       ~~~~~~               ~~~~~~        3) 处理时间
       ~~~~~~               ~~~~~~        4) 实时任务的资源需求
       ~~~~~~               ~~~~~~        5) 实时任务的优先级

       ~~~~~~        ii. 对系统处理能力的衡量

       ~~~~~~        iii. 抢占调度和快速切换机制

b. 实时调度算法:
       ~~~~~~        i. 动态实时调度算法:
       ~~~~~~               ~~~~~~        1) 在实时任务运行时做出调度决策

       ~~~~~~        ii. 静态实时调度算法:
       ~~~~~~               ~~~~~~        1) 在系统启动实时任务之前做出调度决策

       ~~~~~~        iii. 常用的实时调度算法:
       ~~~~~~               ~~~~~~        1) 抢占式调度算法:
       ~~~~~~               ~~~~~~               ~~~~~~        a) 基于时钟中断的优先权抢占调度算法
       ~~~~~~               ~~~~~~               ~~~~~~        b) 立即抢占调度算法
       ~~~~~~               ~~~~~~               ~~~~~~        c) 单比率调度算法
       ~~~~~~               ~~~~~~        2) 非抢占式调度算法:
       ~~~~~~               ~~~~~~               ~~~~~~        a) 非抢占式轮转调度算法
       ~~~~~~               ~~~~~~               ~~~~~~        b) 非抢占式优先级调度算法
       ~~~~~~               ~~~~~~               ~~~~~~        c) 期限调度算法
       ~~~~~~       
       ~~~~~~       

二、进程死锁

1. 死锁的原因和条件

死锁的原因:

       ~~~~~~        i. 竞争资源引起死锁:
       ~~~~~~               ~~~~~~        1) 由于系统拥有的不可抢占的资源有限,多个进程共享竞争不可抢占的资源就可能引起死锁

       ~~~~~~        ii. 进程推进顺序不当引起死锁:
       ~~~~~~               ~~~~~~        1) 在多道程序系统中,并发执行的进程推进序列不可予测,有些推进顺序,进程可以顺利完成,这些推进顺序是合法的;而有的推进顺序会引起进程无限期地等待永远不会发生的条件而不能向前推进,造成了死锁

产生死锁的必要条件:

       ~~~~~~        i. 互斥条件:一个资源一次只能被一个进程所使用。即排他性使用

       ~~~~~~        ii. 不可抢占条件:一个资源仅能被占有它的进程所释放,而不能被别的进程强占

       ~~~~~~        iii. 请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源要求,而该资源又已被其它进程占有,此时请求进程阻塞,但又对已经获得的其它资源保持不放

       ~~~~~~        iv. 环路等待条件:当每类资源只有一个时,在发生死锁时,必然存在一个进程-资源的环形链。如一系统状态的资源分配图所示,P1正在等待一个P2占用的资源R2,P2正在等待一个P1占用的资源R1
       ~~~~~~       

2. 处理死锁的基本方法

死锁的预防:

静态方法:在进程执行前采取的措施,通过设置某些限制条件,去破坏产生死锁的四个必要条件之一,防止发生死锁
       ~~~~~~        1) 破坏互斥条件:互斥使用是资源本身特征所决定的。使用硬软件结合可改变资源本身特性

       ~~~~~~        2) 破坏不可抢占条件:抢占式调度法主要用于处理机和存贮器资源调度,它们的状态容易保存和恢复。但此法对外部设备和私存数据不宜使用

       ~~~~~~        3) 破坏请求和保持条件:系统可采用资源静态予分配方式来破坏请求保持条件。系统要求所有进程一次性地申请在整个运行过程中全部资源,若系统有足够资源满足给进程,则在运行前,一次性将其所需要的所有资源分配给该进程。这样该进程在整个运行期间,便不再提出资源要求,从而摒弃了请求条件。这种预防死锁的方法,优点是简单、易予实现且很安全,但其资源利用率很低,进程也延迟运行

       ~~~~~~        4) 破坏循环等待条件:
       ~~~~~~               ~~~~~~        a) 有序资源使用法:将所有的资源按类型进行线性排队,并赋予不同的序号,所有进程对资源的请求必须严格按资源序号递增的次序提出
       ~~~~~~               ~~~~~~        b) 资源按级分配法:把资源递增排序成若干等级

死锁的避免:

动态方法:在进程执行过程中采取的措施,不需事先采取限制措施破坏产生死锁的必要条件,而是在进程申请资源时用某种方法去防止系统进入不安全状态,从而避免发生死锁

死锁的检测和解除:

       ~~~~~~        i. 这种方法预先并不采用任何限制措施,允许系统在运行过程中发生死锁,但可通过系统设置的检测机构及时检测死锁的发生,如检测到死锁,则采用撤消进程等死锁解除方法使系统正常工作

       ~~~~~~        ii. 死锁的检测:
       ~~~~~~               ~~~~~~        1) 资源分配图的简化
       ~~~~~~               ~~~~~~        2) 死锁定理:S为死锁状态的充分条件是:尚且仅当S状态的资源分配图是不可完全简化的,该充分条件称为死锁定理
       ~~~~~~               ~~~~~~        3) 死锁检测的数据和算法类似于银行家算法

       ~~~~~~        iii. 死锁的解除:当检测死锁的软件判别死锁存在时,就要解除死锁,使系统从死锁中恢复
       ~~~~~~               ~~~~~~        1) 第一种是强制性地从系统中撤销一个或多个死锁的进程以断开循环等待链
       ~~~~~~               ~~~~~~        2) 另一种方法是使用一个有效的挂起和解除机构来挂起一些死锁的进程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

PandaThug

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

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

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

打赏作者

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

抵扣说明:

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

余额充值