跳转至

操作系统3:CPU调度

本页统计信息
  • 本页约 1600 个字, 预计阅读时间 5 分钟。

  • 本页总阅读量

Chapter5:CPU Schedule

5.1 基本概念/标准
  • 调度的基本概念
  • CPU调度=处理机调度=进程调度

  • 进程运行消耗的时间主要分为CPU时间和I/O时间,根据程序运行主要消耗的时间,可以分为CPU型的程序和I/O型的程序

  • 三种层级的调度

    • 短程调度、中程调度和长程调度,其中CPU主要是短程调度

image-20201015141557996 - 调度发生的时间点:

- 从运行切换到暂停的时候
- 从运行到就绪状态的时候
- 从等待到就绪状态的时候
- 进程终止的时候
  • 调度的方式:

    • 抢占式:进程一旦被调度了就一直运行,直到完成或者阻塞的时候才让处理机分配给另一个进程
    • 非抢占式:程序运行的时候可以基于某种原则,剥夺进程的CPU使用权,分配给别的进程
  • 调度程序 Dispatcher

    • 需要进行上下文切换,并切换到用户态
  • 调度的一系列标准:

  • 面向用户的准则和评价方式

    • 周转时间:进程从提交到完成所经历的时间,包含平均周转时间,加权周转时间,平均加权周转时间
    • 响应时间:从进程提出到首次被响应所需要的时间
    • 等待时间:进程在就绪队列中等待的时间总和
    • 进程的调度需要满足公平性和一定的优先级
  • 面向系统的调度性能准则
    • 吞吐量 Throughput:单位时间内完成的进程数,跟进程本身的性质和调度算法都有一定的关系
    • 批处理系统:用户交给操作系统一批任务之后就不再和操作系统交互,直到任务全部结束
    • CPU利用率:要使得CPU尽可能忙碌
    • 各种系统的均衡利用:比如CPU型程序和I/O型程序进行合理搭配,使整个系统的利用率比较高

要做软件开发的人多学一些怎么提高用户体验的内容,虽然这些我们学校都不教。

​ ———— 季江民

  • 我们希望的目标:最大的CPU利用率、最大的吞吐量,最短的周转时间、等待时间、响应时间
5.2 调度算法
  • FCFS算法:First-Come First-Serve先来先服务
  • 按照进程的提交顺序来安排CPU的调度,先来的直到结束或者阻塞,才让出CPU(非抢占式的)
  • 在进程或者作业完成的时候,并不立即恢复执行,通常等到当前进程让出CPU才进行
  • 是最简单的算法
  • 优点是:有利于长进程,而不利于短进程,对CPU型进程友好
  • SJF算法:Shortest-Job-First Scheduling
  • 预计执行时间最短的作业优先分配CPU使用权
  • 事实上是很难实现的,因为难以估计进程运行需要的时间,所以真的操作系统中一般不用这些东西
  • 两种变形的形式:
    • 最短剩余时间优先 SRT
    • 最高相应比优先 HRRN
    • 相应比R=(等待时间+要求执行的时间)/要求执行的时间
  • 这里JJM上课讲了好几道PPT里面的例题
  • 优先级调度:Priority Scheduling
  • 小的数字代表高的优先级,该算法就是把CPU分配给了就绪队列中优先级最高的进程
  • 静态优先级和动态优先级,静态是一开始就确定优先级,动态优先级是基于某种原则,使得进程的优先级随情况而变
  • 一般使用抢占式的调度,优先级高的进程来了直接将CPU使用权从当前进程中剥夺
  • 饥饿 Starvation 在使用静态优先级的调度策略时,优先级低的进程可能永远得不到CPU的使用权
    • 进程卷起来的后果
    • 解决的方法:老化 Aging,随着时间的增加提高进程的优先级——动态优先级的策略
  • 时间片轮转调度:Round Robin(RR)
  • 算法描述
    • 将系统中所有的进程按照FCFS原则排成队列,每次调度将CPU分配给队列顶端的进程,执行一个时间片slice
    • 时间片结束的时候,发生时钟中断,然后将该进程移动到队列末尾
    • 通过上下文切换,执行当前的队列顶端的进程
    • 进程可以不运行完就出让CPU的使用权
  • slice的确定:和进程数量有关,数目越多,时间片越短
    • n个进程,time quantum是q,响应时间就是nq
  • 多级队列调度
  • 将就绪队列分为若干个子队列,每个进程按照一定方式归入一个队伍,不同的队伍可能有不同的优先级、时间片长度和调度策略:
    • 固定优先级调度
    • 给定时间片调度
  • 多级反馈队列:时间片轮转算法和优先级算法的综合和发展,有点有
    • 为提高系统吞吐量和缩短平均周转时间而照顾短进程
    • 为获得较好的I/O设备利用率和缩短响应时间而照顾I/O型进程
    • 不必估计进程的执行时间,动态调节

5.3这一部分不会考试,上课也就随便讲讲

5.3 Windows中的调度
  • Windows2000/XP的处理机调度的调度对象是线程,调度算法是多种调度算法的综合体,针对实际系统的需要进行针对性的优化和改进
  • 线程都是内核线程,没有用户线程
  • 线程有七种状态:初始化、就绪、备用、运行、等待、转换、中止
  • 采用动态优先级和抢占式的调度,总是运行优先级最高的线程,同一优先级的按照RR算法进行调度
  • 32个用户优先级:其中一半是实时的优先级

  • 哪些情况下会提高线程的当前优先级:

  • I/O操作完成了
  • 信号量或者时间等待结束
  • 前台进程中的线程完成了一个等待的操作
  • 由于窗口活动而唤醒图形用户接口线程
  • 线程处于就绪状态超过一定的时间

颜色主题调整

评论区~

有用的话请给我个star或者follow我的账号!! 非常感谢!!
快来跟我聊天~