-1

调度方案:抢占式优先调度

情况 :

进程 L(低优先级)获取资源(R)上的自旋锁。当仍处于临界区时,由于另一个进程 - H(更高优先级)进入就绪队列,L 被抢占。.

然而,H 还需要访问资源 R 并因此尝试获取自旋锁,这导致 H 忙于等待。因为使用了自旋锁,所以 H 永远不会真正进入 Wait 并且将始终处于 Running 状态或 Ready 状态(以防更高优先级的进程到达就绪队列),从而阻止 L 或任何优先级低于 H 的进程执行。

A) 所有优先级小于 H 的进程都可以认为处于饥饿状态

B) 所有优先级小于 H 的进程以及进程 H 都可以认为处于死锁状态。[但是,那么进程是否必须处于等待状态才能使系统被认为处于死锁状态?]

C)所有优先级小于H的进程以及进程H,都可以认为是处于活锁状态。[但是,只有H的状态不断变化,所有低优先级的进程都保持在Ready状态。如果系统处于活锁状态,所有进程的状态是否都需要不断更改(作为自旋锁的一部分)?]

D) H 单独可以被认为处于活锁状态,所有低优先级的进程都处于饥饿状态,而不是处于活锁状态。

E) H 不会进步,但不能被认为处于活锁状态。所有较低优先级的进程都处于饥饿状态,而不是处于活锁状态。

以上哪些说法是正确的?你可以解释吗?

4

1 回答 1

0

这不是活锁,因为活锁的定义要求“活锁中涉及的进程的状态相对于彼此不断变化”,而这里的状态实际上不会改变。

第一个进程可以被认为处于处理器饥饿状态,因为如果有额外的处理器,它可以在其上运行并最终释放锁并让第二个处理器运行。

这种情况也可以被认为是死锁,资源图中有 2 个资源,并且 2 个进程试图以相反的方向获取该资源:第一个进程拥有锁并需要处理器继续,而第二个进程拥有处理器并且需要锁才能继续。

于 2017-01-06T22:13:56.867 回答