临界区进程中断

Interruption of process in critical section

基于优先级的调度中,我遇到了优先级反转的问题,这是一个更高优先级的进程被迫等待较低优先级的任务。 一种可能的情况是,考虑优先级顺序为 L < M < H 的三个进程 L,M,H。

L在CS中是运行ning; H 也需要在 CS 中 运行 ; H 等待 L 从 CS 中出来; M 打断 L 并开始 运行ning ; M 运行s 直到完成并放弃控制; L 恢复并开始 运行ning 直到 CS 结束; H进入CS开始运行ning.

这里,我的问题是,关于语句M interrupts L and starts 运行ning 即,在Critical section中执行的进程是否可以被中断或抢占.

答案很简单,是的。 如果在抢占式系统中具有较高优先级的其他进程不需要在临界区运行,即不需要获取由较低优先级进程持有的锁,那么它可以抢占较低优先级进程不管它正在执行什么。

即使M需要CS,它也会抢占L,运行,阻塞并切换出去让L继续执行

Here, my question is, regarding the statement M interrupts L and starts running i.e., can a process executing in Critical section be interrupted or pre-empted.

这取决于临界区是如何实现的。

在操作系统代码中,您会经常发现在中断被阻止的地方实现了临界区。在这种实现中,进程将始终不间断地执行整个临界区。

在使用通过系统服务实现的临界区的用户代码中,进程总是会被中断。如果不是这种情况,进程可以通过将其所有代码放在关键部分来接管系统。

您描述的是流程优先级应该保持一致的原因之一。除非您正在进行实时处理或后台批处理,否则所有进程通常应具有相同的基本优先级。

旧的 DECUS 磁带过去充满了 "fair share" 应用程序,这些应用程序会降低 CPU 使用率高的进程的优先级,并且会严重破坏系统调度。