Have a Question?

如果您有任务问题都可以在下方输入,以寻找您想要的最佳答案

电脑打开软件出现执行什么操作,软件启动时 CPU 和内存占用变化

电脑打开软件出现执行什么操作

题图来自Unsplash,基于CC0协议

导读

  • 电脑打开软件时操作系统执行哪些操作
  • 软件启动过程 系统调用 文件读取 注册表访问
  • 软件运行原理 进程创建 内存分配
  • 如何监控软件打开时电脑执行的操作
  • 软件启动时 CPU 和内存占用变化
  • 有时候,当我们点击一个软件图标,期待着它立刻运行起来,背后其实隐藏着一个由操作系统调度、精确而复杂的一系列运作。电脑打开一个软件,远不止双击鼠标那么简单,而是一个精细的启动过程,涉及到资源调度、文件加载和环境准备,就像精心编排的一场幕后交响乐。

    首先,你的电脑在启动时已经做好了准备,操作系统位于最核心的一层。当用户双击一个应用程序图标后,首先需要知道“打开什么程序来运行这个指令?”。操作系统会查找 文件(File)-属性(Properties)-兼容性(Compatibility)-查看(View)右键文件 - 属性 - 高级属性 - 常规/链接 中的信息(对于.lnk快捷方式),特别是打开打开由这两个字段,以确定负责启动该应用程序的完整可执行文件路径。这个过程是基础的链接,必须将文件与它的处理器连接起来。

    一旦确定了确切的启动目标(比如 C:Program FilesMicrosoft OfficeWinWord.exe),操作系统接管并开始执行 WinWord.exe。这个过程本身需要操作系统进行一系列后台操作:

    1. 进程创建: 操作系统奉命开始创建一个新的“实例”或“进程”。这不仅仅是启动一个程序那么简单,系统需要为新程序准备CPU、内存、文件句柄、安全上下文等多种资源的关键参数。你可以通过 任务列表管理者Resource Monitor (资源监视器)来观察到双击应用图标时,有新的进程突然诞生,以及关于线程、内存使用和 I/O 权限的分配。

    2. 权限验证: 在程序真正运行代码前,系统会核实应用程序的文件,以及将要访问的关联资源(文件、注册表项等)是否有用户授权的操作权限。这步对于安全性至关重要,防止非法应用滥用或操纵系统。

    3. 命令行参数与环境变量: 如果软件启动需要特定的参数,或者依赖特定的系统环境变量(比如位数字体和图像的设置、数据库驱动程序的路径等),操作系统会将这些必要的信息作为“参数”传递给新进程。这些信息是软件与操作系统进行沟通、理解运行环境的基础。

    4. 基础资源分配: 系统粗略地分配必要的物理内存空间给这个新进程。这对于软件后续能有效、安全地运行是必需的第一步,也是各项监控软件寻找启动时刻动态数据的重要“锚点”。

    紧接着,在“幕后”的第二幕正式上演:

    1. 文件与动态链接库加载: 负责启动的进程(通常是 winword.exe)开始启动后,会驱动操作系统按需加载自身代码以及该软件运行所需的各种库文件,即“动态链接库”(.dll 文件)。这个过程,在资源监视器里我们能看到磁盘活动明显激增,并且 内存管理器 (Memory Mappings) 块里会产生大量对 .exe.dll 文件的“内存映射”操作,也就是文件内容被划指定并加载到进程的内存空间(虚拟地址空间)的环节。

    2. 系统调用: 从读取配置文件、查询注册表键值,到设置工作目录、定义命令行参数和色表设置字体和图像等,软件都在通过遍布于其代码中的 C运行时函数API(应用程序程序接口)函数 来与操作系统进行沟通。这些函数实际上是软件直接调用的操作系统底层服务,形式下我们经常能在资源监视器里观察到 CPU 活动在 HDM 等加载过程中密集出现。

    3. 注册表访问: Windows 软件在启动时常依赖于注册表中的配置信息,这些信息藏身于 HKEY_CLASSES_ROOT, SoftwareMicrosoftOffice 等逻辑看板中。系统读取这部分设置了软件启动参数、文件关联优先级、功能启用禁用以及程序位置等细节。

    4. 初始化运行环境: 系统协助进行一系列“就绪”工作,例如为程序准备隐藏的窗口,配置字体和图像的色表,定义搜索路径,初始化系统服务句柄等,确保程序启动时就能拥有稳定的“组件界面”和安全的“运行权限”。

    5. 开头读取: 对于需要头启动配置文件、模板列表或者快启信息的应用,系统会进行 头文件 (HEAD file) 访问,从网络或者本地磁盘加载必要数据。资源监视器的磁盘活动区域能清晰记录这些开启前的文件访问。

    6. 资源监控: 在任务管理器、资源监视器或者第三方工具中,我们常常能看到软件启动时特定的 最高点值运行库 条目在 变化列表 中现身,这些数据就是系统性能的实时 洞察器,帮助我们分析程序启动的具体行为和对硬件资源的依赖关系。

    最终,接应用完成内存分配、加载关键组件并完成自身初始化指令时,用户才看到熟悉的软件界面浮现出来,开始正常使用。

    这整个过程是封闭、高效的,但并非每一次点击都没有代价——尤其是较旧或编写不规范应用,其启动可能消耗更多内存或卡顿时间。如果我们能理解这些背场的 艰难流程,就能更好理解软件启动、运行时的运维,并能更有效地 搜集系统启动数据分析软件启动问题定期做好系统启动状况的健康检查

    © 版权声明

    本文由盾科技原创,版权归 盾科技所有,未经允许禁止任何形式的转载。转载请联系candieraddenipc92@gmail.com