总是说当信号量计数为0时,请求信号量的进程被阻塞并添加到等待队列中。
当某个进程释放信号量并且计数从0-> 1增加时,会激活阻塞进程。这可以是从被阻止的进程中随机挑选的任何进程。调度等待信号量的进程
现在我的问题是:
如果它们被添加到队列中,为什么激活阻塞进程不是按照FIFO的顺序?我认为从队列中选择下一个进程将比较容易,而不是随机选择一个进程并授予信号量。如果这个随机逻辑背后有一些想法,请解释一下。另外,内核如何从队列中随机选择一个进程? 从队列中获取一个随机过程,就队列数据结构而言,这是一件复杂的事。
标签:各种操作系统每个有内核通常写在C++和互斥股类似的概念
您似乎正在交替使用“Q”和“队列”。也许这就是你混乱的根源。 – Gabe 2012-01-05 19:15:22
Q队列在这里 – Abhinav 2012-01-05 19:17:33