为简单起见,让我们考虑一下我有一个核心处理器。我有2个任务并行运行。我的理解是处理器将以循环方式运行任务,即一次运行一次。
现在,如果任何一项任务使用更多的周期,则利用率将更高。那是对的吗?如果是这样,那么当任何任务需要大量循环时,换句话说,循环在这里实际上意味着什么?
简短的答案,因为人们已经撰写了有关该主题的整本书:
周期通常用术语“ CPU时间”表示。一个进程在CPU上分配了一定数量的“量子”。请记住,在CISC架构(如x86)中,单个“指令”可能会占用多个周期。
在最简单的循环调度程序中,会将50%的CPU时间分配给每个进程(如果有2个),因此,如果每个任务仅取决于CPU,则将花费两倍的时间。
但是,所有现代操作系统都具有更高级的调度算法,该算法将以下一个或多个参数考虑在内:
根据调度算法,将允许进程在CPU上运行,直到:
最终排队的组织方式取决于调度程序。此处描述了Linux调度程序。
在现实世界的计算机环境中,考虑周期并不是真正有用的。如上所述,一条指令在CISC架构上可能需要多个周期。CPU也将使用周期在进程之间进行切换(更改寄存器,更新MMU等)。这样的周期在描述CPU使用率时并不是一个非常好的指标。
CPU的有用输出主要取决于其处理处理请求的速度。当进程准备好进行处理时,它们将在运行队列中排队,直到它们可以由CPU处理为止。只要进程不必等待多于一个量子时间(〜200ms)即可运行,那么该系统的运行速度将与即将运行的速度一样快。在操作系统中,它显示为数字(浮点数(Linux:top
/ uptime
)或百分比(Windows Taskmanager)。
为了简短回答您在标题中提出的问题:利用率很高,因为运行队列在增加。您在Windows或Linux中看到的“利用率”只是运行队列长度随时间变化的平均值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句