基于智能卡的數(shù)據(jù)處理方法、裝置及智能卡的制作方法
【專利摘要】本發(fā)明公開了一種基于智能卡的數(shù)據(jù)處理方法、裝置及智能卡。其中,該方法包括:接收目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求;獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置;在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,其中,存儲(chǔ)位置位于智能卡中固定的一段物理內(nèi)存中,第一易失性數(shù)據(jù)為目標(biāo)應(yīng)用程序所請(qǐng)求處理的數(shù)據(jù)。通過本發(fā)明,解決了現(xiàn)有技術(shù)中智能卡在多應(yīng)用使用環(huán)境下RAM物理空間不足的問題,實(shí)現(xiàn)了多個(gè)應(yīng)用共享RAM物理空間的效果。
【專利說明】基于智能卡的數(shù)據(jù)處理方法、裝置及智能卡
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種基于智能卡的數(shù)據(jù)處理方法、裝置及智能卡。
【背景技術(shù)】
[0002]智能卡一般看作由硬件(HD, Hardware)、操作系統(tǒng)(OS, Operat1n System)、應(yīng)用程序(APP, Applicat1n)三部分組成,其中,應(yīng)用程序可以包括多個(gè),例如:應(yīng)用程序1、應(yīng)用程序2、……應(yīng)用程序n,如圖1所示。其中,硬件由中央處理器CPU、可編程只讀存儲(chǔ)器EEPR0M、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM組成。OS和APP的代碼放在ROM中,OS和APP的數(shù)據(jù)放在EEPROM或RAM中。一般將放在EEPROM中的數(shù)據(jù)稱為非易失性數(shù)據(jù)(NVD,Nonvolatile Data),放在RAM中的數(shù)據(jù)稱為易失性數(shù)據(jù)(VD, Volatile Data)?,F(xiàn)有技術(shù)中的智能卡上的易失性數(shù)據(jù)在內(nèi)存中的使用分布一般采用如圖2所示的線性使用方法,該RAM的首地址為RamStartAddress,尾地址為RamEndAddress,在圖2中將來自系統(tǒng)的數(shù)據(jù)記作系統(tǒng)數(shù)據(jù),將來自第一應(yīng)用程序的易失性數(shù)據(jù)記作第一應(yīng)用數(shù)據(jù),來自第二應(yīng)用程序的易失性數(shù)據(jù)記作第二應(yīng)用數(shù)據(jù),……來自第η應(yīng)用程序的易失性數(shù)據(jù)記作第η應(yīng)用數(shù)據(jù)。圖2所示的RAM使用方法,OS的使用空間ram_size_os,APPl至APPn分別使用空間
ram_size_appl,......,ram_size_appn??偟恼加?RAM 空間為 ram_size_total=ram_size_
os+ (ram_size_appI+......+ram_size_appn),這個(gè)總和隨著APP的數(shù)量增加而增加。
[0003]智能卡的RAM資源非常有限,當(dāng)APP較多時(shí),采用圖2所示的使用方法,RAM資源往往不夠用。
[0004]針對(duì)現(xiàn)有技術(shù)中智能卡在多應(yīng)用使用環(huán)境下RAM物理空間不足的問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0005]針對(duì)相關(guān)技術(shù)智能卡在多應(yīng)用使用環(huán)境下RAM物理空間不足的問題,目前尚未提出有效的解決方案,為此,本發(fā)明的主要目的在于提供一種基于智能卡的數(shù)據(jù)處理方法、裝置及智能卡,以解決上述問題。
[0006]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種基于智能卡的數(shù)據(jù)處理方法,該方法包括:接收目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求;獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置;在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,其中,存儲(chǔ)位置位于智能卡中固定的一段物理內(nèi)存中,第一易失性數(shù)據(jù)為目標(biāo)應(yīng)用程序所請(qǐng)求處理的數(shù)據(jù)。
[0007]進(jìn)一步地,在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理之前,方法還包括:檢測(cè)智能卡中是否存在狀態(tài)為運(yùn)行態(tài)的當(dāng)前應(yīng)用程序;在智能卡中存在狀態(tài)為運(yùn)行態(tài)的當(dāng)前應(yīng)用程序的情況下,檢測(cè)當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序是否一致,在當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序不一致的情況下,檢測(cè)當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序是否位于智能卡上相同的邏輯通道;在當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序位于不同的邏輯通道的情況下,備份當(dāng)前應(yīng)用程序的當(dāng)前數(shù)據(jù);在當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序位于相同的邏輯通道的情況下,清除存儲(chǔ)位置上的當(dāng)前數(shù)據(jù)。
[0008]進(jìn)一步地,在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理的步驟包括:在當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序位于不同的邏輯通道的情況下,檢測(cè)目標(biāo)應(yīng)用程序的狀態(tài);在目標(biāo)應(yīng)用程序的狀態(tài)為掛起態(tài)的情況下,從掛起地址讀取目標(biāo)應(yīng)用程序的備份數(shù)據(jù),將備份數(shù)據(jù)和第一易失性數(shù)據(jù)寫入存儲(chǔ)位置,其中,掛起地址為預(yù)設(shè)的備份該備份數(shù)據(jù)的固定地址;在目標(biāo)應(yīng)用程序的狀態(tài)為退選態(tài)的情況下,初始化目標(biāo)應(yīng)用程序的數(shù)據(jù),將第一易失性數(shù)據(jù)寫入存儲(chǔ)位置。
[0009]進(jìn)一步地,備份當(dāng)前應(yīng)用程序的當(dāng)前數(shù)據(jù)的步驟包括:獲取當(dāng)前數(shù)據(jù)的備份地址;將當(dāng)前數(shù)據(jù)作為備份數(shù)據(jù)保存在備份地址中,其中,備份地址為預(yù)設(shè)的存儲(chǔ)器中的固定地址。
[0010]進(jìn)一步地,獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置的步驟包括:獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的屬性參數(shù);在智能卡的隨機(jī)存儲(chǔ)器中獲取與屬性參數(shù)對(duì)應(yīng)的存儲(chǔ)位置。
[0011]進(jìn)一步地,數(shù)據(jù)處理請(qǐng)求包括創(chuàng)建請(qǐng)求,屬性參數(shù)包括:空間容量參數(shù),第一易失性數(shù)據(jù)包括屬性頭和數(shù)據(jù)體,其中,在智能卡的隨機(jī)存儲(chǔ)器中獲取與屬性參數(shù)對(duì)應(yīng)的存儲(chǔ)位置的步驟包括:獲取第一總長度,其中,第一總長度為目標(biāo)應(yīng)用程序已經(jīng)創(chuàng)建的所有易失性數(shù)據(jù)的數(shù)據(jù)體的總長度;在隨機(jī)存儲(chǔ)器中為目標(biāo)應(yīng)用程序分配存儲(chǔ)位置,其中,存儲(chǔ)位置的起始地址為從物理內(nèi)存的起始地址偏移第一總長度的位置,存儲(chǔ)位置的長度為空間容量參數(shù)的值,空間容量參數(shù)為第一易失性數(shù)據(jù)的長度。
[0012]進(jìn)一步地,在隨機(jī)存儲(chǔ)器中為目標(biāo)應(yīng)用程序分配存儲(chǔ)位置之前,方法還包括:在智能卡的可編程只讀存儲(chǔ)器中尋找空閑單元,并將空閑單元的索引數(shù)據(jù)作為第一易失性數(shù)據(jù)的第一數(shù)據(jù)標(biāo)識(shí);在可編程只讀存儲(chǔ)器中為屬性頭分配第一空間,將第一空間的第一起始地址寫入空閑單元,其中,第一空間包括:標(biāo)識(shí)字段、數(shù)據(jù)體起始地址字段和數(shù)據(jù)體長度字段;將當(dāng)前應(yīng)用程序的第一程序標(biāo)識(shí)、空間容量參數(shù)以及第一總長度的值分別寫入標(biāo)識(shí)字段、數(shù)據(jù)體長度字段以及數(shù)據(jù)體起始地址字段。
[0013]進(jìn)一步地,數(shù)據(jù)處理請(qǐng)求包括讀取請(qǐng)求,屬性參數(shù)包括:第一數(shù)據(jù)標(biāo)識(shí)、相對(duì)于第一易失性數(shù)據(jù)的數(shù)據(jù)體的起始地址的第一偏移參數(shù)、第一目的地址參數(shù)以及讀取長度,其中,在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理的步驟包括:從與第一數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的空閑單元中讀取第一起始地址;獲取與第一起始地址對(duì)應(yīng)的第一空間;檢測(cè)目標(biāo)應(yīng)用程序的目標(biāo)程序標(biāo)識(shí)與第一空間的標(biāo)識(shí)字段中存儲(chǔ)的第一程序標(biāo)識(shí)是否一致;在目標(biāo)程序標(biāo)識(shí)與第一程序標(biāo)識(shí)一致的情況下,讀取數(shù)據(jù)體起始地址,以獲取第一易失性數(shù)據(jù),其中,第一易失性數(shù)據(jù)的第二起始地址為存儲(chǔ)位置的起始地址、數(shù)據(jù)體起始地址以及第一偏移參數(shù)的值之和,第一易失性數(shù)據(jù)的長度為讀取長度;將第一易失性數(shù)據(jù)拷貝至第一目的地址參數(shù)指向的第一存儲(chǔ)空間。
[0014]進(jìn)一步地,數(shù)據(jù)處理請(qǐng)求包括更新請(qǐng)求,屬性參數(shù)包括:第一數(shù)據(jù)標(biāo)識(shí)、第一易失性數(shù)據(jù)的數(shù)據(jù)體的起始地址的第一偏移參數(shù)、源數(shù)據(jù)的起始地址參數(shù)以及更新長度,其中,在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理的步驟包括:從與第一數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的空閑單元中讀取第一起始地址;獲取與第一起始地址對(duì)應(yīng)的第一空間;檢測(cè)目標(biāo)應(yīng)用程序的目標(biāo)程序標(biāo)識(shí)與第一空間的標(biāo)識(shí)字段中存儲(chǔ)的第一程序標(biāo)識(shí)是否一致;在目標(biāo)程序標(biāo)識(shí)與第一程序標(biāo)識(shí)一致的情況下,讀取數(shù)據(jù)體起始地址,以獲取第二存儲(chǔ)空間,其中,第二存儲(chǔ)空間是存儲(chǔ)位置的起始地址、數(shù)據(jù)體起始地址以及第一偏移參數(shù)的值之和指向的空間;將第一易失性數(shù)據(jù)拷貝至第二存儲(chǔ)空間,其中,第一易失性數(shù)據(jù)的起始地址為起始地址參數(shù)對(duì)應(yīng)的地址,第一易失性數(shù)據(jù)的長度為更新長度。
[0015]進(jìn)一步地,在隨機(jī)存儲(chǔ)器中為目標(biāo)應(yīng)用程序分配存儲(chǔ)位置之后,方法還包括:將第一總長度與空間容量參數(shù)之和作為第二總長度,并使用第二總長度更新第一總長度。
[0016]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種基于智能卡的數(shù)據(jù)處理裝置,該裝置包括:第一接收模塊,用于接收目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求;第一獲取模塊,用于獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置;第一處理模塊,用于在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,其中,存儲(chǔ)位置位于智能卡中固定的一段物理內(nèi)存中,第一易失性數(shù)據(jù)為目標(biāo)應(yīng)用程序所請(qǐng)求處理的數(shù)據(jù)。
[0017]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種智能卡,該智能卡包括:處理器,用于在接收到目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求之后,獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置,然后在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,其中,存儲(chǔ)位置位于智能卡中固定的一段物理內(nèi)存中,第一易失性數(shù)據(jù)為目標(biāo)應(yīng)用程序所請(qǐng)求處理的數(shù)據(jù)。
[0018]進(jìn)一步地,智能卡還包括:可編程只讀存儲(chǔ)器,用于保存來自應(yīng)用程序的程序易失性數(shù)據(jù)的屬性頭;隨機(jī)存儲(chǔ)器,包括第一區(qū)隨機(jī)存儲(chǔ)器和第二區(qū)隨機(jī)存儲(chǔ)器,其中,第一區(qū)隨機(jī)存儲(chǔ)器用于保存來自系統(tǒng)的系統(tǒng)易失性數(shù)據(jù)的數(shù)據(jù)體,第二區(qū)隨機(jī)存儲(chǔ)器用于保存程序易失性數(shù)據(jù)的數(shù)據(jù)體。
[0019]進(jìn)一步地,可編程只讀存儲(chǔ)器包括:第一可編程只讀存儲(chǔ)器,用于保存一個(gè)或多個(gè)程序易失性數(shù)據(jù)的屬性頭,每個(gè)程序易失性數(shù)據(jù)的屬性頭占用一個(gè)子空間,每個(gè)子空間包括:標(biāo)識(shí)字段、數(shù)據(jù)體起始地址字段和數(shù)據(jù)體長度字段,其中,標(biāo)識(shí)字段,用于保存應(yīng)用程序的程序標(biāo)識(shí);數(shù)據(jù)體起始地址字段,用于保存數(shù)據(jù)體在隨機(jī)存儲(chǔ)器中的地址參數(shù);數(shù)據(jù)體長度字段,用于保存程序易失性數(shù)據(jù)的數(shù)據(jù)體的長度數(shù)據(jù);第二可編程只讀存儲(chǔ)器,包括一個(gè)或多個(gè)空閑單元,每個(gè)空閑單元分別用于保存一個(gè)屬性頭所占子空間的第一起始地址;第三可編程只讀存儲(chǔ)器,用于保存應(yīng)用程序已經(jīng)創(chuàng)建的程序易失性數(shù)據(jù)的數(shù)據(jù)體的總長度;第四可編程只讀存儲(chǔ)器,包括多個(gè)分區(qū),每個(gè)分區(qū)用于保存一個(gè)應(yīng)用程序的備份數(shù)據(jù)。
[0020]通過本發(fā)明,在處理器中的第一接收模塊接收到目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求之后,通過第一獲取模塊獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置,然后使用第一處理模塊將目標(biāo)應(yīng)用程序請(qǐng)求處理的第一易失性數(shù)據(jù)在該存儲(chǔ)位置進(jìn)行處理,其中,該存儲(chǔ)位置位于智能卡中固定的一段物理內(nèi)存中,這樣可以將來自任意應(yīng)用程序APP的第一易失性數(shù)據(jù)均保存在該固定的一段物理內(nèi)存中,從而可以讓所有的APP共享一段物理RAM內(nèi)存,從而達(dá)到節(jié)省物理RAM空間的目的,解決了現(xiàn)有技術(shù)中智能卡在多應(yīng)用使用環(huán)境下RAM物理空間不足的問題,實(shí)現(xiàn)了多個(gè)應(yīng)用共享RAM物理空間的效果。
【專利附圖】
【附圖說明】
[0021]此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0022]圖1是現(xiàn)有技術(shù)中智能卡的結(jié)構(gòu)示意圖;
[0023]圖2是現(xiàn)有技術(shù)中智能卡的易失性數(shù)據(jù)在RAM分布示意圖;
[0024]圖3是根據(jù)本發(fā)明實(shí)施例的基于智能卡的數(shù)據(jù)處理裝置的示意圖;
[0025]圖4是根據(jù)本發(fā)明實(shí)施例在RAM中OVD的數(shù)據(jù)處理分布示意圖;
[0026]圖5是根據(jù)本發(fā)明實(shí)施例AVD的數(shù)據(jù)結(jié)構(gòu)圖;
[0027]圖6是根據(jù)本發(fā)明實(shí)施例在RAM中AVD的數(shù)據(jù)處理分布示意圖
[0028]圖7是根據(jù)本發(fā)明實(shí)施例的基于智能卡的數(shù)據(jù)處理方法的流程圖;
[0029]圖8是根據(jù)圖7所示實(shí)施例的RAM的數(shù)據(jù)處理的示意圖;以及
[0030]圖9是根據(jù)圖7所示另一實(shí)施例的RAM的數(shù)據(jù)處理的示意圖。
【具體實(shí)施方式】
[0031]需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。
[0032]圖3是根據(jù)本發(fā)明實(shí)施例的基于智能卡的數(shù)據(jù)處理裝置的結(jié)構(gòu)示意圖。如圖3所示,第一接收模塊10,用于接收目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求;第一獲取模塊30,用于獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置;第一處理模塊50,用于在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,其中,存儲(chǔ)位置位于智能卡中固定的一段物理內(nèi)存中,第一易失性數(shù)據(jù)為目標(biāo)應(yīng)用程序所請(qǐng)求處理的數(shù)據(jù)。其中,數(shù)據(jù)處理的過程包括對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)、讀取、修改、替換、初始化、擦除等各種數(shù)據(jù)處理過程。
[0033]采用本發(fā)明,在處理器中的第一接收模塊接收到目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求之后,通過第一獲取模塊獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置,然后使用第一處理模塊將目標(biāo)應(yīng)用程序請(qǐng)求處理的第一易失性數(shù)據(jù)在該存儲(chǔ)位置進(jìn)行處理,其中,該存儲(chǔ)位置位于智能卡中固定的一段物理內(nèi)存中,這樣可以將來自任意應(yīng)用程序APP的第一易失性數(shù)據(jù)均在該固定的一段物理內(nèi)存中處理,從而可以讓所有的APP共享一段物理RAM內(nèi)存,從而達(dá)到節(jié)省物理RAM空間的目的,解決了現(xiàn)有技術(shù)中智能卡在多應(yīng)用使用環(huán)境下RAM物理空間不足的問題,實(shí)現(xiàn)了多個(gè)應(yīng)用共享RAM物理空間的效果。
[0034]根據(jù)本發(fā)明的上述實(shí)施例,裝置還可以包括:第一檢測(cè)模塊,用于檢測(cè)當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序是否一致,第二處理模塊,用于在當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序不一致的情況下,清除存儲(chǔ)位置上的數(shù)據(jù),其中,當(dāng)前應(yīng)用程序?yàn)榇鎯?chǔ)位置內(nèi)當(dāng)前存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的應(yīng)用程序。
[0035]在本發(fā)明的上述實(shí)施例中,第一獲取模塊可以包括:第一子獲取模塊,用于獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的屬性參數(shù);第二子獲取模塊,用于在智能卡的隨機(jī)存儲(chǔ)器中獲取與屬性參數(shù)對(duì)應(yīng)的存儲(chǔ)位置。
[0036]根據(jù)本發(fā)明的上述實(shí)施例,裝置還包括:第二檢測(cè)模塊,用于檢測(cè)智能卡中是否存在狀態(tài)為運(yùn)行態(tài)的當(dāng)前應(yīng)用程序;第三檢測(cè)模塊,用于在智能卡中存在狀態(tài)為運(yùn)行態(tài)的當(dāng)前應(yīng)用程序的情況下,檢測(cè)當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序是否一致,第四檢測(cè)模塊,用于在當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序不一致的情況下,檢測(cè)當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序是否位于智能卡上相同的邏輯通道;第三處理模塊,用于在當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序位于不同的邏輯通道的情況下,備份當(dāng)前應(yīng)用程序的當(dāng)前數(shù)據(jù);第四處理模塊,用于在當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序位于相同的邏輯通道的情況下,清除存儲(chǔ)位置上的當(dāng)前數(shù)據(jù)。
[0037]在本發(fā)明的上述實(shí)施例中,所述第一處理模塊可以包括:第一子檢測(cè)模塊,用于在當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序位于不同的邏輯通道的情況下,檢測(cè)目標(biāo)應(yīng)用程序的狀態(tài);第一子處理模塊,用于在目標(biāo)應(yīng)用程序的狀態(tài)為掛起態(tài)的情況下,從掛起地址讀取目標(biāo)應(yīng)用程序的備份數(shù)據(jù),將備份數(shù)據(jù)和第一易失性數(shù)據(jù)寫入存儲(chǔ)位置,其中,掛起地址為預(yù)設(shè)的備份該備份數(shù)據(jù)的固定地址;第二子處理模塊,用于在目標(biāo)應(yīng)用程序的狀態(tài)為退選態(tài)的情況下,初始化目標(biāo)應(yīng)用程序的數(shù)據(jù),將第一易失性數(shù)據(jù)寫入存儲(chǔ)位置。
[0038]根據(jù)本發(fā)明的上述實(shí)施例,第三處理模塊可以包括:第三子獲取模塊,用于獲取當(dāng)前數(shù)據(jù)的備份地址;第三子處理模塊,用于將當(dāng)前數(shù)據(jù)作為備份數(shù)據(jù)保存在備份地址中,其中,備份地址為預(yù)設(shè)的存儲(chǔ)器中的固定地址。
[0039]本發(fā)明還提供了一種智能卡,該智能卡可以包括:處理器,用于在接收到目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求之后,獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置,然后在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,其中,存儲(chǔ)位置位于智能卡中固定的一段物理內(nèi)存中,第一易失性數(shù)據(jù)為目標(biāo)應(yīng)用程序所請(qǐng)求處理的數(shù)據(jù)。
[0040]采用本發(fā)明,在處理器中的第一接收模塊接收到目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求之后,通過第一獲取模塊獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置,然后使用第一處理模塊將目標(biāo)應(yīng)用程序請(qǐng)求處理的第一易失性數(shù)據(jù)在該存儲(chǔ)位置進(jìn)行處理,其中,該存儲(chǔ)位置位于智能卡中固定的一段物理內(nèi)存中,這樣可以將來自任意應(yīng)用程序APP的第一易失性數(shù)據(jù)均保存在該固定的一段物理內(nèi)存中,從而可以讓所有的APP共享一段物理RAM內(nèi)存,從而達(dá)到節(jié)省物理RAM空間的目的,解決了現(xiàn)有技術(shù)中智能卡在多應(yīng)用使用環(huán)境下RAM物理空間不足的問題,實(shí)現(xiàn)了多個(gè)應(yīng)用共享RAM物理空間的效果。
[0041]在本發(fā)明的上述實(shí)施例中,智能卡還可以包括:可編程只讀存儲(chǔ)器,用于保存來自應(yīng)用程序的程序易失性數(shù)據(jù)的屬性頭;隨機(jī)存儲(chǔ)器,包括第一區(qū)隨機(jī)存儲(chǔ)器和第二區(qū)隨機(jī)存儲(chǔ)器,其中,第一區(qū)隨機(jī)存儲(chǔ)器用于保存來自系統(tǒng)的系統(tǒng)易失性數(shù)據(jù)的數(shù)據(jù)體,第二區(qū)隨機(jī)存儲(chǔ)器用于保存程序易失性數(shù)據(jù)的數(shù)據(jù)體。
[0042]具體地,可編程只讀存儲(chǔ)器包括:第一可編程只讀存儲(chǔ)器,用于保存一個(gè)或多個(gè)程序易失性數(shù)據(jù)的屬性頭,每個(gè)程序易失性數(shù)據(jù)的屬性頭占用一個(gè)子空間,每個(gè)子空間包括:標(biāo)識(shí)字段、數(shù)據(jù)體起始地址字段和數(shù)據(jù)體長度字段,其中,標(biāo)識(shí)字段,用于保存應(yīng)用程序的程序標(biāo)識(shí);數(shù)據(jù)體起始地址字段,用于保存數(shù)據(jù)體在隨機(jī)存儲(chǔ)器中的地址參數(shù);數(shù)據(jù)體長度字段,用于保存保存程序易失性數(shù)據(jù)的數(shù)據(jù)體的長度數(shù)據(jù),也即上述實(shí)施例中的空間容量參數(shù);第二可編程只讀存儲(chǔ)器,包括一個(gè)或多個(gè)空閑單元,每個(gè)空閑單元分別用于保存一個(gè)屬性頭所占子空間的第一起始地址;第三可編程只讀存儲(chǔ)器,用于保存應(yīng)用程序已經(jīng)創(chuàng)建的程序易失性數(shù)據(jù)的數(shù)據(jù)體的總長度;第四可編程只讀存儲(chǔ)器,包括多個(gè)分區(qū),每個(gè)分區(qū)用于保存一個(gè)應(yīng)用程序的備份數(shù)據(jù)。
[0043]具體地,可以為系統(tǒng)中的每個(gè)應(yīng)用程序設(shè)置一個(gè)應(yīng)用標(biāo)識(shí)符(AID,Applicat1nldentifier), AID的值從阿拉伯?dāng)?shù)字O開始從小到大排列。處理器每次調(diào)用應(yīng)用程序(APP)的時(shí)候,通過AID來選中APP:智能卡的卡外實(shí)體發(fā)送選擇應(yīng)用程序的選擇指令,該選擇指令指定了 AID,處理器的操作系統(tǒng)模塊接收該選擇指令之后,記錄AID,并將該選擇指令傳遞給該AID對(duì)應(yīng)的APP,以達(dá)到APP和卡外實(shí)體交互的目的。
[0044]在本發(fā)明的上述實(shí)施例中,將屬于操作系統(tǒng)的系統(tǒng)易失性數(shù)據(jù)簡稱為OVD (OSVD),將屬于APP的程序易失性數(shù)據(jù)簡稱為AVD (Applicat1n VD)。
[0045]在本發(fā)明的上述實(shí)施例中,隨機(jī)存儲(chǔ)器可以包括:第一區(qū)隨機(jī)存儲(chǔ)器和第二區(qū)隨機(jī)存儲(chǔ)器,第一區(qū)隨機(jī)存儲(chǔ)器用于保存來自系統(tǒng)的系統(tǒng)易失性數(shù)據(jù)的數(shù)據(jù)體,第二區(qū)隨機(jī)存儲(chǔ)器用于保存來自應(yīng)用程序的程序易失性數(shù)據(jù)的數(shù)據(jù)體,第二區(qū)隨機(jī)存儲(chǔ)器即為上述實(shí)施例中的存儲(chǔ)位置,也即為固定的用于處理來自應(yīng)用程序的第一易失性數(shù)據(jù)的數(shù)據(jù)體的物理內(nèi)存。其中,在一個(gè)時(shí)刻RAM_APP上可以只處理當(dāng)前應(yīng)用程序的APP的易失性數(shù)據(jù)AVD。
[0046]具體地,將智能卡上的RAM空間分為兩個(gè)區(qū)隨機(jī)存儲(chǔ)器,其中一個(gè)RAM_0S用于存儲(chǔ)來自操作系統(tǒng)模塊的數(shù)據(jù),另一個(gè)RAM_AP用于存儲(chǔ)來自APP的數(shù)據(jù),RAM_0S的地址區(qū)間為 RAM_OSStartAddress ?RAM_0S EndAddress,RAM_AP 的地址區(qū)間為 RAM_APPStartAddress ?RAM_APPEndAddress。
[0047]進(jìn)一步地,還可以為每一個(gè)來自操作系統(tǒng)的系統(tǒng)易失性數(shù)據(jù)OVD分配一個(gè)標(biāo)識(shí)符OVDID (OVD Identifier),該OVDID取值于該OVD的數(shù)據(jù)體在RAM_0S中的首地址。每一個(gè)OVD具有一個(gè)數(shù)據(jù)體(Body),OVD的Body在RAM_0S (RAM的第一區(qū)隨機(jī)存儲(chǔ)器)中分布如圖4所示,在RAM中,來自操作系統(tǒng)的系統(tǒng)易失性數(shù)據(jù)OVD的數(shù)據(jù)體:第一系統(tǒng)數(shù)據(jù)體、第二系統(tǒng)數(shù)據(jù)體、......第m系統(tǒng)數(shù)據(jù)體依次從第一區(qū)首地址(RAM_0S StartAddress)開始保存,由圖4可知,來自操作系統(tǒng)的系統(tǒng)易失性數(shù)據(jù)OVD的數(shù)據(jù)體并不能將整個(gè)第一區(qū)隨機(jī)存儲(chǔ)器占滿,也即到第一區(qū)尾地址(RAM_0S EndAddress)還可以有空閑區(qū)域。如圖6所示,在RAM中,來自應(yīng)用程序APPn的程序易失性數(shù)據(jù)AVD的數(shù)據(jù)體第一應(yīng)用數(shù)據(jù)體、第二應(yīng)用數(shù)據(jù)體、......第m應(yīng)用數(shù)據(jù)體依次從第二區(qū)首地址(RAM_APP StartAddress)開始保存,由圖
6所示,第二區(qū)首地址與第二區(qū)尾地址之間還存在空閑區(qū)域,并且在RAM_APP中只保存有當(dāng)前應(yīng)用程序的數(shù)據(jù),其中,當(dāng)前應(yīng)用程序具有的多個(gè)數(shù)據(jù)體依次保存在RAM_APP中,并且如圖4和圖6所示,在各自的存儲(chǔ)區(qū)域內(nèi)均有空閑的區(qū)域。
[0048]智能卡還包括:可編程只讀存儲(chǔ)器EEPR0M,可編程只讀存儲(chǔ)器EEPROM可以為4個(gè)。
[0049]其中,第一塊EEPROM (即第二可編程只讀存儲(chǔ)器)依次存放AVD的Header。在本申請(qǐng)中該EEPROM可以為EEPR0M_AVDHR。
[0050]第二塊EEPROM (即第一可編程只讀存儲(chǔ)器)可以看做是4字節(jié)為一個(gè)單元的數(shù)組,數(shù)組的索引將會(huì)作為AVDID,數(shù)組第m個(gè)單元存儲(chǔ)的是AVDID為m的AVD的Header的首地址。在本申請(qǐng)中該EEPROM可以為EEPR0M_AVDID。
[0051]第三塊EEPROM (即第三可編程只讀存儲(chǔ)器)可以看作以4字節(jié)為一個(gè)單元的數(shù)組,數(shù)組的索引對(duì)應(yīng)APP的AID,每個(gè)單元存儲(chǔ)AID對(duì)應(yīng)的APP的擁有的所有AVD在RAM_APP中已經(jīng)占據(jù)的空間之和。在本申請(qǐng)中該EEPROM可以為EEPROM_AVDSIZE。
[0052]第四塊EEPROM (即第四可編程只讀存儲(chǔ)器)有CSTNum個(gè)單元,分別為第1,2, -WSTNum個(gè)單元,每個(gè)單元的大小同RAM_APP的大小。并且通過智能卡的易失性數(shù)據(jù)管理模塊維護(hù)單元序號(hào)i和APP AID的映射關(guān)系。每個(gè)單元用來備份或還原映射APP的所有的AVD。備份操作發(fā)生在處于運(yùn)行態(tài)的APP發(fā)生改變時(shí),可以將這塊EEPROM稱為EEPR0M_BACKUP,其中,在本申請(qǐng)中將智能卡上并發(fā)APP的個(gè)數(shù)最大支持個(gè)數(shù)記作ConcurrentSelectTotalNumer,簡寫為 CSTNum。
[0053]具體地,為來自APP的程序易失性數(shù)據(jù)AVD設(shè)定標(biāo)識(shí)符AVDID(AVD Identifier),該AVDID的值從阿拉伯?dāng)?shù)字O替增。每一個(gè)AVD均可以包括:屬性頭(Header)和數(shù)據(jù)體(Body)0 Header放在EEPROM中,即上述實(shí)施例的EEPROM_AVDHR中,Body放置在RAM_APP中,其中,Header具有如圖5所示的數(shù)據(jù)結(jié)構(gòu),每個(gè)AVD的Header均可以包括三個(gè)字段:標(biāo)識(shí)字段(Aid字段)、數(shù)據(jù)體長度字段(Body_SiZe字段)、數(shù)據(jù)體起始地址字段(Body_AddreSS,即數(shù)據(jù)體在RAM中的地址)。其中,Aid字段標(biāo)示了該AVD隸屬的APP的程序標(biāo)識(shí)AID,該字段為2個(gè)字節(jié);Body_SiZe字段中存儲(chǔ)著AVD的Body的大小,該字段為4個(gè)字節(jié);Body_Address字段中記錄了 Body在RAM_APP中的首地址,該字段為4個(gè)字節(jié)。Header占據(jù)的空間大小記作 Header_Size, Header_Size=10 個(gè)字節(jié)。
[0054]智能卡通過APDU指令與卡外實(shí)體交互,卡外實(shí)體首先選擇某一個(gè)APP,然后和選中的APP交互信息。在實(shí)際使用場(chǎng)景中,卡外實(shí)體通常選中一個(gè)APP并和該APP交互信息完成后,再次選中另外一個(gè)APP并交互信息,因此在一段時(shí)間內(nèi)系統(tǒng)內(nèi)只存在唯個(gè)被選中的APP。由于OS承擔(dān)APP的選擇和APDU指令的分發(fā),屬于OS的系統(tǒng)易失性數(shù)據(jù)必須始終維護(hù)在RAM中,而APP中只有當(dāng)前被選擇的APP的程序易失性數(shù)據(jù)才需要維護(hù)在RAM中,因此,本申請(qǐng)的上述實(shí)施例中,處理器在獲取到來自應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求的情況下,獲取與該數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置,在該存儲(chǔ)位置對(duì)AVD進(jìn)行數(shù)據(jù)處理,其中,該存儲(chǔ)位置為一個(gè)固定位置,來自任意一個(gè)APP的AVD均會(huì)存儲(chǔ)在該位置RAM_APP。從而可以讓所有的APP共享一段物理RAM內(nèi)存,從而達(dá)到節(jié)省物理RAM空間的目的,解決了現(xiàn)有技術(shù)中智能卡在多應(yīng)用使用環(huán)境下RAM物理空間不足的問題,實(shí)現(xiàn)了多個(gè)應(yīng)用共享RAM物理空間的效果O
[0055]具體地,支持多應(yīng)用的智能卡操作系統(tǒng)一般支持多個(gè)邏輯通道,將智能卡操作系統(tǒng)支持的邏輯通道總數(shù)記作ChannelTotalNum。優(yōu)選地,邏輯通道的個(gè)數(shù)可以為20個(gè),分別標(biāo)識(shí)為 Channell ?channel20。
[0056]卡外實(shí)體發(fā)送給智能卡的每條指令的第一個(gè)字節(jié)中都附帶了邏輯通道信息,操作系統(tǒng)首先判斷當(dāng)前邏輯通道上有無APP被選中,如果有APP被選中,則將該指令傳遞給該APP處理;如果沒有,操作系統(tǒng)直接返回錯(cuò)誤信息給卡外實(shí)體。
[0057]在本申請(qǐng)的上述實(shí)施例中,APP可以具有三種狀態(tài):退選態(tài)、運(yùn)行態(tài)、掛起態(tài)。智能卡重新上電后,所有的APP都處于退選態(tài);通過發(fā)送選擇應(yīng)用指令選中APP,在接收到其他的交互指令之前,APP處于運(yùn)行態(tài);如果在相同邏輯通道上,前后分別選擇了 APPl和APP2,則APPl從運(yùn)行態(tài)變?yōu)橥诉x態(tài),而APP2從退選態(tài)變?yōu)檫\(yùn)行態(tài);如果多個(gè)邏輯通道上選擇了不同的應(yīng)用,例如,在Channell和Channe12上分別選擇了 APPl和APP2,若當(dāng)前指令正被APPl處理,則APPl處于運(yùn)行態(tài),APP2處于掛起態(tài);某一時(shí)刻,只有唯——個(gè)APP處于運(yùn)行態(tài)。其中,退選態(tài)為應(yīng)用程序沒有被選中的狀態(tài),運(yùn)行態(tài)為應(yīng)用程序被選中正在處理數(shù)據(jù)的狀態(tài),掛起態(tài)為應(yīng)用程序的數(shù)據(jù)存儲(chǔ)在邏輯通道上并且當(dāng)前沒有處理數(shù)據(jù)的狀態(tài)。
[0058]根據(jù)本發(fā)明的上述實(shí)施例,只有處于運(yùn)行態(tài)的APP才會(huì)占用RAM的物理空間(如上述實(shí)施例中的存儲(chǔ)位置),從而可以讓所有的APP共享一段物理RAM內(nèi)存,從而達(dá)到節(jié)省物理RAM空間的目的,解決了現(xiàn)有技術(shù)中智能卡在多應(yīng)用使用環(huán)境下RAM物理空間不足的問題,實(shí)現(xiàn)了多個(gè)應(yīng)用共享RAM物理空間的效果。
[0059]圖7是根據(jù)本發(fā)明實(shí)施例的基于智能卡的數(shù)據(jù)處理方法的流程圖。如圖7所示,該方法可以包括如下步驟:
[0060]步驟S102,接收目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求。
[0061]步驟S104,獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置。
[0062]步驟S106,在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,其中,存儲(chǔ)位置位于智能卡中固定的一段物理內(nèi)存中,第一易失性數(shù)據(jù)為目標(biāo)應(yīng)用程序所請(qǐng)求處理的數(shù)據(jù)。
[0063]采用本發(fā)明,在通過圖3所示的第一接收模塊接收到目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求之后,通過第一獲取模塊獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置,然后使用第一處理模塊將目標(biāo)應(yīng)用程序請(qǐng)求處理的第一易失性數(shù)據(jù)保存在該存儲(chǔ)位置,其中,該存儲(chǔ)位置位于智能卡中固定的一段物理內(nèi)存中,這樣可以將來自任意應(yīng)用程序APP的第一易失性數(shù)據(jù)均保存在該固定的一段物理內(nèi)存中,從而可以讓所有的APP共享一段物理RAM內(nèi)存,從而達(dá)到節(jié)省物理RAM空間的目的,解決了現(xiàn)有技術(shù)中智能卡在多應(yīng)用使用環(huán)境下RAM物理空間不足的問題,實(shí)現(xiàn)了多個(gè)應(yīng)用共享RAM物理空間的效果。
[0064]根據(jù)本發(fā)明的上述實(shí)施例,在接收目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求之后,目標(biāo)應(yīng)用程序的狀態(tài)將由掛起態(tài)或者退選態(tài)變更為運(yùn)行態(tài)。
[0065]在本發(fā)明的上述實(shí)施例中,獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置的步驟可以包括:獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的屬性參數(shù);在智能卡的隨機(jī)存儲(chǔ)器中獲取與屬性參數(shù)對(duì)應(yīng)的存儲(chǔ)位置。
[0066]具體地,目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求的中攜帶有目標(biāo)邏輯通道信息和AID,其中,AID為對(duì)應(yīng)每個(gè)應(yīng)用程序的唯一標(biāo)識(shí),在接收到目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求之后,從數(shù)據(jù)處理請(qǐng)求目標(biāo)應(yīng)用程序的AID,并建立目標(biāo)邏輯通道信息與AID之間的映射關(guān)系,由于目標(biāo)邏輯通道信息與存儲(chǔ)位置是具有關(guān)聯(lián)關(guān)系的,在接收到數(shù)據(jù)處理請(qǐng)求之后,可以根據(jù)數(shù)據(jù)處理請(qǐng)求獲取對(duì)應(yīng)的存儲(chǔ)位置,并根據(jù)關(guān)聯(lián)關(guān)系獲取與存儲(chǔ)位置對(duì)應(yīng)的目標(biāo)邏輯通道的位置,并且攜帶目標(biāo)邏輯通道信息的處理數(shù)據(jù)的交互指令(即數(shù)據(jù)處理請(qǐng)求)會(huì)傳遞給具有AID標(biāo)識(shí)的APP,則對(duì)應(yīng)該APP的第一易失性數(shù)據(jù)會(huì)在目標(biāo)邏輯通道上進(jìn)行處理,從而達(dá)到APP和卡外實(shí)體進(jìn)行數(shù)據(jù)交互的目的。
[0067]在本發(fā)明的上述實(shí)施例中,數(shù)據(jù)處理請(qǐng)求可以包括創(chuàng)建請(qǐng)求,其中,在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理之前,方法還可以包括:檢測(cè)當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序是否一致,在當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序不一致的情況下,清除存儲(chǔ)位置上的當(dāng)前數(shù)據(jù),其中,當(dāng)前應(yīng)用程序?yàn)榇鎯?chǔ)位置內(nèi)當(dāng)前存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的應(yīng)用程序。優(yōu)選地,在當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序不一致的情況下,還可以備份當(dāng)前存儲(chǔ)數(shù)據(jù)。
[0068]具體地,在數(shù)據(jù)處理裝置接收到創(chuàng)建請(qǐng)求之后,檢測(cè)存儲(chǔ)位置上存儲(chǔ)的數(shù)據(jù)對(duì)應(yīng)的當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序是否一致,其中,在一致的情況下,清除存儲(chǔ)位置上的當(dāng)前存儲(chǔ)數(shù)據(jù)。具體地,清除存儲(chǔ)位置上的數(shù)據(jù)可以通過直接擦除存儲(chǔ)位置上的數(shù)據(jù),將存儲(chǔ)位置上的數(shù)據(jù)全部清零來實(shí)現(xiàn),也可以通過格式化存儲(chǔ)位置上的數(shù)據(jù),將存儲(chǔ)位置上的數(shù)據(jù)全部置為零來實(shí)現(xiàn)。
[0069]具體地,如果是清除前一刻被選中APP的所有AVD的請(qǐng)求,則將RAM_APP全部清除為O ;如果是初始化當(dāng)前選擇APP的所有AVD的請(qǐng)求,則將RAM_APP全部初始化為0,以創(chuàng)建當(dāng)前選擇的應(yīng)用程序的AVD,以供后續(xù)的數(shù)據(jù)處理(如:讀取或更新處理等)。
[0070]例如,APPi和APPj先后對(duì)易失性數(shù)據(jù)管理模塊發(fā)起創(chuàng)建或讀取或更新AVD請(qǐng)求時(shí),操作系統(tǒng)模塊將會(huì)在APPj被選中時(shí),對(duì)易失性數(shù)據(jù)管理模塊發(fā)起清除前一刻被選中APPi的所有AVD的請(qǐng)求,并隨后發(fā)起初始化被選擇APPj的所有AVD的請(qǐng)求。
[0071]具體地,在前一時(shí)刻智能卡的隨機(jī)存儲(chǔ)器的存儲(chǔ)位置存儲(chǔ)的是APPi的易失性數(shù)據(jù)(即當(dāng)前數(shù)據(jù),也可以稱之為當(dāng)前存儲(chǔ)數(shù)據(jù)),如圖8所示,第二區(qū)隨機(jī)存儲(chǔ)器首地址(RAM_APPStartAddress)的值與第一區(qū)隨機(jī)存儲(chǔ)器尾地址(RAM_0S EndAddress)的值相等,從存儲(chǔ)位置RAM_APP的首地址RAM_APP StartAddress開始,依次保存的是APPi的應(yīng)用i的第一數(shù)據(jù)體、應(yīng)用i的第二數(shù)據(jù)體……應(yīng)用i的第X數(shù)據(jù)體。
[0072]在處理器的操作系統(tǒng)模塊接收到應(yīng)用程序APPj (即上述實(shí)施例中的目標(biāo)應(yīng)用程序,該程序?yàn)锳ID=j的APP)的數(shù)據(jù)處理請(qǐng)求時(shí),即APPj被選中時(shí),檢測(cè)到存儲(chǔ)位置存儲(chǔ)的數(shù)據(jù)是APPi的當(dāng)前數(shù)據(jù),則對(duì)易失性數(shù)據(jù)管理模塊發(fā)起清除前一刻被選中的APPi的所有AVD的指令,并隨后發(fā)起初始化被選擇APPj的所有AVD的請(qǐng)求,將APPj的AVD保存在存儲(chǔ)位置上,如圖8所示,即從存儲(chǔ)位置RAM_APP的首地址RAM_APP StartAddress開始,依次保存的是APPj的應(yīng)用j的第一數(shù)據(jù)體、應(yīng)用j的第二數(shù)據(jù)體……應(yīng)用j的第X數(shù)據(jù)體。
[0073]如圖8所示,采用本發(fā)明的上述實(shí)施例,通過將隨機(jī)存儲(chǔ)器分為兩個(gè)區(qū),在其中一個(gè)區(qū)保存來自系統(tǒng)的系統(tǒng)易失性數(shù)據(jù),在另一個(gè)區(qū)保存來自應(yīng)用程序的程序易失性數(shù)據(jù),圖8中的第一區(qū)隨機(jī)存儲(chǔ)器保存的來自系統(tǒng)的系統(tǒng)易失性數(shù)據(jù)的第一系統(tǒng)數(shù)據(jù)體、第二系統(tǒng)數(shù)據(jù)體、……、第m系統(tǒng)數(shù)據(jù)體,在從選中應(yīng)用程序i更換至選中應(yīng)用程序j時(shí),系統(tǒng)的系統(tǒng)易失性數(shù)據(jù)的存儲(chǔ)并沒有發(fā)生變化,變化的只是第二區(qū)隨機(jī)存儲(chǔ)器的數(shù)據(jù),并且保存來自應(yīng)用程序的程序易失性數(shù)據(jù)的區(qū)內(nèi)在固定的一段物理內(nèi)存中保存第一易失性數(shù)據(jù)從應(yīng)用程序i的數(shù)據(jù)變更為應(yīng)用程序的j的數(shù)據(jù),系統(tǒng)控制了多個(gè)應(yīng)用程序,但是并沒有占用更多的內(nèi)存,并且可以使得RAM中可以存在空閑的區(qū)域。
[0074]更具體地,通過指令清除前一刻被選中APPi的所有AVD,則對(duì)易失性數(shù)據(jù)管理模塊傳入APPi的AID參數(shù)i ;通過指令初始化APPj的所有AVD,則對(duì)易失性數(shù)據(jù)管理模塊傳入APPj的AID參數(shù)j。
[0075]在本發(fā)明的上述實(shí)施例中,在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理之前,方法還可以包括:檢測(cè)智能卡中是否存在狀態(tài)為運(yùn)行態(tài)的當(dāng)前應(yīng)用程序;在智能卡中存在狀態(tài)為運(yùn)行態(tài)的當(dāng)前應(yīng)用程序的情況下,檢測(cè)當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序是否一致,在當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序不一致的情況下,檢測(cè)當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序是否位于智能卡上相同的邏輯通道;在當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序位于不同的邏輯通道的情況下,備份當(dāng)前應(yīng)用程序的當(dāng)前數(shù)據(jù);在當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序位于相同的邏輯通道的情況下,清除存儲(chǔ)位置上的當(dāng)前數(shù)據(jù)。
[0076]根據(jù)本發(fā)明的上述實(shí)施例,在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理的步驟可以包括:在當(dāng)前應(yīng)用程序與目標(biāo)應(yīng)用程序位于不同的邏輯通道的情況下,檢測(cè)目標(biāo)應(yīng)用程序的狀態(tài);在目標(biāo)應(yīng)用程序的狀態(tài)為掛起態(tài)的情況下,從掛起地址讀取目標(biāo)應(yīng)用程序的備份數(shù)據(jù),將備份數(shù)據(jù)和第一易失性數(shù)據(jù)寫入存儲(chǔ)位置,其中,掛起地址為預(yù)設(shè)的備份該備份數(shù)據(jù)的固定地址;在目標(biāo)應(yīng)用程序的狀態(tài)為退選態(tài)的情況下,初始化目標(biāo)應(yīng)用程序的數(shù)據(jù),將第一易失性數(shù)據(jù)寫入存儲(chǔ)位置。
[0077]具體地,備份當(dāng)前應(yīng)用程序的當(dāng)前數(shù)據(jù)的步驟可以包括:獲取與當(dāng)前數(shù)據(jù)對(duì)應(yīng)的備份地址;將當(dāng)前數(shù)據(jù)作為備份數(shù)據(jù)保存在備份地址中,其中,備份地址為預(yù)設(shè)的固定存儲(chǔ)器中的地址。其中,上述實(shí)施例中的備份地址與掛起地址均位于第四可編程只讀存儲(chǔ)器中。
[0078]具體地,可以通過智能卡的操作系統(tǒng)模塊維護(hù)邏輯通道號(hào)Channel與在該邏輯通道Channel上選中APP的AID及狀態(tài)的映射關(guān)系,并且操作系統(tǒng)模塊可以將卡外實(shí)體發(fā)送的指令(即數(shù)據(jù)處理請(qǐng)求)傳遞給AID標(biāo)識(shí)的APP,如果智能卡有ChannelTotalNum個(gè)邏輯通道,則操作系統(tǒng)需要維護(hù)ChannelTotalNum個(gè)映射關(guān)系。在智能卡上電時(shí),所有的Channel都與O映射,表示該邏輯通道上沒有應(yīng)用被選中,并且所有的APP狀態(tài)為退選態(tài)。
[0079]例如,操作系統(tǒng)模塊在目標(biāo)應(yīng)用程序APPj (即AID=j的APP,其中,APP的AID從阿拉伯?dāng)?shù)字O遞增,j為自然數(shù))被選中時(shí),如果智能卡上沒有APP處于運(yùn)行態(tài),對(duì)易失性數(shù)據(jù)管理模塊發(fā)起初始化APPj的所有AVD的請(qǐng)求,并且將APPj的狀態(tài)修改為運(yùn)行態(tài)。如果有應(yīng)用程序處于運(yùn)行態(tài),并且當(dāng)前應(yīng)用程序?yàn)锳PPi處于運(yùn)行態(tài)(i!=j),則檢測(cè)當(dāng)前應(yīng)用程序APPi和APPj是否位于相同的邏輯通道中,在當(dāng)前應(yīng)用程序APPi和目標(biāo)應(yīng)用程序APPj位于不同的邏輯通道中的情況下,對(duì)易失性數(shù)據(jù)管理模塊發(fā)起備份當(dāng)前應(yīng)用程序APPi的所有當(dāng)前的易失性數(shù)據(jù)AVD的請(qǐng)求,并檢測(cè)目標(biāo)應(yīng)用程序的當(dāng)前狀態(tài),具體地,在目標(biāo)應(yīng)用程序APPj處于掛起態(tài)的情況下,對(duì)易失性數(shù)據(jù)管理模塊發(fā)起還原目標(biāo)應(yīng)用程序APPj的所有AVD的請(qǐng)求,即從掛起地址讀取目標(biāo)應(yīng)用程序的備份數(shù)據(jù),然后根據(jù)數(shù)據(jù)處理請(qǐng)求對(duì)目標(biāo)應(yīng)用程序進(jìn)行相應(yīng)的數(shù)據(jù)交互處理,如,將備份數(shù)據(jù)和第一易失性數(shù)據(jù)寫入相應(yīng)的存儲(chǔ)位置;在目標(biāo)應(yīng)用程序APPj處于退選態(tài)的情況下,對(duì)易失性數(shù)據(jù)管理模塊發(fā)起初始化目標(biāo)應(yīng)用程序APPj的所有AVD的請(qǐng)求,并將當(dāng)前應(yīng)用程序APPi的狀態(tài)修改為掛起態(tài),將目標(biāo)應(yīng)用程序APPj的狀態(tài)修改為運(yùn)行態(tài)。
[0080]在當(dāng)前應(yīng)用程序APPi和目標(biāo)應(yīng)用程序APPj位于相同邏輯通道的情況下,發(fā)起清除當(dāng)前應(yīng)用程序APPi的所有AVD的應(yīng)用請(qǐng)求,并發(fā)起初始化目標(biāo)應(yīng)用程序APPj所有AVD的應(yīng)用請(qǐng)求,并分別將當(dāng)前應(yīng)用程序APPi和目標(biāo)應(yīng)用程序APPj的狀態(tài)分別置為退選態(tài)和運(yùn)行態(tài)。在目標(biāo)應(yīng)用程序APPj處于運(yùn)行態(tài)的情況下,直接進(jìn)行數(shù)據(jù)處理。如果應(yīng)用請(qǐng)求是備份或清除當(dāng)前APPi的所有AVD,則對(duì)易失性數(shù)據(jù)管理模塊傳入當(dāng)前APPi的AID參數(shù)i ;如果應(yīng)用請(qǐng)求是還原或初始化APPj的所有AVD,則對(duì)易失性數(shù)據(jù)管理模塊傳入APPj的AID參數(shù)j。
[0081]在本發(fā)明的另一個(gè)實(shí)施例中,如圖9所示,第四可編程只讀存儲(chǔ)器包括多個(gè)區(qū)(第I備份空間,第2備份空間,……,第CSTNum備份空間),每個(gè)區(qū)分別用于存儲(chǔ)一個(gè)應(yīng)用程序的第一易失性數(shù)據(jù),與圖8相類似的,隨機(jī)存儲(chǔ)器分為兩個(gè)區(qū),在其中一個(gè)區(qū)保存來自系統(tǒng)的第一易失性數(shù)據(jù),在另一個(gè)區(qū)保存來自應(yīng)用程序的第一易失性數(shù)據(jù),其中,第一區(qū)隨機(jī)存儲(chǔ)器(從第一區(qū)隨機(jī)存儲(chǔ)器首地址至第一區(qū)隨機(jī)存儲(chǔ)器尾地址)保存的來自系統(tǒng)的第一易失性數(shù)據(jù)的第一系統(tǒng)數(shù)據(jù)體、第二系統(tǒng)數(shù)據(jù)體、……、第m系統(tǒng)數(shù)據(jù)體,第二區(qū)隨機(jī)存儲(chǔ)器(從第二區(qū)隨機(jī)存儲(chǔ)器首地址至第二區(qū)隨機(jī)存儲(chǔ)器尾地址)保存在來自應(yīng)用程序的數(shù)據(jù)體。
[0082]如圖9所示,在邏輯通道Im和邏輯通道In上先后分別選中應(yīng)用i和應(yīng)用j時(shí)(此時(shí),應(yīng)用i為當(dāng)前應(yīng)用程序,應(yīng)用j為目標(biāo)應(yīng)用程序),系統(tǒng)會(huì)將應(yīng)用i的所有易失性數(shù)據(jù)的數(shù)據(jù)體(也即當(dāng)前數(shù)據(jù))備份在第四可編程只讀存儲(chǔ)器的第I備份空間中,并在第二區(qū)隨機(jī)存儲(chǔ)器中保存應(yīng)用j的第一數(shù)據(jù)體、應(yīng)用j的第二數(shù)據(jù)體、……、應(yīng)用j的第y數(shù)據(jù)體,在該種情況下,將應(yīng)用i的狀態(tài)由運(yùn)行態(tài)修改為掛起態(tài),將應(yīng)用j的狀態(tài)由退選態(tài)修改為運(yùn)行態(tài)。在邏輯通道Ip上選中應(yīng)用k時(shí)(此時(shí),應(yīng)用k為目標(biāo)應(yīng)用程序,應(yīng)用j為當(dāng)前應(yīng)用程序),將應(yīng)用j的所有易失性數(shù)據(jù)的數(shù)據(jù)體(包括應(yīng)用j的第一數(shù)據(jù)體、應(yīng)用j的第二數(shù)據(jù)體、……、應(yīng)用j的第y數(shù)據(jù)體)備份在第2備份空間,并將應(yīng)用k的第一數(shù)據(jù)體、應(yīng)用k的第二數(shù)據(jù)體、……、應(yīng)用k的第z數(shù)據(jù)體保存在存儲(chǔ)位置上,并且將應(yīng)用j的狀態(tài)由運(yùn)行態(tài)修改為掛起態(tài),將應(yīng)用k的狀態(tài)由退選態(tài)修改為運(yùn)行態(tài)。如果此時(shí),用戶通過卡外實(shí)體發(fā)送應(yīng)用程序j的數(shù)據(jù)處理請(qǐng)求(此時(shí),應(yīng)用k為當(dāng)前應(yīng)用程序,應(yīng)用j為目標(biāo)應(yīng)用程序),則將應(yīng)用k的所有易失性數(shù)據(jù)的數(shù)據(jù)體(包括應(yīng)用k的第一數(shù)據(jù)體、應(yīng)用k的第二數(shù)據(jù)體、……、應(yīng)用k的第z數(shù)據(jù)體)備份在第I備份空間,并將上一次備份的應(yīng)用j的所有第一易失性數(shù)據(jù)的數(shù)據(jù)體備份在第2備份空間。
[0083]通過本發(fā)明的上述實(shí)施例,通過備份RAM_APP至EEPROM的方式,使得所有的APP都可以共享RAM_APP的全部空間,并且可以使得單個(gè)APP可分配的RAM資源最大化,從而使得并發(fā)APP的最大個(gè)數(shù)不受RAM資源大小限制。
[0084]根據(jù)本發(fā)明的上述實(shí)施例,數(shù)據(jù)處理請(qǐng)求可以包括創(chuàng)建請(qǐng)求,屬性參數(shù)可以包括:空間容量參數(shù),第一易失性數(shù)據(jù)包括屬性頭和數(shù)據(jù)體,其中,在智能卡的隨機(jī)存儲(chǔ)器中獲取與屬性參數(shù)對(duì)應(yīng)的存儲(chǔ)位置的步驟包括:獲取第一總長度,其中,第一總長度為目標(biāo)應(yīng)用程序已經(jīng)創(chuàng)建的所有易失性數(shù)據(jù)的數(shù)據(jù)體的總長度;在隨機(jī)存儲(chǔ)器中為目標(biāo)應(yīng)用程序分配存儲(chǔ)位置,其中,存儲(chǔ)位置的起始地址為從物理內(nèi)存的起始地址偏移第一總長度的位置,存儲(chǔ)位置的長度為空間容量參數(shù)的值,空間容量參數(shù)為第一易失性數(shù)據(jù)的長度。
[0085]其中,上述步驟具體是在第二區(qū)隨機(jī)存儲(chǔ)器中獲取與屬性參數(shù)對(duì)應(yīng)的存儲(chǔ)位置,更具體地,在第二區(qū)隨機(jī)存儲(chǔ)器中為目標(biāo)應(yīng)用程序分配存儲(chǔ)位置,其中的,存儲(chǔ)位置的起始地址為從第二區(qū)隨機(jī)存儲(chǔ)器的起始地址偏移第一總長度的位置。
[0086]在本發(fā)明的上述實(shí)施例中,在隨機(jī)存儲(chǔ)器中為目標(biāo)應(yīng)用程序分配存儲(chǔ)位置之前,方法還可以包括:在智能卡的可編程只讀存儲(chǔ)器中尋找空閑單元,并將空閑單元的索引數(shù)據(jù)作為第一易失性數(shù)據(jù)的第一數(shù)據(jù)標(biāo)識(shí);在可編程只讀存儲(chǔ)器中為屬性頭分配第一空間,將第一空間的第一起始地址寫入空閑單元,其中,第一空間包括:標(biāo)識(shí)字段、數(shù)據(jù)體起始地址字段和數(shù)據(jù)體長度字段;將當(dāng)前應(yīng)用程序的第一程序標(biāo)識(shí)、空間容量參數(shù)以及第一總長度的值分別寫入標(biāo)識(shí)字段、數(shù)據(jù)體起始地址字段和數(shù)據(jù)體長度字段。
[0087]具體地,在智能卡的第二可編程只讀存儲(chǔ)器中尋找空閑單元,并將空閑單元的索引數(shù)據(jù)作為第一易失性數(shù)據(jù)的第一數(shù)據(jù)標(biāo)識(shí);在第一可編程只讀存儲(chǔ)器中為屬性頭分配第一空間,將第一空間的第一起始地址寫入第二可編程只讀存儲(chǔ)器中的空閑單元。
[0088]根據(jù)本發(fā)明的上述實(shí)施例,數(shù)據(jù)處理請(qǐng)求可以包括讀取請(qǐng)求,屬性參數(shù)可以包括:第一數(shù)據(jù)標(biāo)識(shí)、相對(duì)于第一易失性數(shù)據(jù)的數(shù)據(jù)體的起始地址的第一偏移參數(shù)、第一目的地址參數(shù)以及讀取長度,其中,在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理的步驟可以包括:從與第一數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的空閑單元中讀取第一起始地址;獲取與第一起始地址對(duì)應(yīng)的第一空間;檢測(cè)目標(biāo)應(yīng)用程序的目標(biāo)程序標(biāo)識(shí)與第一空間的標(biāo)識(shí)字段中存儲(chǔ)的第一程序標(biāo)識(shí)(也即當(dāng)前應(yīng)用程序的程序標(biāo)識(shí))是否一致;在目標(biāo)程序標(biāo)識(shí)與第一程序標(biāo)識(shí)一致的情況下,讀取數(shù)據(jù)體起始地址,以獲取第一易失性數(shù)據(jù),其中,第一易失性數(shù)據(jù)的第二起始地址為存儲(chǔ)位置的起始地址、數(shù)據(jù)體起始地址以及第一偏移參數(shù)的值之和,第一易失性數(shù)據(jù)的長度為讀取長度;將第一易失性數(shù)據(jù)拷貝至第一目的地址參數(shù)指向的第一存儲(chǔ)空間。
[0089]其中,從第二可編程只讀存儲(chǔ)器中對(duì)應(yīng)的空閑單元讀取第一起始地址,在獲取與第一起始地址對(duì)應(yīng)的第一空間之后,并且在目標(biāo)應(yīng)用程序標(biāo)識(shí)與第一程序標(biāo)識(shí)一致的情況下,也即存儲(chǔ)位置當(dāng)前存儲(chǔ)的數(shù)據(jù)即為目標(biāo)應(yīng)用程序的數(shù)據(jù),讀取第一總長度體起始地址。
[0090]在本發(fā)明的上述實(shí)施例中,數(shù)據(jù)處理請(qǐng)求可以包括更新請(qǐng)求,屬性參數(shù)可以包括:第一數(shù)據(jù)標(biāo)識(shí)、第一易失性數(shù)據(jù)的數(shù)據(jù)體的起始地址的第一偏移參數(shù)、源數(shù)據(jù)的起始地址參數(shù)以及更新長度,其中,在存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理的步驟可以包括:從與第一數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的空閑單元中讀取第一起始地址;獲取與第一起始地址對(duì)應(yīng)的第一空間;檢測(cè)目標(biāo)應(yīng)用程序的目標(biāo)程序標(biāo)識(shí)與第一空間的標(biāo)識(shí)字段中存儲(chǔ)的第一程序標(biāo)識(shí)是否一致;在目標(biāo)程序標(biāo)識(shí)與第一程序標(biāo)識(shí)一致的情況下,讀取數(shù)據(jù)體起始地址,以獲取第二存儲(chǔ)空間,其中,第二存儲(chǔ)空間是存儲(chǔ)位置的起始地址、數(shù)據(jù)體起始地址以及第一偏移參數(shù)的值之和指向的空間;將第一易失性數(shù)據(jù)拷貝至第二存儲(chǔ)空間,其中,第一易失性數(shù)據(jù)的起始地址為起始地址參數(shù)對(duì)應(yīng)的地址,第一易失性數(shù)據(jù)的長度為更新長度。
[0091]其中,在該實(shí)施例中,可以從第二可編程只讀存儲(chǔ)器中對(duì)應(yīng)的空閑單元讀取第一起始地址,在獲取與第一起始地址對(duì)應(yīng)的第一空間之后,并且在目標(biāo)應(yīng)用程序標(biāo)識(shí)與第一程序標(biāo)識(shí)一致的情況下,也即存儲(chǔ)位置當(dāng)前存儲(chǔ)的數(shù)據(jù)即為目標(biāo)應(yīng)用程序的數(shù)據(jù),讀取第一總長度體起始地址。
[0092]具體地,在隨機(jī)存儲(chǔ)器中為目標(biāo)應(yīng)用程序分配存儲(chǔ)位置之后,方法還可以包括:將第一總長度與空間容量參數(shù)之和作為第二總長度,并使用第二總長度更新第一總長度。
[0093]具體地,通過應(yīng)用程序向處理器中的易失性數(shù)據(jù)管理模塊發(fā)起創(chuàng)建、讀取、更新屬于自己的AVD的請(qǐng)求,并維護(hù)屬于自己的AVDID。如果該數(shù)據(jù)處理請(qǐng)求是創(chuàng)建請(qǐng)求,應(yīng)用對(duì)易失性數(shù)據(jù)管理模塊傳入的屬性參數(shù)包括:空間容量參數(shù)(即創(chuàng)建空間的大小參數(shù)alloc_size);如果是讀取請(qǐng)求,應(yīng)用對(duì)易失性數(shù)據(jù)管理模塊傳入的屬性參數(shù)包括:第一易失性數(shù)據(jù)的第一數(shù)據(jù)標(biāo)識(shí)AVDID、第一易失性數(shù)據(jù)的數(shù)據(jù)體的起始地址的第一偏移參數(shù)offset、第一易失性數(shù)據(jù)的第一目的地址參數(shù)dst_addr以及讀取長度length ;如果是更新請(qǐng)求,應(yīng)用對(duì)易失性數(shù)據(jù)管理模塊傳入的屬性參數(shù)可以包括:第一易失性數(shù)據(jù)的第一數(shù)據(jù)標(biāo)識(shí)AVDID、源數(shù)據(jù)的數(shù)據(jù)體的起始地址的第一偏移參數(shù)offset、第一易失性數(shù)據(jù)的源數(shù)據(jù)的起始地址參數(shù)src_addr以及更新長度length。其中,上述實(shí)施例中應(yīng)用向易失性數(shù)據(jù)管理模塊傳入的屬性參數(shù)均是攜帶在數(shù)據(jù)處理請(qǐng)求中。
[0094]在應(yīng)用程序發(fā)起的數(shù)據(jù)處理請(qǐng)求為讀取請(qǐng)求或更新請(qǐng)求的情況下,需要先執(zhí)行創(chuàng)建請(qǐng)求,也即需要先在存儲(chǔ)位置創(chuàng)建該目標(biāo)應(yīng)用程序的程序易失性數(shù)據(jù)。
[0095]具體地,APP對(duì)易失性數(shù)據(jù)管理模塊發(fā)起創(chuàng)建或讀取或更新AVD請(qǐng)求時(shí),在此之前必須通過卡外實(shí)體與智能卡的交互選中該APP。例如,APPi和APPj先后對(duì)易失性數(shù)據(jù)管理模塊發(fā)起創(chuàng)建或讀取或更新AVD請(qǐng)求時(shí),操作系統(tǒng)模塊可以在APPj被選中時(shí),對(duì)易失性數(shù)據(jù)管理模塊發(fā)起清除前一刻被選中APPi的所有AVD的請(qǐng)求,也可以對(duì)易失性數(shù)據(jù)管理模塊發(fā)起備份前一刻被選中APPi的所有AVD (即當(dāng)前存儲(chǔ)數(shù)據(jù)或當(dāng)前數(shù)據(jù))的請(qǐng)求,并隨后發(fā)起初始化被選擇APPj的所有AVD的請(qǐng)求。
[0096]更具體地,在來自應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求為創(chuàng)建請(qǐng)求的情況下,可以通過如下方法實(shí)現(xiàn)對(duì)當(dāng)前選中的應(yīng)用程序(即目標(biāo)應(yīng)用程序)的數(shù)據(jù)創(chuàng)建:1)將內(nèi)存EEPR0M_AVDID看做以四字節(jié)為單元的數(shù)組,在該數(shù)組中尋找空閑單元。如果找到空閑單元,記錄該單元的索引數(shù)據(jù)index ;2)在內(nèi)存EEPR0M_AVDHR中分配一個(gè)大小為Header_Size (屬性頭的長度)的第一空間用于存儲(chǔ)目標(biāo)應(yīng)用程序的Header,將該第一空間的第一起始地址(即首地址)寫Λ EEPROM_AVDID的空閑單元;從操作系統(tǒng)模塊中獲取當(dāng)前被選中的APP(即目標(biāo)應(yīng)用程序)的AID,將aid和alloC_siZe分別寫入Header的標(biāo)識(shí)字段(Aid字段)和數(shù)據(jù)體長度字段(Body_Size字段);3)將內(nèi)存EEPROM_AVDSIZE看作四字節(jié)一單元的數(shù)組,讀取對(duì)應(yīng)目標(biāo)應(yīng)用程序的第aid個(gè)單元的值,記作AVD_Size_aid (即第一總長度);從內(nèi)存RAM_APP的偏移AVD_size_aid處開始,分配大小為alloc_size的空間,更新EEPROM_AVDSIZE內(nèi)存中第aid單元的值為(AVD_size_aid+alloc_size,更新后為第二總長度),并將第一總長度的值寫入Header的Body_Address (即數(shù)據(jù)體起始地址字段);4)將index作為第一數(shù)據(jù)標(biāo)識(shí)AVDID,并返回給操作系統(tǒng)模塊。
[0097]在來自應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求為讀取請(qǐng)求的情況下,可以通過如下方法實(shí)現(xiàn)對(duì)當(dāng)前選中的應(yīng)用程序(即目標(biāo)應(yīng)用程序)的數(shù)據(jù)的讀取:1)易失性數(shù)據(jù)管理模塊從內(nèi)存EEPR0M_AVDID的第AVDID個(gè)單元讀取Header的首地址,如果為NULL (O)則退出,反之繼續(xù);2)從操作系統(tǒng)模塊獲取當(dāng)前被選中的APP的aid,和Header的Aid字段值比較,如果不相同,請(qǐng)求終止,反之繼續(xù);3)從Header的Body_Address字段獲取數(shù)據(jù)體的首地址body_address (其值等于第一總長度的值),將body_address+存儲(chǔ)位置的起始地址+offset為起始地址,大小為length的空間中的數(shù)據(jù)拷貝至dst_addr指向的空間。
[0098]在來自應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求為更新請(qǐng)求的情況下,可以通過如下方法實(shí)現(xiàn)對(duì)當(dāng)前選中的應(yīng)用程序(即目標(biāo)應(yīng)用程序)的數(shù)據(jù)的更新:1)易失性數(shù)據(jù)管理模塊從內(nèi)存EEPR0M_AVDID的第AVDID個(gè)單元讀取Header的首地址,如果為NULL (O)則退出,反之繼續(xù);2)從操作系統(tǒng)模塊獲取當(dāng)前被選中的APP的aid,和Header的Aid字段值比較,如果不相同,請(qǐng)求終止,反之繼續(xù);3)從Header的Body_Address字段獲取數(shù)據(jù)體的首地址body_address,將dst_addr為起始地址,大小為length的空間數(shù)據(jù)拷貝至(body_address+offset)指向的空間中
[0099]另外,操作系統(tǒng)的數(shù)據(jù)處理請(qǐng)求也可以通過操作系統(tǒng)模塊對(duì)易失性數(shù)據(jù)管理模塊發(fā)起,其中,包括創(chuàng)建、讀取、更新來自系統(tǒng)的系統(tǒng)易失性數(shù)據(jù)的請(qǐng)求。如果該請(qǐng)求是創(chuàng)建請(qǐng)求,操作系統(tǒng)模塊對(duì)系統(tǒng)易失性數(shù)據(jù)管理模塊傳入的屬性參數(shù)可以包括空間容量參數(shù),即創(chuàng)建空間的大小參數(shù)alloC_siZe ;如果是讀取請(qǐng)求,操作系統(tǒng)模塊對(duì)系統(tǒng)易失性數(shù)據(jù)管理模塊傳入的屬性參數(shù)可以包括:系統(tǒng)易失性數(shù)據(jù)的第一系統(tǒng)標(biāo)識(shí)0VDID、系統(tǒng)易失性數(shù)據(jù)的數(shù)據(jù)體的起始地址的第二偏移參數(shù)offset、系統(tǒng)易失性數(shù)據(jù)的第二目的地址參數(shù)dst_addr以及系統(tǒng)讀取長度length ;如果是更新請(qǐng)求,操作系統(tǒng)模塊對(duì)系統(tǒng)易失性數(shù)據(jù)管理模塊傳入屬性參數(shù)可以包括:系統(tǒng)易失性數(shù)據(jù)的第一系統(tǒng)標(biāo)識(shí)0VDID、系統(tǒng)易失性數(shù)據(jù)的數(shù)據(jù)體的起始地址的第一偏移參數(shù)offset、源數(shù)據(jù)的起始地址參數(shù)src_addr以及系統(tǒng)更新長度 length。
[0100]具體地,如果來自系統(tǒng)的數(shù)據(jù)處理請(qǐng)求是創(chuàng)建請(qǐng)求,則在RAM_0S中開辟一塊大小alloC_size的空間,并將起始地址作為OVDID返回;如果是讀取請(qǐng)求,則根據(jù)傳入的參數(shù)OVDID、offset、dst_addr、length,將從OVDID與offset之和作為起始地址拷貝長度為length的數(shù)據(jù)至dst_addr中;如果是更新請(qǐng)求,從src_addr開始,將length長度的數(shù)據(jù)拷貝至OVDID與offset之和作為起始地址的空間中。
[0101]需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0102]從以上的描述中,可以看出,本發(fā)明實(shí)現(xiàn)了如下技術(shù)效果:采用本發(fā)明,在接收到目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求之后,獲取與數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置,然后使用第一處理模塊在該存儲(chǔ)位置對(duì)目標(biāo)應(yīng)用程序請(qǐng)求處理的第一易失性數(shù)據(jù)進(jìn)行處理,其中,該存儲(chǔ)位置位于智能卡中固定的一段物理內(nèi)存中,這樣可以將來自任意應(yīng)用程序的處于運(yùn)行態(tài)的APP的第一易失性數(shù)據(jù)均在該固定的一段物理內(nèi)存中處理,從而可以讓所有的APP共享一段物理RAM內(nèi)存,從而達(dá)到節(jié)省物理RAM空間的目的,解決了現(xiàn)有技術(shù)中智能卡在多應(yīng)用使用環(huán)境下RAM物理空間不足的問題,實(shí)現(xiàn)了多個(gè)應(yīng)用共享RAM物理空間的效果。
[0103]顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0104]以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種基于智能卡的數(shù)據(jù)處理方法,其特征在于,包括: 接收目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求; 獲取與所述數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置; 在所述存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理, 其中,所述存儲(chǔ)位置位于智能卡中固定的一段物理內(nèi)存中,所述第一易失性數(shù)據(jù)為所述目標(biāo)應(yīng)用程序所請(qǐng)求處理的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理之前,所述方法還包括: 檢測(cè)所述智能卡中是否存在狀態(tài)為運(yùn)行態(tài)的當(dāng)前應(yīng)用程序; 在所述智能卡中存在狀態(tài)為運(yùn)行態(tài)的所述當(dāng)前應(yīng)用程序的情況下,檢測(cè)所述當(dāng)前應(yīng)用程序與所述目標(biāo)應(yīng)用程序是否一致, 在所述當(dāng)前應(yīng)用程序與所述目標(biāo)應(yīng)用程序不一致的情況下,檢測(cè)所述當(dāng)前應(yīng)用程序與所述目標(biāo)應(yīng)用程序是否位于所述智能卡上相同的邏輯通道; 在所述當(dāng)前應(yīng)用程序與所述目標(biāo)應(yīng)用程序位于不同的邏輯通道的情況下,備份所述當(dāng)前應(yīng)用程序的當(dāng)前數(shù)據(jù); 在所述當(dāng)前應(yīng)用程序與所述目標(biāo)應(yīng)用程序位于相同的邏輯通道的情況下,清除所述存儲(chǔ)位置上的所述當(dāng)前數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理的步驟包括: 在所述當(dāng)前應(yīng)用程序與所述目標(biāo)應(yīng)用程序位于不同的邏輯通道的情況下,檢測(cè)所述目標(biāo)應(yīng)用程序的狀態(tài); 在所述目標(biāo)應(yīng)用程序的狀態(tài)為掛起態(tài)的情況下,從掛起地址讀取所述目標(biāo)應(yīng)用程序的備份數(shù)據(jù),將所述備份數(shù)據(jù)和所述第一易失性數(shù)據(jù)寫入所述存儲(chǔ)位置,其中,所述掛起地址為預(yù)設(shè)的備份所述備份數(shù)據(jù)的固定地址; 在所述目標(biāo)應(yīng)用程序的狀態(tài)為退選態(tài)的情況下,初始化所述目標(biāo)應(yīng)用程序的數(shù)據(jù),將所述第一易失性數(shù)據(jù)寫入所述存儲(chǔ)位置。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,備份所述當(dāng)前應(yīng)用程序的當(dāng)前數(shù)據(jù)的步驟包括: 獲取所述當(dāng)前數(shù)據(jù)的備份地址; 將所述當(dāng)前數(shù)據(jù)作為備份數(shù)據(jù)保存在所述備份地址中,其中,所述備份地址為預(yù)設(shè)的存儲(chǔ)器中的固定地址。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,獲取與所述數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置的步驟包括: 獲取與所述數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的屬性參數(shù); 在所述智能卡的隨機(jī)存儲(chǔ)器中獲取與所述屬性參數(shù)對(duì)應(yīng)的所述存儲(chǔ)位置。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述數(shù)據(jù)處理請(qǐng)求包括創(chuàng)建請(qǐng)求,所述屬性參數(shù)包括:空間容量參數(shù),所述第一易失性數(shù)據(jù)包括屬性頭和數(shù)據(jù)體,其中,在所述智能卡的隨機(jī)存儲(chǔ)器中獲取與所述屬性參數(shù)對(duì)應(yīng)的所述存儲(chǔ)位置的步驟包括: 獲取第一總長度,其中,所述第一總長度為所述目標(biāo)應(yīng)用程序已經(jīng)創(chuàng)建的所有易失性數(shù)據(jù)的數(shù)據(jù)體的總長度; 在所述隨機(jī)存儲(chǔ)器中為所述目標(biāo)應(yīng)用程序分配所述存儲(chǔ)位置, 其中,所述存儲(chǔ)位置的起始地址為從所述物理內(nèi)存的起始地址偏移所述第一總長度的位置,所述存儲(chǔ)位置的長度為所述空間容量參數(shù)的值,所述空間容量參數(shù)為所述第一易失性數(shù)據(jù)的長度。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在所述隨機(jī)存儲(chǔ)器中為所述目標(biāo)應(yīng)用程序分配所述存儲(chǔ)位置之前,所述方法還包括: 在所述智能卡的可編程只讀存儲(chǔ)器中尋找空閑單元,并將所述空閑單元的索引數(shù)據(jù)作為所述第一易失性數(shù)據(jù)的第一數(shù)據(jù)標(biāo)識(shí); 在可編程只讀存儲(chǔ)器中為所述屬性頭分配第一空間,將所述第一空間的第一起始地址寫入所述空閑單元,其中,所述第一空間包括:標(biāo)識(shí)字段、數(shù)據(jù)體起始地址字段和數(shù)據(jù)體長度字段; 將當(dāng)前應(yīng)用程序的第一程序標(biāo)識(shí)、所述空間容量參數(shù)以及所述第一總長度的值分別寫入所述標(biāo)識(shí)字段、所述數(shù)據(jù)體長度字段以及所述數(shù)據(jù)體起始地址字段。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述數(shù)據(jù)處理請(qǐng)求包括讀取請(qǐng)求,所述屬性參數(shù)包括:所述第一數(shù)據(jù)標(biāo)識(shí)、相對(duì)于所述第一易失性數(shù)據(jù)的數(shù)據(jù)體的起始地址的第一偏移參數(shù)、第一目的地址參數(shù)以及讀取長度,其中,在所述存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理的步驟包括: 從與所述第一數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的所述空閑單元中讀取第一起始地址; 獲取與所述第一起始地址對(duì)應(yīng)的第一空間; 檢測(cè)所述目標(biāo)應(yīng)用程序的目標(biāo)程序標(biāo)識(shí)與所述第一空間的標(biāo)識(shí)字段中存儲(chǔ)的所述第一程序標(biāo)識(shí)是否一致; 在所述目標(biāo)程序標(biāo)識(shí)與所述第一程序標(biāo)識(shí)一致的情況下,讀取數(shù)據(jù)體起始地址,以獲取所述第一易失性數(shù)據(jù), 其中,所述第一易失性數(shù)據(jù)的第二起始地址為所述存儲(chǔ)位置的起始地址、所述數(shù)據(jù)體起始地址以及所述第一偏移參數(shù)的值之和,所述第一易失性數(shù)據(jù)的長度為所述讀取長度;將所述第一易失性數(shù)據(jù)拷貝至所述第一目的地址參數(shù)指向的第一存儲(chǔ)空間。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述數(shù)據(jù)處理請(qǐng)求包括更新請(qǐng)求,所述屬性參數(shù)包括:所述第一數(shù)據(jù)標(biāo)識(shí)、所述第一易失性數(shù)據(jù)的數(shù)據(jù)體的起始地址的第一偏移參數(shù)、源數(shù)據(jù)的起始地址參數(shù)以及更新長度,其中,在所述存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理的步驟包括: 從與所述第一數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的所述空閑單元中讀取第一起始地址; 獲取與所述第一起始地址對(duì)應(yīng)的第一空間; 檢測(cè)所述目標(biāo)應(yīng)用程序的目標(biāo)程序標(biāo)識(shí)與所述第一空間的標(biāo)識(shí)字段中存儲(chǔ)的所述第一程序標(biāo)識(shí)是否一致; 在所述目標(biāo)程序標(biāo)識(shí)與所述第一程序標(biāo)識(shí)一致的情況下,讀取數(shù)據(jù)體起始地址,以獲取第二存儲(chǔ)空間,其中,所述第二存儲(chǔ)空間是所述存儲(chǔ)位置的起始地址、所述數(shù)據(jù)體起始地址以及所述第一偏移參數(shù)的值之和指向的空間; 將所述第一易失性數(shù)據(jù)拷貝至第二存儲(chǔ)空間,其中,所述第一易失性數(shù)據(jù)的起始地址為所述起始地址參數(shù)對(duì)應(yīng)的地址,所述第一易失性數(shù)據(jù)的長度為所述更新長度。
10.根據(jù)權(quán)利要求7至9中任意一項(xiàng)所述的方法,其特征在于,在所述隨機(jī)存儲(chǔ)器中為所述目標(biāo)應(yīng)用程序分配所述存儲(chǔ)位置之后,所述方法還包括: 將所述第一總長度與所述空間容量參數(shù)之和作為第二總長度,并使用所述第二總長度更新所述第一總長度。
11.一種基于智能卡的數(shù)據(jù)處理裝置,其特征在于,包括: 第一接收模塊,用于接收目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求; 第一獲取模塊,用于獲取與所述數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置; 第一處理模塊,用于在所述存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理, 其中,所述存儲(chǔ)位置位于智能卡中固定的一段物理內(nèi)存中,所述第一易失性數(shù)據(jù)為所述目標(biāo)應(yīng)用程序所請(qǐng)求處理的數(shù)據(jù)。
12.—種智能卡,其特征在于,包括: 處理器,用于在接收到目標(biāo)應(yīng)用程序的數(shù)據(jù)處理請(qǐng)求之后,獲取與所述數(shù)據(jù)處理請(qǐng)求對(duì)應(yīng)的存儲(chǔ)位置,然后在所述存儲(chǔ)位置上對(duì)第一易失性數(shù)據(jù)進(jìn)行數(shù)據(jù)處理, 其中,所述存儲(chǔ)位置位于智能卡中固定的一段物理內(nèi)存中,所述第一易失性數(shù)據(jù)為所述目標(biāo)應(yīng)用程序所請(qǐng)求處理的數(shù)據(jù)。
13.根據(jù)權(quán)利要求12所述的智能卡,其特征在于,所述智能卡還包括: 可編程只讀存儲(chǔ)器,用于保存來自應(yīng)用程序的程序易失性數(shù)據(jù)的屬性頭; 隨機(jī)存儲(chǔ)器,包括第一區(qū)隨機(jī)存儲(chǔ)器和第二區(qū)隨機(jī)存儲(chǔ)器,其中,第一區(qū)隨機(jī)存儲(chǔ)器用于保存來自系統(tǒng)的系統(tǒng)易失性數(shù)據(jù)的數(shù)據(jù)體,所述第二區(qū)隨機(jī)存儲(chǔ)器用于保存所述程序易失性數(shù)據(jù)的數(shù)據(jù)體。
14.根據(jù)權(quán)利要求13所述的智能卡,其特征在于,所述可編程只讀存儲(chǔ)器包括: 第一可編程只讀存儲(chǔ)器,用于保存一個(gè)或多個(gè)程序易失性數(shù)據(jù)的屬性頭,每個(gè)所述程序易失性數(shù)據(jù)的屬性頭占用一個(gè)子空間,每個(gè)所述子空間包括:標(biāo)識(shí)字段、數(shù)據(jù)體起始地址字段和數(shù)據(jù)體長度字段,其中, 所述標(biāo)識(shí)字段,用于保存所述應(yīng)用程序的程序標(biāo)識(shí); 所述數(shù)據(jù)體起始地址字段,用于保存所述數(shù)據(jù)體在所述隨機(jī)存儲(chǔ)器中的地址參數(shù); 所述數(shù)據(jù)體長度字段,用于保存所述程序易失性數(shù)據(jù)的數(shù)據(jù)體的長度數(shù)據(jù); 第二可編程只讀存儲(chǔ)器,包括一個(gè)或多個(gè)空閑單元,每個(gè)所述空閑單元分別用于保存一個(gè)所述屬性頭所占所述子空間的第一起始地址; 第三可編程只讀存儲(chǔ)器,用于保存所述應(yīng)用程序已經(jīng)創(chuàng)建的程序易失性數(shù)據(jù)的數(shù)據(jù)體的總長度; 第四可編程只讀存儲(chǔ)器,包括多個(gè)分區(qū),每個(gè)分區(qū)用于保存一個(gè)所述應(yīng)用程序的備份數(shù)據(jù)。
【文檔編號(hào)】G06F12/10GK104346298SQ201310339964
【公開日】2015年2月11日 申請(qǐng)日期:2013年8月6日 優(yōu)先權(quán)日:2013年8月6日
【發(fā)明者】鄭黎方, 劉智超, 陳德權(quán), 聶國賢 申請(qǐng)人:北京數(shù)碼視訊軟件技術(shù)發(fā)展有限公司