iamabear09 / WIL

What I learned :: 공부 내용 정리 및 요약
0 stars 0 forks source link

JVM Oracle Spec 정리 #15

Open iamabear09 opened 8 months ago

iamabear09 commented 8 months ago

https://docs.oracle.com/javase/specs/jvms/se17/html/index.html

iamabear09 commented 8 months ago

1.2. The Java Virtual Machine

it has

📌JVM과 일반적인 컴퓨터 비교

일반적인 컴퓨터도 당연히 이 존재한다. 해당 Instruction Set은 CPU를 설계하는 사람이 만든다. 프로그램은 Intstruction Set 과 Data의 모음이고 프로그램이 메모리에 올라간 후 실행 된다. 프로그램 실행 시 CPU에 존재하는 Program Counter로 Instruction 을 메모리에서 읽어오고 해당 명령을 수행 하면서 메모리에 존재하는 데이터에 접근하고 Register에 값을 가져와 연산하고 메모리에 저장하는 등 이러한 연산을 통해 프로그램이 수행된다.

하지만 JVM은 PC와 Register가 따로 존재하지 않는다. 그렇지만 JVM도 프로그램이고 .class 파일도 프로그램이다. 따라서 결국은 CPU의 PC와 Register를 통해 위 프로그램들이 수행될 것이다.

어떻게 수행되는 것 일까?

JVM의 PC와 CPU의 PC는 무슨 관계가 있는 것인가?? JVM의 Instruction Set 또한 프로그램이다. 즉, CPU의 여러 명령어로 구성 되어있을 것이다. JVM 입장에서는 .class 파일은 하나의 데이터이다. class file은 바이트 코드로 이뤄져 있고 JVM은 해당 바이트 코드를 수행한다. JVM에게 Instruction set 정보는 어떤 class 파일을 올리더라도 항상 동일하지만 수행하는 class 파일은 항상 달라진다.

JVM Instruction Set 의 모음이 class 파일이라는 데이터다 JVM이 수행해야 하는 명령어는 CPU의 instruction Set으로 구성되어 있을 것이다.

JVM PC와 CPU의 PC의 관계를 생각해보자. CPU 입장에서 JVM PC를 확인하고 해당위치의 명령어 확인 . 해당 명령어는 JVM의 Instruction Set으로 이것을 CPU의 명령어로 수행할 것이다. 수행하기 위한정보는 JVM method