我对Linux内核和低级编程还不熟悉。我想了解Linux调度程序如何实现O(1)时间复杂度。
我找到了以下非常有用的文章,但我无法理解下面重现的段落:http://www.ibm.com/developerworks/linux/library/l-scheduler/ 调度程序的工作很简单:选择最高优先级列表上的任务执行。为了使这个过程更加高效,位图被用来定义任务在给定优先级列表上的位置。因此,在大多数架构中,使用“查找第一个设置位”指令来查找在五个32位字(140个优先级)中设置了最高优先级位的任务。找到要执行的任务所需的时间取决于优先级数量,而不是活动任务数量。这使得2.6调度程序成为O(1)进程,因为无论活动任务数量如何,调度时间都是固定和确定的。
为什么140个队列需要5个32位字?“查找第一个设置位”指令如何帮助选择其中一个140个队列?
我找到了以下非常有用的文章,但我无法理解下面重现的段落:http://www.ibm.com/developerworks/linux/library/l-scheduler/ 调度程序的工作很简单:选择最高优先级列表上的任务执行。为了使这个过程更加高效,位图被用来定义任务在给定优先级列表上的位置。因此,在大多数架构中,使用“查找第一个设置位”指令来查找在五个32位字(140个优先级)中设置了最高优先级位的任务。找到要执行的任务所需的时间取决于优先级数量,而不是活动任务数量。这使得2.6调度程序成为O(1)进程,因为无论活动任务数量如何,调度时间都是固定和确定的。
为什么140个队列需要5个32位字?“查找第一个设置位”指令如何帮助选择其中一个140个队列?