操作系统——处理机调度与死锁

处理机调度的层次和调度算法的目标

调度层次

  • 高级调度(作业调度)

    • 用于决定把后备队列中的哪些作业调入内存,为他们分配必要的资源,并创建进程
  • 低级调度

    • 用来决定就绪队列中哪个进程应先获得处理机,并将处理机分配给选中的进程
  • 中级调度

    • 用于将外存中已经具备运行条件的进程换入内存,而将内存中处于阻塞状态的某些进程换出至外存

调度算法的若干准则

  • 面向用户

    • 周转时间短
    • 响应时间快
    • 截止时间的保证
    • 优先权准则
  • 面向系统

    • 系统吞吐量高
    • 处理机利用率好
    • 各类资源的平衡利用

进程调度

任务

  • 保存处理机的现成信息
  • 按某种算法选取进程
  • 把处理器分配给进程

机制

  • 排队器
  • 分派器
  • 上下文切换

方式

  • 非抢占方式
  • 抢占方式

调度算法

CPU利用率 = 有效工作时间/(有效工作时间+空闲等待时间)

带权周转时间 = 作业的周转时间 / 系统为他提供服务的时间

先来先服务FCFS

  • 非抢占式
  • 不利于短作业和I/O型作业

短作业优先调度SJF

  • 从后备队列中选择一个或若干个估计运行时间最短的作业,将他们调入内存运行

  • 缺点

    • 必须预知作业的运行时间
    • 算法对长作业不利
    • 未考虑作业的紧迫程度,因而不能保证紧迫性作业被及时处理
    • 不一定能真正做到短作业优先调度

优先级调度算法PSA

  • 调度算法类型

    • 非抢占式
    • 抢占式
  • 优先权的类型

    • 静态优先权

      • 在创建进程时确定,在整个运行过程中保持不变

      • 利用某一范围内的一个整数(0-255)

      • 确定依据

        • 进程类型,系统进程要高于一般用户进程
        • 进程对资源的需求,对资源需求少的进程应该赋予高的优先级
        • 用户要求,根据进程的紧迫程度和用户所付费用的多少,确定优先级
    • 动态优先权

      • 在进程创建之初,先赋予进程一个优先级
      • 然后优先级会随进程的推进或等待时间的增加而改变

高响应比优先调度算法

  • 优先权 = (等待时间+要求服务时间 )/ 要求服务时间

时间片轮转调度算法RR

  • 系统将所有的就绪进程按FCFS策略排成一个就绪队列

  • 给每一个进程一个时间片去运行

  • 时间片大小

    • 太小,频繁地执行进程调度和上下文切换
    • 太大,使得每一个进程都能在一个时间片中完成,就退化为FCFS
  • 时间片 q = 1 和q = 4

多级反馈队列调度算法

  • 调度机制

    • 设计多个就绪队列
    • 每个队列采用FCFS算法
    • 按队列优先级调度
  • 性能

    • 终端型用户

      • 大多数作业第一队列所规定的时间片便可完成
    • 短批处理作业用户

      • 周转时间短
    • 长批处理作业用户

      • 不必担心作业长期得不到处理

实时调度

死锁概述

定义

  • 多个进程在运行过程中因争夺资源而造成的一种僵局,若无外力作用,这些进程将无法再向前推进

产生死锁的原因

  • 竞争资源

    • 系统中供多个进程共享的资源数目不足以满足诸进程的需要,会引起资源的竞争
  • 进程间推进顺序非法

    • 仅存的请求和释放资源的顺序不当

资源问题

  • 可重用性资源:数目是相对固定的,一个资源给一个进程
  • 可消耗性资源:进程动态创建和消耗
  • 可抢占式资源
  • 不可抢占式资源

产生死锁的必要条件(任何一个不成立,死锁就不发生)

  • 互斥条件

    • 有一些资源只能互斥的使用
  • 请求和保持条件

    • 进程已经占有至少一个资源,此时又申请别的资源,但该请求的资源被别的进程所占用
    • 此时请求进程被阻塞,只能等待,直到该请求的资源被释放
  • 不可抢占式条件

    • 进程已获得的资源在未使用完之前不能被抢占,只能在进程使用完时,由自己释放
  • 循环等待条件

    • 发送死锁时,必然存在一个循环等待链
    • {P0,P1,P2,P3} 前一个在等待后一个进程所占用的资源

预防死锁

破坏“占有等待”条件

  • 1、所有进程在开始运行之前,必须一次性的申请其在整个运行过程中所需要的全部资源
  • 缺点 :开销太大,资源利用率降低
  • 2、允许一个进程只获得运行初期所需的资源后,便可以开始运行,再逐步释放已经用完的资源,请求新的资源

破坏“不可抢占”条件

  • 当一个已经保持了某些不可抢占资源的进程,提出新的资源请求后而不能得到满足时,它必须释放已经保持的所有资源,待以后需要时再重新申请

  • 缺点

    • 一个不可抢占资源被释放,会导致前端时间的工作失效,信息不连续
    • 延长了周转时间,增加了系统开销,降低了系统吞吐量

破坏“循环等待”条件

  • 对系统所有资源类型进行线性排序,并赋予不同的序号

避免死锁

系统安全状态

  • 安全状态

    • 允许进程动态的申请资源,但系统在进行资源分配之前,应先计算此次资源分配的安全性

    • 若此次分配不会导致系统进入不安全状态,则可将资源分配给进程,否则令进程等待。

    • 所谓安全状态

      • 系统能按照某种进程推进顺序,为每个进程分配其所需要的资源
  • 不安全状态

    • 系统就可能会发生死锁
    • 也就是,找不到一个合理的进程推进顺序

银行家算法

死锁的监测与解除

死锁的监测

  • 保存有关资源的请求和分配信息

  • 提供一种算法,利用这些信息检测系统是否已经进入了死锁状态

  • 1、资源分配图

    • P 进程结点 R 资源结点
    • Pi ——>Rj 是资源请求边
    • Rj——>Pi 是资源分配边
  • 死锁定理

    • 对资源分配图进行简化

      • 找出一个既不阻塞又非独立的进程结点P,消去他的请求边和分配边
      • 重复上一步
      • 若能消去图中所有的边,是所有的进程结点都称为孤立结点,则称该图是可完全简化的,否则称不可完全简化的

死锁的解除

  • 终止进程的方法

    • 1、终止所有死锁的进程

      • 付出的代价可能会很大
    • 2、逐个终止进程

      • 打破循环等待

请添加图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值