计算机程序如何运行?

01 用户交互和命令启动

通过双击程序,用户指示操作系统通过图形用户界面启动应用程序。

操作系统收到请求后,会调用内置 shell 来响应该操作。然后,操作系统解析该操作,加载并执行程序。

02 程序预加载

执行请求启动后,操作系统首先会检索程序的可执行文件。这通常是一个可执行程序(在 Windows 上)或二进制文件(在 Linux 或 macOS 上)。

操作系统通过文件系统找到该文件,并将其加载到内存中准备执行。

图片

03 依赖解析和加载

大多数现代应用程序都依赖于一些共享库,如动态链接库(DLL)。操作系统会解析应用程序的依赖关系,并将必要的库加载到内存中。如果存在未解决的依赖关系,程序可能无法启动,因为它需要这些外部代码才能正常运行。

04 分配内存空间

操作系统负责分配内存空间。通常这分为两部分:程序用于动态分配内存的堆区(heap)和处理函数调用、局部变量存储等的栈区(stack)。

05 初始化运行时环境

分配内存后,操作系统和执行环境(如 Java 的 JVM 或 .NET Framework)将初始化运行程序所需的各种资源。这包括设置程序计数器、创建初始执行线程以及准备 I/O 系统。

06 系统调用和资源管理

程序的入口点(通常是一个名为 “main ”的函数)被调用,以开始执行程序员编写的代码。操作系统会维护一个程序计数器,以跟踪指令的执行进度,并让处理器逐步执行这些指令。

当程序在运行过程中需要执行文件操作、网络通信或其他 I/O 活动时,就会发出系统调用。操作系统接管控制权,提供必要的资源,或完成请求的任务,然后将控制权交还给程序。

07 冯-诺依曼体系结构

在程序执行过程中,当涉及文件读写、网络通信或其他 I/O 操作时,程序必须通过系统调用向操作系统请求服务。这些系统调用是冯-诺依曼计算机体系结构中中央处理器(CPU)与内存单元协同工作的典型例子。

在冯-诺依曼体系结构中,中央处理器执行存储在内存中的指令。当遇到需要硬件交互的 I/O 操作时,CPU 会暂时放弃控制权,进入内核模式执行必要的系统调用。

操作系统将处理这些调用,管理与硬件直接交互所需的复杂细节,并在完成后将控制权和执行结果返回中央处理器,中央处理器将继续执行程序代码。所有这些协调工作都是透明的,既能确保程序高效运行,又能在冯-诺依曼模型下进行适当的资源管理。

08 程序终止

最终,当程序完成任务或用户主动终止应用程序时,程序将开始清理阶段。这包括关闭打开的文件描述符、释放网络资源以及将内存返回系统。这标志着程序生命周期的结束,操作系统将保持已完成状态,等待下一个用户命令。

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/89325.html

(0)
guozi's avatarguozi
上一篇 2024年6月4日 下午2:49
下一篇 2024年6月4日 下午2:54

相关推荐

  • 服务器杀毒软件

    随着网络安全问题日益严重,服务器杀毒软件成为了越来越多企业和个人必备的防护工具。但是你知道吗?服务器杀毒软件不仅仅是一款普通的杀毒软件,它背后蕴含着更多的奥秘和功能。今天,我们就来…

    行业资讯 2024年4月15日
    0
  • 域名被屏蔽怎么解决,网站域名被攻击怎么解决

    您是否遇到过网站域名被屏蔽的情况?当您浏览网站时,突然无法打开网址,或者在搜索引擎中搜索某个关键字时,相关网站可能不再显示。这是因为URL域名被屏蔽了。那么什么是被屏蔽的网址和域名…

    行业资讯 2024年5月8日
    0
  • 如何防止ip入侵?

    你是否曾经担心过自己的网络安全?随着互联网的普及,网络安全问题也日益突出。其中,IP入侵是一种常见的网络攻击手段。这种入侵方式可以给个人和企业带来巨大的危害和影响。那么,如何识别和…

    行业资讯 2024年4月5日
    0
  • 如何使用qq万能发送精灵进行快速群发?

    今天,我将向大家介绍一款在搜索引擎优化行业备受关注的工具——QQ万能发送精灵。可能有些人对这个名字还不太熟悉,但它却是搜索引擎优化师们必备的神器。它能够帮助我们快速群发信息,让我们…

    行业资讯 2024年3月30日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注