课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,学习java编程开发语言的人也越来越多了,而今天我们就一起来了解一下,java编程开发虚拟机基础与架构。
虚拟机简介
虚拟机(VirtualMachine,简称VM)就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。
大名鼎鼎的visualbox、vmware就属于系统虚拟机,他们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。
程序虚拟机的代表就是java虚拟机(jvm),他专门为执行单个计算机程序而设计,在java虚拟机中执行的指令我们称为java字节码指令。
无论是系统虚拟机还是程序虚拟机,在上边运行的软件都被限制于虚拟机提供的资源中。虚拟机所在的位置:硬件的操作系统之上。
架构模型
Java编译器输入的指令流基本上是一种基于栈的指令集架构,另一种指令集架构则是基于寄存器的指令集架构。那么他们之间有什么区别呢?
栈式架构特点:
设计和实现更简单,适用于资源受限的系统;
避开了寄存器的分配难题,使用零地址指令方式分配;
指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小,编译器容易实现;
不需要硬件支持,可移植性好,更好实现跨平台。
寄存器架构特点:
的应用是x86的二进制指令集:比如传统的PC以及Android的Davlik虚拟机;
指令集架构则完全依赖于硬件,可移植性差;
性能优秀和执行更高效;
花费更小的指令去完成一项操作;
基于寄存器架构的指令集往往都以一地址指令、二地址指令和三地址指令为主。
机器指令是机器语言的一条语句,是一组有意义的二进制代码,一条机器指令通常分为两个部分:操作码和地址码。操作码指出该指令应该执行什么样的操作,代表了该指令的功能。地址码指出该指令操作的对象,给出被操作对象的地址。零地址指令指机器指令中操作数地址的个数为0,一地址指令指机器指令中操作数地址的个数为1,以此类推。
由于跨平台性的设计,java的指令都是根据栈来设计的,不同平台的cpu架构不同,所以不能设计为基于寄存器的。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。