天天看點

基于棧的虛拟機位元組碼執行引擎

一、虛拟機位元組碼執行引擎概述

  虛拟機位元組碼執行引擎主要就是研究位元組碼指令具體怎樣被執行。對于實體機器,指令的執行是直接建立在OS和硬體的基礎上

對于位元組碼指令的執行就是直接建立在JVM上,然後通過JVM完成具體的位元組碼指令到機器指令的過程。一般來說虛拟機的執行的

位元組碼指令是基于棧的不是采用寄存器,主要考慮的原因跨平台。

  虛拟機的執行引擎是有JVM規範定義的,可以自己定義指令集以及執行引擎來執行位元組碼指令。不同的JVM執行引擎的實作可能不同

總體來說一個線程對應的是一個虛拟機棧:線程代碼中調用的其他方法,在被調用的時候形成一個棧桢---是虛拟機棧中的一個元素,它随着

方法的調用執行,進行進棧和出棧的操作。

基于棧的虛拟機位元組碼執行引擎

二、具體來講下棧桢的組成

  運作時棧桢是方法調用與方法執行的資料結構,其所需要的記憶體空間大小在編譯期間已經确定。棧桢包含以下幾部分的内容

局部變量表;操作數棧(所有指令中涉及的操作數全部在棧中進行操作);動态連接配接;方法的傳回資訊等。另外對于方法調用會産生

兩種不同的模式:前期綁定和後期綁定(運作時候才确定調用具體的方法是哪個)。

三、Java中線程的模型

  一個使用者态線程對應一個核心态線程,線程的排程,以及線程的TCB資訊維護完全由作業系統進行控制。