一种动态管理JavaCard暂态资源的方法及系统的制作方法
【技术领域】
[0001]本发明涉及JavaCard暂态资源的管理技术领域,具体来讲是一种动态管理JavaCard暂态资源的方法及系统。
【背景技术】
[0002]JavaCard是一种能让智能卡或与智能卡相近的装置以具有安全防护性的方式来执行小型的Java Applet (小应用程序)的技术。JavaCard平台是一个以JavaCard为基础的作业系统,可以为JavaCard应用提供运行所需的暂态资源。JavaCard的问世,一方面是为了推展Java的应用层次,另一方面也是为了将JavaCard平台的特性以及Java的好处带到智能卡上,由于在JavaCard的基础之上开发应用具有平台无关性和安全性,因此,JavaCard已被广泛应用于金融和通讯等领域中。
[0003]在JavaCard的基础之上开发Applet虽然方便,但是与传统Applet开发比较而言,资源和性能的有效利用是它最大的问题。由于JavaCard平台写EEPROM(Electrically-Erasable Programmable Read-Only Memory,电子抹除式可复写只读存储器)需要耗费的时间比例是常规流程中最大的,因此,解决资源和性能问题的最直接做法就是尽量用RAM (Random Access Memory,随机存储器)来代替EEPROM的操作(即减少写EEPROM的次数)。但是对于JavaCard平台来说,RAM资源却是非常有限的,如何有效管理并使用JavaCard平台的RAM资源,使RAM提供的暂态资源能满足各JavaCard应用的需求是本领域亟待解决的问题。
[0004]JavaCard 应用通过 JavaCard API (Applicat1n Programming Interface,应用编程接口)来申请JavaCard暂态资源。JavaCard暂态资源按类型分为DTR(Clearn OnDeselect,取消清除)RTR (Clearn On Reset,复位清除)。
[0005]目前,对于JavaCard暂态资源的管理,大体分为以下两种方式:
[0006](1)统一管理DTR、RTR资源的方式,其遵循以下管理机制:
[0007]如图1所示,初始状态下,整个可用的暂态资源大小为单个卡片可提供的最大空间:TRANSIENT_SIZE;当含有JavaCard应用的应用包申请一个大小为sizeDl的DTR后,则剩余的暂态资源空间为:TRANSIENT_SIZE-siZeDl ;当其他应用包再申请大小为sizeRl的RTR后,则剩余暂态资源空间为:TRANSIENT_SIZE-sizeDl-sizeRl ;当其他应用包继续申请大小为sizeD2的DTR后,则剩余的暂态资源空间为:TRANSIENT_SIZE-sizeDl-sizeRl-sizeD2 ;以此类推,无论是申请DTR还是RTR,剩余的暂态资源都会相应的变化,整个暂态资源空间为线性结构,遵循谁先申请,分配给谁的原则。
[0008]这种管理方式虽然相对简单,但是存在DTR资源空间、RTR资源空间不可复用的问题,使得资源利用率较低,遇到应用包较多的情况,可能会导致后续应用包的应用因RAM不足而安装不成功的风险。
[0009](2)分开管理DTR、RTR资源的方式,其遵循以下管理机制:
[0010]如图2所示,将DTR和RTR的资源空间独立开,初始状态下,按照卡片支持4个逻辑通道的实现方式(JCRE2.2.1规范支持4个逻辑通道),为每个逻辑通道预分配SizeDmax大小的DTR资源空间(sizeDmax为卡片可提供的最大DTR空间),则剩余的暂态资源空间为RTR资源的最大申请空间,即TRANSIENT_SIZE-sizeDmax*4 ;当有应用包申请了 sizeDl、sizeD2大小的DTR后,只有在激活某个逻辑通道(如逻辑通道O)的时候,才将申请的DTR的实际地址占用到对应逻辑通道的物理地址上;当有应用包申请了 sizeRl、sizeR2大小的RTR后,则该应用包的应用会一直占用RTR资源空间,对应的剩余暂态资源空间也会相应的减少。
[0011]这种管理方式虽然使得DTR的资源空间可以得到资源复用,满足了多应用包都可以申请sizeDmax大小的DTR资源的要求,但是,DTR和RTR须分开进行管理,并且每个逻辑通道的DTR资源空间的大小开始就预置好了,导致用户可使用的最大暂态资源受到限制,只能申请sizeDmax大小的DTR资源,RTRANSIENT_SIZE_4*sizeDmax大小的RTR资源,管理灵活性差,适应性不高。
【发明内容】
[0012]本发明的目的是为了克服上述【背景技术】的不足,提供一种动态管理JavaCard暂态资源的方法及系统,不但有效提高了资源利用率,而且管理灵活,适应性高。
[0013]为达到以上目的,本发明提供一种动态管理JavaCard暂态资源的方法及系统,包括以下步骤:
[0014]S1:为暂态资源分配一个总的暂态资源空间,转入S2 ;
[0015]S2:当存储于逻辑通道内的应用包申请暂态资源时,暂态资源包括DTR资源、RTR资源,判断可用暂态资源空间大小是否满足本次申请需求,若是,则申请相应的暂态资源,转入S3 ;若否,则提示空间不足的异常信息,结束;
[0016]S3:在RTR资源的使用过程中,将总的暂态资源空间内的RTR空间提供给申请它的应用包一直占用,直至卡片复位时,才进行清零处理;在DTR资源的使用过程中,根据申请DTR的应用包的激活状态或去激活状态,对总的暂态资源空间内的DTR空间大小进行动态分配和调整。
[0017]在上述技术方案的基础上,S2之前还包括以下步骤:记录各应用包所需申请的DTR空间大小,并将其中所需申请空间最大的应用包的DTR空间大小记录为sizeDm ;
[0018]S2中所述判断可用暂态资源空间大小是否满足本次申请需求,具体包括以下步骤:
[0019]将总的暂态资源空间大小TRANSIENT_SIZE定义为M,已申请的RTR空间大小sizeR定义为N,当前被激活的所有应用包的DTR空间大小sizeDruning定义为P,本次申请的空间大小定义为Q ;
[0020]当所申请的暂态资源类型为RTR时,判断过程如下:
[0021]先判断此次申请之前是否有申请DTR的应用包被激活;
[0022]若没有申请DTR的应用包被激活,则判断M-N是否> Q,若是,则判断为可用暂态资源空间大小能满足本次申请需求,若否,则判断为可用暂态资源空间大小不能满足本次申请需求;
[0023]若有申请DTR的应用包被激活,则判断sizeDm是否> P,若是,则进一步判断M-N-sizeDm是否> Q,若是,则判断为可用暂态资源空间大小能满足本次申请需求,若否,则判断为可用暂态资源空间大小不能满足本次申请需求;否则,判断M-N-P是否> Q,若是,则判断为可用暂态资源空间大小能满足本次申请需求,若否,则判断为可用暂态资源空间大小不能满足本次申请需求;
[0024]