我已经明白,由于其他处理器可以在多处理器系统中访问共享数据,即使禁用了中断,我们也会为多处理器系统的同步实现自旋锁
但是教科书说如果没有为多处理器系统同步禁用中断(只实现自旋锁,而不是"禁用中断"),其他处理器可能会占用资源。因此,禁用中断在多处理器系统同步中也很重要
我不知道为什么我们仍然必须禁用多处理器系统的中断 有人可以回答我的问题吗?
答案 0 :(得分:1)
即使是单处理器系统也会禁用同步中断。这是操作系统的主要序列化方法。
获得自旋锁时,尽快完成工作,然后释放。
如果你没有阻止中断,你可以获得一个自旋锁,然后被打断。
您的文字似乎暗示所有处理器都禁用了中断。那不是[总是]的情况。
答案 1 :(得分:0)
但是教科书说如果没有为多处理器系统同步禁用中断(只实现自旋锁,而不是"禁用中断"),其他处理器可能会占用资源。因此,禁用中断在多处理器系统同步中也很重要
教科书过度简化并不罕见。
根据您的CPU架构,您当然可以实现一个不会禁用中断的系统 - 实际上,您会发现您的多核PC启用了中断并且运行良好。< / p>
但这当然要求您对共享状态,抢占和优先级倒置的理解甚至比仅用于多线程单核机器更好。禁用所有中断在这里真的是一个穷人的解决方案,你的教科书可能不会描绘出最佳实践解决方案。