[发明专利]一种Java卡空闲块管理方法有效
申请号: | 201510192362.X | 申请日: | 2015-04-22 |
公开(公告)号: | CN104778128B | 公开(公告)日: | 2017-11-03 |
发明(设计)人: | 刘哲理;隋传波 | 申请(专利权)人: | 东港股份有限公司 |
主分类号: | G06F12/06 | 分类号: | G06F12/06;G06Q20/34 |
代理公司: | 山东济南齐鲁科技专利事务所有限公司37108 | 代理人: | 牛传凯 |
地址: | 250100 *** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及Java卡EEPROM存储区域空闲块的管理方法,具体为Java卡通过一个空闲块信息表管理所有EEPROM中空闲块的信息,预先从EEPROM为空闲块信息表的第一个结点分配空间,当空闲块个数超过当前结点所能存储的最大数量后,将从EEPROM为后继结点申请存储空间;为数据申请存储空间时,遍历空闲块信息表并选择大小合适的空闲块;释放数据占用的存储空间时,采用块合并排序算法将释放的存储空间合并到合适的空闲块中,并且将空闲块信息按照大小排序;本发明按块大小由小到大的顺序存储方式存储空闲块信息,这样在申请存储空间时,可以快速查找到存储位置,大大提高执行效率;通过本发明的Java卡管理方法可以显著提升Java卡的运行效率。 | ||
搜索关键词: | 一种 java 空闲 管理 方法 | ||
【主权项】:
一种Java卡空闲块管理方法,其特征在于:Java卡通过空闲块信息表存储EEPROM中空闲块的信息,空闲块信息表由结点组成,所述的结点包括空闲块信息、空闲块个数和后继结点地址;结点间通过后继结点地址形成链式存储结构,所述的空闲块信息包含地址和大小两部分,在16位芯片中占用的存储空间为4字节,32位芯片中占用的存储空间为8字节;每个结点在连续的空间内最多存储MAX_TBL_BLOCK_SIZE个空闲块信息,空闲块信息按照大小顺序存储;预先从EEPROM为空闲块信息表的第一个结点分配空间,当空闲块个数超过当前结点所能存储的最大数量后,将从EEPROM为后继结点申请存储空间;为数据申请存储空间时,遍历空闲块信息表并选择大小合适的空闲块;释放数据占用的存储空间时,采用块合并排序算法将释放的存储空间合并到合适的空闲块中,并且将空闲块信息按照大小排序;Java卡空闲块管理方法,包括如下步骤:⑴在EEPROM中预先为空闲块信息表的第一个结点分配存储空间,当空闲块个数超过当前结点所能存储的最大数量MAX_TBL_BLOCK_SIZE后,从EEPROM为后继结点申请存储空间;⑵在EEPROM中为数据申请存储空间时,采用最佳大小块匹配算法,遍历空闲块信息表并选择大小合适的空闲块,所述的最佳大小块匹配算法为折半算法;⑶释放数据占用的存储空间时,采用块合并排序算法将释放的存储空间合并到合适的空闲块中,并且将空闲块信息按照大小排序;其中最佳大小块匹配算法包括如下步骤:(21)依次遍历空闲块信息表中的每个结点;(22)对当前结点中的空闲块信息,采用折半算法进行遍历,具体为:①确定开始块位置,根据有效空闲块个数计算中间块序号,然后通过如下循环处理确定开始块位置:A.如果中间块大小等于待分配空间大小,则查找成功,算法执行完毕;B.如果中间块大小大于待分配空间大小,则重新计算左侧部分的中间块序号,直到中间块大小小于或等于待分配空间大小为止;C.如果中间块大小小于待分配空间大小,则重新计算右侧部分的中间块序号,直到中间块大小小于或等于待分配空间大小为止;②如果当前块大小小于待分配空间大小,则选取后续空闲块作为当前块;③如果中间块大小等于待分配空间大小,则查找成功,算法执行完毕;④如果当前块大小大于待分配空间大小,则进行如下操作:A.如果存在备选块,则比较当前块大小和备选块大小,如果当前块大小小于备选块大小,则标识当前块为备选块,并记录当前块大小;B.如果不存在备选块,则标识当前块为备选块,并记录当前块大小,跳出当前结点,进入下一结点的空闲块遍历;遍历完所有结点的空闲块信息后,将标识的备选块地址信息返回;其中块合并排序算法包括以下步骤:(31)依次遍历空闲块信息表中的每一个结点;(32)对当前结点中的空闲块信息进行遍历,具体为:①如果释放块尾地址等于当前块始地址,则进行如下操作:A.如果合并状态为真,则进一步合并,即将上次合并块信息的大小累加当前块大小,并修改当前块信息中的地址为0,以表示该地址无效,所述的合并状态为真即释放块始地址是某空闲块尾地址,进行过一次合并;B.如果合并状态为假,则将当前块信息保存备用,将当前块信息大小累加释放块大小,将当前块信息的地址改写为释放块始地址,并设置合并状态为真;②如果释放块始地址等于当前块尾地址,则进行如下操作:A.如果合并状态为真,则进一步合并,将当前块信息的大小累加上次合并块最终大小,并修改上次合并块信息中的地址为0,以表示该地址无效,所述的合并状态为真即释放块尾地址是某空闲块始地址,进行过一次合并;B.如果合并状态为假,则将当前块信息保存备用,将当前块信息的大小累加释放块大小,并设置合并状态为真;(33)如果合并状态为假,则需要增加释放块到空闲块信息表中:对空闲块信息表的所有结点遍历,如果当前结点的空闲块个数不超过MAX_TBL_BLOCK_SIZE,则依次遍历每个空闲块,找到合适位置,插入该空闲块信息;(34)如果合并状态为真,则需要调整位置,确保空闲块按大小由小到大排序,可采用冒泡算法,从当前合并块开始往后比较,如果合并块大小大于后继空闲块大小,则两个块交换位置,直到不满足条件为止。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东港股份有限公司,未经东港股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510192362.X/,转载请声明来源钻瓜专利网。