目前我认为处理器只有两种状态:运行而不运行。如果它正在运行,它将使用其全部功能来处理任务。如果有多个进程,则进程将由CPU的一部分共享。
如何将计算能力划分为“部分”?那么,假设一个CPU有100万个晶体管,如果CPU仅为50%,则只使用一半的晶体管?
或者这与每个流程的分配处理时间有关吗?即,假设“100%”表示如果进程具有默认的nice值(优先级值)0,则进程占用CPU 200毫秒,这意味着该进程将获得50%的计算能力,或者换言之,100毫秒。什么是正确的想法?
答案 0 :(得分:3)
让我以英特尔x86 CPU和Windows NT(及其衍生产品)为例对此进行解释。这些操作系统上的内置系统进程之一是系统空闲进程。此过程表示操作系统的“空闲循环”使用了多少CPU时间。该空闲循环不执行任何操作,只执行CPU的HLT
指令。反过来,该指令命令CPU在下一个中断到来之前什么也不做。
因此,如果调度程序确定在给定时刻没有需要CPU时间的进程,则会将其提供给系统空闲进程。例如,如果在最后 n 秒中99%的时间是通过“执行”该过程而花费的,则意味着CPU在这些 n中仅实际使用了1%秒。
我认为它完全类似于Linux,只是它没有单独的过程来模拟CPU的“空闲”。
旁注:当然,拥有一个根本不执行HLT
指令的操作系统是可能的。 Windows 98及更早版本(显然包括MS-DOS)就是这种情况,其空闲循环只包含jmp $
。这导致CPU使用更多功率。