【发布时间】:2012-02-03 14:48:49
【问题描述】:
总是说当信号量的计数为0时,请求信号量的进程被阻塞并被添加到等待队列中。
当某个进程释放信号量并且计数从 0->1 增加时,一个阻塞进程被激活。这可以是任何进程,从被阻塞的进程中随机挑选出来。
现在我的问题是:
如果将它们添加到队列中,为什么阻塞进程的激活不是按 FIFO 顺序进行的?我认为从队列中选择下一个进程而不是随机选择一个进程并授予它信号量会很容易。如果这个随机逻辑背后有什么想法,请解释一下。另外,内核如何从队列中随机选择一个进程? 就队列数据结构而言,从队列中获取随机进程也是一件复杂的事情。
标签:各种操作系统,因为每个操作系统都有一个通常用 C++ 编写的 内核,而 mutex 具有相似的概念
【问题讨论】:
-
您似乎在交替使用“Q”和“Queue”。也许这就是你困惑的根源。
标签: c++ operating-system kernel mutex semaphore