为什么多处理器系统需要禁用中断



我已经了解到,由于其他处理器即使在中断被禁用的情况下也可以访问多处理器系统中的共享数据,因此我们为多处理器系统的同步实现了spinlock

但教科书上说,如果没有为多处理器系统同步禁用中断(只实现了自旋锁,而不是"禁用中断"),资源可能会被其他处理器占用。因此,在多处理器系统同步中禁用中断也是至关重要的

我不明白为什么我们仍然必须禁用多处理器系统的中断有人能回答我的问题吗?

即使是单处理器系统也会禁用同步中断。这是操作系统序列化的主要方法。

当你获得自旋锁时,尽快完成你的工作,然后释放。

如果你不阻止中断,你可以获得一个自旋锁,然后被中断。

您的文本似乎建议在所有处理器上禁用中断。情况并非总是如此。

但教科书上说,如果没有为多处理器系统同步禁用中断(只实现了自旋锁,而不是"禁用中断"),资源可能会被其他处理器占用。因此,在多处理器系统同步中禁用中断也是至关重要的

教科书过于简化的情况并不少见。

当然,根据您的CPU架构,您可以实现一个不禁用中断的系统——事实上,您会发现您的多核PC启用了中断,并且工作得很好。

但这当然需要你对共享状态、抢占和优先级反转的理解,这甚至比多线程单核机器更好。禁用所有中断在这里真的是一个穷人的解决方案,而且你的课本可能没有描绘出最佳实践解决方案。

最新更新