Skip to content

2026年 408 操作系统 第 45 题

操作系统2026年综合题10分

题目

(本题满分 7 分)

系统采用优先级(优先级值越大优先级越高)+ 时间片轮转调度算法。规则:

  • 仅当发生时钟中断时才触发抢占 CPU 的操作
  • 时钟中断间隔 = 10 ms
  • 进程首次进入就绪队列时,其时间片 = 50 ms
  • 若进程因时间片用完而返回就绪队列,其优先级值 − 1
  • 若进程被更高优先级抢占而返回就绪队列,其优先级值保持不变
  • 多个进程优先级相同时,先进入就绪队列的进程优先

四个进程的到达时刻、初始优先级、CPU 总运行时间如下:

进程到达就绪队列时间 (ms)优先级CPU 运行时间 (ms)
P110395
P210420
P312240
P414560

(1) 从 10 ms 开始进程调度,直至所有进程调度结束,中断次数CPU 调度次数 各为多少?P1、P2、P3、P4 的首次调度发生在哪个时刻?(5 分)

(2) 若时间片由 50 ms 改为 100 ms,CPU 调度次数将增大、不变还是减少?若时钟中断间隔由 10 ms 改为 1 ms,系统开销将增大、不变还是减少?(2 分)

解析

(1)逐时刻推演

关键约束(请反复看 3 遍):抢占只在时钟中断(每 10 ms)时发生。所以"P3 在 t=12 到达"、"P4 在 t=14 到达"这种非中断时刻只让进程进就绪队列,不会立刻抢 CPU

完整时间线

时刻事件调度动作此后 CPU 运行剩余 CPU 时间
10P1、P2 到达;CPU 空闲调度 P2(P2 prio=4 > P1 prio=3)P2P2: 20→
12P3 到达非时钟中断,不调度P2 仍跑
14P4 到达非时钟中断,不调度P2 仍跑
20时钟中断P4 抢占 P2(P4 prio=5 最高);P2 优先级不变为 4P4P2: 10 / P4: 60→
70时钟中断P4 时间片用完(连跑 50 ms),prio 5→4。就绪队列里 P2、P4 同 prio=4,P2 先入队 → 调度 P2P2P4: 10
80时钟中断P2 跑完 10 ms,总共 10+10=20 ms = 完成。就绪队列剩 P1(3)、P3(2)、P4(4) → 调度 P4P4
90时钟中断P4 跑完 10 ms,总共 50+10=60 ms = 完成。就绪队列剩 P1(3)、P3(2) → 调度 P1P1P1: 50
140时钟中断P1 时间片用完(连跑 50 ms),prio 3→2。就绪队列里 P1、P3 同 prio=2,P3 先入队(t=12 入队,P1 才刚降级)→ 调度 P3P3P1: 45
180时钟中断P3 跑完 40 ms = 完成。就绪队列剩 P1(2) → 调度 P1P1P1: 45→
225P1 跑完剩 45 ms = 完成(225 < 235,不会再触发时间片)全部结束

CPU 占用时序图(t=0 到 t=225):

idleP2P4P2P4P1P3P101020708090140180225

答案统计

  • 时钟中断次数:从 t=10 起到 t=225,每 10 ms 一次,依次是 10、20、30、…、220 共 22 次
  • CPU 调度次数:发生在 t = 10、20、70、80、90、140、180 共 7 次
  • 首次调度时刻
进程首次调度时刻 (ms)备注
P190P4 完成后才轮到,因为优先级低于 P2 / P4
P210起始就被调度,最高优先级在线者
P3140排到最后,优先级 2 最低
P420到达后第一个时钟中断就抢到 CPU

编者注(易错点 / 答题套路)

  • "非中断时刻不抢占" 是本题最关键的设定。如果忘了它,会以为 P3 t=12 到达就能立即抢,导致整个时间线偏移。
  • "被抢占时优先级不变" vs "时间片用完时优先级 −1" 必须分清——P2 在 t=20 被 P4 抢走,prio 仍是 4;P4 在 t=70 时间片用完,才降到 4。同样 P1 在 t=140 用完时间片才从 3 降到 2。
  • 同优先级 FCFS 要看"哪个先入就绪队列"。t=70 时 P2 是 t=20 入队、P4 是刚刚入队,P2 优先;t=140 时 P3 是 t=12 入队、P1 是刚被踢出 CPU 入队,P3 优先。这两次"先后顺序"判定是本题易错的重灾区。
  • 首次调度 ≠ 首次进入就绪队列。P3 在 t=12 就进队了,但首次拿到 CPU 是 t=140,相差 128 ms。

(2)参数变化对调度次数 / 系统开销的影响

① 时间片 50 ms → 100 ms:CPU 调度次数 减少

时间片变长 → 进程"因时间片用完而让出 CPU"的次数减少,每个进程一次能跑得更久 → 整个推演里被时间片切走的事件变少。

举例:本题里 P4 时间片用完 (t=70)、P1 时间片用完 (t=140) 这两次事件,若时间片是 100 ms,则 P4 跑 50 ms 就刚好完成(不会触发时间片用完);P1 也类似。

② 时钟中断间隔 10 ms → 1 ms:系统开销 增大

每次时钟中断都要:保存现场 → 进入中断处理 → 检查是否需要调度 → 恢复现场(或切换进程)。间隔从 10 ms 缩到 1 ms 意味着 1 秒内中断从 100 次飙到 1000 次,纯中断处理与上下文检查的开销会显著增加,CPU 实际"干活时间"被吞掉一部分。

编者注(直觉解释)

  • 时间片:响应快、上下文切换多 → 适合交互式系统
  • 时间片:吞吐高、响应慢 → 接近批处理
  • 中断间隔:调度精度高、开销大
  • 中断间隔:调度粒度粗、开销小

这是 OS 章节"时间片 vs 中断频率"经典权衡,记住"短=灵活/费、长=稳定/省"四个字就能秒答这类对比题。

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数