gpt4 book ai didi

java - "each JVM thread has its own program counter?"是什么意思

转载 作者:行者123 更新时间:2023-11-29 08:40:25 24 4
gpt4 key购买 nike

我试图理解这句话的意思:

Each Java Virtual Machine thread has its own pc (program counter) register. At any point, each Java Virtual Machine thread is executing the code of a single method, namely the current method (§2.6) for that thread.

https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5.1

我假设 JVM 线程像任何其他线程一样工作 - 每次该线程被安排运行(比如 Linux 内核)时,它的“程序计数器”从它的 task_struct data structure 加载。所以从 CPU 的角度来看,只有一个程序计数器 - 它只是在操作系统每次切换线程时由操作系统更新。

这样对吗?我很困惑,因为整个页面似乎一直在强调每个 JVM 都有自己的 PC/堆栈/堆等。但我认为这对任何进程都是给定的 - JVM 在某种程度上与其他进程不同吗?

最佳答案

assume that the JVM works like any other thread

JVM 不是线程:它是一个有很多线程的进程

...so from the CPU's perspective there's only a single program counter

程序计数器只是构成线程上下文的几个寄存器之一。每个 CPU 都有一组物理寄存器(或两组,如果它是超线程的,但让我们保持简单并忽略超线程。)因此每个 CPU 可以在任何给定的瞬间运行恰好一个线程。但是……

操作系统可以“切换上下文”:它可以为在给定 CPU 上运行的一个线程保存所有寄存器,然后从其他线程用保存的寄存器(包括程序计数器)加载寄存器。

在典型的桌面操作系统中,操作系统调度程序被调用,可能每秒调用 100 次或更多次,以确定此时应运行哪些线程。它将切换出当时实际运行的线程,并切换入等待运行的线程。

这样一来,您的计算机可以拥有比 CPU 多得多的 Activity 线程。

关于java - "each JVM thread has its own program counter?"是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40666484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com