我是linux内核和低级编程的新手。我想知道Linux调度程序在时间复杂度上应该是O(1)的原因。

我遇到了以下文章,该文章非常有帮助,但是我在理解下面复制的段落时遇到了问题
http://www.ibm.com/developerworks/linux/library/l-scheduler/



为什么140个队列中有5个32位的字?谁使用find-first-bit-set指令帮助选择140个队列之一?

最佳答案

位字段使用单个值表示多个 bool 状态,例如,如果我们使用的是8位整数,则可以这样说:

17 (decimal) = 00010001 (binary)

这将指示第4个和第8个 bool 值是true,而其他所有 bool 值都是false。由于共有8位,因此总共可以跟踪8个 bool 状态。

由于我们希望跟踪140个状态(每个队列1个,表示队列包含一个任务,为true),因此需要140位,因此140/32 = 4.375,我们至少需要5个32位整数来存储所有 bool 状态。

10-08 12:08