2016-04-15 294 views
-2

我已经明白,因为其他的处理器可以达到在多处理器系统中的共享数据,即使中断被禁止,我们实施多处理器系统的同步为什么多处理器系统需要禁用中断

环形锁,但是教科书说:如果多处理器系统同步没有禁止中断(只实现了自旋锁,而不是“禁止中断”),则其他处理器可能会占用资源。所以禁用中断在多处理器系统同步中也是必不可少的

我不明白为什么我们仍然要禁用多处理器系统的中断 任何人都可以回答我的问题吗?

+1

这个问题看起来像是由一台计算机和多线程词库中的随机单词组合在一起。 – SergeyA

+0

@SergeyA我认为语言障碍(我希望OP可以帮助我们克服!)和语言障碍相结合。 –

回答

1

但教科书上说,如果多处理器系统同步(仅实现了自旋锁,而不是“禁止中断”)未禁用中断,资源可能会被其他处理器占用。因此,在多处理器系统同步中禁用中断也很重要

教科书过度简化并不罕见。

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

但这当然要求你对共享状态的理解,抢占和优先级反转甚至比多线程单核机器更好。禁用所有中断实际上是一个穷人的解决方案,您的教科书可能不会描绘出最佳实践解决方案。

+0

我甚至不确定什么中断OP是在谈论。任何先发制人的操作系统都是以破解为基础的,如果没有这些操作系统就无法运作。 – SergeyA

+0

@SergeyA是的;但我记得许多“业余爱好者”书籍对微控制器多任务的介绍(另外,在中断优先级处理的MCU上编写抢占式节省ISR的典型最小示例,令人遗憾的是,似乎微控制器公司喜欢让他们的实习生写实例)是在关键代码片段之前禁用中断(通常是等待另一个内核完成其工作)以及之后激活。这太糟糕了,这是不好的做法,它是实时的,现代CPU支持更好的方法,但它仍然被广泛传播。 –

+0

有趣!我承认,我从来没有读过任何这些书(并且从来没有为MCU编写过程),所以我甚至都不理解OP可能在谈论什么。现在至少它是有意义的,谢谢! – SergeyA

0

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

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

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

您的文本似乎暗示中断在所有处理器上都被禁用。这并非总是如此。

+0

我想知道我是否理解你的意思是否清楚。如果其中一个处理器的进程(假设为A)获得一个自旋锁然后被中断,则该进程进入阻塞状态,所以如果其他处理器的进程(B)尝试访问进入关键部分,它必须等待进程A回到运行状态并退出自旋锁,这会导致开销? –

+0

btw非常感谢! –

+0

理论上,处理器可能会阻止自己尝试获取它已有的自旋锁。它也可以增加旋转锁定的时间。 – user3344003

相关问题