【操作系统学习】CPU调度(七)

1. CPU调度概念

CPU 调度指的是操作系统将 CPU 资源分配给不同进程的过程。CPU 调度的整个过程,由操作系统中的短期调度程序(一种进程调度程序)负责完成。每当 CPU 处于空闲状态时,短期调度程序就会从位于内存的就绪队列中挑选一个进程,交给 CPU 执行。


CPU调度分类

不可抢占

  • 调度程序必须等待事件结束

可以抢占

  • 调度程序在中断被响应后执行
  • 当前的进程从运行切换到就绪,或者一个进程从等待切换到就绪
  • 当前运行的进程可以被换出


调度原则

  • CPU使用率
    • CPU处于忙状态所占时间的百分比
  • 吞吐量
    • 在单位时间内完成的进程数量
  • 周转时间
    • 一个进程从初始化到结束,包括所有等待时间所花费的时间
  • 等待时间
    • 进程在就绪队列的总时间
  • 响应时间
    • 从一个请求被提交到产生第一次响应所花费的时间


2. CPU调度算法

(1) 先来先服务(FCFS)

  • 优点
    • 简单
  • 缺点
    • 平均等待时间波动较大
    • 花费时间少的任务可能排在花费时间长的任务后面
    • 可能导致I/O和CPU之间的重叠处理
      • CPU密集型进程会导致I/O设备闲置时,I/O密集型进程也在等待

FIFO 队 列 的 规 定 
龙 如 果 进 程 在 执 行 中 阻 塞 , 队 列 中 的 下 一 个 会 得 到 CPU 
· 举 例 一 3 个 进 程 , 计 算 时 间 分 别 为 12 , 
3 , 3 
任 务 到 达 顺 序 : PI, 
Execution 
Tune 0 
任 务 到 达 顺 序 : 1)2, 
Ps 
12 
Average response tune = ( 12 + 巧 + 18 ) / 3 = 巧 
Average response tune = ( 3 + 6 + 18 ) / 3 = 9 
P2 , 
P3 , 
3 
P3 
0 
周 转 时 间 
Execution 
Tune 0 
6 
周 转 时 间


(2) 短进程优先(SPN)

  • 可能导致饥饿
    • 连续的短任务会使长任务饥饿
    • 短任务可用时的任何长任务的CPU时间都会增加平均等待时间
  • 需要预知未来
    • 怎么评估下一个CPU突发的持续时间
    • 简单的解决方法:询问用户
    • 如果用户欺骗就杀死进程
    • 如果用户不知道怎么办

(3) 最高响应比优先(HRRN)

  • 在SPN调度的基础上改进
  • 不可抢占
  • 关注进程等待了多长时间
  • 防止无限期推迟
  • R=(w+s)/s   w:等待时间     s:service time执行时间 选择R最高的进程

(4) 轮询(Round Robin)

  • RR花销:额外的上下文切换
  • 时间量子太大
    • 等待时间过长
    • 极限情况退化成FCFS
  • 时间量子太小
    • 反应迅速,但是
    • 吞吐量由于大量的上下文切换开销受到影响
  • 目标
    • 选择一个合适的时间量子
    • 经验规则:维持上下文切换开销处于1%以内

· Example : 讲 梓 所 需 时 间 
0 
詔 8 囫 
0 
0 
0 
龙 甘 特 图 如 下 : 
PI P2 P3 P4 PI P3 
PI P3 P 
0 20 28 46 68 88 108 112 125 145 153 
龙 等 待 时 间 P 0 ( 68 . 20 ) + ( Il 2 . 88 ) : 72 
1% : ( 20 . 0 ) : 20 
1% : ( 28 . 0 ) + ( 88 . 48 ) + 025 . 108 ) : 85 
PA : ( 48 · 0 ) + 008 · 68 ) : 88 
平 均 等 待 时 间 
= ( 72 + 20 + 85 + 88 ) / 4 = 66 %

(5) 多级反馈队列(MLFQ)

  • 就绪队列被划分成独立的队列
    • 例如,前台(交互),后台(批处理)
  • 每个队列拥有自己的调度策略
    • 例如,前台-RR,后台-FCFS
  • 调度必须在队列间进行
    • 固定优先级
      • 先处理前台,然后处理后台
      • 可能导致饥饿
    • 时间切片
      • 每个队列都得到一个确定的能够调度其进程的CPU总时间
      • 例如,80%给使用RR的前台,20%给使用FCFS的后台

· 一 个 进 程 可 以 在 不 同 的 队 列 中 移 动 
· 例 如 : n 级 优 先 级 一 优 先 级 调 度 在 所 有 级 别 中 , RR 在 每 个 级 别 中 
时 间 0 子 大 小 随 优 先 级 级 别 虐 加 而 虐 加 
如 果 任 务 在 当 前 的 时 间 0 子 中 没 有 完 成 , 则 降 到 下 一 个 优 先 级 
q 一 2 ‰ 
Level 1 
Priority 
Level 2 
尸 尸 2 
Leveln 
》 00 
Low 
Pnonty 
CPU 
0 
优 点 
PU 集 型 任 务 的 优 先 
级 下 降 很 快 
· 1 / 0 集 型 任 务 停 留 在 
高 优 先 级

(6) 公平共享调度(Fair Share Scheduling)

· FPS 控 制 户 对 糸 统 资 源 的 访 问 
. 一 些 户 组 比 真 他 用 户 组 地 要 
保 证 不 串 要 的 组 无 法 斷 源 
末 哽 用 的 源 帻 照 縋 个 所 分 配 的 源 的 比 例 来 分 配 
. 没 0 达 到 赍 源 用 率 § 标 组 得 0 高 忧 先 级

posted @ 2021-12-27 10:08  no_forget  阅读(201)  评论(0编辑  收藏  举报