0

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

L 在 CS 中运行;H 还需要在 CS 中运行;H 等待 L 从 CS 中出来;M中断L并开始运行;M 运行直到完成并放弃控制;L 恢复并开始运行,直到 CS 结束;H进入CS并开始运行。

在这里,我的问题是,关于语句M 中断 L 并开始运行,即在关键部分执行的进程是否可以被中断或抢占。

4

2 回答 2

2

在这里,我的问题是,关于语句 M 中断 L 并开始运行,即在关键部分执行的进程是否可以被中断或抢占。

这取决于关键部分是如何实现的。

在操作系统代码中,您经常会发现在中断被阻塞的地方实现了关键部分。在这种实现中,一个进程总是会不间断地执行整个临界区。

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

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

旧的 DECUS 磁带过去充满了“公平共享”应用程序,这些应用程序会降低 CPU 使用率高的进程的优先级,并且会对系统调度造成严重破坏。

于 2018-05-06T23:06:16.610 回答
1

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

即使 M 需要 CS,它也会抢占 L,运行,被阻塞并切换到 L 继续执行。

于 2018-05-06T07:11:38.233 回答