一種多卡內、卡外虛擬機的jcvm解析優化方案_第1頁
一種多卡內、卡外虛擬機的jcvm解析優化方案_第2頁
一種多卡內、卡外虛擬機的jcvm解析優化方案_第3頁
一種多卡內、卡外虛擬機的jcvm解析優化方案_第4頁
一種多卡內、卡外虛擬機的jcvm解析優化方案_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

一種多卡內、卡外虛擬機的jcvm解析優化方案

java怨恨是一種可以操作java語言程序的智能機器人。在有限的軟件環境下支持java語言是一個子集。這是一個結合智能機器人和java技術的新應用。自1996年11月提出java健康技術概念以來,sun和其他ic卡制造商一直在開發和改進。2002年2月,sun確定了java互聯虛擬機及應用程序接口標準2.2版,顯示了java互聯技術的成熟。在歐洲、美國和日本,許多制造商將其廣泛應用于電信、金融和醫療領域。在中國,對java人工智能技術的研究處于初步階段,但也具有應用前景。目前,中國移動通信、香港電信等電信運營商已計劃引入使用java人工智能技術的sim卡,以取代現有的技術。JavaCard繼承了Java語言最為顯著的特點:硬件無關性.成功地將智能卡的軟件平臺和硬件平臺相分離,實現了Java設計者所宣稱的:“程序一次寫完,到處運行”的理念.為了實現此硬件無關特性,JavaCard虛擬機(JavaCardVirtualMachine,簡稱為JCVM)繼承了Java虛擬機(JavaVirtualMachine,簡稱為JVM)的“動態鏈接特性”,因此,JCVM在解釋執行命令前,需對其進行解析.但傳統的解析過程頻繁的訪問位于智能卡內部的類、方法和域組件等內部數據,耗費了大量的系統時間.因此本文根據JCVM的特殊實現,提出了卡內、卡外相結合的解析優化技術來加速卡內指令執行,從而提高了JCVM的整體性能.1ava卡的解析JavaCard平臺上的JCVM功能與JVM相似,但由于智能卡上資源有限,JCVM的實現分為兩部分:卡外虛擬機和卡內虛擬機.卡外虛擬機工作在PC平臺,它將Java源文件進行編譯轉換,轉化后的字節碼文件稱為CAP文件,即為將要下載到Java卡上的安裝文件.卡內虛擬機則工作在智能卡平臺,它對下載到卡上的CAP文件字節碼解釋執行,將之轉化為相關的本地硬件實現.CAP文件在解釋執行前需要對其進行解析.JVM中的解析是在常數池中完成,它將常數池中表示對象引用的字符常量轉化為對象的物理地址,在此絕對地址處完成對對象的訪問;而JCVM中的解析則是“基于Token的動態鏈接”(token表示對引用項的引用,位于常數池組件中.常數池組件為一數組結構,其中的元素為包含某一被引用項的token的常數項).指令執行時,需先將該指令要訪問的被引用項的常數池索引作為指令參數,取出此索引所指出的被引用項的token,并將之轉化為此項的物理地址,隨后即可調用相關的方法在此絕對地址處完成對該引用項的操作.JCVM中將表示被引用項的token轉化為該項的絕對地址的過程就是JCVM解析過程.2靜態鎖定解析過程根據解析過程是否與卡內存儲分配相關,可將解析分為靜態綁定解析過程和動態綁定解析過程.靜態綁定解析過程,只訪問本CAP文件,而無需智能卡內資源,因此與卡內存儲結構無關,為一編譯時過程.而動態綁定解析過程,必須獲得卡內資源,才能完成其解析過程,因此該過程與卡內存儲結構相關,為一運行時過程.下面由動態綁定和靜態綁定解析過程的概念分析標準解析過程.標準解析過程可概括為:常數池組件偏移量→token→被引用項在對應組件中的偏移量→被引用項物理地址的過程,其中由偏移量到token的過程只涉及到本CAP文件的常數池組件,因此為靜態綁定解析過程.由token到偏移量可分為兩種情況,當token表示對本包所定義的項的引用時,該過程只需要對本CAP文件中的類、方法或域組件訪問,即可得到此偏移量結果,因此該過程為靜態綁定解析過程;但當token表示對導入包所定義的項的引用時,由于此過程需訪問位于智能卡上的其他CAP中的類、方法或域組件,其地址和卡內的存儲分配相關,此時該過程為動態綁定解析過程.最后由偏移量到物理地址的過程,必須在得知CAP中的各組件位于智能卡上的物理地址前提下,才能將偏移量和組件基址相加,得到被引用項的物理地址,因此該過程為動態綁定解析過程.從JCVM虛擬機的卡外和卡內兩部分協同實現的設計構思出發,可以把指令的標準解析過程分解,編譯時的靜態綁定解析過程放至卡外完成,同時用創建新的指令操作碼(偽指令操作碼,其值大于184)和解析后的結果(偏移量或token)構造偽指令,創建偽指令集,如表1.而將運行時的動態綁定過程放至卡內完成,通過解釋偽指令,獲得卡外解析結果,并完成后續的解析過程.下面針對每一類指令對其解析優化設計進行詳細的論述.2.1cap上的相對地址解析在執行指令之前,要根據指令參數得到將要實例化的類,即完成類解析過程.根據定義包的不同,被實例化類可分為本包所定義的類(簡稱本包類)和外包所定義的類(簡稱外包類)兩種情況.如圖1所示,本包類的解析將執行以下操作.1)先將指令參數作為常數池數組索引,并將之乘4(常數池數組元素大小)后與常數池組件在CAP上的基址相加,即得到對應的常數項在CAP上的相對地址,該過程數學表達式為(記為函數1)常數項地址=常數池索引×4+常數池基址2)取出常數項中表示被實例化類的classtoken,classtoken在數值上等于被實例化的類位于CAP類組件中的偏移量.3)將此偏移量與卡內類組件基址相加,得到被實例化類的類信息在卡上的絕對地址.由以上解析過程可以看出,步驟1)、步驟2)為靜態綁定過程,可放至卡外執行,并將執行結果和偽指令操作碼構造為偽指令返回CAP,替代CAP中原指令,其指令格式如圖1中所示.步驟3)則為動態綁定過程,在卡上解釋偽指令,確定類信息絕對地址,完成類解析過程.外包類的解析過程步驟1)和本包類的解析過程相同,但由于外包類的CAP文件安裝在卡內,因此其classtoken由packagetoken(表示定義此類的包)和classtoken(表示被實例化的類)組成.先通過packagetoken找到卡內CAP文件地址,再由classtoken得到類信息在CAP的類組件中的絕對地址.其中步驟1)為靜態綁定過程,放在卡外完成,并返回偽指令.其余過程則為動態綁定過程,在卡內解釋偽指令,繼續類解析過程,最后得到類信息在卡內的物理地址.2.2靜態鎖定過程方法調用指令執行前,首先要根據指令參數得到對應的方法,即完成方法解析過程.根據方法所屬的類的不同,可將方法分為本包定義的類的方法(簡稱本包方法)和導入包定義的類的方法(簡稱外包方法).如圖2,本包方法的解析需執行以下操作.1)調用函數1,將常數池索引轉化為對應的常數項在CAP上的相對地址.2)取出常數項中classtoken(表示定義此方法的類)和methodtoken(表示被調用的方法).并對classtoken進行類解析,得到定義此方法的類的類信息在CAP文件中的相對地址.3)根據methodtoken(數值上等于方法表索引),查找類信息中的方法表,得到此方法的方法代碼在方法組件中的偏移量.4)將此偏移量與卡內方法組件基址相加,得到將要調用方法代碼的絕對地址.對比類解析過程可知,步驟1)~3)為靜態綁定,將之放在卡外完成,并返回相應的偽指令.步驟4)為動態綁定過程,在卡內解釋偽指令,得到被調用方法代碼的物理地址,完成方法解析過程.外包方法的解析過程與本包方法相似,只是由于定義方法的類為外包類,所以先要完成外包類解析過程,得到類信息在卡內的絕對地址,其余過程則完全相同.以上過程中,步驟1)為靜態綁定過程,在卡內完成,并將構造的偽指令作為結果返回,其他步驟為動態綁定過程,在卡內對偽指令繼續方法解析過程,最后得到方法代碼在卡內的絕對地址.2.3靜態域解析靜態域訪問指令執行前,也先要得到所要訪問靜態域的物理地址,即需先完成靜態域解析過程.根據靜態域的所屬類的不同,靜態域可分為本包定義的類的靜態域(簡稱本包靜態域)和外包定義的類的靜態域(簡稱外包靜態域)兩種情況.如圖3,本包靜態域解析需執行以下操作.1)調用函數1,將常數池索引轉化為對應的常數項在CAP上的相對地址.2)取出常數項中staticfieldtoken(在數值上等于該靜態域在靜態域鏡像中的偏移量).3)將此偏移量與卡內靜態域鏡像基址相加,即可得到被訪問的靜態域在卡上的物理地址.由以上解析過程看出,步驟1)、步驟2)為靜態綁定過程,可在卡外完成,并返回相應的偽指令.步驟3)則為動態綁定過程,在卡內解釋偽指令,確定靜態域的絕對地址,完成靜態域解析過程.由于外包靜態域解析所需信息不在本CAP內,因此執行步驟1)后,得到的常數項由packagetoken(表示此靜態域所屬的包),classtoken(表示此靜態域所屬的類)與staticfieldtoken(表示將訪問的靜態域)組成,需先根據packagetoken得到定義此靜態域的CAP文件地址,然后由classtoken和staticfieldtoken在CAP中信息得到此靜態域的卡內物理地址.由解析過程可知,只有步驟1)為靜態綁定,放至卡外執行,并返回相應的偽指令,其他過程則為動態綁定過程,在卡內解釋偽指令,將token轉化為此靜態域在卡內的物理地址.3為了比較cap文件的優化方案和執行性能,分析優化方案分為兩部分3.1偽指令生成卡外所要實現的內容即是在PC平臺上完成與卡內存儲無關的靜態綁定解析過程.各指令的靜態綁定過程如上文所述.然后將得到的執行結果和原指令操作碼作為新指令替代原指令存入CAP文件,簡單說即為CAP文件的更新,更新后的新指令即為本文所構造的偽指令,并將之添加到偽指令集中.這一過程在PC平臺上執行,本文用Java語言實現.用Java中的輸入流將CAP文件中的指令讀出,通過定義不同解析函數完成各類指令的卡外解析,然后通過Java中的輸出流將結果替換原指令寫入CAP中,即完成了卡外解析過程.3.2基于jcvm的系統框圖卡內解析過程所要實現的內容是對偽指令的解釋執行.在解釋偽指令時,本文采用表跳轉方法為每條偽指令定位,根據不同的偽指令操作碼,系統跳至相應的處理代碼處,繼續執行未完的解析過程,并將最后的解析結果返回給解釋器,解釋器將根據此結果,訪問Java棧、堆等數據結構,調用相關的本地方法,完成指令的解釋執行.優化后的JCVM的系統框圖如圖4所示.3.3應用卡內代碼量,提升了卡內數據的解析能力,提高了卡內1)降低了卡內代碼量.由解析流程可以看出,解析優化將原本在卡上的部分解析過程,移至卡外執行,因此減少了卡內程序代碼量,表2顯示了優化前、后卡內代碼量比較,可見通過解析優化,卡內代碼量可降至原來的1/2甚至3/4.2)減少了對智能卡內部數據訪問次數.表3顯示了優化前后卡內數據的訪問次數比較,優化后卡內數據的總訪問次數下降到原來的3/8.3)提高了指令執行速度.由以上兩點可得解析優化對影響智能卡指令執行速度的兩個主要因素:卡內代碼量和卡內數據的訪問次數都進行了優化,而卡外解析過程,由于運行在獨立于智能卡的PC平臺上,因而不會影響指令在卡內的執行速度.表4顯示

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論