操作系统复习攻略:进程调度

Source
版权声明:如果喜欢的话,可以撩我哟,此处没有联系方式,想要就自己找哈。 https://blog.csdn.net/qq_39384184/article/details/85813184

调度程序

当计算机系统是多道程序设计系统时,通常就会有多个进程或线程同时竞争 CPU。只要有两个或更多的进程处于就绪状态,这种情形就会发生。如果只有一个 CPU 可用,那么就必须选择下一个要运行的进程。在操作系统中,完成选择工作的这一部分称为调度程序,该程序使用的算法称为调度算法

进程行为

  • CPU 密集型进程
  • I/O 密集型进程

何时调度

  1. 在创建一个新进程之后,需要决定是运行父进程还是运行子进程。(任意决定,调度程序可以选择)
  2. 在一个进程退出时必须所处调度决策。
  3. 当一个进程阻塞在 I/O 和信号量上或由于其他原因阻塞时,必须选择另一个进程运行。
  4. 在一个 I/O 中断发生时,必须做出调度决策。

调度模式

  • 抢占式
  • 非抢占式

调度算法的分类

  • 批处理
  • 交互式
  • 实时

调度算法的目标

  • 所有系统
    • 公平——给每个进程公平的 CPU 份额
    • 策略强制执行——保证所有规定的策略被执行
    • 平衡——保持系统的所有部分都忙碌
  • 批处理系统
    • 吞吐量——每小时最大作业数
    • 周转时间——从提交到终止间的最小时间
    • CPU 利用率——保持 CPU 始终忙碌
  • 交互式系统
    • 响应时间——快速响应请求
    • 均衡性——满足用户期望
  • 实时系统
    • 满足截止时间——避免丢失数据
    • 可预测性——在多媒体系统避免品质降低

批处理系统中的调度

  1. 先来先服务
  2. 最短作业优先
  3. 最短剩余时间优先

交互式系统中的调度

  1. 轮转调度
  2. 优先级调度:在各个优先级类中使用轮转调度
  3. 多级队列:属于最高优先级类的进程运行一个时间片,次高运行2个,再次运行4个。。。
  4. 最短进程优先:根据进程过去的行为进程预测,并执行估计运行时间最短的那个,可以和之前的运行时间做加权和来预测
  5. 保证调度:确保 n 个进程中每个进程占用 CPU 的时间约为 1/n
  6. 彩票调度:反应迅速,所有的进程都是平等的,但是可以给更重要的进程额外的彩票
  7. 公平分享调度:以进程的所有者均分 CPU 时间而不论进程数目

实时系统中的调度

  • 分类1:
    • 硬实时:必须满足绝对的截止时间
    • 软实时:虽然不希望偶尔错失截止时间,但是可以容忍
  • 分类2:
    • 周期性:事件以规则的时间间隔发生
    • 非周期性:事件发生的时间不可预知
  • 分类3:
    • 静态调度:在系统开始运行前作出调度决策
    • 动态调度:在运行过程中进行调度决策
  1. 最小延误调度
  2. 优先级调度
  3. 速率单调调度
  4. 最早截止优先调度
  5. 成比例分享调度
  6. POSIX 实时调度

线程调度

  • 内核级线程
  • 用户级线程

用户级线程和内核级线程之间的差别在于性能。
用户级线程可以使用专门为应用程序定值的线程调度程序。