PC寄存器概述_移位寄存器的工作原理[通俗易懂]

PC寄存器概述_移位寄存器的工作原理[通俗易懂]程序计数寄存器(ProgramCounterRegister)这里并非广义上所指的物理寄存器,或许将其翻译为PC计数器会更加贴切,并且也不容易引起一些不必要的误会

程序计数寄存器(Program Counter Register)

这里并非广义上所指的物理寄存器,或许将其翻译为PC计数器会更加贴切,并且也不容易引起一些不必要的误会。

JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。

作用:

PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。

由执行引擎读取下一条指令。

PC寄存器概述_移位寄存器的工作原理[通俗易懂]

特性:

  • 它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域
  • 在JVM规范中,每个线程都有它自己的程序计数器,是线程私有的,生命周期与线程的生命周期保持一致。
  • 任何时间一个线程都只有一个方法在执行,也就是所谓的当前方法。
  • 程序计数器会存储当前线程正在执行的Java方法的JVM指令地址,若在执行native方法,则是未指定值(undefined)

使用PC寄存器存储字节码指令地址有什么用呢?

因为CPU需要不停的切换各个线程,这时候切换回来以后,就得知道接着从哪开始继续执行。

JVM的字节码解释器就是需要通过改变PC寄存器的值来明确下一条应该执行什么样的字节码指令。

PC寄存器概述_移位寄存器的工作原理[通俗易懂]

PC寄存器为什么会被设定为线程私有?

我们都知道所谓的多线程在一个特定的时间段内只会执行其中某一个线程的方法,CPU会不停地做任务切换,这样必然导致经常中断或恢复,如何保证分毫无差呢?

为了能够准确地记录各个线程正在执行的当前字节码指令地址,最好的办法自然是为每一个线程都分配一个PC寄存器,这样一来各个线程之间便可以进行独立计算,从而不会出现相互干扰的情况。

补充:关于CPU时间片

CPU时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它为时间片。

宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。

但在微观上:由于只有一个CPU(单核CPU),一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。

PC寄存器概述_移位寄存器的工作原理[通俗易懂]


我是「码农小奎」,欢迎扫码关注公众号,更多编程学习经验与经历想和你分享!

PC寄存器概述_移位寄存器的工作原理[通俗易懂]

 

 

 

今天的文章PC寄存器概述_移位寄存器的工作原理[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/77895.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注