gpt4 book ai didi

operating-system - SMP 系统上的中断处理

转载 作者:行者123 更新时间:2023-12-04 08:34:33 24 4
gpt4 key购买 nike

中断是否分配给固定的 CPU(总是由同一个 CPU 处理)?

将我的问题放在上下文中:

来自: http://msdn.microsoft.com/en-us/library/ms795060.aspx

保护共享区域的自旋锁的 IRQL 等于设备中断时的 DIRQL。只要临界区例程持有自旋锁并访问 DIRQL 的共享区域,ISR 就不能在单处理器或 SMP 机器上运行。

这在单处理器机器上是有意义的,因为 CPU 的 IRQL 不小于中断 IRQL,直到锁被释放,中断才会被 CPU 服务。然而,在 SMP 机器上,什么会阻止中断被另一个 CPU(不是拥有锁的 CPU)处理并破坏数据...?

最佳答案

阅读下一节......

In an SMP machine, the ISR cannot acquire the spin lock that protects the shared data while the critical-section routine holds the spin lock and accesses the shared data at DIRQL.

...我认为这是在说在 SMP 机器上中断可以发生;但是如果中断发生,那么中断服务例程(在另一个 CPU 上运行)仍然无法获取自旋锁:即它自旋,浪费周期,尝试获取自旋锁,除非你释放自旋锁让等待的 ISR 获取它。

我想知道为什么它可能允许 ISR 在另一个 CPU 上运行,而不是像在单 CPU 情况下那样屏蔽中断(以防止 ISR 被启动)。对此的答案是,无论在持有自旋锁时是否可以在另一个 CPU 上启动新的 ISR,事实是(与单 CPU 情况不同)一个 ISR 可能已经 在 DIRQL 自旋锁启动时在另一个 CPU 上运行:正是出于这个原因,这样的 ISR(如果它存在于另一个 CPU 上)必须自旋(如果它试图获取自旋锁)。

关于operating-system - SMP 系统上的中断处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1522690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com