java平台无关性的理解_深入理解Java虚拟机(一) 理解平台无关性

Write Once Run Anywhere,一次编写多处运行

一、Java的运行机制

如下图所示,Java上层应用程序对平台不透明,采用通用的java编译器将java源程序编译成为与平台无关的字节码文件(class文件),而在运行时由java虚拟机(JVM)对字节码文件解释执行,即Java字节码具有平台无关性,在Java生态体系中的语言,例如Android、Scala等,只要能按照Java的规则编译字节码文件,就能被识别来运行。而多处运行的前提是需要有不同版本的java虚拟机,不同系统平台的java运行环境其java虚拟机是不一样的。class文件由JVM(Java虚拟机)中的classLoader(类加载器)加载,解释器将其翻译成特定平台环境的机器指令并执行。

9f1a186ed973147c1751b57e97fc63dd.png

下图是Java程序具体的运行过程:

716d47ed8fb1900f3927be70e5b71581.png

一般情况下,class文件中的字节码由Java解释器解释成机器能识别运行的命令,而即时编译器的作用是将运行中的“热点位置”,即频繁执行的命令编译成本地机器码,供后续再次执行时快速执行。

二、平台体系架构

1、冯·诺依曼体系

43ba0672b15c512e2d8c1b64be891a0e.png

如图,该体系的设备有以下特点:

必须有一个存储器、一个控制器和一个运算器

必须有输入和输出设备,用于人机通信

只有一个存储器,指令和数据存储在相同的内存空间,但存储地址不同

处理器利用相同的总线处理内存中的指令和数据,指令和数据具有相同的数据宽度,指令和数据无法同时存取

优点:

将指令当做data,可以修改指令值,方便软件升级

data区和指令区共用memory,方便data区和指令区大小灵活调整

提高memory利用效率

总线和控制相对简单,成本低

对外围设备要求相对较低,只需要一个memory

缺点:

同一条总线分时复用,读取指令时不能操作data,不能走流水线

前一条指令执行阶段进行后,下一条才能取址。(取址、译码、执行)

2、哈佛体系

6812e4cb41bf5f097c42e75d6ed1c3d5.png

如图,哈佛体系的设备有如下特点:

使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;

使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联;

取指令和存取数据可同时进行,微处理器具有较高的执行效率;

提供了较大的存储器带宽;

适合于数字信号处理,大多数DSP都是哈佛结构.

优点:

执行指令效率高,流水线模式;

前一条指令译码的时候,第二条取指;

第二条译码,第三条取指。

缺点:

很难操作修改指令,软件不好升级;

指令区和data区独立,这样Memory利用效率不高,如果程序频繁变动的话;

Bus多成本高,对外设要求高。

冯诺依曼是很适合作为PC这样的机型,哈佛结构比较适合任务单调但需要高速率执行的CPU。

三、指令集分类

指令集分为复杂指令集CISC、精简指令集RISC和显式并行指令集EPIC。

2ddf2252585ed9533c0264be4b5e303b.png

30f979e4d2e7526df230d02fdc25a480.png

通常我们讨论时拿CISC和RISC来讲解。

精简指令集RISC的指令系统相对简单,硬件只执行有限且常用的指令,大多数复杂的指令则依赖于成熟的编译技术,由简单指令合成。目前一些高端计算机采用精简指令集架构,比如IBM的Power系列,HP的Alpha系列和PA-RISC系列,SUN的UltraSPARC系列。采用哈佛总线结构,单周期执行指令,可以实现高效的流水线操作,面向高级语言。

复杂指令集CISC,程序各条指令按顺序串行执行,这样控制比较简单,但计算机各部分利用率较低,指令不等长、指令条数多,因此编程和设计处理器时都比较麻烦。但基于CISC设计的软件应用已非常普遍,所以微处理器一直都在走CISC的发展之路。CISC的服务器主要以英特尔架构的服务器为主,通常所说的x86平台就是CISC架构。

80deaa2694bfa1650e2caac2baa282be.png

四、大尾端和小尾端

大尾端和小尾端就是我们通常所说的“大小端”问题,小尾端指的是数据的低位存储在低地址,高位存储在高地址,而大尾端指的是数据的低位存储在高地址,高位存储在低地址。

如图所示:

ed354813f908cedef33fdc6fb14213ae.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值