JVM이란? (1)
이 Posting에서는 JVM의 구조 및 동작 원리에 대하여 이야기 해볼 것이다.
JVM이 하는 일은 자바 바이트 코드를 해석하고 실행하는 것이다.
일반적인 프로그램과 JAVA 프로그램의 차이를 설명한 그림을 보고 시작하자.
프로그램 실행 루틴
JAVA 프로그램 실행 루틴
자 JAVA의 프로그램 실행 루틴을 알기 위해서 JVM의 구조를 좀더 명확하게 알 필요가 있다. JVM의 구조는 다음과 같다.
JVM이 하는 일은 자바 바이트 코드를 해석하고 실행하는 것이다.
일반적인 프로그램과 JAVA 프로그램의 차이를 설명한 그림을 보고 시작하자.
- JVM은 JAVA와 OS 중간에서 중간자의 역할을 수행하는 녀석이다.
- 이 녀석은 JAVA가 편하게 동작할 수 있도록 재사용을 가능하게 해준다.
- 메모리를 Garbage collection을 통해 관리를 한다.
프로그램 실행 루틴
- 로딩 - OS는 어떤 실행 파일의 portable executable 파일의 header를 읽어 하드 디스크 같은 기억장치로 부터 RAM으로 적재한다.
- 패치 - 적재된 데이터는 여러 instruction으로 이루어져 있고 이 것을 순차적으로 CPU로 전달하여 읽어들이는 과정
- 디코딩
- 실행 - CPU에서 ALU로 전달 연산을 수행
JAVA 프로그램 실행 루틴
자 JAVA의 프로그램 실행 루틴을 알기 위해서 JVM의 구조를 좀더 명확하게 알 필요가 있다. JVM의 구조는 다음과 같다.
- loader를 통해 class file들을 JVM의 data area로 로딩을 한다.
- data area로 로딩되기 전에 class file들을 해석해야 하기 한다. 그 역할을 하는 것이 Execution engine 이 수행한다.