CPU 调度计算器(FCFS、SJF、SRTF、时间片轮转、优先级)
模拟 FCFS、SJF、SRTF、时间片轮转和优先级调度:生成甘特图,计算完成、周转、等待和响应时间,以及平均值和 CPU 利用率。
周转时间 = 完成 − 到达 · 等待时间 = 周转 − 执行 · 响应时间 = 首次获得 CPU 的时刻 − 到达。
并列时,先到达的优先,再并列则先列出的进程优先。
| 进程 | 到达 | 执行 | 优先级 | 完成 | 周转 | 等待 | 响应 |
|---|---|---|---|---|---|---|---|
| P1 | 0 | 8 | 3 | 17 | 17 | 9 | 0 |
| P2 | 1 | 4 | 1 | 5 | 4 | 0 | 0 |
| P3 | 2 | 9 | 4 | 26 | 24 | 15 | 15 |
| P4 | 3 | 5 | 2 | 10 | 7 | 2 | 2 |
| 算法 | 平均等待 | 平均周转 | 平均响应 |
|---|---|---|---|
| FCFS | 8.75 | 15.25 | 8.75 |
| SJF | 7.75 | 14.25 | 7.75 |
| SRTF | 6.5 | 13 | 4.25 |
| 时间片轮转(q = 2) | 12.75 | 19.25 | 2 |
| 优先级(非抢占) | 7.75 | 14.25 | 7.75 |
| 优先级(抢占) | 6.5 | 13 | 4.25 |
操作系统课程和考试经常要求你手工调度一组进程,并算出每个进程的等待时间和周转时间。这个计算器模拟经典的 CPU 调度算法:FCFS、SJF、SRTF(抢占式 SJF)、时间片轮转,以及带或不带抢占的优先级调度,并给出甘特图、每个进程的表格、平均值、吞吐量和 CPU 利用率,还有同一输入下所有算法的对比。
使用方法
- 每行输入一个进程:名称、到达时间、执行时间,以及(优先级调度时)优先级。
- 选择算法;时间片轮转需要设置时间片。
- 说明数值越小还是越大表示优先级越高。
- 查看甘特图、表格和平均值,并在第二个表中对比各个算法。
计算公式
周转时间 = 完成 − 到达 · 等待时间 = 周转 − 执行 · 响应时间 = 首次运行 − 到达 · 利用率 = 忙碌时间 ÷ (最后完成 − 最早到达)
非抢占算法让进程一旦开始就运行到结束;SRTF 和抢占式优先级则在每次有进程到达时重新决策。时间片轮转让每个进程最多运行一个时间片,然后排到就绪队列末尾;默认情况下,恰好在时间片结束时到达的进程,像大多数教材那样排在被抢占进程之前(可通过选项更改)。并列时先到达的优先,再并列则先列出的优先。上下文切换时间按 0 计算。
示例
示例是 Silberschatz《Operating System Concepts》中的 SRTF 例题:P1(到达 0,执行 8)、P2(1,4)、P3(2,9)、P4(3,5)。调度顺序为 P1 0–1、P2 1–5、P4 5–10、P1 10–17、P3 17–26,等待时间分别是 9、0、15、2,因此平均等待时间为 6.5。同样的进程用普通 FCFS,平均等待 8.75。
常见问题
哪种算法的平均等待时间最短?
在已知执行时间的情况下,SRTF(抢占式最短作业优先)的平均等待时间最优。真实系统无法提前知道执行时间,所以才会使用时间片轮转和优先级方案。
什么是响应时间?
从进程到达到它第一次获得 CPU 的时间。时间片轮转能让它保持很短,这对交互式程序很重要。
为什么我的教材给出的时间片轮转答案略有不同?
不同教材对“恰好在时间片结束时到达的进程排在被抢占进程之前还是之后”的处理不同。请切换选项,使之与你的课程一致。
资料来源
最后更新:
包含这些输入的页面地址: https://kakao.mobile/zh/tools/cpu-scheduling-simulator/
引用此工具
kakaoCalc. (2026, November 8). CPU 调度计算器(FCFS、SJF、SRTF、时间片轮转、优先级). https://kakao.mobile/zh/tools/cpu-scheduling-simulator/
“CPU 调度计算器(FCFS、SJF、SRTF、时间片轮转、优先级).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/cpu-scheduling-simulator/.