JVM与CPU之间的联系

JVM结构图

根据《java虚拟机规范》规定,JVM的结构图如下图所示

程序计数器

JVM中的程序计数器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能运行。

这里,并非广义上所指的物理寄存器,获取将其翻译为PC寄存器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容器引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。

  1. 字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制,如:顺序执行、选择、循环、异常处理。
  2. 在多线程的情况下,程序计数器用于记录当前线程执行的位置,从而当线程被切换回来的时候能够知道该线程上次运行到哪儿了。

JVM与CPU之间的联系

(是JVM中的寄存器跟CPU寄存器之间的关系,确切来说)

我们知道,JVM只是一个用户进程,在OS中只是一段内存空间,不能直接访问内存等硬件设备,需通过系统调用陷入到内核中。

系统调用

  • 1、保存 CPU 寄存器里原来用户态的指令位

  • 2、为了执行内核态代码,CPU 寄存器需要更新为内核态指令的新位置。

  • 3、跳转到内核态运行内核任务。

  • 4、当系统调用结束后,CPU 寄存器需要恢复原来保存的用户态,然后再切换到用户空间,继续运行进程。

内核才能访问这些特权资源,所以JVM与CPU之间还隔着OS这一层,JVM的PC寄存器并没有物理实现,它只是CPU寄存器的抽象模拟

Java内存模型中的主内存与工作内存

从各种书籍(java并发编程实战,深入理解jvm)中得知,java内存模型中的工作内存就是CPU中寄存器与l1,l2高速缓存中的内容。上面我说JVM与CPU还隔着一层OS,所以其实我对这个看法还是持有一定怀疑的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值