Language agnostic 在虚拟化服务器上运行时,可执行文件的行为是否会有所不同?

Language agnostic 在虚拟化服务器上运行时,可执行文件的行为是否会有所不同?,language-agnostic,cross-platform,operating-system,virtualization,Language Agnostic,Cross Platform,Operating System,Virtualization,假设我有一段代码在操作系统上运行良好。现在,如果我在虚拟机(服务器虚拟化)上安装该操作系统,并在该虚拟机上运行该代码,是否可能代码的行为有所不同 如果是这样,有什么先决条件?例如,是否必须编译机器代码(换句话说,解释语言是否安全?)?它必须是特定的操作系统指令吗?特定的虚拟化技术(Xen、KVM、VMware..) 还有,可能的不同行为是什么 是的。与任何机器一样,虚拟机只是另一台计算机(用软件而不是硬件实现) 首先,当你在虚拟机上运行很多商业应用程序时,它们会爆炸,原因是: 检测VM的复制保护

假设我有一段代码在操作系统上运行良好。现在,如果我在虚拟机(服务器虚拟化)上安装该操作系统,并在该虚拟机上运行该代码,是否可能代码的行为有所不同

如果是这样,有什么先决条件?例如,是否必须编译机器代码(换句话说,解释语言是否安全?)?它必须是特定的操作系统指令吗?特定的虚拟化技术(Xen、KVM、VMware..)


还有,可能的不同行为是什么

是的。与任何机器一样,虚拟机只是另一台计算机(用软件而不是硬件实现)

首先,当你在虚拟机上运行很多商业应用程序时,它们会爆炸,原因是:

  • 检测VM的复制保护
  • 使用BIOS/Kernel/hardware的未记录功能,对硬件进行复制保护
  • 其次,虚拟机只是另一台由硬件组成的计算机,由汇编而不是电路/染料/微代码/魔术组成。这意味着虚拟机必须提供仿真硬件,无论是通过还是仿真。硬件的多样性会导致各种不同的行为。还请注意,可能缺少仿真硬件的驱动程序或加速

    但当然,一个典型的业务应用程序(例如)不太可能依赖任何硬件细节,因为它所做的只是调用一些GUI API

    解释语言只有在被“解释”的情况下才是安全的,如果解释语言调用一些本机代码,所有这些都是可能的


    例如,检测到它在虚拟机下运行的程序,请检查,这只是检测虚拟机的数千种方法之一。

    理论上,该程序的运行方式应与在物理机器上完全相同

    然而,在实践中,由于以下原因可能存在差异:

    • 计算机\OS配置和驱动程序
    • 虚拟机主机的加载
    机器配置上的差异与物理机器之间的差异类似。根据您的应用程序对最终用户的重要性,您应该运行与物理框相同的测试集,以确定环境是否可接受使用

    根据虚拟化技术的不同,主机可能无法在特定时间保证客户端资源。这可能会导致客户端出现奇怪的行为。由于IO超时和内存不足,可能会出现更多的应用程序错误

    要成功地将应用程序虚拟化以供生产使用,您需要做一些工作来了解应用程序\客户端和虚拟主机的资源配置文件