为什么禁用中断同步满足有限等待
Why Disabling Interrupts Synchronization Satisfies Bounded Waiting
定义: 有界等待是指一个进程P_i
永远等待进入临界区(CS)而其他进程P_j
一直进入临界区尽管 P_i
表示有兴趣进入 CS。
现在明白了为什么锁变量机制不是有界等待,因为如果一个进程进入了非临界区,那么另一个进程可能会过来拿CS,所以一个进程可能会饿死。
算法:
NCS (Non-critical Section)
DISABLE INTERRUPTS
CS
ENABLE INTERRUPTS
NCS
编辑:没有给出更多关于调度器等的细节。问题是看一眼这是否满足有限等待。
问题:请问为什么disabled中断同步机制满足bounded waiting(锁变量机制中进程不能饿死进入CS)?
您的问题有两种情况需要考虑:
- 中断处理程序是否进入临界区?
- 是否涉及异步调度程序?
没有,没有
一旦P_i
释放CS,释放机制就可以接受P_j
,从而避免饿死。
否,是
尽管 P_j
的愿望,一旦中断被释放,调度程序可以被调用,并决定 P_j
接下来不被执行,所以至少在病态的情况下,可以永远尝试进入CS 而其他人被选中。
是,否
一旦 P_i
释放中断,任何挂起的中断将立即执行。如果他们要进入 CS,他们将首先进入(否则系统已停止 [*]),因此在正确的时间安排一组中断可以使 P_j
永远饿死。
是,是
在这里,饥饿可能是由于“否,是”或“是,否”中的任何一个原因造成的。
[*] - 中断没有推迟工作的先验方式,因此当处理程序运行时,完成中断处理程序所需的任何资源都必须可用。处理程序上下文有效嵌套;并且嵌套上下文不能等待其上级上下文的完成。
定义: 有界等待是指一个进程P_i
永远等待进入临界区(CS)而其他进程P_j
一直进入临界区尽管 P_i
表示有兴趣进入 CS。
现在明白了为什么锁变量机制不是有界等待,因为如果一个进程进入了非临界区,那么另一个进程可能会过来拿CS,所以一个进程可能会饿死。
算法:
NCS (Non-critical Section)
DISABLE INTERRUPTS
CS
ENABLE INTERRUPTS
NCS
编辑:没有给出更多关于调度器等的细节。问题是看一眼这是否满足有限等待。
问题:请问为什么disabled中断同步机制满足bounded waiting(锁变量机制中进程不能饿死进入CS)?
您的问题有两种情况需要考虑:
- 中断处理程序是否进入临界区?
- 是否涉及异步调度程序?
没有,没有
一旦P_i
释放CS,释放机制就可以接受P_j
,从而避免饿死。
否,是
尽管 P_j
的愿望,一旦中断被释放,调度程序可以被调用,并决定 P_j
接下来不被执行,所以至少在病态的情况下,可以永远尝试进入CS 而其他人被选中。
是,否
一旦 P_i
释放中断,任何挂起的中断将立即执行。如果他们要进入 CS,他们将首先进入(否则系统已停止 [*]),因此在正确的时间安排一组中断可以使 P_j
永远饿死。
是,是 在这里,饥饿可能是由于“否,是”或“是,否”中的任何一个原因造成的。
[*] - 中断没有推迟工作的先验方式,因此当处理程序运行时,完成中断处理程序所需的任何资源都必须可用。处理程序上下文有效嵌套;并且嵌套上下文不能等待其上级上下文的完成。