智能卡dtr内存空间的控制系统及方法

文档序号:6525781阅读:916来源:国知局
智能卡dtr内存空间的控制系统及方法
【专利摘要】一种智能卡【技术领域】的智能卡DTR内存空间的控制系统及方法。包括:一个用于分配DTR虚拟地址的DTR地址分配器、一个用于管理从DTR地址映射到物理内存地址的映射管理器,以及一个用于在对象进行垃圾回收后对DTR空间进行碎片整理的碎片整理器;该映射管理器在选择应用、去选择应用以及分配新对象时对所述的映射进行动态调整。本发明节省了物理RAM的消耗且无需预设DTR段大小,所有DTR段大小由实际选中的context决定;能够针对性地有效地解决物理内存不足的情况。
【专利说明】智能卡DTR内存空间的控制系统及方法
【技术领域】
[0001]本发明涉及的是一种智能卡【技术领域】的系统及方法,具体是一种智能卡临时高速易失性存储空间,即DTR (CLEAR_ON_DESELECT RAM取消清除内存)的控制系统及方法。
【背景技术】
[0002]随着Java智能卡的不断普及与发展,对于一张卡片内容纳多个Java卡应用的需求也愈发迫切。目前智能卡芯片技术的发展能保证有足够的持久性存储空间(persist空间,在物理上即flash空间)来保存应用的代码与持久性数据,然而应用在运行时所临时需要的高速易失性存储空间(transient空间,在物理上即RAM空间)则成为了多应用卡片发展的一个瓶颈。在Java卡技术中,transient空间分为两种,CLEAR_0N_RESET空间(简称 RTR 空间,clear on Reset TRansient)和 CLEAR_ON_DESELECT (简称 DTR 空间,clearon Deselect TRansient)。前者在每次卡片reset时数据清零,后者涉及到一个由JAVA卡规范所定义的context (应用上下文环境)的概念,对于同一个JAVA卡代码包(JAVA APIpackage)创建的java卡应用,隶属于同一个context,在不同的context之间有着防火墙保护,当一个context在某个逻辑通道上被去选择,并且未在其他逻辑通道上被选中的情况下,所有属于该context的DTR空间数据需要被清零。对于同一个JAVA卡代码包创建的JAVA卡应用,可以通过使用静态变量的方式,共享ram空间,但是对于不同的JAVA卡代码包创建的JAVA卡应用,隶属于不同的context,由于java卡技术中的防火墙限制,兼且不同的JAVA卡代码包一般由不同的JAVA卡应用提供方提供,很难进行ram空间的共享。而在JAVA卡应用对ram需求很大的情况下,卡片下载多个JAVA卡代码包,分别创建java卡应用时就很可能遇到ram不足的情况。利用DTR空间在其context被去选择时数据清零的特性,以及能被同时选择的context的数量有限(不能超过卡片支持的逻辑通道的总数,实际使用中多个context被同时选择的情况更少),在卡片的实现中,不同的JAVA卡应用申请的DTR空间复用同一片物理RAM空间能有效解决多应用卡片的RAM瓶颈问题。
[0003]经过对现有技术的检索发现,中国专利文献号CN103309812A,
【公开日】2013.09.18,公开了一种智能卡内存空间的分配方法及装置,该技术主要包括将内存中一段连续的地址空间指定为RTR和DTR空间,并根据预设的初始边界值,在所述的连续的地址空间内设置RTR和DTR空间的初始边界;当所述的RTR空间内剩余的存储容量小于RTR数据申请的容量大小时,或者当所述的DTR空间内剩余的存储容量小于所述的DTR数据申请的容量大小时,通过在所述的连续的地址空间内动态调整所述的界线来改变所述的RTR空间或DTR空间的大小。但该现有技术的缺陷和不足在于:
[0004]1.智能卡支持几个逻辑通道,就有几段DTR空间。
[0005]2.需要预设DTR段大小,并在运行时根据需要增加或缩小DTR段的大小。
[0006]3.由于一些技术限制,所有的DTR段都是等大的,并通过等量增加、等量缩小每段DTR空间来进行DTR空间调整。消耗的总DTR空间为最大的DTR空间大小乘以逻辑通道数。
【发明内容】

[0007]本发明针对现有技术存在的上述不足,提出一种智能卡DTR内存空间的控制系统及方法,将内存中一段空间定为DTR空间,对应于这段DTR空间,每个context有自己的虚拟地址空间,在实际使用中,通过不同的偏移量,从虚拟地址映射到物理空间地址,并在选择应用,去选择应用,创建对象和碎片整理时动态调整映射表。
[0008]本发明是通过以下技术方案实现的:
[0009]本发明涉及一种智能卡DTR内存空间的控制系统,包括:一个用于分配DTR虚拟地址的DTR地址分配器、一个用于管理从DTR地址映射到物理内存地址并对物理内存地址进行分配管理的映射管理器,以及一个用于在发生垃圾回收事件后对DTR空间进行碎片整理的碎片整理器。
[0010]所述的映射管理器在选择应用、去选择应用以及分配新对象时对所述的映射进行动态调整。
[0011]所述的垃圾回收事件(garbage collect)是指:根据java卡规范,应用开发者可以通过API requestObjectDeletion来请求垃圾回收服务,java卡在收到请求后会在适当的时机进行垃圾回收。
[0012]所述的context使用各自独立的虚拟地址空间来管理在该context申请的DTR空间,所有虚拟地址空间有同样的起始地址和大小限制。每个虚拟地址空间都从其起始地址开始从低地址向高地址分配空间,当物理RAM空间不足时,则DTR地址分配器返回诸如RAM空间不足异常等的失败信息。
[0013]所述的DTR地址分配器对每一个context分别记录其已分配的DTR空间大小,根据虚拟地址空间起始地址加上已分配DTR空间大小计算得到分配的地址。
[0014]所述的映射管理器将已分配的DTR虚拟地址映射到实际的物理RAM地址,并且记录当前已分配的物理RAM空间大小,在发生选择、去选择事件时或有新的DTR对象被创建时对物理RAM空间进行分配和回收。
[0015]由于只有在任何一个或多个逻辑通道上被选中的context才需要将DTR虚拟地址映射到实际的物理RAM地址;对于在任何一个逻辑通道上都未被选中的context,由于DTR数据在被去选择时会清零,不需要映射到实际的物理RAM地址,因此未被选中的context的DTR对象不占用物理RAM空间,有效的节省了卡片实际物理RAM空间的开销。
[0016]所述的选中是指:任何一个属于该context的应用被选中,即该context被选中。
[0017]所述的映射是指:对于被选中的context,通过不同的起始偏移,使不同的context分配的DTR空间映射到不同的物理RAM空间,即映射后物理RAM地址为已分配DTR虚拟地址加上起始偏移计算得到。
[0018]所述的映射管理器对物理RAM空间进行分配和回收,具体包括:
[0019]I)发生选择事件时的物理RAM空间的分配是指:当一个context在任意一个逻辑通道上被选中时,当该context未在其他逻辑通道上被选中,则为该context分配一段物理RAM地址,并在映射管理器中注册该context,并记录起始偏移;当该context已在其他逻辑通道上被选中,则属于java卡规范中定义的多重选择过程,无需进行物理RAM地址分配操作,该context之前也已经在映射管理器中注册过,并已记录了映射起始偏移。
[0020]所述的分配优选从低地址到高地址分配物理RAM地址,当物理RAM空间不足,则映射管理器返回诸如RAM空间不足异常等的失败信息。
[0021]2)发生去选择事件时的物理RAM空间的回收是指:是指:当一个context只在一个逻辑通道上被选中,并且正在该逻辑通道上进行去选择操作时,需要回收为该context分配的物理RAM空间,并在映射管理器中注销该context,清除为该记录的起始偏移。
[0022]所述的回收优选将位于更高地址侧已分配的物理RAM空间内容向更低地址侧移动,并相应地修改相关所有context在映射管理器中记录的起始偏移,使得物理RAM区域中的各个context映射区连续。
[0023]3)发生创建新DTR对象时的物理RAM空间的分配是指:当一个context有新的DTR对象被创建时,通过DTR地址分配器为该DTR对象分配虚拟地址空间,由于虚拟空间的增大,需要调整context映射的物理RAM区域空间大小,为了保证两个不同的context映射的物理RAM空间不重叠,需要将位于该context更高地址侧已分配的物理RAM区域有效数据进一步向更高地址侧移动,并相应地修改相关所有context在映射管理器中记录的起始偏移,使得物理RAM区域中的各个context映射区连续。如果物理RAM空间不足,则创建对象失败,返回诸如RAM空间不足异常等失败信息。
[0024]所述的映射管理器内部设有一个动态更新的记录每一个context在物理RAM中映射区域的如后顺序的映射顺序表。
[0025]所述的动态更新是指:
[0026]I)在选中一个context时,将该context的标识添加到顺序表的最后;
[0027]2)在去选择一个context时,将该context的标识从顺序表中删除,且当该context并非位于顺序表最后时,将该context之后所有context往前移一个顺位。
[0028]所述的碎片整理器,在部分DTR对象被回收后,对DTR空间进行碎片整理。
[0029]本发明涉及一种智能卡DTR内存空间的碎片整理方法,包括以下步骤:
[0030]步骤1、遍历所有的context,当该context存在已被回收的对象时,则执行步骤2,否则跳过该context并遍历下一个context ;当所有context都遍历处理完毕后,执行步骤3。
[0031]步骤2、对于存在已被回收对象的context,当:
[0032]2.1)该context未被选中,则按照每个JAVA卡对象自带的对象标识的从小到大顺序,遍历所有属于该context的DTR对象,并从虚拟DTR地址空间起始处,通过DTR地址分配器,以从低地址向高地址的方式重新为各个DTR对象分配虚拟DTR空间,完成之后,返回步骤I并处理下一个context ;
[0033]2.2)该context已被选中,贝U按照从低地址到高地址的顺序,遍历所有属于该context的DTR对象,并从虚拟DTR地址空间起始处,通过DTR地址分配器,以从低地址向高地址的方式重新为各个DTR对象分配虚拟DTR空间;在每次分配完新的虚拟地址后,将对象原本的旧虚拟地址映射的物理RAM区域的数据,移动到新分配虚拟地址映射的物理RAM区域,完成之后,返回步骤I并处理下一个context。
[0034]步骤3、当按照步骤I遍历并处理完所有context后,按照各个context在物理RAM中从低地址到高地址的顺序,再次遍历所有被选中的context,将每一个context的起始偏移替换为该context的更低地址侧,即左侧相邻的context的起始偏移及其已分配DTR空间大小之和,并相应将该context的物理RAM区域根据更新后的起始偏移映射至新的物理RAM区域,从而使得两个context X和Y之间没有物理RAM区域上的“缝隙”;当所有被选中的context映射更新完成后,将映射管理器中记录的已分配物理RAM空间大小更新为当前已分配的物理RAM空间大小。至此DTR空间碎片整理完毕。
技术效果
[0035]与现有技术相比,本发明只有被选中的context才会有映射到物理RAM区的DTR段,由于实际上卡片较少在多个逻辑通道上同时选择不同的大消耗的context,节省了物理RAM的消耗;另外,本发明无需预设DTR段大小,所有DTR段大小由实际选中的context决定;此外,每个存在的DTR段大小都可以不相同,消耗的总DTR空间为所有逻辑通道上选中的context的DTR大小之和,节省了物理RAM的消耗,因此本发明能够针对性地有效地解决物理内存不足的情况。
【专利附图】

【附图说明】
[0036]图1为本发明系统结构示意图
[0037]图2为本发明方法中的地址映射示意图。
[0038]图3为本发明方法中的context选择与去选择时物理RAM区域变化示意图。
[0039]图4为本发明方法中的创建对象时物理RAM区域变化示意图。
[0040]图5为本发明方法中的碎片整理时物理RAM区域变化示意图。
【具体实施方式】
[0041]下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
实施例1
[0042]如图1所示,本实施例包括:一个DTR地址分配器,为新创建的DTR对象分配地址。一个管理从DTR地址映射到物理RAM地址的映射管理器,并且会在选择应用,去选择应用时以及分配新对象时地址映射进行动态调整。以及一个在对象进行垃圾回收后对DTR空间进行碎片整理的碎片整理器。
[0043]所述的系统通过以下方式实现优化控制:
[0044]所述的DTR地址分配器,用于分配DTR虚拟地址。每一个context使用各自独立的虚拟地址空间来管理在该context申请的DTR空间。分配过程如下:
【权利要求】
1.一种智能卡DTR内存空间的控制系统,其特征在于,包括:一个用于分配DTR虚拟地址的DTR地址分配器、一个用于管理从DTR地址映射到物理内存地址并对物理内存地址进行分配管理的映射管理器,以及一个用于在发生垃圾回收事件后对DTR空间进行碎片整理的碎片整理器; 所述的映射管理器在选择应用、去选择应用以及分配新对象时对所述的映射进行动态调整。
2.根据权利要求1所述的系统,其特征是,所述的DTR地址分配器对每一个context分别记录其已分配的DTR空间大小,根据虚拟地址空间起始地址加上已分配DTR空间大小计算得到分配的地址。
3.根据权利要求1所述的系统,其特征是,所述的映射管理器将已分配的DTR虚拟地址映射到实际的物理RAM地址,并且记录当前已分配的物理RAM空间大小,在发生选择、去选择事件时或有新的DTR对象被创建时对物理RAM空间进行分配和回收。
4.根据权利要求3所述的系统,其特征是,所述的对物理RAM空间进行分配和回收,具体包括: 1)发生选择事件时的物理RAM空间的分配是指:当一个context在任意一个逻辑通道上被选中时,当该context未在其他逻辑通道上被选中,贝U为该context分配一段物理RAM地址,并在映射管理器中注册该context,并记录起始偏移;当该context已在其他逻辑通道上被选中,则属于java卡规范中定义的多重选择过程,无需进行物理RAM地址分配操作,该context之前也已经在映射管理器中注册过,并已记录了映射起始偏移; 2)发生去选择事件时的物理RAM空间的回收是指:是指:当一个context只在一个逻辑通道上被选中,并且正在该逻辑通道上进行去选择操作时,需要回收为该context分配的物理RAM空间,并在映射管理器中注销该context,清除为该记录的起始偏移; 3)发生创建新DTR对象时的物理RAM空间的分配是指:当一个context有新的DTR对象被创建时,通过DTR地址分配器为该DTR对象分配虚拟地址空间,将位于该context更高地址侧已分配的物理RAM区域有效数据进一步向更高地址侧移动,并相应地修改相关所有context在映射管理器中记录的起始偏移,当物理RAM空间不足,则创建对象失败,返回失败信息。
5.根据权利要求4所述的系统,其特征是,所述的分配从低地址到高地址分配物理RAM地址,当物理RAM空间不足,则映射管理器返回失败信息; 所述的回收将位于更高地址侧已分配的物理RAM空间内容向更低地址侧移动,并相应地修改相关所有context在映射管理器中记录的起始偏移,使得物理RAM区域中的各个context映射区连续。
6.根据权利要求3或4或5所述的系统,其特征是,所述的映射管理器内部设有一个动态更新的记录每一个context在物理RAM中映射区域的前后顺序的映射顺序表。
7.根据权利要求6所述的系统,其特征是,所述的动态更新是指: 1)在选中一个context时,将该context记录在顺序表的最后; 2)在去选择一个context时,将该context从顺序表中删除,且当该context并非位于顺序表最后时,将该context之后所有context往前移一个顺位。
8.一种智能卡DTR内存空间的碎片整理方法,其特征在于,包括以下步骤:步骤1、遍历所有的context,当该context存在已被回收的对象时,则执行步骤2,否则跳过该context并遍历下一个context ;当所有context都遍历处理完毕后,执行步骤3 ;步骤2、对于存在已被回收对象的context,当: .2.1)该context未被选中,则按照每个JAVA卡对象自带的对象标识的从小到大顺序,遍历所有属于该context的DTR对象,并从虚拟DTR地址空间起始处,通过DTR地址分配器,以从低地址向高地址的方式重新为各个DTR对象分配虚拟DTR空间,并完成对该context的处理; .2.2)该context已被选中,贝U按照从低地址到高地址的顺序,遍历所有属于该context的DTR对象,并从虚拟DTR地址空间起始处,通过DTR地址分配器,以从低地址向高地址的方式重新为各个DTR对象分配虚拟DTR空间;在每次分配完新的虚拟地址后,将对象原本的旧虚拟地址映射的物理RAM区域的数据,移动到新分配虚拟地址映射的物理RAM区域,完成之后,返回步骤I并处理下一个context ; 步骤3、当按照步骤I遍历并处理完所有context后,按照各个context在物理RAM中从低地址到高地址的顺序,再次遍历所有被选中的context,将每一个context的起始偏移替换为该context的更低地址侧,即左侧相邻的context的起始偏移及其已分配DTR空间大小之和,并相应将该context的物理RAM区域根据更新后的起始偏移映射至新的物理RAM区域;当所有被选中的context映射更新完成后,将映射管理器中记录的已分配物理RAM空间大小更新为当前已 分配的物理RAM空间大小并完成DTR空间碎片整理。
【文档编号】G06F12/02GK103699493SQ201310731151
【公开日】2014年4月2日 申请日期:2013年12月26日 优先权日:2013年12月26日
【发明者】王启勇, 廖鹏, 陈恒生 申请人:上海柯斯软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1