
虚拟机采用的是虚化技术,其硬件系统功能是通过软件来模拟的,所以机器码会有不同,主要的区别在于:底层硬件指令不同、占用内存不同、运行环境不同:
1、底层硬件指令不同:虚拟机需要模拟底层的硬件指令,所以在应用程序运行速度上比虚拟系统慢得多。例如:java虚拟机则有虚拟出处理器、堆栈、寄存器等,还具有相应的指令系统。
2、占用内存不同:
常用的虚拟化技术有 *** 作系统中内存的虚拟化,实际运行时用户需要的内存空间可能远远大于物理机器的内存大小,利用内存的虚拟化技术,用户可以将一部分硬盘虚拟化为内存,而这对用户是透明的。
3、运行环境不同:
虚拟系统不会降低电脑的性能,启动虚拟系统不需要像启动windows系统那样耗费时间,运行程序更加方便快捷;虚拟系统只能模拟和现有 *** 作系统相同的环境,而虚拟机则可以模拟出其他种类的 *** 作系统。
扩展资料:
为了使计算机用户编程序更容易些,后来就出现了各种高级计算机语言,如BASIC、FORTRAN等语言。高级语言比机器语言、汇编语言更接近人的语言,用户可以不必了解计算机的指令系统和具体结构,就能够编制程序。用高级语言编制的程序通用性很强。
显然,和汇编语言一样,当计算机执行高级语言编写的程序时,仍然需要把程序解释和编译成机器的指令码。这个过程仍然由计算机来完成。完成这个过程的程序就叫做解释程序或编译程序。
现在尽管出现了许多像高级语言那样内容丰富的软件,但是人们仍广泛地使用着机器语言。原因是机器语言有它的独特优点,计算机最终要解决问题仍需要有机器指令码编制的程序。
参考资料:百度百科-机器码
参考资料:百度百科-虚拟机
对于不同 *** 作系统的编译器肯定是不一样的,不同的编译器所实现的功能,和编译的方式都有所不同,所以同样的源代码无法通过不同的编译器1 首先是包含的文件名就不一样,头文件的名不一样,预处理器都无法找到要包含的文件2 有些函数名也不一样,比如多线处理的相关函数,共享内存的相关函数欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)