当前位置:网站首页>Program counter of JVM runtime data area

Program counter of JVM runtime data area

2022-07-06 17:14:00 Smart popcorn

1. Introduce

The program counter is also called PC register , Its full name is Program Counter Register, It's a literal translation , It can be seen as an abstract simulation of real physical registers .

image.png

Its main function is to store the address of the next instruction , You can see the following , from 5 Get the corresponding operation instructions at the position of , Put in PC Access in register , Then the execution engine will read , Translate operation instructions into machine instructions , Perform a series of operations such as addition, subtraction, multiplication and division .

image.png

Take a look back. , As shown in the figure below .

image.png

2. characteristic

It also has the following features .

  • The memory occupied is very small , Almost negligible , Very fast .
  • Thread private , Each thread has a piece , There will be no thread safety issues
  • One thread corresponds to one method , The program counter stores the instruction address of the method running in the thread , But if the local method is executed , The instruction address is underfine, Can't record , Because he only records Java Method
  • Branch loop Jump depends on this counter
  • stay JVM The only one in the specification will not OOM Region

3.CPU Time slice

Let's talk about CPU The concept of time slice , This is a CPU The time allocated to the execution of each program .

For a single core CPU, There is no concept of parallel , But because CPU Time slice switching , It will give us an illusion of concurrency , That is, multiple programs are running at the same time , Because each program may only run 10ns Time for , Switch back and forth , But in essence, it is a single thread operation .

But for multicore CPU, Multiple programs are assigned to different cores for processing , Different threads perform different jobs at the same time , But for every core , There will be concurrent operations , That is, each thread alternates ,

4. Two questions

PC What's the use of registers storing bytecode instruction addresses ?

In the case of multithreading , Executing a method will involve multiple threads , So record the instruction address , Otherwise, the switched thread will execute from the beginning , That must be wrong .

take 4*100 For the meter relay , The relay man is 100 rice ,200 rice ,300 Wait at a place of meters , Instead of starting from scratch , The position of the relay is equivalent to the instruction address .

PC Why should registers be thread private ?

image.png

hypothesis PC Registers are shared by threads , So what problems will it bring , Suppose three threads execute three different methods .

The first thread 1 Execute to order 5 了 , Start switching , Threads 2 Execute the final execution to the instruction 7, Will command 5 Cover the position of , Wait for the thread 123 It's all done , Threads 1 Start again , Is from the instruction 17 It's going to work , But it only executed the instruction originally 5, But there's no record , It will definitely cause confusion in the procedure , So the program counter has to be thread private .

Share daily

If you've ever hated your parents for being incompetent , No vision , It means that you have gone beyond the limitations of your parents , And this is the situation they do everything they want to see .

原网站

版权声明
本文为[Smart popcorn]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060928057868.html