gpt4 book ai didi

interrupt-handling - 如果在第一个中断操作完成之前引发另一个中断,会发生什么情况?

转载 作者:行者123 更新时间:2023-12-04 08:19:28 25 4
gpt4 key购买 nike

这个问题来自中断处理主题。

假设正在处理一个中断。如果在第一个中断操作完成之前引发另一个中断,会发生什么情况?

最佳答案

以下内容仅适用于 x86 架构,但其他架构很可能遵循相同的模式:

有一个处理器标志叫做 IF (中断标志)控制是否可以处理硬件中断,或者必须暂停。当 IF = 0 时,中断将被推迟,直到标志重新启用(NMI 除外,不可屏蔽中断,它旨在作为不能被阻止的“仅紧​​急”中断)。
IF在调用中断服务程序之前由处理器自动清除。这对于防止中断调用变得失控可重入是必要的。请注意,中断服务代码本身无法自行完成此操作,因为如果 IF在进入例程之前没有被禁用,在服务代码有时间执行甚至单个指令之前发生更多中断是可能的。然后,中断的“消防水管”将立即导致(所有事情)堆栈溢出。

因此,为了回答您的直接问题:通常,当第一个硬件中断正在服务时发生第二个硬件中断时,该中断将被搁置,直到第一个中断完成。

像往常一样,整个故事有点复杂。 Intel Architecture Software Developer’s Manual英特尔网站上的 提供了更完整的说明,从第 10-4 页开始。

关于interrupt-handling - 如果在第一个中断操作完成之前引发另一个中断,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/931057/

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