CN1321377C - 智能卡存储环境的控制方法 - Google Patents
智能卡存储环境的控制方法 Download PDFInfo
- Publication number
- CN1321377C CN1321377C CNB2005100771594A CN200510077159A CN1321377C CN 1321377 C CN1321377 C CN 1321377C CN B2005100771594 A CNB2005100771594 A CN B2005100771594A CN 200510077159 A CN200510077159 A CN 200510077159A CN 1321377 C CN1321377 C CN 1321377C
- Authority
- CN
- China
- Prior art keywords
- space
- storage
- smart card
- piece
- temporary
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种智能卡存储环境的控制方法,智能卡存储环境由CPU、RAM存储器、ROM存储器、EEPROM存储器、逻辑运算模块、加密引擎模块、中断处理模块、CRC发生器、随机数发生器、定时器和外部接口构成,所述RAM存储器用于存储临时数据信息,所述ROM存储器和EEPROM存储器用于存储持久数据信息,在智能卡中对外部输入的数据信息首先进行存储类型分类,然后对所述不同的存储类型进行存储规则的控制,并将其存储于智能卡卡内。本发明的智能卡存储环境的控制方法有效节省智能卡平台有限的计算资源和存储资源,增强了空间分配和回收运行时的自适应性,提出了多应用运行环境下双向链表结构的持久空间的存储管理策略以及分段式的临时空间的存储管理策略,设计并实现了相应的存储分配和垃圾回收。
Description
技术领域
本发明涉及一种对智能卡存储环境进行控制的方法,具体地说,是指一种Java智能卡的存储环境管理系统的控制方法。
背景技术
Java智能卡技术是Java虚拟机技术向有限资源设备平台的移植。Java智能卡的Applet经过编译和转换后生成虚拟机指令集的字节码程序。这些字节码再由卡上虚拟机来运行。Java虚拟机早期的运行技术主要是解释执行机制,即将字节码通过解释程序翻译为相应的本地执行代码来运行,它适合于在资源较少的设备中使用。而后,为了提高字节码的执行速度,又相继提出了编译为本地代码执行、动态编译和JIT编译执行、HotSpot技术及直接的专用硬件结构执行等运行技术。编译为本地代码的方法虽然显著地提高了速度,但却一定程度地影响了Java语言的安全机制和可移植性,这在高安全性要求的智能卡应用中显然并不适合。动态编译、JIT编译技术和HotSpot技术是在运行时将字节码编译为本地代码,这需要大量的运行时的存储资源,这在通常只有2K左右RAM的智能卡中也不具可行性。
目前也有的采用专用的智能卡硬件结构来运行字节码以提高速度,这带来的性能增益是非常显著的,但同时也成倍地提高了卡片的成本。专用的硬件结构也具有一定的局限性,如伪指令的扩展,并且在智能卡芯片和其它的有限资源设备领域目前并不存在大量的Java专用结构的CPU。
内存空间的自动垃圾回收机制是Java语言的一大特点,也是Java语言安全性的保证。但由于EEPROM较慢的写速度和有限的读写次数,这使得垃圾回收在Java卡中的实现必然不同于PC平台。在存储管理方面已有的文献只是在Java Card 2.1规范的基础上,在单Applet实例运行的环境下对于临时空间管理的研究。
发明内容
本发明的目的是提供一种智能卡存储环境的管理方法,该管理方法能够有效地节省智能卡平台有限的计算资源和存储资源,增强空间分配和回收运行时的自适应性。本发明提出了多应用运行环境下双向链表结构的持久空间的存储管理策略以及分段式的临时空间的存储管理策略,设计并实现了存储分配和垃圾回收管理。
本发明的一种智能卡存储环境的控制方法,所述智能卡由CPU、RAM存储器、ROM存储器、EEPROM存储器、逻辑运算模块、加密引擎模块、中断处理模块、CRC发生器、随机数发生器、定时器和外部接口构成,所述RAM存储器用于存储临时数据信息,所述ROM存储器和EEPROM存储器用于存储持久数据信息,对外部输入的数据信息存储步骤有:
(A)对所述外部输入的数据信息进行存储类型分类,得到存储类型,
所述存储类型有第一存储类型,用于实现持久空间的存储管理;和
第二存储类型,用于实现CLEAR_ON_RESET属性的临时空间的存储管理;和
第三存储类型,用于实现CLEAR_ON_DESELECT属性的临时空间的存储管理;
(B)对经(A)存储分类处理后的所述存储类型按照存储规则进行存储控制,其第一存储类型存储于EEPROM存储器中;第二存储类型和第三存储类型存储于RAM存储器中,
所述存储规则有第一存储规则,用于将所述第一存储类型按照双向链表结构进行存储以及回收,存储采用首次适配法,回收采用空间合并法;第二存储规则,用于将所述的第二存储类型按照从临时空间的高地址端开始向低地址进行存储,回收采用对象标记回收法;第三存储规则,用于将所述的第三存储类型按照从临时空间的低地址端开始向高地址进行存储,回收采用对象标记回收法。
本发明的优点:(一)双向链表结构的优点是通过调整连接指针,可以很容易插入或删除一个记录,节省了智能卡平台有限的计算资源和存储资源。同时方便地使检测指针向前驱和后驱方向移动,因此很容易进行实例化对象或对应用程序存储空间进行分配或删除操作。(二)分段式临时空间存储管理机制有效避免了传统控制方法中的地址冲突问题,运行时具有较强的自适应性,非常适合于智能卡的运行环境。
附图说明
图1是智能卡的内部结构示意图。
图2是本发明持久空间的存储分配流程图。
图3是本发明持久空间的垃圾回收管理流程图。
图4是本发明运行时的分段式临时空间存储分配。
具体实施方式
下面将结合附图对本发明作进一步的详细说明。
本发明是一种智能卡存储环境的控制方法,智能卡由CPU、RAM存储器、ROM存储器、EEPROM存储器、逻辑运算模块、加密引擎模块、中断处理模块、CRC发生器、随机数发生器、定时器和外部接口构成,所述RAM存储器用于存储临时数据信息,所述ROM存储器和EEPROM存储器用于存储持久数据信息,对外部输入的数据信息存储步骤有:
(A)对所述外部输入的数据信息进行存储类型分类,得到存储类型,
所述存储类型有第一存储类型,用于实现持久空间的存储管理;和
第二存储类型,用于实现CLEAR_ON_RESET属性的临时空间的存储管理;和
第三存储类型,用于实现CLEAR_ON_DESELECT属性的临时空间的存储管理;
(B)对经(A)存储分类处理后的所述存储类型按照存储规则进行存储控制,其第一存储类型存储于EEPROM存储器中;第二存储类型和第三存储类型存储于RAM存储器中,
所述存储规则有第一存储规则,用于将所述第一存储类型按照双向链表结构进行存储以及回收,存储采用首次适配法,回收采用空间合并法;第二存储规则,用于将所述的第二存储类型按照从临时空间的高地址端开始向低地址进行存储,回收采用对象标记回收法;第三存储规则,用于将所述的第三存储类型按照从临时空间的低地址端开始向高地址进行存储,回收采用对象标记回收法。
在本发明中,采用双向链表结构的持久空间存储管理机制,其双向链表如下表所示,
双向链表结构
HEADERLlink(2Byte) Tag(1Byte) Size(2Byte) Rlink(2Byte) |
DATA |
FOOTERUplink(2Byte) Tag(1Byte) |
表中,HEADER项为该结构的头,包括以下四个域:Llink:指向其左节点的指针,占用2字节的存储空间。Tag:占用标记。当tag为1时,该块为占用块;tag为0时,该块为空闲块。Size:表示整个节点的大小,包括HEADER和FOOTER。Rlink:指向其右节点的指针。
DATA项为一组地址连续的存储单元,是可以分配给用户使用的内存区域。
FOOTER项为该结构的尾,包括以下两个域:Uplink:指向本节点头的指针,其值为当前节点的首地址。Tag:占用标志,同HEADER中的Tag域。
在存储请求对象分配时,采用首次适配法。其工作方式为:在头指针(指向一空闲块,在对象分配时将从此空闲块开始向后搜索,因此该空闲块可看作为空闲链表的头)所指向的空闲链表中查找第一个满足要求的足够大的空间块,若该空闲块大小和所要分配的对象大小相同,则将此空闲块分配给该对象;否则将其分为两部分,一部分分配给对象,另一部分是未使用的存储区,将之作为一新的空闲块插入到空闲列表中,同时修改头指针,使之指向刚才所找到空闲块的下一空闲块,以便下次寻找空闲区时从上次结束的地方开始搜索,而不是每次都从头开始。同时考虑到当空闲空间仅比请求空间大几个字节时,此时再将该空闲块分割,则空闲链表中将会出现大量几字节的空闲块,而此空闲块将极少能被再分配,增加了存储区的外部碎片,同时减少了存储区的利用率,因此在这里我们设定一差额门限,为10字节,当空闲空间与请求空间的差额大于10字节时,将此空闲块分割;否则直接将此空闲块分配给对象,而不再做分割。分配算法的流程描述如图2所示。
存储回收为对已给出存储首地址的要回收存储空间进行回收,可分以下四种情况:
1)给定块左块为空闲块,则将此给定块和左块合并,作为一个空闲块替代左块插入到空闲块队列中。
2)给定块右块为空闲块,则将此给定块和右块相合并,作为一个空闲块替代右块插入到空闲块队列中。
3)给定块左块和右块均为空闲块,则将此块和左块、右块相合并,替代左块插入到空闲块队列中,同时在空闲块队列中删除右块。
4)左块和右块均为占用块,则修改此块的占用标志为空闲,将其插入到空闲块队列中。
将回收块和相邻的空闲块相合并后,修改空闲链表的头指针,使之指向刚合并的空闲块,则再分配时,从此回收块起向后搜索空闲区间。其流程图如图3所示。
多Applet运行环境下基于上下文和事件属性的分段式临时空间存储管理机制
传统的存储分配方法在多Applet运行环境下对于CLEAR_ON_DESELECT存储空间的共享方案必然会产生地址冲突问题,同时由于静态分配CLEAR_ON_RESET空间,当卡上已安装的Applet用尽了已有的CLEAR_ON_RESET空间时,后续的Applet再无法下载安装到卡上。
为解决上述问题,本发明将同一上下文具有相同事件属性中的临时数组组织在同一存储段中并在持久存储空间中为每个段创建一个根节点并指向相应事件属性的数组句柄队列。实际上每个上下文中存在两个数组句柄队列,CLEAR_ON_RESET和CLEAR_ON_DESELECT事件属性队列。在运行时一个上下文也对应着相应的两个临时存储段。
本发明为每个存储段设置相应的段基址寄存器,数组句柄中的val_address元素存储地址为段内偏移量,实际的物理地址由基址加偏移量得到。此外,CLEAR_ON_RESET和CLEAR_ON_DESELECT存储段分别从临时空间的两端进行分配(高地址端和低地址端),其中CLEAR_ON_RESET段的生长方向为由高地址向低地址,而CLEAR_ON_DESELECT段的生长方向为由低地址向高地址,从而避免二者地址空间的重叠覆盖。
若当前请求分配的数组长度为length,数组类型为type,相应事件属性的数组句柄队列的根节点为root,则创建新的临时数组对象的过程描述如下:
Array_Handle*AllocateTransientObject()
{
pre_p=p=root;
while(p<>null)
{
if((p->ref_tag==0)&&(p->length==length)&&
(p->item_type==type))
{
//重用已有的未引用对象空间
return p;
}
else
{
pre_p=p;
p=p->next;
}
}
pre_p->next=new(Array_Handle);
pre_p->next->val_address=AllocateMemoryBlock(pre_p);
return pre->next;
}
其中的new()函数用于在持久空间中分配Array_Handle结构并返回首地址,AllocateMemoryBlock()函数用于分配临时存储空间,入口参数指针p为当前队列的队尾指针,函数定义如下:
u2 AllocateMemoryBlock(Array_handle*p)
{
if(有足够的可用临时空间)
{
address=p->val_address+p->length;
return address;
}
else
{
调用临时空间垃圾回收进程;
if(有足够的可用临时空间)
{
address=p->val_address+p->length;
return address;
}
else
{
抛出临时空间内存溢出异常;
}
}
}
在属于某一上下文的Applet被成功选择后,临时存储空间管理进程会根据当前的内存使用情况来为此上下文中的两个事件属性存储段确定段基址寄存器的值并遍历临时对象队列进行空间分配和初始化,同时考虑到运行时Applet的临时对象分配,在每个存储段中都根据当前的可用空间情况分配了一定的预留空间。为了存储这些与存储段相关的信息,系统在运行时为每个分配的段在RAM中维护一个段描述符(最多为8个)数据结构,其定义如下:
Segment_Descriptor
{
u2 Base /段基址寄存器
u1 event_type //事件属性RESET或DESELECT
u2 Length //段长度
u2 Reserve_length //预留空间长度
u1 context //对象上下文
u1 Non_ref_length //未引用空间长度
}
多Applet实例运行时的临时空间分配情况如图4所示。
当某一上下文context启动后系统分配临时空间存储段的过程描述如下:
void AllocateSegment(ulcontext)
{
s指向段描述符表中的第一个段描述符;
while(s<>null)
{
if((s->context==0)&&(s->Length>请求长度))
{
s->context=context;
设置s->Reserve_length;
设置s->Non_ref_length;
设置s->event_type;
return;
}
s指向下一段描述符;
}
以存储段为单位进行存储紧缩;
if(无足够的可用临时存储空间)
{
抛出临时空间内存溢出异常;
}
else
{
//设置相应的段描述符
s->context=context;
设置s->Length;
设置s->Reserve_length;
设置s->Non_ref_length;
设置s->event_type;
return;
}
}
垃圾回收管理
目前已有的一些垃圾回收管理机制不能完全适用于资源非常有限的智能卡环境,因此我们在综合考虑响应速度和有限资源的情况下给出了卡上临时存储空间的对象标记回收法。
系统最初创建的临时对象都被标记为未引用。对于被持久系统中变量所引用的对象不能被回收。因此在字节码解释器的设计中对于所有的对引用域进行赋值的指令都对被引用对象的类型进行判断并标记临时对象。若p为对象指针,则标记过程如下:
持久引用变量的赋值标记过程如下:
if(p->tag==00) //临时对象
p->ref_tag=02; //持久引用
局部引用变量的赋值标记过程如下:
if((p->tag==00) //临时对象
&&(p->ref_tag==00)) //未被引用
p->ref_tag=01; //局部变量引用
由于卡上的有限资源和实时响应特性的要求,因此在卡上依据Java栈中的局部变量来进行精确的垃圾回收是不可行的。所以我们将垃圾回收的标记点选择在Applet的select()、process()、deselect()方法返回后。此时的Java栈为空,所以只由局部变量所引用的对象均应被回收。因此在标记点处应重新标记root所指向队列中的对象,若相应的段描述符指针为s,标记过程如下:
p=root;
while(p<>null)
{
if(p->ref_tag==01)
{
//局部变量引用,标记为未引用并加到段描述符的未引用空间中
p->ref_tag=00;
s->Non_ref_length+=p->length;
}
else
{
p=p->next;
}
}
由于Applet下载到智能卡上后不会被更改并会多次重复运行,因此对于同一临时对象的多次运行引用概率非常高,所以对于局部变量引用的临时对象我们在标记过程中并不将其从队列中删除。这样在此上下文重新运行时此段RAM空间被预留出来,以利于临时对象的重用。
当Applet请求分配临时对象而无可用的临时空间时,系统会启动垃圾回收进程。垃圾回收的策略步骤如下:
1)为了满足实时响应特性,采取了增量式垃圾回收的策略,当所需的存储空间可提供时即结束回收过程。
2)在假设当前运行上下文中的临时对象具有较高重用率的前提下,优先垃圾回收当前未运行的上下文对应的存储段。
3)优先回收预留的存储空间。
4)优先垃圾回收当前运行上下文存储段的相邻存储段以减少数据移动量。
5)若上述操作完成后仍不能提供所需的存储空间,则对未运行上下文存储段中预留的未引用对象空间进行存储紧缩并进行回收。
6)最后对运行上下文的存储段中预留的未引用对象空间进行存储紧缩并进行回收。
临时对象的垃圾回收过程描述如下:
void GarbageCollection()
{
根据段描述符表中未运行上下文存储段的Reserve_length来判断预留空间是否满足需求;
if(预留空间满足需求)
{
回收未运行上下文存储段中的预留空间;
移动相应的存储段并改变段基址寄存器;
return;
}
根据段描述符表中未运行上下文存储段的Non_ref_length来判断未引用空间是否满足需求;
if(未引用空间满足需求)
{
对未运行上下文存储段中预留的未引用对象空间进行存储紧缩并进行回
收;
移动相应的存储段并改变段基址寄存器;
return;
}
根据段描述符表所有上下文存储段的Non_ref_length来判断未引用空间是否满足需求;
if(未引用空间满足需求)
{
对相应的上下文存储段中预留的未引用对象空间进行存储紧缩并进行回
收;
return;
}
if(上述二者的和满足需求)
{
则分别进行上述的回收过程;
return;
}
}
若p、pre_p为数组句柄指针,root为队列根节点,s为段描述符指针,则对于预留的未引用对象空间进行存储紧缩的过程描述如下:
void NonRefContraction()
{
pre_p=p=root;
while(p<>null)
{
if(p->ref_tag==00)
{
//未引用对象
s->Non_ref_length-=p->length;
for(;队列中p的后续引用对象节点;)
{
val_address-=p->length;
}
p=p->next;
dispose(pre_p->next);
pre_p->next=p;
}
else
{
pre_p=p;
p=p->next;
}
}
}
当当前上下文退出运行环境时,它所对应的临时空间整个都应当被系统回收,即回收此上下文对应的全部存储段,若当前上下文为Current_context,s为段描述符指针,回收过程描述如下:
while(Current_context对应的段未回收完)
{
if(s->context==Current_context)
{
//context为0代表当前段描述符未使用
s->context=0;
}
s指向下一段描述符;
}
综上所述,本发明提供了一种智能卡存储环境的管理方法,该管理方法中采用双向链表结构进行持久空间管理,可以较为容易地插入或删除一个记录,同时方便地使检测指针向前驱和后驱方向移动,因此很容易进行实例化对象或对应用程序存储空间进行分配或删除操作。有效地节省智能卡平台有限的计算资源和存储资源。该管理方法中对临时空间采用分段式存储管理机制,有效避免了传统控制方法中的地址冲突问题,增强空间分配和回收运行时的自适应性,非常适合于智能卡的运行环境。
Claims (9)
1.一种智能卡存储环境的控制方法,所述智能卡由CPU、RAM存储器、ROM存储器、EEPROM存储器、逻辑运算模块、加密引擎模块、中断处理模块、CRC发生器、随机数发生器、定时器和外部接口构成,所述RAM存储器用于存储临时数据信息,所述ROM存储器和EEPROM存储器用于存储持久数据信息,其特征在于对外部输入的数据信息存储步骤有:
(A)对所述外部输入的数据信息进行存储类型分类,得到存储类型,
所述存储类型有第一存储类型,用于实现持久空间的存储管理;和
第二存储类型,用于实现CLEAR_ON_RESET属性的临时空间的存储管理;和
第三存储类型,用于实现CLEAR_ON_DESELECT属性的临时空间的存储管理;
(B)对经(A)存储分类处理后的所述存储类型按照存储规则进行存储控制,其第一存储类型存储于EEPROM存储器中;第二存储类型和第三存储类型存储于RAM存储器中,
所述存储规则有第一存储规则,用于将所述第一存储类型按照双向链表结构进行存储以及回收,存储采用首次适配法,回收采用空间合并法;第二存储规则,用于将所述的第二存储类型按照从临时空间的高地址端开始向低地址进行存储,回收采用对象标记回收法;第三存储规则,用于将所述的第三存储类型按照从临时空间的低地址端开始向高地址进行存储,回收采用对象标记回收法。
2.根据权利要求1所述的智能卡存储环境的控制方法,其特征在于:存储规则中的第一存储规则对所述第一存储类型进行双向链表存储结构的首次适配法是,由输入的数据信息量n在头指针pav所指向的空闲链表中查找满足空闲块大小size≥n的空闲块M;当空闲块大小size-n≤10字节时直接将此空闲块分配给输入的数据信息;当空闲块大小size-n>10字节时,将空闲块M分为两部分,其中相等于输入的数据信息量n的存储空间分配给输入的数据信息;剩余部分作为空闲块插入到空闲链表中;对所述的输入的数据信息量n分配完成后返回到分配指针,并修改头指针pav为空闲块M的下一空闲块,结束第一存储类型的首次适配;对空闲链表中所有的空闲块不满足size≥n时输出错误信息并结束第一存储类型的首次适配。
3.根据权利要求1所述的智能卡存储环境的控制方法,其特征在于:存储规则中的第一存储规则对所述第一存储类型进行双向链表回收结构采用的空间合并法是,对回收空间块H进行相邻块的空闲判断,当左空间块HL为空闲时,则将回收空间块H与左空间块HL合并,用所述合并后的空间块来替代左空间块HL在空闲链表中的位置,并修改空闲链表的头指针pav,使头指针pav指向所述合并后的空间块;当右空间块HR为空闲时,则将回收空间块H与右空间块HR合并,用所述合并后的空间块来替代右空间块HR在空闲链表中的位置,并修改空闲链表的头指针pav,使头指针pav指向所述合并后的空间块;当左空间块HL和右空间块HR都空闲时,将右空间块HR和左空间块HL与回收空间块H进行合并,用所述合并后的空间块来替代左空间块HL,并在空闲链表中删除右空间块HR,修改空闲链表的头指针pav,使头指针pav指向所述合并后的空间块;当左空间块HL和右空间块HR都不空闲时,修改回收空间块H占用标志项,将修改后的回收空间块H插入到空闲链表的表首,修改空闲链表的头指针pav,使头指针pav指向所述修改后的回收空间块H。
4.根据权利要求1所述的智能卡存储环境的控制方法,其特征在于:存储规则中的第二存储规则是对所述第二存储类型按照从临时空间的高地址端开始向低地址进行存储的方法是,将同一上下文具有CLEAR_ON_RESET事件属性中的临时数据信息存储在临时空间中的同一存储段中,并在持久空间为所述存储段创建一个根节点并指向CLEAR_ON_RESET事件属性的数组句柄队列;在所述存储段上设有段基址寄存器,所述段基址寄存器与所述数组句柄中的段内偏移量val_address元素存储地址相加得到存储数据的物理地址。
5.根据权利要求1所述的智能卡存储环境的控制方法,其特征在于:存储规则中的第二存储规则是对所述第二存储类型进行回收采用对象标记回收法,所述对象标记回收法回收过程是,
1)根据所述对象指针p所指向的临时空间中的对象进行赋值标记,所述赋值标记的数据信息被持久空间所引用记为“02”,所述赋值标记的数据信息被当前帧中的局部变量所引用记为“01”,所述赋值标记的数据信息未被引用记为“00”;
2)对所述标记“02”、所述标记“01”和所述标记“00”所标记的对象进行增量式垃圾回收。
6.根据权利要求5所述的智能卡存储环境的控制方法,其特征在于:所述增量式垃圾回收步骤有,①对已存储于智能卡内的临时空间的数据信息优先进行当前未运行的上下文对应的存储段的垃圾回收,对所述回收后的信息满足所需空间,则结束回收;②对所述经①步骤回收后的信息未满足所需空间,则回收预留的存储空间;③对所述经①和②步骤回收后的信息未满足所需空间,则回收当前运行上下文存储段的相邻存储段;④对所述经①、②和③步骤回收后的信息未满足所需空间,则回收未运行上下文存储段中预留的未引用对象空间;⑤对所述经①、②、③和④步骤回收后的信息未满足所需空间,则回收运行上下文的存储段中预留的未引用对象空间。
7.根据权利要求1所述的智能卡存储环境的控制方法,其特征在于:存储规则中的第三存储规则是对所述第三存储类型按照从临时空间的低地址端开始向高地址进行存储的方法是,将同一上下文具有CLEAR_ON_DESELECT事件属性中的临时数据信息存储在临时空间中的同一存储段中,并在持久空间为所述存储段创建一个根节点并指向CLEAR_ON_DESELECT事件属性的数组句柄队列;在所述存储段上设有段基址寄存器,所述段基址寄存器与所述数组句柄中的段内偏移量val_address元素存储地址相加得到存储数据的物理地址。
8.根据权利要求1所述的智能卡存储环境的控制方法,其特征在于:存储规则中的第三存储规则是对所述第三存储类型进行回收采用对象标记回收法,所述对象标记回收法回收过程是,
1)根据所述对象指针p所指向的临时空间中的对象进行赋值标记,所述赋值标记的数据信息被持久空间所引用记为“02”,所述赋值标记的数据信息被当前帧中的局部变量所引用记为“01”,所述赋值标记的数据信息未被引用记为“00”;
2)对所述标记“02”、所述标记“01”和所述标记“00”所标记的对象进行增量式垃圾回收。
9.根据权利要求8所述的智能卡存储环境的控制方法,其特征在于:所述增量式垃圾回收步骤有,①对已存储于智能卡内的临时空间的数据信息进行当前未运行的上下文对应的存储段进行优先垃圾回收,对所述回收后的信息满足所需空间,则结束回收;②对所述经①步骤回收后的信息未满足所需空间,则回收预留的存储空间;③对所述经①和②步骤回收后的信息未满足所需空间,则回收当前运行上下文存储段的相邻存储段;④对所述经①、②和③步骤回收后的信息未满足所需空间,则回收未运行上下文存储段中预留的未引用对象空间;⑤对所述经①、②、③和④步骤回收后的信息未满足所需空间,则回收运行上下文的存储段中预留的未引用对象空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100771594A CN1321377C (zh) | 2005-06-16 | 2005-06-16 | 智能卡存储环境的控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100771594A CN1321377C (zh) | 2005-06-16 | 2005-06-16 | 智能卡存储环境的控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1687904A CN1687904A (zh) | 2005-10-26 |
CN1321377C true CN1321377C (zh) | 2007-06-13 |
Family
ID=35305945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100771594A Expired - Fee Related CN1321377C (zh) | 2005-06-16 | 2005-06-16 | 智能卡存储环境的控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1321377C (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344861B (zh) * | 2007-07-10 | 2012-12-05 | 锐迪科微电子(上海)有限公司 | 一种智能卡内存管理方法 |
US8402217B2 (en) * | 2009-09-15 | 2013-03-19 | Marvell International Ltd. | Implementing RAID in solid state memory |
CN102053834A (zh) * | 2010-12-29 | 2011-05-11 | 北京握奇数据系统有限公司 | Java对象的存储方法及装置 |
CN102289411B (zh) * | 2011-06-27 | 2014-03-26 | 北京握奇数据系统有限公司 | 一种智能卡资源调度的方法和智能卡 |
CN102508788B (zh) * | 2011-09-28 | 2014-12-10 | 华为数字技术(成都)有限公司 | Ssd及ssd垃圾回收方法和装置 |
CN103051869A (zh) * | 2012-11-15 | 2013-04-17 | 山东中孚信息产业股份有限公司 | 一种摄像头视频实时加密系统及加密方法 |
CN104484628B (zh) * | 2014-12-17 | 2018-04-13 | 西安邮电大学 | 一种具有加密解密功能的多应用智能卡 |
CN105404589B (zh) * | 2015-10-29 | 2019-04-30 | 天脉聚源(北京)教育科技有限公司 | 一种垃圾回收方法及装置 |
US10120655B2 (en) * | 2016-06-03 | 2018-11-06 | Microsoft Technology Licensing, Llc. | Seamless high performance interoperability between different type graphs that share a garbage collector |
CN108804339B (zh) * | 2018-03-29 | 2019-07-16 | 北京白山耘科技有限公司 | 一种内存垃圾回收方法及装置 |
CN109032960B (zh) * | 2018-06-29 | 2023-10-10 | 北京中电华大电子设计有限责任公司 | 一种智能卡ram的动态分配方法和数据结构的存储装置 |
KR102731127B1 (ko) | 2018-09-05 | 2024-11-18 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
CN114610652A (zh) * | 2022-03-25 | 2022-06-10 | 南京信息工程大学 | 一种基于双向链表的sd卡数据存取方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1289967A (zh) * | 1999-09-24 | 2001-04-04 | 国际商业机器公司 | Java卡小应用程序中数据目标的动态内存管理 |
US6220510B1 (en) * | 1997-05-15 | 2001-04-24 | Mondex International Limited | Multi-application IC card with delegation feature |
US6272607B1 (en) * | 1998-08-28 | 2001-08-07 | International Business Machines Corporation | Method and apparatus for transactional writing of data into a persistent memory |
CN1545072A (zh) * | 1997-09-19 | 2004-11-10 | 施蓝姆伯格工业公司 | 智能卡及其应用选择方法、智能卡系统 |
-
2005
- 2005-06-16 CN CNB2005100771594A patent/CN1321377C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6220510B1 (en) * | 1997-05-15 | 2001-04-24 | Mondex International Limited | Multi-application IC card with delegation feature |
CN1545072A (zh) * | 1997-09-19 | 2004-11-10 | 施蓝姆伯格工业公司 | 智能卡及其应用选择方法、智能卡系统 |
US6272607B1 (en) * | 1998-08-28 | 2001-08-07 | International Business Machines Corporation | Method and apparatus for transactional writing of data into a persistent memory |
CN1289967A (zh) * | 1999-09-24 | 2001-04-04 | 国际商业机器公司 | Java卡小应用程序中数据目标的动态内存管理 |
Also Published As
Publication number | Publication date |
---|---|
CN1687904A (zh) | 2005-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6453403B1 (en) | System and method for memory management using contiguous fixed-size blocks | |
US6505283B1 (en) | Efficient memory allocator utilizing a dual free-list structure | |
US5848423A (en) | Garbage collection system and method for locating root set pointers in method activation records | |
US6510498B1 (en) | Method and apparatus for memory allocation in a multi-threaded virtual machine | |
US6594749B1 (en) | System and method for memory management using fixed-size blocks | |
JP3027845B2 (ja) | プログラム制御装置および方法 | |
CN1321377C (zh) | 智能卡存储环境的控制方法 | |
US7010555B2 (en) | System and method for compacting a computer system heap | |
US7480782B2 (en) | Reference-updating using per-chunk referenced-address ranges in a compacting garbage collector | |
US7136887B2 (en) | Method and mechanism for finding references in a card in time linear in the size of the card in a garbage-collected heap | |
US7043509B2 (en) | Parallel non-contiguous allocation and card parsing | |
US6681306B1 (en) | Method and apparatus for increasing scavenging garbage collection effectiveness | |
JP2006235960A (ja) | ガーベッジコレクション高速化方法 | |
CN111984425B (zh) | 用于操作系统的内存管理方法、装置及设备 | |
US6219678B1 (en) | System and method for maintaining an association for an object | |
US20100077172A1 (en) | Hybrid fragmenting real time garbage collection | |
CN101295240A (zh) | 嵌入式系统中基于spm的指令缓冲的实现方法 | |
US5678024A (en) | Method and system for dynamic performance resource management within a computer based system | |
US7702663B2 (en) | Breaking read barrier to apply optimizations | |
US7792880B2 (en) | Method and apparatus for efficient implementation of discontiguous objects | |
Diwase et al. | Survey report on memory allocation strategies for real time operating system in context with embedded devices | |
US20090228537A1 (en) | Object Allocation System and Method | |
JP2000099351A (ja) | プログラム制御装置とメモリ割当装置および方法 | |
CN106293939B (zh) | 一种在内存垃圾收集器中动态重用对象的方法 | |
US20080034022A1 (en) | System and method for updating references when incrementally compacting a heap |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070613 Termination date: 20100616 |