为什么禁用中断同步满足有限等待

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)?

您的问题有两种情况需要考虑:

  1. 中断处理程序是否进入临界区?
  2. 是否涉及异步调度程序?

没有,没有 一旦P_i释放CS,释放机制就可以接受P_j,从而避免饿死。

否,是 尽管 P_j 的愿望,一旦中断被释放,调度程序可以被调用,并决定 P_j 接下来不被执行,所以至少在病态的情况下,可以永远尝试进入CS 而其他人被选中。

是,否 一旦 P_i 释放中断,任何挂起的中断将立即执行。如果他们要进入 CS,他们将首先进入(否则系统已停止 [*]),因此在正确的时间安排一组中断可以使 P_j 永远饿死。

是,是 在这里,饥饿可能是由于“否,是”或“是,否”中的任何一个原因造成的。

[*] - 中断没有推迟工作的先验方式,因此当处理程序运行时,完成中断处理程序所需的任何资源都必须可用。处理程序上下文有效嵌套;并且嵌套上下文不能等待其上级上下文的完成。