《现代操作系统》阅读笔记——调度和死锁

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/winter_wu_1998/article/details/84001446

调度

  • 何时需要调度

    • 创建新的进程时
      • 运行父进程还是子进程
    • 进程退出时
    • 进程阻塞时
    • I/O中断结束后
  • 调度算法目标

    • 给所有进程公平的CPU份额
    • 能够保证按照规定的策略执行
      • 比如某些安全控制进程必须能够得到执行
    • 保持系统的每个部分都忙碌
  • 两种调度方式

    • 抢占式
      • 一个进程最多运行n ms, 如果还没运行结束,就会被始终中断,调用别的程序
    • 非抢占式
      • 一个进程可以运行任意时间知道他阻塞或者自愿放弃CPU
  • 常见调度算法

    • 先进先服务
    • 最短任务优先
    • 轮转调度
      • 一个任务最多只能运行规定时间
      • 很难设置规定时间应该多长
    • 优先级调度
      • 低优先级进程可能会饥饿
    • 彩票调度
      • 无法防止低优先级用户运行大量小进程来获得更多的CPU资源的作弊手段
    • 最短剩余时间优先
  • 哲学家就餐问题

    • 第一种解决方法是等待左右叉子空余,若有空余则立即拿起
      • 如果所有人同时拿起左叉子就会死锁
    • 第二种解决方法是拿起左叉子,如果有右叉子,就吃;如果没有,就放下左叉子,等待
      • 如果所有人同时开始执行,则没人开始吃,死锁
      • 这种可能性很小,但是对于核电站等要求十分可靠的应用则不行
    • 第三种方法就时对第一种方法加个锁
      • 但是这时只能允许一个哲学家进餐,效率太低
    • 最后一种方法如下

    在这里插入图片描述

死锁

  • 资源类型
    • 可抢占资源
      • 可以从拥有它的进程中抢占而不会产生副作用
      • 储存器, 打印机
    • 不可抢占资源
      • 从占有她的进程抢占会产生副作用
      • 正在刻录的光盘
  • 多个进程获取资源的顺序应该一致,否则可能会死锁
    • 可能进程A获得资源1,而B获得资源2,然后每个进程都想请求另一个资源
  • 死锁发生的必要条件
    • 互斥条件
      • 一个资源要么被分配给一个资源,要么可用
    • 占有和等待条件
      • 一个已经得到某个资源的进程可以继续请求别的资源
    • 不可抢占条件
      • 已经被分配给一个基础的资源不可被其他进程抢占,只能被该进程自己释放
    • 环路等待条件
      • 死锁发生时,会有一个环路产生,环路中的每个进程都要获取后一个进程的资源
  • 死锁恢复方法
  • 利用抢占恢复
  • 利用回滚恢复
  • 通过杀死进程直接恢复

猜你喜欢

转载自blog.csdn.net/winter_wu_1998/article/details/84001446
今日推荐