專利名稱:在非持久存儲(chǔ)器內(nèi)建立對(duì)象并保持可訪問性的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于在非持久存儲(chǔ)器內(nèi)建立對(duì)象的一種方法和裝置。更具體地,提出用于基于對(duì)象語言的運(yùn)行時(shí)系統(tǒng)中的持久和臨時(shí)對(duì)象的共存,尤其實(shí)現(xiàn)在資源受限環(huán)境(例如靈巧卡特別是由Java環(huán)境提供的靈巧卡如Java卡)下的虛擬機(jī)中。此外還提出一種方法,其甚至為小應(yīng)用程序的若干方法保持非持久存儲(chǔ)對(duì)象的可訪問性。
作為本發(fā)明的一個(gè)應(yīng)用范圍,靈巧卡是適宜的,從而本文中使用靈巧卡以舉例說明本發(fā)明的概念。靈巧卡的一個(gè)用途是存儲(chǔ)長(zhǎng)期數(shù)據(jù)。因此靈巧卡主要包含持久存儲(chǔ)器(ROM,EEPROM),其臨時(shí)存儲(chǔ)器(RAM)量是很有限的。ROM用于存儲(chǔ)在靈巧卡的壽命內(nèi)為有效的不變數(shù)據(jù)和代碼。應(yīng)用程序既可以在生產(chǎn)過程中存儲(chǔ)到ROM中也可以裝入EEPROM中。
一旦把卡插入提供電源、時(shí)鐘、通信線的亦稱為“終端”的部件中,該卡被通電,并由運(yùn)行時(shí)環(huán)境接管對(duì)系統(tǒng)的控制,和等待終端上的輸入。終端通過向運(yùn)行時(shí)環(huán)境發(fā)送命令,即選擇命令,啟動(dòng)和應(yīng)用程序的通信,從而選擇一個(gè)稱為“目標(biāo)應(yīng)用程序”的應(yīng)用程序以進(jìn)行進(jìn)一步的交互。然后,運(yùn)行時(shí)環(huán)境通過利用給定數(shù)據(jù)調(diào)用該應(yīng)用程序向選定的應(yīng)用程序傳送所有的輸入信號(hào)。該應(yīng)用程序處理數(shù)據(jù),并可能建立用于應(yīng)答終端的數(shù)據(jù)。當(dāng)該應(yīng)用程序完成輸入數(shù)據(jù)的處理后,控制返回到運(yùn)行時(shí)環(huán)境,其把響應(yīng)發(fā)送給終端。此刻終端可以再次向選定的應(yīng)用程序發(fā)送數(shù)據(jù)。終端還可以通過向運(yùn)行時(shí)環(huán)境發(fā)送新的選擇命令關(guān)閉與現(xiàn)行選定應(yīng)用程序的通信。運(yùn)行時(shí)環(huán)境通知現(xiàn)行選定應(yīng)用程序使其清除要執(zhí)行的操作,并且接著選擇新的應(yīng)用程序。通過利用作為變量的消息調(diào)用應(yīng)用程序,重新向新選定的應(yīng)用程序傳送新消息。對(duì)話期間的選擇次數(shù)和消息數(shù)量是不受限制的。對(duì)于保持運(yùn)行多個(gè)應(yīng)用程序的某卡的完整性,終端和卡之間的交互模式以及運(yùn)行時(shí)和卡上應(yīng)用程序的區(qū)分都是重要的。若這種區(qū)分不恰當(dāng),可能以有害方式例如通過檢查用于其它應(yīng)用程序原始消息,交互各應(yīng)用程序。
在如上面概述由運(yùn)行時(shí)環(huán)境進(jìn)行的消息驅(qū)動(dòng)調(diào)用期間,應(yīng)用程序必須能夠建立、管理和存儲(chǔ)對(duì)象。若希望某對(duì)象對(duì)于不同選擇之間的某應(yīng)用程序是可使用的,該應(yīng)用程序需要把該對(duì)象存儲(chǔ)到持久存儲(chǔ)器,從而使該對(duì)象在晚些時(shí)候把某卡插入終端后時(shí)是可訪問的。
若還可使用暫存器,系統(tǒng)必須提供支持其上的暫時(shí)對(duì)象的功能性。通常把EEPROM用作暫時(shí)對(duì)象的存儲(chǔ)技術(shù)在幾方面上是不利的。首先,和對(duì)RAM的寫操作相比,EEPROM中對(duì)對(duì)象的修改操作非常慢。第二,出于技術(shù)上的原因,對(duì)EEPROM中某單元的成功寫操作的保證率是有限的。第三,仔細(xì)查看持久存儲(chǔ)器中的對(duì)象要方便得多,因?yàn)榧词箶嚯姾笏鼈兝^續(xù)駐留在卡上,從而導(dǎo)致潛在的安全脆弱性。
在資源特別受限的執(zhí)行環(huán)境中運(yùn)行的基于對(duì)象的應(yīng)用程序,例如靈巧卡,應(yīng)該能夠建立及管理持久的和暫時(shí)的對(duì)象。在這種情況下,持久對(duì)象是在不同的硬件激活,亦稱為“對(duì)話”,之間保持其狀態(tài)的對(duì)象,并且是受到(突然)斷電保護(hù)的。例如,電子現(xiàn)金應(yīng)用程序可利用持久對(duì)象存儲(chǔ)對(duì)話之間可使用的現(xiàn)金額。
相反,暫時(shí)對(duì)象位于暫存器中,并在斷電時(shí)丟失。暫時(shí)對(duì)象的采用提高了應(yīng)用程序的性能并提供附加的安全性。這首先歸因于和持久存儲(chǔ)器相比,暫存器的存取時(shí)間大為減小。其次,在斷電時(shí)會(huì)自動(dòng)地清除含著安全敏感數(shù)據(jù)的暫時(shí)對(duì)象。從而,在去掉部件的電源后不能確定該數(shù)據(jù)。
常規(guī)的支持持久對(duì)象和暫時(shí)對(duì)象某種形式的共存的系統(tǒng)通常往往是復(fù)雜的,從而要求許多資源。尤其在資源有限的環(huán)境中,關(guān)鍵在于要減少?gòu)?fù)雜性和資源,即使隨之導(dǎo)致減弱功能性。一種已知的機(jī)制只允許建立某些類型的暫時(shí)對(duì)象,即以類似于短數(shù)組或字節(jié)數(shù)組的簡(jiǎn)單類型形式。然而減弱的功能性對(duì)于一些應(yīng)用程序,尤其對(duì)于面向?qū)ο蟮膽?yīng)用程序,過于限制。
一種支持資源有限環(huán)境下的持久對(duì)象和暫時(shí)對(duì)象的機(jī)制是對(duì)上述問題的建議解決方案。
它僅需要運(yùn)行時(shí)系統(tǒng)的最小支持,并同時(shí)仍提供用于暫時(shí)和持久對(duì)象分配的簡(jiǎn)單編程模型。此外,它在各次對(duì)話期間無須使用持久存儲(chǔ)器下支持在多次調(diào)用某應(yīng)用程序之間保持暫時(shí)對(duì)象。它還在未期望的斷電情況下確保應(yīng)用的完整性。
本發(fā)明的一個(gè)目的是提供一種方法和一種裝置,用于在非持久存儲(chǔ)器中建立對(duì)象,以在選擇對(duì)象類型上提供更多的靈活性并且同時(shí)適宜于在資源有限環(huán)境下,例如靈巧卡尤其提供Java環(huán)境的靈巧卡,實(shí)施。
另一個(gè)優(yōu)點(diǎn)是減小分配暫時(shí)對(duì)象和持久對(duì)象的復(fù)雜性。
為實(shí)現(xiàn)上述目的,本發(fā)明提供一種在非持久存儲(chǔ)器建立對(duì)象的方法,其特征在于,從指令代碼序列(18)中讀出導(dǎo)致執(zhí)行第一函數(shù)(41)的第一指令代碼(31),讀出導(dǎo)致執(zhí)行第二函數(shù)的第二指令代碼(32),第二函數(shù)導(dǎo)致在某存儲(chǔ)器中建立所述對(duì)象(56,57,58),因此所述第一函數(shù)(41)導(dǎo)致把所述非持久存儲(chǔ)器(51)選擇為所述存儲(chǔ)器。
提供一種用于在非持久存儲(chǔ)器中建立對(duì)象的裝置,它包括用于存儲(chǔ)指令代碼序列(18)的存儲(chǔ)裝置(14)和用于從所述指令代碼序列(18)讀出指令代碼(30,31,32,33,34)的控制裝置(10),其中在讀出第一指令代碼(31)的情況下執(zhí)行第一函數(shù)(41),并且其中在讀出第二指令代碼(32)的情況下執(zhí)行第二函數(shù),該第二函數(shù)導(dǎo)致在某存儲(chǔ)器中建立所述對(duì)象(56,57,58),而所述第一函數(shù)(41)導(dǎo)致把所述非持久存儲(chǔ)器(51)選擇為所述存儲(chǔ)器。
與解釋程序(亦稱為“虛擬機(jī)”)是用軟件還是用硬件實(shí)現(xiàn)無關(guān),上述問題得到解決。
設(shè)定標(biāo)記種類,即調(diào)用第一函數(shù),提供了一種在持久存儲(chǔ)器和非持久存儲(chǔ)器之間切換的簡(jiǎn)單方法,該第一函數(shù)把非持久存儲(chǔ)器選擇成在后續(xù)步驟中可在其中建立對(duì)象的存儲(chǔ)器。
采用前括號(hào)型函數(shù)是有好處的,因?yàn)閹в蓄愃乒δ苄?,即?biāo)記階段或狀態(tài)的開始并且標(biāo)記該階段或狀態(tài)的結(jié)束,的用于其它用途的函數(shù)是已經(jīng)知道的,從而通過相應(yīng)的經(jīng)驗(yàn)簡(jiǎn)化對(duì)括號(hào)函數(shù)的管理。而且把實(shí)現(xiàn)對(duì)該函數(shù)的識(shí)別和正確掌握其含意所帶來的復(fù)雜性保持在最小上。
后括號(hào)是處理標(biāo)記復(fù)位的第三函數(shù)。這開發(fā)了第一函數(shù)的所有優(yōu)點(diǎn),并且完善了函數(shù)集,從而有可能對(duì)用于對(duì)象的存儲(chǔ)單元進(jìn)行審慎的切換。同樣,該函數(shù)的優(yōu)點(diǎn)還在于,具有類似功能性的函數(shù),即標(biāo)記階段或狀態(tài)的開始并且標(biāo)記該階段或狀態(tài)的結(jié)束的其它用途的函數(shù),已是知道的,從而通過相應(yīng)的經(jīng)驗(yàn)簡(jiǎn)化對(duì)括號(hào)函數(shù)的管理。
小應(yīng)用程序的非持久對(duì)象組成一個(gè)對(duì)象圖。持久對(duì)象和/或非持久對(duì)象的鏈接導(dǎo)致出幾個(gè)相連的可達(dá)到的對(duì)象,從而其中一個(gè)對(duì)象被指向成來自非持久存儲(chǔ)器外部的根對(duì)象。為了訪問這些對(duì)象中的任一個(gè)對(duì)象只需要一個(gè)指向各對(duì)象的指針。
由于不會(huì)清空在其中存儲(chǔ)著指向暫時(shí)根對(duì)象的指針的堆棧的指針,依據(jù)權(quán)利要求18的方法保證對(duì)暫時(shí)對(duì)象的可訪問性。此外,在后面的方法中防止了從持久對(duì)象到暫時(shí)對(duì)象的指針指向不再存在的對(duì)象的問題。
當(dāng)把指向非持久存儲(chǔ)器中的某對(duì)象的指針存儲(chǔ)在堆棧存儲(chǔ)器中時(shí),不需要從持久存儲(chǔ)器到非持久存儲(chǔ)器的指針。所指向的對(duì)象是對(duì)象圖的一部分并可具有指向其它對(duì)象的多個(gè)指針。通過存儲(chǔ)在堆棧存儲(chǔ)器中的一個(gè)指針,這些鏈接的對(duì)象都是可達(dá)到的。這在突然斷電的情況下,即當(dāng)暫時(shí)存儲(chǔ)器51為空時(shí),是特別有用的。當(dāng)再次接通電源時(shí),來自持久存儲(chǔ)器的指針會(huì)指向某個(gè)不存在的暫時(shí)對(duì)象,這是一種難以處理的情況并導(dǎo)致額外的復(fù)雜性。借助堆棧存儲(chǔ)器中的指針這種情況得到避免。
當(dāng)可把堆棧存儲(chǔ)器的指針存儲(chǔ)在某控制裝置的一個(gè)存儲(chǔ)位置中時(shí),甚至可以由不同的方法以及不同的小應(yīng)用程序調(diào)用使用暫時(shí)對(duì)象,因?yàn)槎褩G蹇詹⒉粍h除指向非持久對(duì)象的指針。利用執(zhí)行保存步驟的第五函數(shù)以及執(zhí)行回寫處理的第六函數(shù)為控制對(duì)暫時(shí)對(duì)象的可訪問性提供一種方便的工具。
所提出的解決方案支持建立持久對(duì)象和暫時(shí)對(duì)象并支持在多次調(diào)用應(yīng)用程序之間傳送暫時(shí)對(duì)象,而且僅需要運(yùn)行時(shí)系統(tǒng)的最小支持。按照缺省規(guī)定,由于可把基本構(gòu)件看成是把對(duì)象分配成持久對(duì)象或暫時(shí)對(duì)象中的一種不同的階段(“分配階段”),在正執(zhí)行的應(yīng)用程序中可區(qū)分暫時(shí)和持久環(huán)境并支持隨意地訪問對(duì)象的持久集和暫時(shí)集(“對(duì)象環(huán)境”)。取決于當(dāng)前的分配階段,持久地或暫時(shí)地建立對(duì)象。在調(diào)用應(yīng)用程序之前,由運(yùn)行時(shí)環(huán)境預(yù)定義分配階段的類型。若例如在某應(yīng)用程序裝入到靈巧卡后第一次被調(diào)用,按照缺省規(guī)定可以把所有對(duì)象分配到持久存儲(chǔ)器。若某應(yīng)用程序在由某終端選擇后第一次調(diào)用,按照缺省規(guī)定分配為暫時(shí)分配。在調(diào)用期間,通過調(diào)用運(yùn)行時(shí)環(huán)境提供的函數(shù),應(yīng)用程序隨意改變現(xiàn)行分配階段的類型。運(yùn)行時(shí)系統(tǒng)為維護(hù)有關(guān)這些分配階段的信息只需要最少的資源。運(yùn)行時(shí)系統(tǒng)的分配程序只需要一個(gè)保持現(xiàn)行分配階段的類型的標(biāo)志。根據(jù)該標(biāo)志的值,對(duì)象或被分配到持久存儲(chǔ)器或暫時(shí)存儲(chǔ)器。這種分配方式不對(duì)對(duì)象堆的管理也不對(duì)已分配對(duì)象的布局施加任何限制。為了避免上述因持久產(chǎn)生的可達(dá)到性問題,運(yùn)行時(shí)系統(tǒng)拒絕把暫時(shí)源對(duì)象的引用指派到持久對(duì)象。運(yùn)行時(shí)系統(tǒng)為每個(gè)引用指派執(zhí)行源對(duì)象是否駐留在暫時(shí)存儲(chǔ)器中以及目標(biāo)對(duì)象是否駐留在持久存儲(chǔ)器的簡(jiǎn)單檢查,當(dāng)該測(cè)試返回“真”時(shí)拒絕引用指派。
為了提供上面討論過的靈巧卡應(yīng)用程序所需的服務(wù)等級(jí),可以由運(yùn)行時(shí)系統(tǒng)通過所謂的“暫時(shí)環(huán)境”支持應(yīng)用程序多次調(diào)用之間的暫時(shí)對(duì)象的傳送并且支持隨意訪問應(yīng)用程序內(nèi)的暫時(shí)對(duì)象。通過對(duì)某專用系統(tǒng)類進(jìn)行子類處理,程序員可以說明這樣的暫時(shí)環(huán)境。應(yīng)用程序可以建立該類的一個(gè)對(duì)象,把對(duì)暫時(shí)對(duì)象的引用存儲(chǔ)在該對(duì)象中,并且用運(yùn)行時(shí)系統(tǒng)注冊(cè)該暫時(shí)環(huán)境。在運(yùn)行時(shí)系統(tǒng)的每次應(yīng)用程序調(diào)用期間,應(yīng)用程序可從運(yùn)行時(shí)系統(tǒng)檢索該暫時(shí)環(huán)境,即通過系統(tǒng)調(diào)用檢索本文的虛擬機(jī)。接著應(yīng)用程序可以隨意訪問和操縱暫時(shí)環(huán)境中的暫時(shí)數(shù)據(jù)。
若運(yùn)行時(shí)系統(tǒng)返回一個(gè)空的暫時(shí)環(huán)境(在應(yīng)用程序的兩次調(diào)用之間發(fā)生斷電),應(yīng)用程序可以建立并注冊(cè)新的暫時(shí)環(huán)境。在該對(duì)話期間對(duì)該應(yīng)用程序的隨后調(diào)用中可以重新檢索新建立的暫時(shí)環(huán)境。若某應(yīng)用程序不能接受暫時(shí)對(duì)象的突然丟失事件,總是可以回退到這些對(duì)象的持久存儲(chǔ)上。
本文中所呈現(xiàn)的主要思想是分離對(duì)暫時(shí)對(duì)象和持久對(duì)象的處理。此外,運(yùn)行時(shí)環(huán)境提供一種盡可能長(zhǎng)的保持暫時(shí)對(duì)象的機(jī)制。應(yīng)用程序開發(fā)者完全控制著在APDU中何時(shí)分配哪一種類型的對(duì)象。從而可以獲得暫時(shí)對(duì)象的好處,同時(shí)可避免與僅基于持久對(duì)象的標(biāo)準(zhǔn)系統(tǒng)關(guān)聯(lián)的代價(jià),特別可避免實(shí)施的復(fù)雜性。
以示例的方式在附圖中描述并在下面詳細(xì)說明本發(fā)明的例子。附圖是
圖1是一種虛擬機(jī)以及一個(gè)持久存儲(chǔ)器和一個(gè)非持久存儲(chǔ)器的構(gòu)局。
出于簡(jiǎn)明,附圖不是以真實(shí)尺寸示出的,并且各尺寸之間的關(guān)系也不是按實(shí)際標(biāo)度示出的。
下面說明本發(fā)明的不同示范實(shí)施例。
用“PHU”標(biāo)示的協(xié)議處理機(jī)15包括一個(gè)用“DD”標(biāo)志的設(shè)備驅(qū)動(dòng)程序16和一個(gè)用“RW”標(biāo)示的讀寫單元17。PHU15和亦稱為“VM”充當(dāng)控制裝置的虛擬機(jī)10雙向通信,虛擬機(jī)10包括一個(gè)也稱為“ML”的主環(huán)路單元11和一個(gè)也稱為函數(shù)存儲(chǔ)器的函數(shù)部分12,在函數(shù)部分12中存儲(chǔ)著機(jī)器碼形式的一組可能的函數(shù)Function1、Function2、Function3、Function4。通過標(biāo)識(shí)符可對(duì)每個(gè)函數(shù)Function1、Function2、Function3、Function4尋址。
VM10設(shè)有分配給虛擬機(jī)指令代碼存儲(chǔ)裝置14的程序計(jì)數(shù)器PC,在指令代碼存儲(chǔ)裝置14中存儲(chǔ)屬于小應(yīng)用程序的方法的代碼序列18。小應(yīng)用程序是數(shù)據(jù)和有關(guān)操作方法的集合。小應(yīng)用程序本身作為Applet對(duì)象(縮寫為ApO)52、53存儲(chǔ)在縮寫為PM的持久存儲(chǔ)器50中。
代碼序列18由單指令代碼組成,其中第零條指令代碼30代表一條“新”指令,第一指令代碼31代表“調(diào)用函數(shù)”指令,其后面跟著一個(gè)前括號(hào)函數(shù)的標(biāo)識(shí)參數(shù),第二指令代碼32代表一條“新”指令,第三指令代碼33代表一條后面跟著后括號(hào)函數(shù)的一個(gè)標(biāo)識(shí)參數(shù)的“調(diào)用函數(shù)”指令,第四指令代碼34代表一條“新”指令。
亦稱為代碼存儲(chǔ)器或CM14的虛擬機(jī)指令代碼存儲(chǔ)裝置14和ML10通信,ML10再和持久存儲(chǔ)器50以及非持久存儲(chǔ)器(或暫時(shí)存儲(chǔ)器,縮寫為TM)51通信。作為持久存儲(chǔ)器50,例如可以使用EEPROM。PHU15還和隨機(jī)存取存儲(chǔ)器或RAM20連接,RAM20包括一個(gè)縮寫成AO的APDU對(duì)象存儲(chǔ)部分21和一個(gè)縮寫成St的堆棧存儲(chǔ)部分或堆棧存儲(chǔ)器22。該St22具有與VM10的函數(shù)部分12的雙向連接并且由ML11提供的堆棧指針SP綁定。RW17可以雙向地和PM50交換數(shù)據(jù)。
經(jīng)電源接通線PON,用“Ini”標(biāo)示的起始單元13接收外部輸入,并把它的輸出提供給PHU15。PHU15通過傳送縮寫成APDU的應(yīng)用程序協(xié)議數(shù)據(jù)單元的輸入線接收外部輸入。亦稱為運(yùn)行時(shí)環(huán)境19并縮寫成RTE19的小應(yīng)用程序管理單元和VM10雙向通信。
在PM50中存儲(chǔ)兩個(gè)小應(yīng)用程序?qū)ο?2、53和兩個(gè)持久對(duì)象54、55。小應(yīng)用程序52、53中的一個(gè)是現(xiàn)行小應(yīng)用程序52,它和持久對(duì)象54、55中的第一對(duì)象54鏈接,它還和持久對(duì)象54、55中的第二對(duì)象55鏈接。該鏈接代表一個(gè)指針,它使持久對(duì)象成為一個(gè)在其中小應(yīng)用程序52是起點(diǎn)的對(duì)象圖的一部分。
相同的原則施加給TM51,在其中亦稱為暫時(shí)對(duì)象并縮寫成TO的三個(gè)非持久對(duì)象56、57、58作為一個(gè)對(duì)象圖的一部分被存儲(chǔ)。
非持久對(duì)象56、57、58中的第一非持久對(duì)象56和非持久對(duì)象56、57、58中的第二非持久對(duì)象57鏈接,后者又和非持久對(duì)象56、57、58中的第三非持久對(duì)象58鏈接。每個(gè)鏈接代表一個(gè)指針,它使非持久對(duì)象成為一個(gè)以第一非持久對(duì)象56為起點(diǎn)的鏈的一部分。從而本文中,為了到達(dá)所有的非持久對(duì)象56、57、58只需要建立一個(gè)指針,即到達(dá)第一非持久對(duì)象56的指針。
被選定的現(xiàn)行小應(yīng)用程序52是由VM10選擇的,在圖1中用虛線“選擇”描繪?,F(xiàn)行小應(yīng)用程序52還確定CM14中的現(xiàn)行方法,也用虛線描述。
在St22中存儲(chǔ)稱為“TOP”的指向第一非持久對(duì)象56的指針60。
VM10包括用St TOP標(biāo)志的以存儲(chǔ)器單元為形式的存儲(chǔ)器位置61,它專用于存儲(chǔ)指針60。
函數(shù)部分12特地存儲(chǔ)第一函數(shù)41、第二函數(shù)、第三函數(shù)43、第四函數(shù)、第五函數(shù)45和第六函數(shù)46。相應(yīng)的第一指令代碼31用“call”(調(diào)用)標(biāo)示,后跟定義被調(diào)用的函數(shù)的參數(shù),文中用“FC”標(biāo)志,該參數(shù)用于第一函數(shù)41。
用“Function(“標(biāo)示的第一函數(shù)41是一個(gè)括號(hào)函數(shù),它標(biāo)記一個(gè)模式的開始,這里該模式是在非持久存儲(chǔ)器51中建立任何被建立對(duì)象的模式。相應(yīng)的第三指令代碼33用“call”標(biāo)示,之后是定義調(diào)用哪個(gè)函數(shù)的參數(shù),文中用“F)”標(biāo)志該用于第三函數(shù)43的參數(shù)。
這樣,用“Function)”標(biāo)志的第三函數(shù)43是一個(gè)標(biāo)記該模式的結(jié)束的括號(hào)函數(shù),從而在持久存儲(chǔ)器50中建立任何以后被建立的對(duì)象。
第零個(gè)、第二、第四函數(shù)為相同的類型,即建立對(duì)象54、55、56、57、58的類型。相應(yīng)的第零個(gè)、第二、第四函數(shù)代碼用“new(新)”標(biāo)示。
用“gte”標(biāo)示的第五函數(shù)45專用于把指針60從St22存儲(chǔ)到StTOP61。從而由VM10接收暫時(shí)環(huán)境。用“ste”標(biāo)示的第六函數(shù)46專用于從St TOP61讀出指針60并存儲(chǔ)到S22。暫時(shí)環(huán)境被設(shè)在RAM20中。
最好把所描述的構(gòu)局設(shè)置在便攜式載體上,例如靈巧卡上或Java卡上。可把卡插入到讀卡機(jī)中,讀卡機(jī)設(shè)有用于外部電路的接口,通過該接口該外部電路和靈巧卡通信。接口是高度標(biāo)準(zhǔn)化的。經(jīng)過讀卡機(jī),APDU到達(dá)PHU15的DD16。PHU15可以處理各種類型的APDU,這些類型是“SELECT”APDU、“READ EE”APDU、“WRITEEE”APDU以及其它APDU,它們稱為“標(biāo)準(zhǔn)”APDU。在PHU15中識(shí)別到達(dá)的APDU的類型。
在起始階段期間,激活起始單元13。一旦加電并經(jīng)PON線路到達(dá)時(shí)(這可簡(jiǎn)單地是一個(gè)運(yùn)行卡電路的必要電源),就清除復(fù)位信號(hào)尤其是St22,復(fù)位PC和SP,清除RAM20,在St22中啟動(dòng)系統(tǒng)APDU對(duì)象即寫入APDU對(duì)象標(biāo)題。接著啟動(dòng)PHU15并等待輸入。
作為下一步,在未把缺省小應(yīng)用程序選擇成所謂的“現(xiàn)行小應(yīng)用程序”的情況下,一旦到達(dá)第一APDU即一個(gè)SELECT APDU時(shí),PHU15就識(shí)別該SELECT APDU,從而CM14中由該SELECT APDU標(biāo)識(shí)的小應(yīng)用程序被選為現(xiàn)行小應(yīng)用程序52。每個(gè)存儲(chǔ)的小應(yīng)用程序包含一些方法,其中尤其存儲(chǔ)著處理方法、選擇方法、安裝方法以及撤消選定方法。
標(biāo)準(zhǔn)APDU的到達(dá)觸發(fā)使用該標(biāo)準(zhǔn)APDU的預(yù)定的現(xiàn)行小應(yīng)用程序,并且更具體地使用現(xiàn)行小應(yīng)用程序的處理方法?,F(xiàn)行小應(yīng)用程序的處理方法的VM執(zhí)行起始地址是存儲(chǔ)在CM14中的執(zhí)行該處理方法的指令代碼的第一個(gè)地址。RTE19知道該地址,RTE19經(jīng)過VM10為CM14中該地址上設(shè)置的PC提供該地址。
VM10開始解釋來自VM執(zhí)行起始地址上的指代碼序列18。該解釋包括為該指令代碼序列18執(zhí)行的各個(gè)函數(shù),從指令代碼序列18的第零條指令代碼30的函數(shù)開始。
各函數(shù)可執(zhí)行各種動(dòng)作。某函數(shù)可以例如訪問PM50或TM51或堆棧存儲(chǔ)部分22,從而可修改VM10的SP和/或PC。只要St22不空,PC就遞增一步或幾步,指令代碼含有函數(shù),即,“Goto”或“Jump”函數(shù)。
在完成某方法的最后一條指令代碼的函數(shù)后,堆棧指針SP達(dá)到某預(yù)定值,其指示VM10該堆棧存儲(chǔ)部分22是空的。接著,控制交還給PHU15,其返回?cái)?shù)據(jù),例如經(jīng)OUT線路向讀卡機(jī)返回狀態(tài)數(shù)據(jù)并期待下個(gè)APDU的到達(dá)。
PHU15接收APDU,并把它們,通常每次一個(gè),存儲(chǔ)到RAM20的APDU對(duì)象負(fù)載區(qū),并對(duì)APDU分配起始階段期間生成的現(xiàn)有對(duì)象標(biāo)題。
在RAM20中存儲(chǔ)APDU對(duì)象,后者接著可由指令代碼訪問。從而,指令代碼可以訪問執(zhí)行某具體動(dòng)作所需的數(shù)據(jù),例如讀某個(gè)要注入到某存儲(chǔ)單元代表貨幣值的數(shù)值,其表示某帳號(hào)的數(shù)額(saldo)。
在PHU15識(shí)別出SELECT APDU時(shí)的情況下,使用現(xiàn)行小應(yīng)用程序,但現(xiàn)在的第一個(gè)動(dòng)作是使用撤消選定方法,而不是使用處理方法。這樣,通過VM10,執(zhí)行撤消選定方法的對(duì)應(yīng)指令代碼序列18。然后,作為第二個(gè)動(dòng)作,根據(jù)來自SELECT APDU的信息選擇新的現(xiàn)行小應(yīng)用程序,并由VM10為該新的現(xiàn)行小應(yīng)用程序執(zhí)行選擇方法。
當(dāng)識(shí)別READ APDU時(shí),則不激活VM10,而是由PHU15直接訪問存儲(chǔ)器25進(jìn)行讀操作,接著經(jīng)過OUT線路把結(jié)果輸出到讀卡機(jī)。當(dāng)識(shí)別WRITE APDU時(shí),不激活VM10,而是把WRITE APDU的相應(yīng)內(nèi)容部分作為存儲(chǔ)器25中的某特定存儲(chǔ)單元的新內(nèi)容由PHU15直接訪問存儲(chǔ)器25進(jìn)行寫操作。為了在靈巧卡上禁用以上動(dòng)作,可以通過由一種經(jīng)硬件或軟件實(shí)現(xiàn)的適當(dāng)機(jī)制禁止READ APDU和WRITE APDU的處理,從而避免濫用以上APDU。
當(dāng)讀出第零條代碼30時(shí),建立新的對(duì)象,因?yàn)榇藭r(shí)第零條指令代碼30是一條“new”指令。這同樣適用于第二指令代碼32和第四指令代碼34。系統(tǒng)在缺省模式下運(yùn)行,缺省模式定義為在持久存儲(chǔ)器50中建立任何被建立對(duì)象的模式。在持久存儲(chǔ)器50中建立第一持久對(duì)象54,并且建立一個(gè)現(xiàn)行小應(yīng)用程序?qū)ο?2和該第一持久對(duì)象54之間的指針。
下一個(gè)指令代碼是第一指令代碼31,它包括對(duì)某函數(shù)的調(diào)用,即對(duì)把括號(hào)函數(shù)作為類別標(biāo)記或定界符的第一函數(shù)41的調(diào)用。該標(biāo)記通知系統(tǒng),即運(yùn)行時(shí)環(huán)境19或VM10,該對(duì)象的新的缺省存儲(chǔ)位置是非持久存儲(chǔ)器51。
下一個(gè)指令代碼是包含著用于建立對(duì)象的“new”函數(shù)的第二指令代碼32,假定在此之前同一方法中已經(jīng)生成另外兩個(gè)暫時(shí)對(duì)象,根據(jù)上述標(biāo)記該對(duì)象是在非持久存儲(chǔ)器51中建立的第三暫時(shí)對(duì)象58。在第二TO57和現(xiàn)在生成的第三TO58之間建立一個(gè)指針。
下一個(gè)指令代碼是包含著對(duì)某函數(shù)即第三函數(shù)43的調(diào)用的第三指令代碼31,第三函數(shù)43把括號(hào)函數(shù)作為類別標(biāo)記或定界符。該標(biāo)記通知系統(tǒng),即運(yùn)行時(shí)環(huán)境19或VM10,對(duì)象的新的缺省存儲(chǔ)位置不再是非持久存儲(chǔ)器51,而重新是持久存儲(chǔ)器50。從而建立的對(duì)象是第二持久對(duì)象55,由來自第一持久對(duì)象54的一個(gè)指針指向該對(duì)象。
暫時(shí)對(duì)象56、57、58鏈接在一起,并具有一個(gè)存儲(chǔ)在St22中的基本指針,即暫時(shí)對(duì)象指針60。由于在隨后的小應(yīng)用程序調(diào)用之間自動(dòng)清空堆棧,所以若不采用輔助系統(tǒng)就不可能從一個(gè)處理或SELECT方法向另一個(gè)處理傳送堆棧內(nèi)容。該輔助系統(tǒng)由St TOP61構(gòu)成并且利用第五函數(shù)45和第六函數(shù)46。其主要用途是在一個(gè)執(zhí)行某方法后不會(huì)清空的存儲(chǔ)器中保存TOP60。該存儲(chǔ)器是以St TOP61的形式實(shí)現(xiàn)的。若某方法提議為隨后的方法保存TOP 60,則通過相應(yīng)的指令代碼調(diào)用第五函數(shù)45。從而在St TOP61中保存指針60并且避免清空St22。
若以后某時(shí)刻一個(gè)新的處理或SELECT方法希望訪問暫時(shí)對(duì)象56、57、58,則利用第六函數(shù)46把St TOP61的內(nèi)容寫入到ST60。
當(dāng)撤銷選定小應(yīng)用程序時(shí)或關(guān)掉電源時(shí),自動(dòng)刪除暫時(shí)對(duì)象56、57、58。
指令代碼、存儲(chǔ)單元以及函數(shù)等的數(shù)量?jī)H是示范性的,從而不受限于本文中的選定數(shù)量。此外,可在RAM20中配置一個(gè)堆存儲(chǔ)器,該堆存儲(chǔ)器也可由各函數(shù)訪問。
(Javacard是Sun微系統(tǒng)公司的一個(gè)商標(biāo))。
權(quán)利要求
1.一種在非持久存儲(chǔ)器中建立對(duì)象的方法,其特征在于,從指令代碼序列(18)中讀出導(dǎo)致執(zhí)行第一函數(shù)(41)的第一指令代碼(31),讀出導(dǎo)致執(zhí)行第二函數(shù)的第二指令代碼(32),第二函數(shù)導(dǎo)致在某存儲(chǔ)器中建立所述對(duì)象(56,57,58),因此所述第一函數(shù)(41)導(dǎo)致把所述非持久存儲(chǔ)器(51)選擇為所述存儲(chǔ)器。
2.根據(jù)權(quán)利要求1的方法,其特征在于,第一數(shù)(41)包括前括號(hào)類型的函數(shù)。
3.根據(jù)權(quán)利要求1或2的方法,其特征在于,讀出導(dǎo)致執(zhí)行第三函數(shù)(43)的第三指令代碼(33),第三函數(shù)導(dǎo)致把持久存儲(chǔ)器(50)用為第四指令代碼(34)的所述存儲(chǔ)器,當(dāng)讀出第四指令代碼時(shí)它導(dǎo)致執(zhí)行第四函數(shù),第四函數(shù)導(dǎo)致在所述存儲(chǔ)器中建立另一對(duì)象(54,55)。
4.根據(jù)權(quán)利要求3的方法,其特征在于,第三函數(shù)(43)包括后括號(hào)類型的函數(shù)。
5.根據(jù)權(quán)利要求1至4中之一的方法,其特征在于,至少非持久存儲(chǔ)器(51)中的對(duì)象(56,57,58)的一部分是鏈接的,尤其以一個(gè)從所述對(duì)象(56,57,58)的第一對(duì)象(56)開始的鏈的形式。
6.根據(jù)權(quán)利要求5的方法,其特征在于,在堆棧存儲(chǔ)器(22)中存儲(chǔ)一個(gè)指向非持久存儲(chǔ)器(51)中的一個(gè)對(duì)象(56,57,58)的指針(60)。
7.根據(jù)權(quán)利要求6的方法,其特征在于,堆棧存儲(chǔ)器(22)中的該指針(60)可存儲(chǔ)在某控制裝置(10)中的一個(gè)存儲(chǔ)位置(61)上。
8.根據(jù)權(quán)利要求7的方法,其特征在于,執(zhí)行第五函數(shù)(45),它導(dǎo)致把堆棧存儲(chǔ)器(22)中的指針(60)存儲(chǔ)到控制裝置(10)中的存儲(chǔ)位置(61)上。
9.根據(jù)權(quán)利要求7或8的方法,其特征在于,執(zhí)行第六函數(shù)(46),它導(dǎo)致把該指針(60)從控制裝置(10)的存儲(chǔ)位置(61)寫入到堆棧存儲(chǔ)器(22)中。
10.根據(jù)權(quán)利要求1至9中之一的方法,其特征在于,鏈接持久存儲(chǔ)器(50)中的對(duì)象(52,54,55),尤其以一個(gè)從所述對(duì)象(52,54,55)中的第一個(gè)開始的鏈的形式。
11.一種用于在非持久存儲(chǔ)器中建立對(duì)象的裝置,它包括用于存儲(chǔ)指令代碼序列(18)的存儲(chǔ)裝置(14)和用于從所述指令代碼序列(18)讀出指令代碼(30,31,32,33,34)的控制裝置(10),其中在讀出第一指令代碼(31)的情況下執(zhí)行第一函數(shù)(41),并且其中在讀出第二指令代碼(32)的情況下執(zhí)行第二函數(shù),該第二函數(shù)導(dǎo)致在某存儲(chǔ)器中建立所述對(duì)象(56,57,58),而所述第一函數(shù)(41)導(dǎo)致把所述非持久存儲(chǔ)器(51)選擇為所述存儲(chǔ)器。
12.根據(jù)權(quán)利要求11的裝置,其特征在于,在讀出第三指令代碼(33)的情況下可執(zhí)行第三函數(shù)(43),該第三函數(shù)(43)導(dǎo)致為第四指令代碼(34)把持久存儲(chǔ)器(50)選擇為所述存儲(chǔ)器,當(dāng)讀出第四指令代碼(34)時(shí)導(dǎo)致執(zhí)行第四函數(shù),第四函數(shù)導(dǎo)致在所述存儲(chǔ)器中建立另一對(duì)象(54,55)。
13.根據(jù)權(quán)利要求11或12的裝置,其特征在于,非持久存儲(chǔ)器(51)中的對(duì)象(56,57,58)是鏈接的,尤其以一個(gè)從所述對(duì)象(56,57,58)的第一對(duì)象(56)開始的鏈的形式。
14.根據(jù)權(quán)利要求13的部件,其特征在于,在堆棧存儲(chǔ)器(22)中存儲(chǔ)一個(gè)指向非持久存儲(chǔ)器(51)中的第一對(duì)象(56)的指針(60),所述指針尤其可存儲(chǔ)在控制裝置(10)中的一個(gè)存儲(chǔ)位置(61)上。
15.根據(jù)權(quán)利要求14的裝置,其特征在于,可執(zhí)行第五函數(shù)(45),它導(dǎo)致把堆棧存儲(chǔ)器(22)中的指針(60)存儲(chǔ)到控制裝置(10)的存儲(chǔ)位置(61)上。
16.根據(jù)權(quán)利要求14或15的裝置,其特征在于,可執(zhí)行第六函數(shù)(46),它導(dǎo)致把指針(60)從控制裝置(10)的存儲(chǔ)位置(61)寫入到堆棧存儲(chǔ)器(22)。
17.根據(jù)權(quán)利要求11至16中之一的裝置,其特征在于,持久存儲(chǔ)器(50)中的對(duì)象(52,54,55)是鏈接的,尤其以一個(gè)從所述對(duì)象(52,54,55)中的第一對(duì)象開始的鏈的形式。
18.一種根據(jù)權(quán)利要求11至17中之一的和/或用于實(shí)現(xiàn)根據(jù)權(quán)利要求1至10中之一的方法的裝置,其特征在于,它包括靈巧卡,特別是Javacard,或者為此的電子電路。
19.一種保持對(duì)存儲(chǔ)在非持久存儲(chǔ)器中的第一對(duì)象的可訪問性的方法,其特征在于,在堆棧存儲(chǔ)器(22)中存儲(chǔ)一個(gè)指向所述非持久存儲(chǔ)器(51)中的所述第一對(duì)象(56)的指針(60),并且所述堆棧存儲(chǔ)器(22)中的所述指針(60)是可以從控制裝置(10)中的一個(gè)持久存儲(chǔ)位置(61)寫和讀的,其存儲(chǔ)最好是可以由執(zhí)行第五函數(shù)(45)導(dǎo)致的。
20.根據(jù)權(quán)利要求19的方法,其特征在于執(zhí)行第六函數(shù)(46),它導(dǎo)致把該指針(60)從控制裝置(10)的存儲(chǔ)位置(61)寫入到堆棧存儲(chǔ)器(22)中。
全文摘要
提出一種在非持久存儲(chǔ)器中建立對(duì)象的方法。從指令代碼序列中,讀出導(dǎo)致執(zhí)行第一函數(shù)的第一指令代碼,第一函數(shù)導(dǎo)致把非持久存儲(chǔ)器選擇成下一個(gè)要建立的對(duì)象的位置。對(duì)象建立是由執(zhí)行第二函數(shù)導(dǎo)致的,第二函數(shù)的執(zhí)行是由讀出第二指令代碼導(dǎo)致的。還提出在堆棧存儲(chǔ)器中存儲(chǔ)一個(gè)指向暫時(shí)對(duì)象的指針,并提出一種從持久存儲(chǔ)器寫和讀該指針的機(jī)制。
文檔編號(hào)G06F9/45GK1234568SQ9910529
公開日1999年11月10日 申請(qǐng)日期1999年4月30日 優(yōu)先權(quán)日1998年5月4日
發(fā)明者邁克爾·巴恩施, 彼得·布勒, 托馬斯·厄里奇, 弗蘭克·赫林, 馬庫斯·奧斯特賴克 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司