分配JavaCard瞬态对象存储空间的方法和装置与流程

文档序号:13941047阅读:726来源:国知局

本发明涉及javacard技术,尤指一种分配javacard瞬态对象存储空间的方法和装置。



背景技术:

javacard技术是把java编程语言的一个子集同一个优化的运行环境结合在一起的技术。javacard技术针对小存储量的嵌入式设备,例如智能卡,目标是让资源受限的小存储量的嵌入式设备收益于用java语言开发的软件。小存储量设备主要包括存储空间小的只读存储器rom、电可擦可编程只读存储器eeprom、flash和随机存取存储器ram。其中ram的成本昂贵,但访问效率高,因此如何有效的使用ram,是javacard需要考虑的问题。

javacard规范中指定了两种类型的瞬态对象:复位清除rtr(clear_on_reset)和退选清除dtr(clear_on_deselect)。这两种瞬态对象用于存放临时数据。

现有技术中,javacard分配瞬态对象存储空间的方法包括:为rtr和dtr分配固定大小的ram空间,如固定分配1k的ram空间用于rtr对象的申请;若支持4个逻辑通道,每个逻辑通道分配1k的ram空间用于dtr对象的申请,这样的话总共需要5k的ram空间,如图1所示。由于对javacard应用开发的未知性,在为rtr和dtr分配固定大小的ram空间时,只能预置固定rtr和dtr的最大申请空间,在ram资源受限的情况下,这种实现方式未能有效的使用ram空间,而且不具灵活性。



技术实现要素:

为了解决上述技术问题,本发明提供了一种分配javacard瞬态对象存储空间的方法和装置。

为了达到本发明目的,本发明提供了一种分配javacard瞬态对象存储空间的方法,所述方法包括:

需要占用随机存取存储器ram空间时,临时为javacard瞬态对象申请空间;

当为javacard瞬态对象分配空间时,将复位清除rtr空间和退选清除dtr空间分别置于ram空间的首尾两端,将每个后申请的rtr空间和dtr空间分别与已存在的rtr空间和dtr空间在地址上保持连续。

可选的,所述将rtr空间和dtr空间分别置于ram空间的首尾两端,将每个后申请的rtr空间和dtr空间分别与已存在的rtr空间和dtr空间在地址上保持连续,包括:

将首次申请的rtr空间和dtr空间分别置于ram空间的首尾两端,分别将已申请的rtr空间和dtr空间的末尾地址作为后申请的rtr空间和dtr空间的起始地址。

可选的,所述分配rtr空间包括:

当ram可用的空间大于rtr申请的空间时,将已用的rtr空间的末尾地址作为申请的rtr空间的起始地址,并将申请的rtr空间增加至已使用的rtr空间中;

其中,ram可用的空间为ram总空间扣除已使用的rtr空间和dtr空间。

可选的,所述分配dtr空间包括:

为申请dtr的应用当前使用的每个数据包分配一片ram空间,每个数据包占用的ram空间在地址上连续。

可选的,为申请dtr的应用当前使用的每个数据包分配一片ram空间,每个数据包占用的ram空间在地址上连续,包括:

若申请dtr空间的应用使用的数据包已被分配了ram空间,且ram可用的空间大于dtr申请的空间时,将所述应用使用的数据包被分配空间的末尾地址作为所述申请的dtr空间的起始地址,将申请的dtr空间添加到为所述应用数据使用的数据包被分配的空间,并将在所述应用使用的数据包被分配的空间之后分配的数据包空间向rtr空间的方向移动所述申请的dtr空间;

若申请dtr空间的应用使用的数据包没有被分配ram空间,且ram可用的空间大于dtr申请的空间时,将已用的dtr空间的末尾地址作为申请的dtr空间的起始地址,并将申请的dtr空间增加至已使用的dtr空间中。

本发明实施例还提供了一种分配javacard瞬态对象存储空间的装置,所述装置包括:

空间申请模块,用于在需要占用随机存取存储器ram空间时,临时为javacard瞬态对象申请空间;

空间分配模块,用于将复位清除rtr空间和退选清除dtr空间分别置于ram空间的首尾两端,将每个后申请的rtr空间和dtr空间分别与已存在的rtr空间和dtr空间在地址上保持连续。

可选的,所述空间分配模块,用于将首次申请的rtr空间和dtr空间分别置于ram空间的首尾两端,分别将已申请的rtr空间和dtr空间的末尾地址作为后申请的rtr空间和dtr空间的起始地址。

可选的,所述空间分配模块,用于分配rtr空间包括:

当ram可用的空间大于rtr申请的空间时,将已用的rtr空间的末尾地址作为申请的rtr空间的起始地址,并将申请的rtr空间增加至已使用的rtr空间中;

其中,ram可用的空间为ram总空间扣除已使用的rtr空间和dtr空间。

可选的,所述空间分配模块,用于分配dtr空间包括:

为申请dtr的应用当前使用的每个数据包分配一片ram空间,每个数据包占用的ram空间在地址上连续。

可选的,所述空间分配模块,用于为申请dtr的应用当前使用的每个数据包分配一片ram空间,每个数据包占用的ram空间在地址上连续包括:

若申请dtr空间的应用使用的数据包已被分配了ram空间,且ram可用的空间大于dtr申请的空间时,将所述应用使用的数据包被分配空间的末尾地址作为所述申请的dtr空间的起始地址,将申请的dtr空间添加到为所述应用数据使用的数据包被分配的空间,并将在所述应用使用的数据包被分配的空间之后分配的数据包空间向rtr空间的方向移动所述申请的dtr空间;

若申请dtr空间的应用使用的数据包没有被分配ram空间,且ram可用的空间大于dtr申请的空间时,将已用的dtr空间的末尾地址作为申请的dtr空间的起始地址,并将申请的dtr空间增加至已使用的dtr空间中。

本发明实施例还提供了一种分配javacard瞬态对象存储空间的装置,包括:

存储有分配javacard瞬态对象存储空间程序的存储器;

处理器,配置为读取所述程序以执行上述任一项所述分配javacard瞬态对象存储空间的方法的操作。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有分配javacard瞬态对象存储空间程序,所述分配javacard瞬态对象存储空间程序被处理器执行时实现如上任一项所述分配javacard瞬态对象存储空间的方法的步骤。

与现有技术相比,本发明包括:需要占用随机存取存储器ram空间时,临时为javacard瞬态对象申请空间;当为javacard瞬态对象分配空间时,将复位清除rtr空间和退选清除dtr空间分别置于ram空间的首尾两端,将每个后申请的rtr空间和dtr空间分别与已存在的rtr空间和dtr空间在地址上保持连续。这种方式保证了dtr和rtr的使用空间是连续的,方便瞬态对象使用空间的申请和释放,同时也有效的利用了ram空间。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为现有javacard分配瞬态对象存储空间的示意图;

图2为本发明实施例分配javacard瞬态对象存储空间的方法流程示意图;

图3为本发明实施例dtr、数据包与逻辑通道之间关系示意图;

图4为本发明实施例中rtr空间和dtr空间在ram总空间分配位置示意图;

图5a、图5b为本发明实施例中dtr空间的分配示意图;

图6为本发明实施例分配javacard瞬态对象存储空间的装置组成模块图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图2为本发明分配javacard瞬态对象存储空间的方法流程示意图,如图2所示,所述方法包括:

s101需要占用随机存取存储器ram空间时,临时为javacard瞬态对象申请空间;

s102当为javacard瞬态对象分配空间时,将复位清除rtr空间和退选清除dtr空间分别置于ram空间的首尾两端,将每个后申请的rtr空间和dtr空间分别与已存在的rtr空间和dtr空间在地址上保持连续;

可选的,步骤s102包括:

将首次申请的rtr空间和dtr空间分别置于ram空间的首尾两端,分别将已申请的rtr空间和dtr空间的末尾地址作为后申请的rtr空间和dtr空间的起始地址。

可选的,上述所述分配rtr空间包括:

当ram可用的空间大于rtr申请的空间时,将已用的rtr空间的末尾地址作为申请的rtr空间的起始地址,并将申请的rtr空间增加至已使用的rtr空间中;

其中,ram可用的空间为ram总空间扣除已使用的rtr空间和dtr空间。

对于dtr空间的分配,根据javacard的规范要求,一个applet实例如果当前至少在一个逻辑通道(最多四个逻辑通道)上被选定了,则认为是一个激活的applet实例。来自不同数据包的每一个激活的applet实例执行时将会使用不同的dtr空间,如图3所示,因此,本发明实施例为申请dtr的应用为当前使用的每个数据包分配一片ram空间,每个数据包占用的ram空间在地址上连续。

可选的,为当前使用的每个数据包分配一片ram空间,每个数据包占用的ram空间在地址上连续,包括:

若申请dtr空间的应用使用的数据包已被分配了ram空间,且ram可用的空间大于dtr申请的空间时,将所述应用使用的数据包被分配空间的末尾地址作为所述申请的dtr空间的起始地址,将申请的dtr空间添加到为所述应用数据使用的数据包被分配的空间,并将在所述应用使用的数据包被分配的空间之后分配的数据包空间向rtr空间的方向移动所述申请的dtr空间;

若申请dtr空间的应用使用的数据包没有被分配ram空间,且ram可用的空间大于dtr申请的空间时,将已用的dtr空间的末尾地址作为申请的dtr空间的起始地址,并将申请的dtr空间增加至已使用的dtr空间中。

可选的,所述方法还包括:

对ram空间中已使用的rtr空间和dtr空间进行记录,以方便在瞬态对象删除和创建过程中对瞬态空间进行的调整。

上述实施例保证了dtr和rtr的使用空间是连续的,方便瞬态对象使用空间的申请和释放,同时也有效的利用了ram空间。

下面以一个具体的应用示例对上述实施例进行进一步说明。

在需要占用随机存取存储器ram空间时,临时为javacard瞬态对象申请空间。在ram总空间大小固定的情况下,为javacard瞬态对象分配空间时,将rtr空间和dtr空间分别置于ram空间的首尾两端,将每个后申请的rtr空间和dtr空间分别与已存在的rtr空间和dtr空间在地址上保持连续。

如图4所示,分别由ram总空间的两端向中间申请两种类型的瞬态对象。

对于rtr,在分配空间时,首先判断当前可用的ram空间是否大于或等于rtr申请的空间大小(r),若m-d1-r1>=r,则允许申请,其中,m为ram空间总大小,d1为已使用的dtr空间,r1为已使用的rtr空间;并将r1的末尾地址作为申请的rtr空间的起始地位,修改已使用的rtr空间r1的值为(r1+r)。若m-d1-r1<r,则抛出异常提示,结束本次rtr空间申请。

对于dtr,在分配空间时,如图5a所示,假设申请dtr空间的应用使用的数据包2已被分配了ram空间,判断当前可用的ram空间是否大于或等于dtr申请的空间大小(d),若m-d1-r1>=d,则允许申请,其中,m为ram空间总大小,d1为已使用的dtr空间,d1=d2+d3+d4,d2为包1使用的dtr空间,d3为包2使用的dtr空间,d4为包3使用的dtr空间。

在分配dtr空间时,将d3空间的地址往dtr申请方向搬移d大小,即将现有包2使用的dtr的末尾地址作为申请的dtr空间的起始地址,更新包2使用的dtr空间为(d3+d);同时将d2空间的地址往dtr申请方向搬移d大小,如图5b所示,已使用的dtr空间变为(d1+d)。

对于dtr,在分配空间时,若申请dtr空间的应用使用的数据包2已被分配了ram空间,且m-d1-r1<d,则抛出异常提示,结束本次dtr空间申请。

对于dtr,在分配空间时,若申请dtr空间的应用使用的数据包没有被分配ram空间,且ram可用的空间大于或等于dtr申请的空间时,沿dtr申请方向分配一片ram空间给dtr,d1的末尾地址作为申请的dtr空间的起始地址。

图6为本发明实施例分配javacard瞬态对象存储空间的装置组成模块图,如图6所示,所述装置包括:

空间申请模块,用于在需要占用随机存取存储器ram空间时,临时为javacard瞬态对象申请空间;

空间分配模块,用于将复位清除rtr空间和退选清除dtr空间分别置于ram空间的首尾两端,将每个后申请的rtr空间和dtr空间分别与已存在的rtr空间和dtr空间在地址上保持连续。

可选的,所述空间分配模块,用于将首次申请的rtr空间和dtr空间分别置于ram空间的首尾两端,分别将已申请的rtr空间和dtr空间的末尾地址作为后申请的rtr空间和dtr空间的起始地址。

可选的,所述空间分配模块,用于分配rtr空间包括:

当ram可用的空间大于rtr申请的空间时,将已用的rtr空间的末尾地址作为申请的rtr空间的起始地址,并将申请的rtr空间增加至已使用的rtr空间中;

其中,ram可用的空间为ram总空间扣除已使用的rtr空间和dtr空间。

对于dtr空间的分配,根据javacard的规范要求,一个applet实例如果当前至少在一个逻辑通道(最多四个逻辑通道)上被选定了,则认为是一个激活的applet实例。来自不同数据包的每一个激活的applet实例执行时将会使用不同的dtr空间,如图3所示,因此,本发明实施例空间分配模块,用于分配dtr空间包括:为申请dtr的应用当前使用的每个数据包分配一片ram空间,每个数据包占用的ram空间在地址上连续。

可选的,所述空间分配模块,用于为申请dtr的应用当前使用的每个数据包分配一片ram空间,每个数据包占用的ram空间在地址上连续包括:

若申请dtr空间的应用使用的数据包已被分配了ram空间,且ram可用的空间大于dtr申请的空间时,将所述应用使用的数据包被分配空间的末尾地址作为所述申请的dtr空间的起始地址,将申请的dtr空间添加到为所述应用数据使用的数据包被分配的空间,并将在所述应用使用的数据包被分配的空间之后分配的数据包空间向rtr空间的方向移动所述申请的dtr空间;

若申请dtr空间的应用使用的数据包没有被分配ram空间,且ram可用的空间大于dtr申请的空间时,将已用的dtr空间的末尾地址作为申请的dtr空间的起始地址,并将申请的dtr空间增加至已使用的dtr空间中。

可选的,所述装置还包括:

空间记录模块,用于对ram空间中已使用的rtr空间和dtr空间进行记录,以方便在瞬态对象删除和创建过程中对瞬态空间进行的调整。

上述实施例保证了dtr和rtr的使用空间是连续的,方便瞬态对象使用空间的申请和释放,同时也有效的利用了ram空间。

本发明实施例还提供了一种分配javacard瞬态对象存储空间的装置,包括:

存储有分配javacard瞬态对象存储空间程序的存储器;

处理器,配置为读取所述程序以执行如前述实施例所述的分配javacard瞬态对象存储空间的方法的操作。

本发明实施例还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有分配javacard瞬态对象存储空间程序,所述分配javacard瞬态对象存储空间程序被处理器执行时实现如前述实施例所述的分配javacard瞬态对象存储空间的方法的步骤。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理单元的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1