关键部分的过程中断

时间:2018-05-06 07:06:53

标签: operating-system critical-section priority-inversion

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

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

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

2 个答案:

答案 0 :(得分:1)

答案很简单,是的。 如果在抢占式系统中具有更高优先级的另一个进程不需要在关键部分运行,即不需要获取由较低优先级进程保持的锁,那么它可以抢占较低优先级无论正在执行什么,都要处理。

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

答案 1 :(得分:1)

  

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

这取决于关键部分的实施方式。

在操作系统代码中,您经常会发现在中断被阻止的情况下实施的关键部分。在这种实现中,进程将始终不间断地执行整个关键部分。

在使用通过系统服务实现的关键部分的用户代码中,该过程总是可以被中断。如果情况并非如此,则进程可以通过将所有代码放在关键部分来接管系统。

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

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