You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算FIFO与RR调度的周转时间、响应时间及二者区别

调度算法核心指标定义(FIFO/RR通用)
  • 周转时间(TT):进程从到达系统到完全执行完毕的总耗时,统一公式为 完成时间 - 到达时间,你之前了解的 exit-arrival 是完全正确的,burst - waiting 是等价推导公式,二者结果一致。
  • 响应时间(RT):进程从到达系统到第一次获得CPU执行的时间差,统一公式为 首次执行开始时间 - 到达时间,和你已知的定义一致。
你给出示例的RR调度计算步骤

你示例中的RR调度时间片为1,三个进程参数统一如下:

进程到达时间CPU burst时长
P1010
P2010
P3010

RR调度逻辑为:按顺序循环给每个进程分配1个时间片的CPU使用权,时间片用完后切换到下一个等待进程,直到所有进程执行完毕。

RT计算

三个进程首次获得CPU的时间点分别为:

  • P1:时间0~1执行,首次开始时间为0 → RT=0-0=0
  • P2:时间1~2执行,首次开始时间为1 → RT=1-0=1
  • P3:时间2~3执行,首次开始时间为2 → RT=2-0=2
    和你推算的结果完全一致。

TT计算

每个进程需要累计执行满10个时间单位才会结束:

  1. 前9轮循环调度:每个进程各执行9次,每次1单位,总耗时9*3=27个时间单位,此时三个进程各剩余1个单位的CPU时长未执行
  2. 第10轮调度:
    • 时间27~28:P1执行最后1单位,执行完毕,完成时间为28 → TT=28-0=28
    • 时间28~29:P2执行最后1单位,执行完毕,完成时间为29 → TT=29-0=29
    • 时间29~30:P3执行最后1单位,执行完毕,完成时间为30 → TT=30-0=30
      和书中给出的结果完全匹配。
代码问题修正
  1. 周转时间函数:你当前写的 (j.finished - j.arrival - j.estimated) + j.estimated 等价于 j.finished - j.arrival,公式本身是对的,问题大概率出在j.finished的赋值逻辑:RR调度下进程会被多次中断、多次调度,只有当进程剩余CPU时长归0时的那次调度结束时间,才是最终的j.finished,不能把中间某次调度的结束时间赋值给它。
  2. 响应时间函数:删掉多余的if j.id == 1硬编码判断即可,j.start必须赋值为进程第一次获得CPU的时间,不能是后续调度的开始时间,直接返回j.start - j.arrival就是正确结果。

内容的提问来源于stack exchange,提问作者Marsh Mellow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:57:02