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

时间:2019-02-07 03:01:38

标签: runtime virtual-machine virtualization

在什么时候以运行时为目的的程序成为(进程)虚拟机?与不起眼的运行时相比,什么才有资格将程序称为虚拟机?尝试阅读有关真实世界的软件并不能使两者之间的区别变得清晰。

2 个答案:

答案 0 :(得分:0)

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

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

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

程序的二进制代码中既没有libstdc ++也没有JVM,它们都在其运行时附加,因此得名。

答案 1 :(得分:0)

  

目标是成为运行时的程序在什么时候成为(进程)虚拟机?

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

  

与谦虚的运行时相比,什么使程序具有被称为虚拟机的资格?

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