浅谈虚拟机的基本原理
来源:互联网 发布:网王之数据下的温柔 编辑:程序博客网 时间:2024/06/05 16:27
原创文章,转载请注明。
我们谈到虚拟机,好像感觉就是另外一个带操作系统的电脑,其实虚拟机的含义不止如此。
虚拟机不是个新事物,早在几十年前的六七十年代已经出现。最古老的计算机是穿孔计算的,主要用来数学计算,比如微积分。后来高级一点就有了指令,计算机执行指令,也就有了编写复杂逻辑程序的功能。于是有人就脑洞大开,这在当时其实很了不起的想法,就是同一段指令程序,可以不可以用软件模拟指令执行,然后算出结果,而不是直接把指令放到硬件上运算,毕竟硬件上运算指令的基本逻辑不复杂,主要是寄存器之间的操作。但是在当时看来,这类的模拟程序实际上并没实际多大用处,本身计算机的处理速度就不快,再加入一层软件模拟层,速度就降了很多。
我们读大学时候都知道汇编语言,学习汇编语言一般会用叫汇编模拟器之类的软件。严格意义上说,汇编模拟器就是一类虚拟机,其可以控制运算一般是英特尔8086CPU的基本指令。Java虚拟机JVM也是虚拟机,但是它的指令并没有真正的物理CPU支持,也就是它的指令是完全用软件创造的。JVM的好处就是在不同平台上都有JVM,然后JVM的指令不变,这也保证了JAVA语言的字节码在哪都可以运行,纵然JVM实际运行的平台的指令集不同,如ARM与Intel的不同指令集。
随着计算机CPU的运算能力变得越来越强,内存越来越大。完全模拟执行现实中的CPU也变得现实了起来。一般有两种类型的模拟方式,一种是完全百分百用软件模拟指令执行,也就是有个软件的CPU,这种方式的优点是可以创造现实中不存在的指令或执行与宿主机不同指令集的指令,但是速度一般较慢。另一种是指令直接放到物理CPU中执行,这样的优点是速度会快很多,但是受限于虚拟机安装平台的指令集。
- 浅谈虚拟机的基本原理
- 浅谈Binder的基本原理
- 浅谈Binder的基本原理
- 浅谈Binder的基本原理
- Handler的基本原理浅谈
- 浅谈GC的基本原理
- 浅谈.NET中泛型的基本原理
- 浅谈.NET中泛型的基本原理
- 浅谈.NET中泛型的基本原理
- SQLite 浅谈SQLite的虚拟机
- 【发现】浅谈虚拟机的优点
- 浅谈MySQL Replication基本原理
- 浅谈Windows下VMware虚拟机的使用
- 浅谈Android虚拟机的动态加载技术
- 浅谈Android虚拟机的动态加载技术
- 浅谈Java虚拟机的垃圾收集器
- 浅谈可变参数函数实现基本原理
- 浅谈Java虚拟机(转)
- This Handler class should be static or leaks might occur 解决办法
- 删除多余空格
- nyoj 1238最小换乘
- Android studio1.5.1 NDK配置开发
- LightOJ 1422 Halloween Costumes (区间DP)
- 浅谈虚拟机的基本原理
- Win10 VS2013 Compile Intro - C2011 Error
- 从Eclipse迁移到Android studio(还有遇到的各种问题)
- ios-基础之【10】-NSTimer
- 删除区间内的元素(线性表)
- sql学习笔记(二)
- Java 单链表的反转 以及 双向链表的实现
- Java中的Socket通信
- javaEE SSH框架 BaseAction的抽取以及其他方面代码优化