《现代操作系统》——第4章 CPU调度

  1. CPU调度的概念:按一定的调度算法从就绪队列中选择一个进程,并将CPU的使用权交给被选中的进程
  2. CPU调度要解决的三个问题:
    • 调度算法——包括多方面的考虑
      • 用户角度的考虑:(1)性能:周转时间、响应时间、最后期限;(2)其他:可预测性
      • 系统角度的考虑:(1)性能:吞吐量、CPU利用率;(2)其他:公平性、强制优先级、平衡资源
    • 调度时机——创建、唤醒进程,进程等待IO、IO中断,时钟中断等
    • 调度过程——即进程切换,主要包括地址空间切换和上下文切换
  3. 设计调度算法时需要考虑的几个问题:
    • 进程优先级:分为静态优先级和动态优先级
    • 进程就绪队列的组织:可以按优先级划分进程就绪队列,也可以让进程在多个就绪队列间周转,还有其他的就绪队列组织方式
    • 抢占与非抢占:抢占方式允许系统强行剥夺正在运行进程的CPU,而非抢占方式除非进程由于自身原因(时间片用完等)不能运行,否则进程将一直运行下去
    • IO密集型和CPU密集型进程:调度算法通常将进程按这两种类型划分并分别考虑对这两类进程的调度算法,如CPU密集型单独设置一个就绪队列,而IO密集型设置另一个就绪队列
    • 时间片的合适大小是多少
  4. 批处理系统中采用的调度算法:
    • 先来先服务(FCFS)——公平,简单,但不利于用户体验
    • 最短作业优先(SJF shortest job first)——最短的平均周转时间,但不公平,会导致长时间任务“饥饿”
    • 最短剩余时间优先(SRTN shortest remaining time next)——于最短作业优先类似
    • 最高响应比优先(HRRN Highest response ratio next)——响应比=等待时间/运行时间,响应比大的优先
  5. 交互式系统中采用的调度算法:主要考虑响应时间,次要考虑公平和平衡等
    • 轮转调度(时间片)(RR - Round Robin)——公平,有利于交互计算,响应快,但进程切换开销较大。RR对IO密集型进程不公平,但可以将IO密集型进程放入一个高优先级的就绪队列来进行优化
    • 最高优先级调度(HPF - Highest Priority First)——实现简单,但不公平,容易使低优先级任务“饥饿”。另外HPF需要解决优先级反转问题
    • 多级反馈队列(Multiple feedback Queue)——设置多个就绪队列,第一级就绪队列优先级最高,而时间片也越短,新建一个进程时会进入一级队列,时间片用完后会转到下一级就绪队列中,阻塞的进程如果时间片没有用完,那么解除阻塞后会进入原来一级的就绪队列。该调度算法对IO密集型进程有利
    • 最短进程优先(Shortest Process Next)——对IO密集型进程有利,对CPU密集型进程不利
  6. 多处理器上调度算法的设计考虑:不仅要决定哪个进程运行,还要考虑在哪个处理器上运行
    • 要考虑进程在CPU之间迁移时,高速缓存和TLB失效带来的浪费
    • 考虑负载均衡问题
  7. 典型操作系统采用的调度算法:
    • Linux:抢占式调度
    • Windows:基于优先级的抢占式多任务调度
    • Solaris:综合调度算法
  8. Windows线程调度简介:
    • windows调度单位是线程;采用基于动态优先级的抢占式调度,同时结合时间配额调整
    • 基本思想:
      • 就绪进程按优先级进入就绪队列——就绪队列的组织方式
      • 系统总是选择最高优先级的就绪线程运行——最高优先级调度
      • 同一优先级的各线程按时间片轮转进行调度——结合时间片轮转来处理相同优先级任务的调度
      • 多CPU系统中允许多个线程并行运行
posted @ 2020-06-25 16:08  凉风SK  阅读(551)  评论(0编辑  收藏  举报