首页 > 编程知识 正文

数控软件手机版,智能数显计数器使用

时间:2023-05-03 15:24:23 阅读:176035 作者:275

程序计数器在JVM的程序计数寄存器(Program Counter Register )中,Register的名称来源于CPU的寄存器,寄存器中保存与指令相关的现场信息。 CPU必须将数据加载到寄存器中才能工作。 在此,翻译成PC计数器(或指令计数器)而不是广义上的物理寄存器可能更合适。 也称为程序挂钩。 (不必要的误解也变得难以发生。 JVM内的PC寄存器是物理PC寄存器的抽象模拟。

那是一个小的存储器空间,几乎可以无视记不住。 也是运行速度最快的存储区域。

在JVM规范中,每个线程都有自己的程序计数器,它是线程专用的,生命周期与线程的生命周期相匹配。

在任何时间一个线程只运行一种方法。 也就是现在的方法。 程序计数器存储当前线程正在执行的Java方法的JVM指令地址。 或者,如果正在执行native方法,则没有指定值(undefned )。

它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能必须依赖于该计数器来完成。 字节码解释器通过更改此计数器的值并选择下一个要执行的字节码命令来工作。

这是唯一没有在Java虚拟机规范中规定outotMemoryError状况的区域。

主动PC寄存器用于存储下一条指令的地址,即即将执行的指令代码。 执行引擎读取以下命令:

代码演示首先写简单的代码

publicclasspcregistertest { publicstaticvoidmain (string [ ] args ) { int i=10; int j=20; int k=i j; }然后,将代码编译到字节码文件中,再次查看时,字节码左侧有行号的标识符。 这实际上是指令地址,表示当前执行了多少。

0: bipush 102: istore _ 13: bipush 205: istore _ 26: iload _ 17: iload _ 283360 iadd 9: istore _ 310310333333333333333333:

使用PC寄存器存储字节码的指令地址有什么用呢? 因为CPU必须不断地在各个线程之间切换,所以在切换回来之后,需要知道下一步要从哪里继续执行。

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

为什么PC寄存器被设置为专用的? 我们知道,多线程是一种在特定时间段内只运行某个线程的方法,由于CPU不断切换任务,必然会导致频繁的中断和恢复。 怎么做到分毫不差呢? 为准确记录每个线程运行的当前字节码指令地址,最好的方法是为每个线程分配PC寄存器,这样可以在每个线程之间进行独立的计算,避免相互干扰。

由于CPU时间片的限制,许多线程在并发运行时,在某个时间点,一个处理器或多核处理器中的一个内核只执行某个线程中的一条指令。

这必然会导致频繁的中断和恢复,但如何保证这一点不错呢? 各线程在制作后,生成独自的程序计数器和堆栈帧,程序计数器在各线程之间互不影响。

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

从宏观上讲,俄罗斯人可以同时打开多个APP应用程序,每个程序并行不矛盾,同时执行。

但是,在微观上,由于只有一个CPU,所以一次只能处理程序的部分请求。 一个公平处理的方法是引入时间片,然后按顺序逐程序执行。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。