www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]介紹了Java Card虛擬機(jī)的相關(guān)知識(shí),并就其存儲(chǔ)資源有限的特點(diǎn),提出了一套有效的資源管理策略和一個(gè)符合規(guī)范且可行的棧與幀的結(jié)構(gòu)設(shè)計(jì)方案,詳細(xì)說(shuō)明了該方案中棧與幀的執(zhí)行過(guò)程。

近年來(lái),智能卡已經(jīng)越來(lái)越廣泛地應(yīng)用于社會(huì)生產(chǎn)、生活的各個(gè)領(lǐng)域,相關(guān)技術(shù)也得到了迅猛發(fā)展。Java技術(shù)具有安全、簡(jiǎn)單、即時(shí)編譯和跨平臺(tái)的眾多優(yōu)點(diǎn),將Java技術(shù)運(yùn)用于智能卡的開(kāi)發(fā)領(lǐng)域,已經(jīng)成為智能卡技術(shù)發(fā)展的熱點(diǎn)。Java卡是一種能運(yùn)行Java應(yīng)用程序的智能卡,支持部分Java編程語(yǔ)言,是Java技術(shù)和智能卡的一個(gè)成功結(jié)合。Java卡技術(shù)的核心是Java卡虛擬機(jī)JCVM(Java Card Virtual Machine)。不同于一般的Java虛擬機(jī),由于受到智能卡存儲(chǔ)與處理能力的限制,JCVM的可用資源非常有限。通常JCVM對(duì)于內(nèi)部資源的管理和使用非常嚴(yán)格。

1 JCVM和相關(guān)技術(shù)簡(jiǎn)介

由于智能卡的可用資源非常有限,不可能在智能卡內(nèi)實(shí)現(xiàn)JCVM的全部功能,所以,通常將JCVM分為卡外虛擬機(jī)和卡內(nèi)虛擬機(jī)兩部分??ㄍ馓摂M機(jī)可運(yùn)行于一般的PC或SUN工作站上,主要工作是將由Java語(yǔ)言編寫(xiě)的class文件轉(zhuǎn)換成為字節(jié)碼形式的CAP文件。而卡內(nèi)虛擬機(jī)在智能卡內(nèi)部實(shí)現(xiàn),負(fù)責(zé)裝載、執(zhí)行字節(jié)碼和支持Java語(yǔ)言。下面所說(shuō)的JCVM主要是指卡內(nèi)虛擬機(jī)部分。Java卡應(yīng)用程序的開(kāi)發(fā)和其他Java應(yīng)用程序的開(kāi)發(fā)在最初階段基本相同,開(kāi)發(fā)者編寫(xiě)若干Java類源代碼,利用Java編譯器編譯成類文。然后,將相應(yīng)的類文件用Java卡轉(zhuǎn)換器轉(zhuǎn)換成為CAP文件,CAP文件相比起類文件更加緊湊、短小,將其下載到卡內(nèi)虛擬機(jī)??▋?nèi)虛擬機(jī)執(zhí)行CAP文件中的代碼,完成應(yīng)用的安裝,使應(yīng)用處于能夠被卡內(nèi)虛擬機(jī)執(zhí)行的狀態(tài)。

對(duì)于JCVM的載體,Java卡的系統(tǒng)結(jié)構(gòu)如圖1所示。

Java卡系統(tǒng)主要由三個(gè)部分組成:COS和本地方法層、JCRE、Java卡應(yīng)用程序。其中,JCRE包括JCVM、Java Card API和企業(yè)添加類。

 在系統(tǒng)結(jié)構(gòu)圖1中,位于最下層的COS和本地方法層主要用于對(duì)智能卡的硬件進(jìn)行管理和操作。JCRE是Java卡的核心部分,主要工作是維護(hù)Java卡系統(tǒng)運(yùn)行時(shí)的環(huán)境,同時(shí)也負(fù)責(zé)應(yīng)用的執(zhí)行和安全。JCVM是完成Java程序字節(jié)碼解析和執(zhí)行的主要部分。最上面的是Java卡應(yīng)用程序。Java卡允許一卡多用的存在,當(dāng)卡中有多個(gè)應(yīng)用時(shí),應(yīng)用需要通過(guò)被選擇,才能處于工作狀態(tài),其程序字節(jié)碼才能通過(guò)JCVM進(jìn)行解析和執(zhí)行。

從圖1所示可以明確得到JCVM在Java卡內(nèi)所處的層次關(guān)系。JCVM本身是JCRE的一部分。JCVM通過(guò)調(diào)用COS提供的命令和一些本地方法,控制硬件的運(yùn)算、存儲(chǔ)等操作。JCVM被各個(gè)Applet通過(guò)企業(yè)添加類和API調(diào)用,執(zhí)行應(yīng)用程序的字節(jié)碼。

2 JCVM實(shí)現(xiàn)難點(diǎn)

對(duì)于JCVM棧與幀結(jié)構(gòu)的實(shí)現(xiàn),主要難點(diǎn)可以歸結(jié)為以下幾點(diǎn):

(1)智能卡因?yàn)槠涫艿酱鎯?chǔ)空間的限制,需要一套科學(xué)有效的管理和利用方案,以保證存儲(chǔ)空間的高效使用。
(2)JCVM中棧與幀的結(jié)構(gòu)設(shè)計(jì),需要做到既能高效地利用有限的空間,同時(shí)又能保證Java應(yīng)用程序正常執(zhí)行。
(3)在棧中,如何實(shí)現(xiàn)幀的創(chuàng)建和銷毀,這并非只是簡(jiǎn)單地申請(qǐng)空間或釋放空間的操作,而且還包括整個(gè)程序執(zhí)行過(guò)程的相關(guān)動(dòng)態(tài)鏈接、全局控制等數(shù)據(jù)的處理。
(4)如何符合規(guī)范地進(jìn)行幀內(nèi)部數(shù)據(jù)的處理。

下面將就這些實(shí)現(xiàn)難點(diǎn)進(jìn)行分析,提出設(shè)計(jì)思路和解決方案。

3 JCVM中存儲(chǔ)空間的劃分

因?yàn)槭艿街悄芸ㄆ脚_(tái)的資源限制,JCVM中的存儲(chǔ)空間非常有限。為了能夠科學(xué)節(jié)約地使用和管理這些空間,將JCVM的存儲(chǔ)空間虛擬劃分為以下部分:

(1)應(yīng)用代碼區(qū):用于存儲(chǔ)CAP文件通過(guò)安裝器安裝以后的中間代碼,主要是方法字節(jié)碼等。

(2)靜態(tài)變量區(qū):用于存儲(chǔ)非易失性應(yīng)用數(shù)據(jù)內(nèi)容,一般是應(yīng)用的域、應(yīng)用處理的最終結(jié)果、方法調(diào)用過(guò)程中Token和方法地址的轉(zhuǎn)換表、常量池等重要信息。應(yīng)用可以通過(guò)相關(guān)的指令讀寫(xiě)靜態(tài)空間存儲(chǔ)的各種內(nèi)容。

(3)信息共享區(qū):屬于易失性存儲(chǔ)區(qū)域,主要用于公共信息內(nèi)容的交換,由OS負(fù)責(zé)提供,應(yīng)用和終端均可訪問(wèn)OS中的內(nèi)容。其主要存儲(chǔ)APDU的內(nèi)容,也存儲(chǔ)棧運(yùn)行過(guò)程中需要用到的一些臨時(shí)變量。

(4)方法執(zhí)行區(qū):用于虛擬機(jī)執(zhí)行過(guò)程中棧操作的空間,保存運(yùn)行的執(zhí)行數(shù)據(jù)、中間結(jié)果等。
應(yīng)用代碼區(qū)和靜態(tài)變量區(qū)可以通過(guò)文件系統(tǒng)進(jìn)行存儲(chǔ),保存在智能卡的Flash中。信息共享區(qū)和方法執(zhí)行區(qū)一般通過(guò)物理地址讀寫(xiě),保存在智能卡的RAM中。

4 JCVM中棧與幀的執(zhí)行對(duì)象

由于具有方便移植、安全和程序代碼小等優(yōu)點(diǎn),JCVM中執(zhí)行的程序都是以字節(jié)碼的形式存在,而棧與幀的主要執(zhí)行對(duì)象就是存放在應(yīng)用代碼區(qū)的Java卡應(yīng)用程序方法字節(jié)碼。方法字節(jié)碼由2個(gè)或4個(gè)字節(jié)的方法頭和之后若干長(zhǎng)度的方法執(zhí)行字節(jié)碼組成。方法頭中主要包含了max_local,max_stack,narg等信息,其中,max_local指出了該方法需要申請(qǐng)用于局部變量區(qū)數(shù)組的空間大小,max_stack指出了該方法需要申請(qǐng)用于操作數(shù)棧執(zhí)行的空間空間大小,narg則說(shuō)明了需要傳遞的參數(shù)個(gè)數(shù)。這些信息為之后創(chuàng)建相應(yīng)的幀提供了重要的信息。而方法執(zhí)行字節(jié)碼則是一串符合JCVM規(guī)范并得以實(shí)現(xiàn)該方法的16字節(jié)操作碼。

5 JCVM中棧與幀的結(jié)構(gòu)設(shè)計(jì)

通過(guò)對(duì)JCVM中存儲(chǔ)空間的劃分,可以得到一片預(yù)留的區(qū)域(即方法執(zhí)行區(qū))用于專門(mén)實(shí)現(xiàn)JCVM中棧的虛擬。給這片預(yù)留的區(qū)域制定一個(gè)類似于棧先進(jìn)后出的操作規(guī)則,即為虛擬的出棧。而入棧的基本單位,則為幀(Frame)。幀和方法具有一一對(duì)應(yīng)的映射關(guān)系,每調(diào)用一個(gè)方法,就需要?jiǎng)?chuàng)建一個(gè)幀,并且入棧,而當(dāng)方法執(zhí)行完并返回值之后,相應(yīng)的幀也將出棧并銷毀。

幀主要用于存儲(chǔ)數(shù)據(jù)和操作結(jié)果,返回方法的值。它主要由局部變量區(qū)、操作數(shù)棧和幀控制信息(FrameCI)組成。局部變量區(qū)主要是以1個(gè)單元,也就是2個(gè)字節(jié)作為其基本單位的局部變量數(shù)組(local variable array),而存在其中的每一個(gè)元素都是屬于該方法的一個(gè)local array。其主要用來(lái)存儲(chǔ)方法傳遞的參數(shù)和相關(guān)變量,是數(shù)組的結(jié)構(gòu),在字節(jié)碼執(zhí)行過(guò)程中,通過(guò)數(shù)組的索引值進(jìn)行讀寫(xiě)。操作數(shù)棧(operand stacks)也是以1個(gè)單元作為其基本單位,是字節(jié)碼執(zhí)行過(guò)程中用于臨時(shí)存儲(chǔ)中間數(shù)據(jù)和操作結(jié)構(gòu)的一片預(yù)留區(qū),根據(jù)相應(yīng)方法的方法頭信息確定預(yù)留空間的大小,通過(guò)執(zhí)行字節(jié)碼進(jìn)行出入操作數(shù)棧的操作。此外,在調(diào)用方法的時(shí)候,操作數(shù)棧還負(fù)責(zé)存儲(chǔ)傳遞給該方法的參數(shù)值以及存儲(chǔ)由該方法返回的返回值。而幀的控制信息主要包括當(dāng)前方法物理地址(thismethodP)、當(dāng)前方法上下文(thiscontext)、調(diào)用者幀的地址(invmethodP)、調(diào)用者方法Bytecode執(zhí)行進(jìn)度(invbytecodenum)、調(diào)用者方法操作數(shù)棧指針(invoperandSP)。這些信息將棧中的每一個(gè)幀都動(dòng)態(tài)鏈接起來(lái),并起到對(duì)每個(gè)方法執(zhí)行進(jìn)度進(jìn)行記錄的作用。當(dāng)前方法物理地址用于讀取當(dāng)前方法的Bytecode,上下文的作用相當(dāng)于防火墻,用來(lái)阻止跨界的非法訪問(wèn),調(diào)用者方法物理地址是在當(dāng)前方法執(zhí)行完成后讀取調(diào)用者幀的地址,調(diào)用者方法Bytecode執(zhí)行進(jìn)度和操作數(shù)棧指針用于還原調(diào)用者幀的在調(diào)用前的現(xiàn)場(chǎng)。

棧與幀的結(jié)構(gòu)設(shè)計(jì)如圖2所示。

6 方法調(diào)用與返回操作的處理

如圖2所示,每一個(gè)運(yùn)行的方法對(duì)應(yīng)著一個(gè)幀的結(jié)構(gòu)。當(dāng)一個(gè)方法需要調(diào)用另一個(gè)方法時(shí),首先要求將被調(diào)用者方法的參數(shù)壓入當(dāng)前幀的操作數(shù)棧中,然后為該新方法創(chuàng)建一個(gè)新的幀,并入棧,將新的幀設(shè)置為當(dāng)前幀。創(chuàng)建新幀的過(guò)程,首先是分配一個(gè)足夠大小的空間給新的幀,這里,通過(guò)讀取該方法的方法頭,可以準(zhǔn)確知道局部變量和操作數(shù)棧所需要的空間大?。蝗缓蟪跏蓟瘞?,將新方法的相關(guān)信息傳入FrameCI,并對(duì)一些全局變量和指針進(jìn)行修改;接著是參數(shù)的傳遞。在Java卡中,新方法所需要調(diào)用的參數(shù)之前已經(jīng)被壓入調(diào)用者方法的幀中,在不考慮疊加技術(shù)的情況下,當(dāng)方法調(diào)用執(zhí)行時(shí),先將參數(shù)從調(diào)用者方法幀的操作數(shù)棧中出棧,然后在順序進(jìn)入新方法幀的局部變量區(qū),最后根據(jù)新方法的Bytecode,執(zhí)行相關(guān)操作。

 對(duì)應(yīng)方法結(jié)束的操作,需要銷毀一個(gè)幀。這里的方法執(zhí)行結(jié)果分為正常結(jié)束執(zhí)行和不正常結(jié)束執(zhí)行。在正常結(jié)束執(zhí)行的情況下,有可能會(huì)有一個(gè)返回值給調(diào)用者方法,這時(shí),首先將返回結(jié)果出該幀的操作數(shù)棧,通過(guò)invmethodP找到調(diào)用者幀,將調(diào)用者幀設(shè)為當(dāng)前幀,再進(jìn)調(diào)用者幀的操作數(shù)棧。然后修改相關(guān)全局變量和指針的值。最后回收原方法幀的使用空間,以留給下次幀的創(chuàng)建。若是不正常結(jié)束執(zhí)行,虛擬機(jī)內(nèi)將產(chǎn)生exception或因執(zhí)行到一個(gè)拋出指令而拋出exception,這時(shí)的方法就不會(huì)有返回值返回給調(diào)用者了。

另外,之前提到的疊加技術(shù),就是在實(shí)現(xiàn)JCVM時(shí),可以將調(diào)用者方法幀操作數(shù)棧和被調(diào)用者方法幀的局部變量區(qū)進(jìn)行疊加的技術(shù),即不需要把之前壓入到調(diào)用者方法幀操作數(shù)棧中的參數(shù)出操作數(shù)棧再寫(xiě)到被調(diào)用者方法幀的局部變量區(qū),而是直接將調(diào)用者方法幀操作數(shù)棧的參數(shù)部分看做被調(diào)用者方法幀的局部變量區(qū)的一部分,使之實(shí)現(xiàn)部分區(qū)域重合。采用疊加技術(shù)不會(huì)對(duì)方法的創(chuàng)建和銷毀產(chǎn)生任何影響,卻能簡(jiǎn)化方法間參數(shù)傳遞的機(jī)制,同時(shí)有效節(jié)約方法執(zhí)行區(qū)的空間。

7 幀內(nèi)部數(shù)據(jù)的操作

除了方法調(diào)用需要用到的棧操作之外,事實(shí)上在JCVM中,更多的是幀內(nèi)部數(shù)據(jù)的操作。這些操作主要包括對(duì)局部變量區(qū)的讀寫(xiě)操作和對(duì)操作數(shù)棧的出入棧操作。這些操作連同調(diào)用方法的操作一起,完成整個(gè)方法的執(zhí)行。
例如,有這樣一個(gè)方法short add(short a,short b),其執(zhí)行步驟如下:

Sload_1//Load short from local variable 1,then push
Sload_2//oad short from local variable 2,then push
Sadd//Pop two shorts,add them,then push the result
Sstore_3//Pop,then store short into local variable 3
Sreturn//Return short from method,then destroy the Frame
當(dāng)有某方法需要調(diào)用這個(gè)方法時(shí),首先根據(jù)方法頭創(chuàng)建幀結(jié)構(gòu),將局部變量區(qū)和操作數(shù)棧初始化,控制信息賦值,接著根據(jù)方法的執(zhí)行指令對(duì)操作數(shù)棧和局部變量區(qū)進(jìn)行操作。具體操作步驟如圖3所示。

在上例的幀執(zhí)行演示中,圖3的初始化步驟是根據(jù)方法頭進(jìn)行空間的申請(qǐng),并將相關(guān)數(shù)據(jù)進(jìn)行初始化賦值。Objectref是對(duì)象引用,視具體調(diào)用方法而定,一般調(diào)用中會(huì)以參數(shù)的形式傳給新的方法幀,賦值給Local variable 0,而相關(guān)參數(shù)a、b,也以參數(shù)形式在新的方法里分別賦值給Local variable 1、Local variable 2。而方法字節(jié)碼的前兩個(gè)指令,將存儲(chǔ)在局部變量區(qū)索引為1、2的兩個(gè)數(shù)據(jù)壓入操作數(shù)棧,其后Sadd指令從操作數(shù)棧中彈出這兩個(gè)數(shù)據(jù),進(jìn)行加法,再將結(jié)果壓回操作數(shù)棧中。然后Sstore_3從操作數(shù)棧中彈出結(jié)果值,存儲(chǔ)到局部變量區(qū)索引為3的位置。最后,Sreturn將該方法幀銷毀,完成該方法的全過(guò)程。

通過(guò)對(duì)JCVM開(kāi)發(fā)規(guī)范和一些智能卡開(kāi)發(fā)公司需求和測(cè)試文檔的研究和分析,本論文中所提出的存儲(chǔ)資源管理策略,棧與幀結(jié)構(gòu)的設(shè)計(jì)完全符合要求。通過(guò)利用各大公司提供的軟件模擬環(huán)境和Applet應(yīng)用數(shù)據(jù)包對(duì)棧與幀的設(shè)計(jì)方案進(jìn)行測(cè)試,證明該方案正確可行。

JCVM中棧與幀的設(shè)計(jì)與實(shí)現(xiàn)是開(kāi)發(fā)JCVM的核心問(wèn)題。本文提出了符合JCVM開(kāi)發(fā)規(guī)范的棧與幀的結(jié)構(gòu)設(shè)計(jì)和執(zhí)行策略,并對(duì)存儲(chǔ)空間進(jìn)行劃分管理,優(yōu)化了有限的智能卡存儲(chǔ)空間,并成功使用疊加技術(shù)改進(jìn)了參數(shù)傳遞的機(jī)制,很好地完成了JCVM中棧與幀的基本功能。本文的研究已經(jīng)成功運(yùn)用到華大電子股份有限公司和清華同方公司的芯片上,并已經(jīng)通過(guò)相關(guān)部門(mén)的軟件測(cè)試。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉