Kei*_*son 5 algorithm queue semaphore
在William Stallings的"操作系统"一书中,他将一个强大的信号量定义为具有FIFO排队规则的信号量,以及一个无序的弱信号量信号量.当然还有其他强大信号量的排队规则,例如优先级?或者这不再是一个强大的信号量,因为饥饿会变得可能吗?(Stallings说,强大的信号量不允许饥饿.)强弱有序/无序或饥饿可能/不可能的主要区别是什么?
当谈到信号量的文献时,我从未见过(以我有限的知识)有人使用 FIFO 或某种形式的排序作为弱/强分类的标准。事实上,免于饥饿并不总是标准。最初的文献(即Morris('79)、Martin 和 JR Burch('85)、Udding('86)、Friedberg 和 Peterson('87)、Haldar 和 Subramanian('88))使用了\xe2\x80\x98P\xe2\x80\x99和\xe2\x80\x98V\xe2\x80\x99操作来定义弱信号量。有趣的是,所引用的研究人员的所有定义最终都意味着在信号量较弱的情况下可能存在饥饿。此外,虽然 FIFO 保证了无饥饿,但在我看来,术语 FIFO 或某种形式的排序限制了信号量的行为。一种形式的限制可能是,例如,FIFO 排序意味着信号量附加了某种缓冲区,以便跟踪\xe2\x80\x98P\xe2\x80上的阻塞进程/线程\x99操作。对于信号量的硬件实现来说,这个定义可能过于严格。另一种形式的限制可能是,不是考虑所有可能的排序方案具有相同的有界超越k(即没有进程将被超越超过k次),而是限制将每个方案视为一种不同类型的信号量。因此,我个人的观点是将弱信号量定义为不保证无饥饿(但保证无死锁)的信号量。然而,如果您\xe2\x80\x99更深入地研究研究级活动,那么无论如何,请随意使用您喜欢的更多数学或/和细粒度定义。
\n