3

在实现互斥体时,有几种架构选择,例如,

  1. 旋转互斥锁(自旋锁)

  2. 睡眠互斥体(等待时保持 FIFO 睡眠队列)

  3. Yielding mutex(WAITING 时调用调度程序运行另一个进程)

为什么 Yielding Mutex 最不受欢迎?以及使用它的后果有多严重?

4

1 回答 1

2

休眠互斥体更公平。产生互斥锁会导致饥饿

让步模型的问题在于,一个进程可能会被要求一次又一次地让步,而其他进程会获取互斥锁(另请参见barging),或者只需要等待更短的时间。

根据将新进程添加到队列中的方式,甚至可能发生这样的情况:每次某个进程轮到它的时候,它就会被迫让步,因为互斥体已经被占用,从而使进程饿死

FIFO 模型确保以先到先服务的方式为等待进程提供服务。在操作系统中实现起来更难,但更公平

模型可以变得更复杂。例如,操作系统也可能有进程的优先级,并且优先级会随着时间而改变。然后队列系统的实现会变得更加棘手。

于 2013-09-06T00:36:18.190 回答