标签:规范 行号 height 速度 解释器 应该 counter 多个 nat
JVM中的程序计数器(Program Counter Register),Resgiter 的命名原于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。
这里,并非是广义所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序的钩子)。JVM的PC寄存器是对物理寄存器的一种抽象模拟
作用:PC寄存器是用来存储下一条指令的地址,也就是即将执行的指令代码,由执行引擎读取下一条。
举例说明
常见问题
Q:使用程序计数器存储字节码指令地址有什么用(为什么使用PC计数器记录当前的线程执行地址)
A:因为CPU要不停切换各个线程,这时候切换回来以后,就得知道从哪继续开始执行;JVM的字节码解释器就要通过改变PC寄存器的值明确下一条应该执行什么样的字节码指令。
Q:PC寄存器为什么设定成线程私有的
A:假如多个线程公用一份,那么当我CPU切换到另一个线程时,PC寄存器保存的是线程1的下一条字节码指令数字,在CPU从线程二切换到其他线程是,PC寄存器里边的值就要存线程2的线程状态,当CPU再次切换到1线程,就找不到该从哪里执行,所以要线程私有。
CPU时间片:
CPU时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片。
在宏观上我们可以打开多个运行程序,每个程序并行不悖,同时运行
但在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,引入时间片从而让程序轮流执行
标签:规范 行号 height 速度 解释器 应该 counter 多个 nat
原文地址:https://www.cnblogs.com/Timeouting-Study/p/12493364.html