Process Explorer 实用程序显示我的 CPU 以大约 5% 的容量运行。为什么我在启动应用程序时 CPU 使用率会突然增加,然后在应用程序打开几秒钟后又恢复到正常使用率(5-8%)。
答案1
- 操作系统需要在磁盘上找到该程序
-
操作系统需要创建一个进程
- 您提到了“进程资源管理器”,所以我假设是 Microsoft Windows。如果您曾经阅读过有关 SVCHost.EXE 的内容,就会发现该“服务”基本上是一种技术解决方法,可让多个软件使用相同的进程。这会使故障排除时事情变得不那么清晰。从好的方面来说,这可以带来一些速度上的好处,因为创建进程会产生一些开销。
- 创建进程需要保留之前可用的内存。查找一些可用内存可能需要进行一些更改,例如更改存储在页面文件中的内存
- 需要为该进程分配一个 PID(唯一的“进程标识符”编号)
- 操作系统需要将程序的指令加载到内存中
-
调度程序需要为程序分配一些 CPU 时间
- 在运行多个程序的多任务操作系统中,资源需要共享。因此,对于要使用资源(例如 CPU 执行程序需要的操作的时间)的程序,需要某种共享机制。
-
如果程序在屏幕上显示某些内容,则需要绘制窗口。这意味着程序需要告诉“窗口管理器”它需要一个窗口。程序需要告诉“窗口管理器”窗口应该是什么样子。
- 例如,程序是否显示标题栏?如果有,程序的标题是什么?现代版本的 Microsoft Windows 通常会在左上角显示特定于程序的图标。程序的图标是什么样子的?程序是否有最小化按钮?是否需要显示滚动条?窗口上还需要绘制什么?
- 该窗口通常会进入前台。如果另一个程序位于前台,则该程序将需要置于后台。将置于后台的程序将被告知这一事实。
-
然后,“窗口管理器”将需要将新窗口绘制在需要被新窗口覆盖的任何其他内容之上。
- “窗口管理器”这个术语可能在 Unix 类型的平台上使用得更频繁,因为这些平台上可能有多个“窗口管理器”选项可供选择。这可能不是最适合 Microsoft Windows 的术语,但我确信相同的基本概念正在发生。
- 除了窗口之外,可见程序通常还会在任务栏上的图标上表示,因此也需要绘制。
- 程序实际执行的其他任何操作都会花费一些时间。许多程序会要求用户输入,但在输入被绘制之前会忙于做一些事情。
- 程序为什么启动?有些事物必须请求启动该程序。事物,称为“父进程”,会收到通知。例如,如果您在开始菜单的“运行”提示符下键入命令,则应通知该提示符该程序已启动,以便提示符可以知道它可能已关闭。
-
确实还有很多其他事情要做
-
要了解具体情况,请跳转到命令提示符并输入:
WMIC PROCESS LIST /FORMAT:LIST >> output.txt
然后,打开该 output.txt 文件。空白行之间是操作系统将跟踪每个启动的新程序的一些数据。在我的 Windows 10 计算机上,该命令为每个进程(正在运行的每个程序的每个实例)显示 40 个不同的值。
-
要了解具体情况,请跳转到命令提示符并输入:
再次(类似于最近另一个关于项目关闭的问题),具体细节可能因所使用的操作系统而异(甚至更具体,例如操作系统的修补级别)。完整的列表将涉及描述操作系统的许多内部细节。阅读整本书(如Windows 内部原理,第1部分:系统架构、进程、线程、内存管理等 /第七版(一本有四位作者的书)只会讨论发生的事情的某些方面。而且,具体细节可能会在 Windows 更新时发生变化。所以,这个答案只是为了非常广泛地描述一些任务,只是为了表明程序启动时会发生很多事情。
应用程序打开几秒钟后恢复正常使用率(5-8%)
回答问题的第二部分:程序启动后,许多“初始化”任务都已完成。CPU 使用率是否下降取决于您正在运行的程序。但是,许多程序在用户告诉程序执行某项操作之前,只会执行极少的工作。等待输入不会占用大量 CPU 时间,因此 CPU 使用率会下降,直到您让程序再次变得更加活跃。