程序在什么时候成为流程虚拟机?

问题描述 投票:0回答:2

在什么时候,作为运行时的程序成为(进程)虚拟机?与简陋的运行时相比,什么使程序称为虚拟机?试图阅读现实世界的软件并没有说明这种区别。

runtime virtual-machine virtualization
2个回答
0
投票

我不确定我理解你的“运行时”的概念。通常,这个词用于突出显示某个程序已经运行时发生的事情,而不是之前(例如编译时)或之后(例如当它崩溃并关闭时)。当一个程序将其自己的数据解释为以某种语言编写的另一个程序要执行时,虚拟机就是一个概念。

编译为本机机器语言或某种虚拟机语言的程序都可能需要运行时组件来执行。例子:

  • 从C ++编译成机器代码的程序需要实现标准操作的系统库,例如动态链接到它的数学库,以及操作系统服务,例如文件和网络输入输出
  • 编译成字节码的Java程序需要JVM来解释它,以及来自它的内存分配,垃圾收集,线程调度等服务。

程序的二进制代码中不存在libstdc ++而不是JVM,它们在运行时附加,因此名称。


0
投票

在什么时候,作为运行时的程序成为(进程)虚拟机?

任何用于执行的程序都是运行时。如果它正在运行,那就是。如果它仅存储在磁盘上,则它不在运行时(而是“等待时间”或“不存在时间”)。如果编写这样的程序来执行其自身内部的其他程序,则可以将其视为某种虚拟机。

与简陋的运行时相比,什么使程序称为虚拟机?

“运行时”这个词很模糊;你应该进一步限定它,例如“运行时库”,“运行时分析”,“运行时支持”等。短语“虚拟机”更具体:“hello world”通常不是VM,也不是解决线性方程组的程序;它们都执行静态算法。例如,翻译Python语言是一个VM,因为它所做的主要是由它处理的数据(另一个程序)定义,而不是由解释器本身的算法定义。

© www.soinside.com 2019 - 2024. All rights reserved.