← 返回轮转模拟器

轮转之后,为什么结果错了?

调度决定谁先运行,同步保证共享数据正确。

步骤 0 / 6

共享计数器

刚执行的指令CPU 接下来执行

当前步骤

执行时间线
每格一条指令

课堂讨论与模型说明

本页是轮转调度的扩展示例。两个进程都在 t = 0 就绪,A 先运行;每次“下一步”执行一条教学指令。时间片 q 决定一轮最多执行几条指令,播放间隔只决定动画快慢。

加锁使用不可分割的获取操作;获取失败的进程进入阻塞等待,释放后被唤醒并重试。时间线中的“等”表示一次获取失败的尝试,等待本身不继续消耗 CPU 指令。

这些伪代码用于观察交错顺序,不表示高级语言的一行代码就是一条机器指令。转账例子将“读取两账户总额”简化为一次快照读取;真实程序同样需要让读写双方遵守一致的同步约定。

思考:如果只给“写回”那一行加锁,之前读到的旧值还可靠吗?