执行(计算)

计算机和软件工程中的执行计算机虚拟机读取并根据计算机程序的说明进行的过程。程序的每个指令都是必须执行的特定操作的描述,以便解决特定问题。执行涉及在控制单元完成的每个指令的“提取–code –code -execute ”周期之后重复。当执行机遵循说明时,根据这些说明的语义产生特定效果。

计算机的程序可以在没有人类交互的情况下在批处理过程中执行,或者用户可以在解释器交互式会话中键入命令。在这种情况下,“命令”是简单的程序说明,​​其执行被束缚在一起。

该术语运行几乎是同义词。 “运行”和“执行”的相关含义是指用户启动(或启动调用)程序的特定操作,例如“请运行应用程序”。

过程

执行之前,必须首先编写程序。这通常是在源代码中完成的,然后在编译时间(并在链接时间静态链接)进行编译以产生可执行文件。然后,最常通过操作系统调用此可执行文件,该操作系统将程序加载到内存(加载时间)中,可能执行动态链接,然后通过移动控制到程序的输入点来开始执行;所有这些步骤都取决于操作系统的应用程序二进制界面。此时执行开始,程序进入运行时间。然后该程序运行直到结束,无论是正常终止还是崩溃

可执行

可执行代码可执行文件可执行程序,有时简称为可执行文件或二进制,是指令和数据列表,可导致“根据编码说明执行指示的任务”的指令和数据,而不是数据文件文件。必须通过程序来解释(解析)有意义的。

确切的解释取决于用途。传统上,“说明”是指物理CPU机器代码说明。在某些情况下,包含脚本指令(例如bytecode )的文件也可以视为可执行文件。

执行的上下文

执行的上下文至关重要。很少有程序在裸机上执行。程序通常包含有关执行时可用资源的隐式和明确假设。大多数程序都在多任务操作系统运行时库中执行,该库是针对计算机本身直接提供关键服务的特定于源语言的执行。例如,这种支持性环境通常会使程序与计算机外围设备的直接操纵相反,而不是提供更通用的抽象服务。

上下文切换

为了使程序和中断处理程序在不干预的情况下工作并共享相同的硬件内存和对I/O系统的访问,在具有单个CPU/MCU的数字系统上运行的多任务操作系统中,需要具有某种形式软件和硬件设施可以跟踪执行过程数据(内存页面地址,寄存器等),并保存并将其恢复到暂停之前的状态。这是通过上下文切换来实现的。运行程序通常被分配一个过程上下文标识符(PCID)。

在基于Linux的操作系统中,一组存储在寄存器中的数据通常将其保存到内存中的过程描述符中以实现上下文的切换。还使用了PCID。

运行

运行时运行时间执行时间计算机程序生命周期的最后阶段,其中代码在计算机的中央处理单元(CPU)上作为机器代码执行。换句话说,“运行时间”是程序的运行阶段。

在程序的执行(运行状态)之后或期间检测到运行时错误,而在执行程序之前,编译器检测到编译时错误。类型检查注册分配代码生成和代码优化通常是在编译时进行的,但可以在运行时完成,具体取决于特定的语言和编译器。存在许多其他运行时错误,并且通过不同的编程语言来不同,例如通过零错误,域错误,阵列下标,符合错误,算术下流错误,几种类型的下流和溢出错误,以及许多其他跑步时间错误,以及许多其他跑步时间错误,以及许多其他常见的记录错误作为可能被任何特定计算机语言捕获和处理的软件错误。

实施详细信息

当要执行程序时,加载程序首先执行必要的内存设置,并将程序与所需的任何动态链接的链接起来,然后执行从程序的输入点开始。在某些情况下,语言或实施将使语言运行时完成这些任务,尽管这在普通消费者操作系统上的主流语言中是不寻常的。

某些程序调试只能在运行时执行(执行时更有效或准确)。逻辑错误数组边界检查是示例。因此,尽管在具有实际数据的生产环境中测试了程序,但仍未发现某些编程错误,尽管复杂的编译时间检查和预发行测试。在这种情况下,最终用户可能会遇到“运行时错误”消息。

应用程序错误(例外)

异常处理是一种语言功能,旨在处理运行时错误,提供一种结构化的方式来捕获完全出乎意料的情况以及可预测的错误或不寻常的结果,而无需进行任何语言所需的内联错误检查。运行时引擎的最新进步使自动化异常处理可为每个兴趣提供“根本原因”调试信息,并通过将特殊软件产品附加到运行时引擎中,从而独立于源代码实现。

运行时系统

运行时系统(也称为运行时环境)主要实现执行模型的部分。这不应该与程序的运行时生命周期阶段相混淆,在此期间运行时系统正在运行。当将运行时系统视为与运行时环境(RTE)不同时,第一个可以定义为用于编程的应用程序软件(IDE)的特定部分,该软件可为程序员提供更方便的环境,用于运行程序运行程序在其生产过程中(测试和类似),而第二个(RTE)将是将执行模型应用于开发程序的实例,然后将其本身运行,然后在上述运行时系统中运行。

大多数编程语言都有某种形式的运行时系统,可提供程序运行的环境。此环境可能会解决许多问题,包括管理记忆管理,程序如何访问变量过程之间传递参数的机制,与操作系统的接口以及其他方式。编译器根据特定的运行时系统做出假设,以生成正确的代码。通常,运行时系统将对设置和管理堆栈负有某种责任,并且可能包括诸如垃圾收集线程或其他动态功能之类的功能。

指导周期

指令周期(也称为fetch – decode – Execute周期或简单的提取前周期)是中央处理单元(CPU)从启动开始的周期,直到计算机关闭以便为了处理指令进行处理。它由三个主要阶段组成:提取阶段,解码阶段和执行阶段。

这是一个简单的图,说明了提取二级执行周期的各个阶段。

在更简单的CPU中,指令周期是按顺序执行的,每个指令在启动下一个指令之前进行处理。在大多数现代的CPU中,指令周期是通过指令管道同时执行的,并且通常并行执行:下一个指令在上一个指令完成之前开始处理,这可能是可能的,因为周期被分解为单独的步骤。

口译员

执行程序的系统称为程序的解释器。松散地说,口译员直接​​执行程序。这与在执行之前将程序从一种语言转换为另一种语言的语言翻译器对比。

虚拟机

虚拟机VM )是计算机系统虚拟化/仿真。虚拟机基于计算机架构,并提供物理计算机的功能。他们的实现可能涉及专门的硬件,软件或组合。

虚拟机不同并通过其功能组织,如下所示:

  • 系统虚拟机(也称为完全虚拟化VM)提供了真实机器的替代品。他们提供执行整个操作系统所需的功能。管理程序使用机执行来共享和管理硬件,从而允许多种环境彼此隔离,但存在于同一物理机器上。现代管理程序使用硬件辅助虚拟化,虚拟化特定的硬件,主要来自主机CPU。
  • 过程虚拟机旨在在与平台无关的环境中执行计算机程序。

一些虚拟机仿真器(例如QEMU视频游戏机模拟器)旨在模拟(或“虚拟地模仿”)不同的系统体系结构,从而允许执行为另一个CPU或架构编写的软件应用程序和操作系统。 OS级虚拟化允许通过内核对计算机的资源进行分区。这些术语不是普遍可互换的。

也可以看看