一种优化数据读写的方法及装置制造方法

文档序号:6624237阅读:229来源:国知局
一种优化数据读写的方法及装置制造方法
【专利摘要】本发明公开了一种优化数据读写的方法及装置,属于信息安全领域。所述方法包括:智能卡接收到上位机发送的命令,从内部保存的优化列表中获取当前优化对象,若当前优化对象不在物理页的起始位置,则如果当前优化对象的长度大于等于预设页长,则将当前优化对象存放在空闲存储空间的物理页的起始位置,修改引用关系;如果当前优化对象的长度小于预设页长,则获取优化列表中能够与当前优化对象存储在一页的对象,作为组合对象,将当前优化对象和组合对象存放在空闲存储空间的物理页的起始位置,修改引用关系。采用本发明的技术方案,能够实现在应用运行时对读写访问智能卡的操作频度进行优化,减少对象表的读写次数,提高了智能卡的使用寿命。
【专利说明】—种优化数据读写的方法及装置

【技术领域】
[0001]本发明涉及信息安全领域,尤其涉及一种优化数据读写的方法及装置。

【背景技术】
[0002]目前,智能卡应用开发商在开发智能卡时,经常会面临这样的问题,由于智能卡芯片性能和存储空间局限性,为了智能卡应用在有限的时间内完成运行,开发工程师不得不对应用进行反复优化,减少对NVM(Nonvolatile Memory,非易失性存储器,目前在智能卡上采用的主要是EEPROM和FLASH)的读次数或写次数和程序的调用复杂度。
[0003]现有技术中,智能卡的优化操作是在智能卡闲置情况下进行优化的,如果智能卡处于运行的过程中,则无法对智能卡进行优化,这样会导致在对智能卡进行数据读写时,由于未进行优化,增加了智能卡中对存储器的物理页的读写访问次数,减少了智能卡的使用寿命。


【发明内容】

[0004]本发明为了解决现有技术中存在的不足,提供了一种优化数据读写的方法及装置。
[0005]本发明采用的技术方案是:一种优化数据读写的方法,包括:
[0006]步骤S1:智能卡上电;
[0007]步骤S2:所述智能卡等待接收上位机发送的命令;
[0008]步骤S3:当所述智能卡接收到命令后,将内部保存的优化列表中优化标识复位的对象作为当前优化对象;
[0009]步骤S4:所述智能卡判断所述当前优化对象的起始地址是否为物理页的起始位置,如果是,则将所述当前优化对象的优化标识置位,执行步骤S13,否则执行步骤S5 ;
[0010]步骤S5:所述智能卡获取所述当前优化对象的长度,判断所述当前优化对象的长度是否大于或等于预设页长,如果是,则执行步骤S6,否则执行步骤S8 ;
[0011]步骤S6:所述智能卡判断所有空闲存储空间中是否存在以物理页的起始位置开始,长度大于当前优化对象的连续存储空间,如果是,则执行步骤S7,否则将当前优化对象的优化标识置位,执行步骤S13 ;
[0012]步骤S7:所述智能卡将当前优化对象复制到所述连续存储空间,根据所述连续存储空间相对于基地址的偏移量,更新所述当前优化对象的引用关系,并将所述当前优化对象的优化标识置位,执行步骤S13 ;
[0013]步骤S8:所述智能卡从所述优化列表中查找长度之和不大于预设页长与当前优化对象的长度之差的多个对象,或,长度不大于预设页长与当前优化对象的长度之差的对象,作为组合对象;
[0014]步骤S9:所述智能卡判断所有空闲存储空间中是否存在以页起始位置开始,长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤S10,否则将当前优化对象的优化标识置位,执行步骤S13 ;
[0015]步骤SlO:所述智能卡将所述当前优化对象和所述组合对象复制到所述连续存储空间;
[0016]步骤Sll:所述智能卡根据所述连续存储空间相对于基地址的偏移量和所述当前优化对象的长度,计算所述组合对象相对于基地址的偏移量,根据所述连续存储空间相对于基地址的偏移量更新当前优化对象的引用关系,并根据所述组合对象相对于基地址的偏移量,更新所述组合对象的引用关系;
[0017]或,所述智能卡根据所述连续存储空间相对于基地址的偏移量和所述组合对象的长度,计算当前优化对象相对于基地址的偏移量,根据所述连续存储空间相对于基地址的偏移量更新所述组合对象的引用关系,并根据当前优化对象相对于基地址的偏移量,更新当前优化对象的引用关系;
[0018]步骤S12:所述智能卡将所述当前优化对象和所述组合对象的优化标识置位;
[0019]步骤S13:所述智能卡判断所述优化列表中是否还有优化标识复位的对象,如果是,则从所述优化列表中获取优化标识复位的对象作为当前优化对象,返回执行步骤S4,否则向所述上位机返回优化成功响应,返回步骤S2。
[0020]所述步骤S2中,当所述智能卡接收到命令时,还包括:所述智能卡判断接收到的命令是否为预设命令,如果是,则执行步骤S3,否则执行步骤al ;
[0021]步骤al:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是写操作,则更新所述优化列表中的写次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是其他操作,执行相应操作,向所述上位机返回相应响应,返回步骤S2。
[0022]所述步骤S2中,当所述智能卡接收到命令时,还包括:所述智能卡判断接收到的命令的类型,如果是采集命令,则执行步骤bl,如果是优化命令,则执行步骤S3,如果是应用命令,则执行步骤b2;
[0023]步骤bl:所述智能卡将采集标识位置位,并向所述上位机返回开始采集响应,返回步骤S2 ;
[0024]步骤b2:所述智能卡获取采集标识位,判断所述采集标识位是否置位,如果是,则执行步骤b3,否则向所述上位机返回不需要采集响应,返回步骤S2 ;
[0025]步骤b3:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是写操作,则更新所述优化列表中的写次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是其他操作,执行相应操作,向所述上位机返回相应响应,返回步骤S2 ;
[0026]所述向所述上位机返回命令数据采集成功响应之后,还包括将所述采集标识位复位。
[0027]所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是写操作,则更新所述优化列表中的写次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是其他操作,执行相应操作,向所述上位机返回相应响应,返回步骤S2,具体为:
[0028]步骤Cl:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则执行步骤c2,如果是写操作,则执行步骤c7,如果是其他操作,执行相应操作,返回相应响应,返回步骤S2 ;
[0029]步骤c2:所述智能卡根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;
[0030]步骤c3:所述智能卡从所述对象表中获取所述读取地址对应的对象的起始地址;
[0031]步骤c4:所述智能卡判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址,如果是,则执行步骤c5,否则执行步骤c6 ;
[0032]步骤c5:所述智能卡更新所述优化列表中所述读取地址对应的对象的起始地址的读次数,执行步骤cl2;
[0033]步骤c6:所述智能卡根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位,执行步骤c 12 ;
[0034]步骤c7:所述智能卡根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;
[0035]步骤c8:所述智能卡从对象表中获取所述写地址对应的对象的起始地址;
[0036]步骤c9:所述智能卡判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址,如果是,则执行步骤clO,否则执行步骤cll ;
[0037]步骤clO:所述智能卡更新优化列表中所述写地址对应的对象的起始地址的写次数,执行步骤cl2 ;
[0038]步骤cll:所述智能卡根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为0,并将优化标识复位,执行步骤 cl2 ;
[0039]步骤cl2:所述智能卡向上位机返回数据采集成功响应,返回步骤S2。
[0040]所述步骤S2中,当接收到命令时,还包括:
[0041]步骤dl:所述智能卡调用相应的应用,获取所述应用的使用次数,判断所述使用次数是否达到优化预设值,如果是,则执行步骤d2,否则将所述应用的使用次数自加预设步长,执行应用的相应操作,向上位机返回相应数据,返回步骤S2 ;
[0042]步骤d2:所述智能卡统计所述应用中的对象在对象表中的存储情况,判断是否存在存储位置大于预设值的对象,如果是,则执行步骤d3,否则将所述应用的使用次数自加预设步长,执行应用的相应操作,向上位机返回相应数据,返回步骤S2 ;
[0043]步骤d3:所述智能卡根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,执行步骤d4,如果是写操作,则更新所述优化列表中的写次数,执行步骤d4,否则直接执行步骤d4,如果是其他操作,则执行相应操作,执行步骤d4 ;
[0044]步骤d4:所述智能卡将所述应用的使用次数加预设步长,判断所述使用次数与所述优化预设值之差是否大于采集预设值,如果是,则执行步骤S3,否则返回步骤S2。
[0045]所述步骤d3,具体为:
[0046]步骤d3-l:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用,判断需要执行的操作类型,如果是读操作,则执行步骤d3-2,如果是写操作,则执行步骤d3-7,如果是其他操作,则执行相应操作,执行步骤d4 ;
[0047]步骤d3-2:所述智能卡根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;
[0048]步骤d3-3:所述智能卡从所述对象表中获取与所述读取地址对应的对象的起始地址;
[0049]步骤d3-4:所述智能卡判断从优化列表中是否能找到与所述读取地址对应的对象的起始地址,如果是,则执行步骤d3-5,否则执行步骤d3-6 ;
[0050]步骤d3-5:所述智能卡更新优化列表中所述读取地址对应的对象的起始地址的读次数,执行步骤d4;
[0051]步骤d3-6:所述智能卡根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位,执行步骤d4;
[0052]步骤d3-7:所述智能卡根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;
[0053]步骤d3-8:所述智能卡从对象表中获取所述写地址对应的对象的起始地址;
[0054]步骤d3-9:所述智能卡判断从优化列表中是否能找到写地址对应的对象的起始地址,如果是,则执行步骤d3-10,否则执行步骤d3-ll ;
[0055]步骤d3-10:所述智能卡更新优化列表中所述写地址对应的对象的起始地址的写次数,执行步骤d4;
[0056]步骤d3-ll:所述智能卡根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为0,并将优化标识复位,执行步骤d4。
[0057]所述步骤S3,具体包括:
[0058]所述智能卡接收到命令后,根据接收到的命令,获取需要优化的操作类型,如果是读优化操作,则执行步骤el,如果是写优化操作,则执行步骤e2 ;
[0059]步骤el:所述智能卡获取所述优化列表中的读次数,根据所述读次数,对所述优化列表中的信息进行排序,并获取排序后的优化列表中读次数最大且优化标识复位的对象作为当前优化对象;
[0060]步骤e2:所述智能卡获取所述优化列表中的写次数,根据所述写次数,对所述优化列表中的信息进行排序,并获取排序后的优化列表中写次数最大且优化标识复位的对象作为当前优化对象。
[0061]所述步骤S2,具体为:当所述智能卡接收到命令后,将内部保存的优化列表中第一个优化标识复位的对象作为当前优化对象;
[0062]所述步骤S13,具体为:所述智能卡判断所述优化列表中是否还有优化标识复位的对象,如果是,则将所述当前优化对象的下一个优化标识复位的对象作为当前优化对象,返回执行步骤S4,否则向所述上位机返回优化成功响应,返回步骤S2。
[0063]所述步骤S4之前还包括:从对象表中获取所述对象的长度,将所述对象的长度记录到对象长度表中;
[0064]所述步骤S5中,所述获取所述当前优化对象的长度,具体为:从所述对象长度表中获取当前优化对象的长度。
[0065]所述步骤S8,具体包括:
[0066]步骤fl:所述智能卡获取所述对象长度表中的第一个长度作为当前长度;
[0067]步骤f2:所述智能卡判断当前长度是否不大于预设页长与当前优化对象长度之差,如果是,则将当前长度对应的对象作为组合对象,执行步骤f3,否则直接执行步骤f3 ;
[0068]步骤f3:所述智能卡判断所述对象长度表中是否还有未查找的长度,如果是,则将当前长度的下一长度作为当前长度,执行步骤f2,否则得到组合对象,执行步骤S9。
[0069]所述步骤S9,具体包括:
[0070]步骤gl:所述智能卡将所有空闲存储空间中的第一部分空闲存储空间作为当前空闲存储空间;
[0071]步骤g2:所述智能卡判断所述当前空闲存储空间中是否有空物理页,如果是,则执行步骤g3,否则执行步骤g5 ;
[0072]步骤g3:所述智能卡将当前空闲存储空间中的第一个空物理页作为当前空物理页;
[0073]步骤g4:所述智能卡判断在当前空闲存储空间中是否存在从当前空物理页的起始位置起长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤S10,否则执行步骤g5 ;
[0074]步骤g5:所述智能卡判断所有空闲存储空间中是否还有未处理的空闲存储空间,如果是,则将当前空闲存储空间的下一空闲存储空间作为当前空闲存储空间,执行步骤g2,否则将当前优化对象的优化标识置位,返回步骤S2。
[0075]所述步骤S7还包括:所述智能卡将当前优化对象置为空闲存储空间;
[0076]所述步骤S12还包括:所述智能卡将当前优化对象和所述组合对象置为空闲存储空间。
[0077]—种优化数据读写的装置,包括:
[0078]接收模块,用于接收上位机发送的命令;
[0079]第一处理模块,用于当所述接收模块接收到命令后,将内部保存的优化列表中优化标识复位的对象作为当前优化对象;
[0080]第一判断模块,用于当所述第一处理模块处理得到当前优化对象后,判断所述当前优化对象的起始地址是否为物理页的起始位置;
[0081]第一获取模块,用于当所述第一判断模块判断为否时,获取所述当前优化对象的长度;
[0082]第二判断模块,用于当所述第一获取模块获取到所述当前优化对象的长度时,判断所述当前优化对象的长度是否大于或等于预设页长;
[0083]第三判断模块,用于当所述第二判断模块判断为是时,判断所有空闲存储空间中是否存在以物理页的起始位置开始,长度大于当前优化对象的连续存储空间;
[0084]第一更新模块,用于当所述第三判断模块判断为是时,将当前优化对象复制到所述连续存储空间,根据所述连续存储空间相对于基地址的偏移量,更新所述当前优化对象的引用关系,并所述当前优化对象的优化标识置位;
[0085]查找模块,用于当所述第二判断模块判断为否时,从所述优化列表中查找长度之和不大于预设页长与当前优化对象的长度之差的多个对象,或,长度不大于预设页长与当前优化对象的长度之差的对象,作为组合对象;
[0086]第四判断模块,用于当所述查找模块查找到所述组合对象后,判断所有空闲存储空间中是否存在以页起始位置开始,长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间;
[0087]第二处理模块,用于当所述第四判断模块判断为是时,将所述当前优化对象和所述组合对象复制到所述连续存储空间;
[0088]计算模块,用于当所述第二处理模块处理完成后,根据所述连续存储空间相对于基地址的偏移量和所述当前优化对象的长度,计算所述组合对象相对于基地址的偏移量,或,根据所述连续存储空间相对于基地址的偏移量和所述组合对象的长度,计算当前优化对象相对于基地址的偏移量;
[0089]第二更新模块,用于当所述计算模块计算得到所述组合对象相对于基地址的偏移量后,根据所述连续存储空间相对于基地址的偏移量更新当前优化对象的引用关系,并根据所述组合对象相对于基地址的偏移量,更新所述组合对象的引用关系,或,根据所述连续存储空间相对于基地址的偏移量更新所述组合对象的引用关系,并根据当前优化对象相对于基地址的偏移量,更新当前优化对象的引用关系;
[0090]置位模块,用于当所述第一判断模块判断为是时,将所述当前优化对象的优化标识置位;还用于当所述第三判断模块判断为否时,将所述当前优化对象的优化标识置位;还用于当所述第一更新模块更新完成后,将所述当前优化对象的优化标识置位;还用于当所述第二更新模块更新完成后,将所述当前优化对象和所述组合对象的优化标识置位;
[0091]第五判断模块,用于当所述置位模块将所述当前优化对象和所述组合对象的优化标识置位后,判断所述优化列表中是否还有优化标识复位的对象;
[0092]第二获取模块,用于当所述第五判断模块判断为是时,从所述优化列表中获取优化标识复位的对象作为当前优化对象;
[0093]发送模块,用于当所述第五判断模块判断为否时,向所述上位机返回优化成功响应。
[0094]第六判断模块,用于当所述接收模块接收到命令时,判断接收到的命令是否为预设命令;
[0095]第一调用模块,用于当所述第六判断模块判断为否时,根据接收到的命令,调用相应的应用;
[0096]第七判断模块,用于当所述第一调用单元调用相应的应用后,根据所述应用判断需要执行的操作类型;
[0097]第三更新模块,用于当所述第七判断模块判断为读操作时,更新所述优化列表中的读次数;
[0098]第四更新模块,用于当所述第七判断模块判断为写操作时,更新所述优化列表中的与次数;
[0099]所述发送模块,还用于当所述第三更新单元更新完成后,向上位机返回命令数据采集成功响应;还用于当所述第四更新单元更新完成后,向上位机返回命令数据采集成功响应;还用于当所述第七判断模块判断为其他操作时,执行相应操作,向上位机返回相应响应;
[0100]所述第一处理模块,具体用于当所述第六判断模块判断为是时,将内部保存的优化列表中优化标识复位的对象作为当前优化对象。
[0101]第八判断模块,用于当所述接收模块接收到命令时,判断接收到的命令的类型;
[0102]第九判断模块,用于当所述第八判断模块判断为应用命令时,获取采集标识位,判断所述采集标识位是否置位;
[0103]第二调用模块,用于当所述第九判断模块判断为是时,根据接收到的命令,调用相应的应用;
[0104]第十判断模块,用于当所述第二调用单元调用相应的应用后,根据所述应用判断需要执行的操作类型;
[0105]第五更新模块,用于当所述第十判断模块判断为读操作时,更新所述优化列表中的读次数;
[0106]第六更新模块,用于当所述第十判断模块判断为写操作时,更新所述优化列表中的与次数;
[0107]所述置位模块,还用于当所述第八判断模块判断为采集命令时,将采集标识位置位;
[0108]所述发送模块,还用于当所述置位模块将采集标识位置位时,向上位机返回开始采集响应;还用于当所述第九判断模块判断为否时,向上位机返回不需要采集响应;还用于当所述第五更新模块更新完成后,向上位机返回命令数据采集成功响应;还用于当所述第六更新模块更新完成后,向上位机返回命令数据采集成功响应;
[0109]所述装置还包括:复位模块,用于当所述发送模块向上位机返回命令数据采集成功响应后,将所述采集标识位复位。
[0110]所述第三更新模块,具体包括:
[0111]第一获取单元,用于当所述第七判断模块或所述第九判断模块判断为读操作时,根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;还用于从所述对象表中获取所述读取地址对应的对象的起始地址;
[0112]第一判断单元,用于当所述第一获取单元获取到所述读取地址对应的对象的起始地址时,判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址;
[0113]第一更新单元,用于当所述第一判断单元判断为是时,更新优化列表中所述读取地址对应的对象的起始地址的读次数;
[0114]第一创建单元,用于当所述第一判断单元判断为否时,根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位;
[0115]所述第四更新模块,具体包括:
[0116]第二获取单元,用于当所述第七判断模块或所述第九判断模块判断为写操作时,根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;还用于从对象表中获取所述写地址对应的对象的起始地址;
[0117]第二判断单元,用于当所述第二获取单元获取到所述写地址对应的对象的起始地址时,判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址;
[0118]第二更新单元,用于当所述第二判断单元判断为是时,更新所述优化列表中所述写地址对应的对象的起始地址的写次数;
[0119]第二创建单元,用于当所述第二判断单元判断为否时,根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为第二数值,并将优化标识复位。
[0120]所述第五更新模块,具体包括:
[0121]第三获取单元,用于当所述第七判断模块或所述第九判断模块判断为读操作时,根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;还用于从所述对象表中获取所述读取地址对应的对象的起始地址;
[0122]第三判断单元,用于当所述第一获取单元获取到所述读取地址对应的对象的起始地址时,判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址;
[0123]第三更新单元,用于当所述第一判断单元判断为是时,更新优化列表中所述读取地址对应的对象的起始地址的读次数;
[0124]第三创建单元,用于当所述第一判断单元判断为否时,根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位;
[0125]所述第六更新模块,具体包括:
[0126]第四获取单元,用于当所述第七判断模块或所述第九判断模块判断为写操作时,根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;还用于从对象表中获取所述写地址对应的对象的起始地址;
[0127]第四判断单元,用于当所述第二获取单元获取到所述写地址对应的对象的起始地址时,判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址;
[0128]第四更新单元,用于当所述第二判断单元判断为是时,更新所述优化列表中所述写地址对应的对象的起始地址的写次数;
[0129]第四创建单元,用于当所述第二判断单元判断为否时,根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为第二数值,并将优化标识复位。
[0130]第三调用模块,用于当所述接收模块接收到命令时,调用相应的应用;
[0131]第三获取模块,用于当所述第三调用模块调用相应的应用后,获取所述应用的使用次数;
[0132]第十一判断模块,用于当所述第三获取模块获取到所述应用的使用次数后,判断所述使用次数是否达到优化预设值;
[0133]统计模块,用于当所述第十一判断模块判断为是时,统计所述应用中的对象在对象表中的存储情况;
[0134]第十二判断模块,用于当所述统计模块统计得到所述应用中的对象在对象表中的存储情况后,判断是否存在存储位置大于预设值的对象;
[0135]第三处理模块,用于当所述第十一判断模块判断为否时,或当所述第十二判断模块判断为否时,将所述应用的使用次数自加预设步长,执行应用的相应操作;
[0136]第十三判断模块,用于当所述第十二判断模块判断为是时,根据所述应用判断需要执行的操作类型;
[0137]第七更新模块,用于当所述第十三判断模块判断为读操作时,更新所述优化列表中的读次数;
[0138]第八更新模块,用于当所述第十三判断模块判断为写操作时,更新所述优化列表中的写次数;
[0139]第十四判断模块,用于当所述第十三判断模块判断为其他操作时,或当所述第七更新模块更新完成后,或当所述第八更新模块更新完成后,执行相应操作,将所述应用的使用次数加预设步长,判断所述使用次数与所述优化预设值之差是否大于采集预设值;
[0140]所述发送模块,还用于当所述第三处理模块处理完成后,向上位机返回相应数据;
[0141]所述接收模块,具体用于当所述第十四判断模块判断为否时,接收上位机发送的命令;
[0142]所述第一处理模块,具体用于当所述第十四判断模块判断为是时,将内部保存的优化列表中优化标识复位的对象作为当前优化对象。
[0143]所述第七更新模块,具体包括:
[0144]第三获取单元,用于当所述第十三判断模块判断为读操作时,根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;还用于从所述对象表中获取所述读取地址对应的对象的起始地址;
[0145]第三判断单元,用于当所述第三获取单元获取到所述读取地址对应的对象的起始地址时,判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址;
[0146]第三更新单元,用于当所述第三判断单元判断为是时,更新优化列表中所述读取地址对应的对象的起始地址的读次数;
[0147]第三创建单元,用于当所述第三判断单元判断为否时,根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位;
[0148]所述第八更新模块,具体包括:
[0149]第四获取单元,用于当所述第十四判断模块判断为写操作时,根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;还用于从对象表中获取所述写地址对应的对象的起始地址;
[0150]第四判断单元,用于当所述第四获取单元获取到所述写地址对应的对象的起始地址时,判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址;
[0151]第四更新单元,用于当所述第四判断单元判断为是时,更新所述优化列表中所述写地址对应的对象的起始地址的写次数;
[0152]第四创建单元,用于当所述第四判断单元判断为否时,根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为0,并将优化标识复位;
[0153]所述第十四判断模块,具体用于当所述第四创建单元创建完成后,将所述应用的使用次数加预设步长,判断所述使用次数与所述优化预设值之差是否大于采集预设值。
[0154]第十五判断模块,用于当所述接收模块接收到命令后,根据接收到的命令,获取需要优化的操作类型;
[0155]第一排序模块,用于当所述第十五判断模块判断为读优化操作时,获取所述优化列表中的读次数,根据所述读次数,对所述优化列表中的信息进行排序;
[0156]第二排序模块,用于当所述第十五判断模块判断为写优化操作时,获取所述优化列表中的写次数,根据所述写次数,对所述优化列表中的信息进行排序;
[0157]所述第一处理模块,具体用于当所述第一排序模块排序完成后,获取排序后的优化列表中读次数最大且优化标识复位的对象作为当前优化对象;当所述第二排序模块排序完成后,获取排序后的优化列表中写次数最大且优化标识复位的对象作为当前优化对象。
[0158]所述第一处理模块,具体用于当所述接收模块接收到命令后,将内部保存的优化列表中第一个优化标识复位的对象作为当前优化对象;
[0159]所述第五判断模块,具体用于当所述置位模块将所述当前优化对象和所述组合对象的优化标识置位后,判断所述优化列表中是否还有优化标识复位的对象;
[0160]所述第二获取模块,具体用于当所述第五判断模块判断为是时,将所述当前优化对象的下一个优化标识复位的对象作为当前优化对象。
[0161]记录模块,用于从对象表中获取所述对象的长度,记录为对象长度表;
[0162]所述第一获取模块,具体用于当所述记录模块记录得到所述对象长度表后,从所述对象长度表中获取当前优化对象的长度。
[0163]所述查找模块,具体用于执行以下操作:
[0164]步骤fl:获取所述对象长度表中的第一个长度作为当前长度;
[0165]步骤f2:判断当前长度是否不大于预设页长与当前优化对象长度之差,如果是,则将当前长度对应的对象作为组合对象,执行步骤f3,否则直接执行步骤f3 ;
[0166]步骤f3:判断所述对象长度表中是否还有未查找的长度,如果是,则将当前长度的下一长度作为当前长度,执行步骤f2,否则得到组合对象,触发所述第四判断模块。
[0167]所述第四判断模块,具体用于执行以下操作:
[0168]步骤gl:将所有空闲存储空间中的第一部分空闲存储空间作为当前空闲存储空间;
[0169]步骤g2:判断所述当前空闲存储空间中是否有空物理页,如果是,则执行步骤g3,否则执行步骤g5 ;
[0170]步骤g3:将当前空闲存储空间中的第一个空物理页作为当前空物理页;
[0171]步骤g4:判断在当前空闲存储空间中是否存在从当前空物理页的起始位置起长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤S10,否则执行步骤g5;
[0172]步骤g5:所述智能卡判断所有空闲存储空间中是否还有未处理的空闲存储空间,如果是,则将当前空闲存储空间的下一空闲存储空间作为当前空闲存储空间,执行步骤g2,否则将当前优化对象的优化标识置位,触发所述接收模块。
[0173]所述第一更新模块,还用于当所述置位模块将所述当前优化对象的优化标识置位后,将当前优化对象置为空闲存储空间;
[0174]所述第二更新模块,还用于当所述置位模块将所述当前优化对象和所述组合对象的优化标识置位后,将当前优化对象和所述组合对象置为空闲存储空间。
[0175]本发明取得的有益效果是:采用本发明的技术方案,能够实现在应用运行时对读写访问智能卡的操作频度进行优化,减少智能卡中对存储器的物理页的读写次数,提高了智能卡的使用寿命。

【专利附图】

【附图说明】
[0176]为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需待使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0177]图1和图2是本发明实施例一提供的一种优化数据读写的方法流程图;
[0178]图3和图4是本发明实施例二提供的一种优化数据读写的方法流程图;
[0179]图5和图6是本发明实施例三提供的一种优化数据读写的方法流程图;
[0180]图7是本发明实施例四提供的一种优化数据读写的装置图。

【具体实施方式】
[0181]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0182]实施例一
[0183]本发明实施例一提供了一种优化数据读写的方法,如图1和图2所示,包括:
[0184]步骤101:智能卡上电;
[0185]步骤102:智能卡等待接收上位机发送的命令,当接收到命令时,判断接收到的命令的类型,如果是采集命令,则执行步骤103,如果是应用命令,则执行步骤104,如果是优化命令,执行步骤117 ;
[0186]优选的,智能卡根据命令的前两个字节判定命令的类型,如果命令的前两个字节为OxOOAA,则接收到的是采集命令,如果命令的前两个字节为OxOOBB,则接收到的是优化命令,命令的前两个字节为其他字节码,则接收到的是应用命令;
[0187]步骤103:智能卡将采集标识位置位,并向上位机返回开始采集响应,返回步骤102 ;
[0188]步骤104:智能卡获取采集标识位,判断所述采集标识位是否置位,如果是,则执行步骤105,否则返回不需要采集响应,返回步骤102 ;
[0189]步骤105:智能卡根据接收到的应用命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则执行步骤106,如果是写操作,则执行步骤111,如果是其他操作,执行相应操作,返回相应响应,返回步骤102 ;
[0190]本实施例中,所述应用命令中包括读操作和/或写操作和/或其他操作,例如,智能卡接收到上位机发送的应用命令为修改PIN码命令,则调用相应的修改PIN码的applet应用,该applet应用中包括读原始PIN码的操作和写新PIN码的操作;
[0191]步骤106:智能卡根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;
[0192]本实施例中,智能卡根据上位机发送的命令获取内部需要执行的应用,该应用为读操作和写操作提供对应的读写起始地址和读写长度;
[0193]其中,所述对象表中包括对象、对象的起始地址,对象的长度和对象间的引用关系,所述需要读取数据的读取地址,具体为所述应用命令的数据域;
[0194]本实施例中,所述从对象表中获取与所述读取地址对应的对象,具体为:遍历对象表中对象的起始地址,获取最接近且小于或等于所述读取地址的起始地址,获取该起始地址对应的对象;
[0195]例如,对象表为:
[0196]

【权利要求】
1.一种优化数据读写的方法,其特征在于,包括: 步骤S1:智能卡上电; 步骤S2:所述智能卡等待接收上位机发送的命令; 步骤S3:当所述智能卡接收到命令后,将内部保存的优化列表中优化标识复位的对象作为当前优化对象; 步骤S4:所述智能卡判断所述当前优化对象的起始地址是否为物理页的起始位置,如果是,则将所述当前优化对象的优化标识置位,执行步骤S13,否则执行步骤S5 ; 步骤S5:所述智能卡获取所述当前优化对象的长度,判断所述当前优化对象的长度是否大于或等于预设页长,如果是,则执行步骤S6,否则执行步骤S8 ; 步骤S6:所述智能卡判断所有空闲存储空间中是否存在以物理页的起始位置开始,长度大于当前优化对象的连续存储空间,如果是,则执行步骤S7,否则将当前优化对象的优化标识置位,执行步骤S13 ; 步骤S7:所述智能卡将当前优化对象复制到所述连续存储空间,根据所述连续存储空间相对于基地址的偏移量,更新所述当前优化对象的引用关系,并将所述当前优化对象的优化标识置位,执行步骤S13 ; 步骤S8:所述智能卡从所述优化列表中查找长度之和不大于预设页长与当前优化对象的长度之差的多个对象,或,长度不大于预设页长与当前优化对象的长度之差的对象,作为组合对象; 步骤S9:所述智能卡判断所有空闲存储空间中是否存在以页起始位置开始,长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤S10,否则将当前优化对象的优化标识置位,执行步骤S13 ; 步骤SlO:所述智能卡将所述当前优化对象和所述组合对象复制到所述连续存储空间; 步骤Sll:所述智能卡根据所述连续存储空间相对于基地址的偏移量和所述当前优化对象的长度,计算所述组合对象相对于基地址的偏移量,根据所述连续存储空间相对于基地址的偏移量更新当前优化对象的引用关系,并根据所述组合对象相对于基地址的偏移量,更新所述组合对象的引用关系; 或,所述智能卡根据所述连续存储空间相对于基地址的偏移量和所述组合对象的长度,计算当前优化对象相对于基地址的偏移量,根据所述连续存储空间相对于基地址的偏移量更新所述组合对象的引用关系,并根据当前优化对象相对于基地址的偏移量,更新当前优化对象的引用关系; 步骤S12:所述智能卡将所述当前优化对象和所述组合对象的优化标识置位; 步骤S13:所述智能卡判断所述优化列表中是否还有优化标识复位的对象,如果是,则从所述优化列表中获取优化标识复位的对象作为当前优化对象,返回执行步骤S4,否则向所述上位机返回优化成功响应,返回步骤S2。
2.根据权利要求1所述的方法,其特征在于,所述步骤S2中,当所述智能卡接收到命令时,还包括:所述智能卡判断接收到的命令是否为预设命令,如果是,则执行步骤S3,否则执行步骤al ; 步骤al:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是写操作,则更新所述优化列表中的写次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是其他操作,执行相应操作,向所述上位机返回相应响应,返回步骤S2。
3.根据权利要求1所述的方法,其特征在于,所述步骤S2中,当所述智能卡接收到命令时,还包括:所述智能卡判断接收到的命令的类型,如果是采集命令,则执行步骤bl,如果是优化命令,则执行步骤S3,如果是应用命令,则执行步骤b2 ; 步骤bl:所述智能卡将采集标识位置位,并向所述上位机返回开始采集响应,返回步骤S2 ; 步骤b2:所述智能卡获取采集标识位,判断所述采集标识位是否置位,如果是,则执行步骤b3,否则向所述上位机返回不需要采集响应,返回步骤S2 ; 步骤b3:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是写操作,则更新所述优化列表中的写次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是其他操作,执行相应操作,向所述上位机返回相应响应,返回步骤S2 ; 所述向所述上位机返回命令数据采集成功响应之后,还包括将所述采集标识位复位。
4.根据权利要求2或3所述的方法,其特征在于,所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是写操作,则更新所述优化列表中的写次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是其他操作,执行相应操作,向所述上位机返回相应响应,返回步骤S2,具体为: 步骤Cl:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则执行步骤c2,如果是写操作,则执行步骤c7,如果是其他操作,执行相应操作,返回相应响应,返回步骤S2 ; 步骤c2:所述智能卡根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象; 步骤c3:所述智能卡从所述对象表中获取所述读取地址对应的对象的起始地址; 步骤c4:所述智能卡判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址,如果是,则执行步骤c5,否则执行步骤c6 ; 步骤c5:所述智能卡更新所述优化列表中所述读取地址对应的对象的起始地址的读次数,执行步骤cl2 ; 步骤c6:所述智能卡根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位,执行步骤cl2 ; 步骤c7:所述智能卡根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象; 步骤c8:所述智能卡从对象表中获取所述写地址对应的对象的起始地址; 步骤c9:所述智能卡判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址,如果是,则执行步骤clO,否则执行步骤cll ; 步骤ClO:所述智能卡更新优化列表中所述写地址对应的对象的起始地址的写次数,执行步骤cl2 ; 步骤cll:所述智能卡根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为0,并将优化标识复位,执行步骤cl2 ; 步骤cl2:所述智能卡向上位机返回数据采集成功响应,返回步骤S2。
5.根据权利要求1所述的方法,其特征在于,所述步骤S2中,当接收到命令时,还包括: 步骤dl:所述智能卡调用相应的应用,获取所述应用的使用次数,判断所述使用次数是否达到优化预设值,如果是,则执行步骤d2,否则将所述应用的使用次数自加预设步长,执行应用的相应操作,向上位机返回相应数据,返回步骤S2 ; 步骤d2:所述智能卡统计所述应用中的对象在对象表中的存储情况,判断是否存在存储位置大于预设值的对象,如果是,则执行步骤d3,否则将所述应用的使用次数自加预设步长,执行应用的相应操作,向上位机返回相应数据,返回步骤S2 ; 步骤d3:所述智能卡根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,执行步骤d4,如果是写操作,则更新所述优化列表中的写次数,执行步骤d4,否则直接执行步骤d4,如果是其他操作,则执行相应操作,执行步骤d4 ; 步骤d4:所述智能卡将所述应用的使用次数加预设步长,判断所述使用次数与所述优化预设值之差是否大于采集预设值,如果是,则执行步骤S3,否则返回步骤S2。
6.根据权利要求5所述的方法,其特征在于,所述步骤d3,具体为: 步骤d3-l:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用,判断需要执行的操作类型,如果是读操作,则执行步骤d3-2,如果是写操作,则执行步骤d3-7,如果是其他操作,则执行相应操作,执行步骤d4 ; 步骤d3-2:所述智能卡根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象; 步骤d3-3:所述智能卡从所述对象表中获取与所述读取地址对应的对象的起始地址;步骤d3-4:所述智能卡判断从优化列表中是否能找到与所述读取地址对应的对象的起始地址,如果是,则执行步骤d3-5,否则执行步骤d3-6 ; 步骤d3-5:所述智能卡更新优化列表中所述读取地址对应的对象的起始地址的读次数,执行步骤d4; 步骤d3-6:所述智能卡根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位,执行步骤d4 ; 步骤d3-7:所述智能卡根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象; 步骤d3-8:所述智能卡从对象表中获取所述写地址对应的对象的起始地址; 步骤d3-9:所述智能卡判断从优化列表中是否能找到写地址对应的对象的起始地址,如果是,则执行步骤d3-10,否则执行步骤d3-ll ; 步骤d3-10:所述智能卡更新优化列表中所述写地址对应的对象的起始地址的写次数,执行步骤d4; 步骤d3-ll:所述智能卡根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为O,并将优化标识复位,执行步骤d4。
7.根据权利要求2或3或5中任一所述的方法,其特征在于,所述步骤S3,具体包括: 所述智能卡接收到命令后,根据接收到的命令,获取需要优化的操作类型,如果是读优化操作,则执行步骤el,如果是写优化操作,则执行步骤e2 ; 步骤el:所述智能卡获取所述优化列表中的读次数,根据所述读次数,对所述优化列表中的信息进行排序,并获取排序后的优化列表中读次数最大且优化标识复位的对象作为当前优化对象; 步骤e2:所述智能卡获取所述优化列表中的写次数,根据所述写次数,对所述优化列表中的信息进行排序,并获取排序后的优化列表中写次数最大且优化标识复位的对象作为当前优化对象。
8.根据权利要求1所述的方法,其特征在于, 所述步骤S2,具体为:当所述智能卡接收到命令后,将内部保存的优化列表中第一个优化标识复位的对象作为当前优化对象; 所述步骤S13,具体为:所述智能卡判断所述优化列表中是否还有优化标识复位的对象,如果是,则将所述当前优化对象的下一个优化标识复位的对象作为当前优化对象,返回执行步骤S4,否则向所述上位机返回优化成功响应,返回步骤S2。
9.根据权利要求1所述的方法,其特征在于, 所述步骤S4之前还包括:从对象表中获取所述对象的长度,将所述对象的长度记录到对象长度表中; 所述步骤S5中,所述获取所述当前优化对象的长度,具体为:从所述对象长度表中获取当前优化对象的长度。
10.根据权利要求9所述的方法,其特征在于,所述步骤S8,具体包括: 步骤fl:所述智能卡获取所述对象长度表中的第一个长度作为当前长度; 步骤f2:所述智能卡判断当前长度是否不大于预设页长与当前优化对象长度之差,如果是,则将当前长度对应的对象作为组合对象,执行步骤f3,否则直接执行步骤f3 ; 步骤f3:所述智能卡判断所述对象长度表中是否还有未查找的长度,如果是,则将当前长度的下一长度作为当前长度,执行步骤f2,否则得到组合对象,执行步骤S9。
11.根据权利要求1所述的方法,其特征在于,所述步骤S9,具体包括: 步骤gl:所述智能卡将所有空闲存储空间中的第一部分空闲存储空间作为当前空闲存储空间; 步骤g2:所述智能卡判断所述当前空闲存储空间中是否有空物理页,如果是,则执行步骤g3,否则执行步骤g5; 步骤g3:所述智能卡将当前空闲存储空间中的第一个空物理页作为当前空物理页; 步骤g4:所述智能卡判断在当前空闲存储空间中是否存在从当前空物理页的起始位置起长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤S10,否则执行步骤g5 ; 步骤g5:所述智能卡判断所有空闲存储空间中是否还有未处理的空闲存储空间,如果是,则将当前空闲存储空间的下一空闲存储空间作为当前空闲存储空间,执行步骤g2,否则将当前优化对象的优化标识置位,返回步骤S2。
12.根据权利要求1所述的方法,其特征在于, 所述步骤S7还包括:所述智能卡将当前优化对象置为空闲存储空间; 所述步骤S12还包括:所述智能卡将当前优化对象和所述组合对象置为空闲存储空间。
13.一种优化数据读写的装置,其特征在于,包括: 接收模块,用于接收上位机发送的命令; 第一处理模块,用于当所述接收模块接收到命令后,将内部保存的优化列表中优化标识复位的对象作为当前优化对象; 第一判断模块,用于当所述第一处理模块处理得到当前优化对象后,判断所述当前优化对象的起始地址是否为物理页的起始位置; 第一获取模块,用于当所述第一判断模块判断为否时,获取所述当前优化对象的长度; 第二判断模块,用于当所述第一获取模块获取到所述当前优化对象的长度时,判断所述当前优化对象的长度是否大于或等于预设页长; 第三判断模块,用于当所述第二判断模块判断为是时,判断所有空闲存储空间中是否存在以物理页的起始位置开始,长度大于当前优化对象的连续存储空间; 第一更新模块,用于当所述第三判断模块判断为是时,将当前优化对象复制到所述连续存储空间,根据所述连续存储空间相对于基地址的偏移量,更新所述当前优化对象的引用关系,并所述当前优化对象的优化标识置位; 查找模块,用于当所述第二判断模块判断为否时,从所述优化列表中查找长度之和不大于预设页长与当前优化对象的长度之差的多个对象,或,长度不大于预设页长与当前优化对象的长度之差的对象,作为组合对象; 第四判断模块,用于当所述查找模块查找到所述组合对象后,判断所有空闲存储空间中是否存在以页起始位置开始,长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间; 第二处理模块,用于当所述第四判断模块判断为是时,将所述当前优化对象和所述组合对象复制到所述连续存储空间; 计算模块,用于当所述第二处理模块处理完成后,根据所述连续存储空间相对于基地址的偏移量和所述当前优化对象的长度,计算所述组合对象相对于基地址的偏移量,或,根据所述连续存储空间相对于基地址的偏移量和所述组合对象的长度,计算当前优化对象相对于基地址的偏移量; 第二更新模块,用于当所述计算模块计算得到所述组合对象相对于基地址的偏移量后,根据所述连续存储空间相对于基地址的偏移量更新当前优化对象的引用关系,并根据所述组合对象相对于基地址的偏移量,更新所述组合对象的引用关系,或,根据所述连续存储空间相对于基地址的偏移量更新所述组合对象的引用关系,并根据当前优化对象相对于基地址的偏移量,更新当前优化对象的引用关系; 置位模块,用于当所述第一判断模块判断为是时,将所述当前优化对象的优化标识置位;还用于当所述第三判断模块判断为否时,将所述当前优化对象的优化标识置位;还用于当所述第一更新模块更新完成后,将所述当前优化对象的优化标识置位;还用于当所述第二更新模块更新完成后,将所述当前优化对象和所述组合对象的优化标识置位; 第五判断模块,用于当所述置位模块将所述当前优化对象和所述组合对象的优化标识置位后,判断所述优化列表中是否还有优化标识复位的对象; 第二获取模块,用于当所述第五判断模块判断为是时,从所述优化列表中获取优化标识复位的对象作为当前优化对象; 发送模块,用于当所述第五判断模块判断为否时,向所述上位机返回优化成功响应。
14.根据权利要求13所述的装置,其特征在于,还包括: 第六判断模块,用于当所述接收模块接收到命令时,判断接收到的命令是否为预设命令; 第一调用模块,用于当所述第六判断模块判断为否时,根据接收到的命令,调用相应的应用; 第七判断模块,用于当所述第一调用单元调用相应的应用后,根据所述应用判断需要执行的操作类型; 第三更新模块,用于当所述第七判断模块判断为读操作时,更新所述优化列表中的读次数; 第四更新模块,用于当所述第七判断模块判断为写操作时,更新所述优化列表中的写次数; 所述发送模块,还用于当所述第三更新单元更新完成后,向上位机返回命令数据采集成功响应;还用于当所述第四更新单元更新完成后,向上位机返回命令数据采集成功响应;还用于当所述第七判断模块判断为其他操作时,执行相应操作,向上位机返回相应响应;所述第一处理模块,具体用于当所述第六判断模块判断为是时,将内部保存的优化列表中优化标识复位的对象作为当前优化对象。
15.根据权利要求13所述的装置,其特征在于,还包括: 第八判断模块,用于当所述接收模块接收到命令时,判断接收到的命令的类型; 第九判断模块,用于当所述第八判断模块判断为应用命令时,获取采集标识位,判断所述采集标识位是否置位; 第二调用模块,用于当所述第九判断模块判断为是时,根据接收到的命令,调用相应的应用; 第十判断模块,用于当所述第二调用单元调用相应的应用后,根据所述应用判断需要执行的操作类型; 第五更新模块,用于当所述第十判断模块判断为读操作时,更新所述优化列表中的读次数; 第六更新模块,用于当所述第十判断模块判断为写操作时,更新所述优化列表中的写次数; 所述置位模块,还用于当所述第八判断模块判断为采集命令时,将采集标识位置位; 所述发送模块,还用于当所述置位模块将采集标识位置位时,向上位机返回开始采集响应;还用于当所述第九判断模块判断为否时,向上位机返回不需要采集响应;还用于当所述第五更新模块更新完成后,向上位机返回命令数据采集成功响应;还用于当所述第六更新模块更新完成后,向上位机返回命令数据采集成功响应; 所述装置还包括:复位模块,用于当所述发送模块向上位机返回命令数据采集成功响应后,将所述采集标识位复位。
16.根据权利要求14所述的装置,其特征在于, 所述第三更新模块,具体包括: 第一获取单元,用于当所述第七判断模块或所述第九判断模块判断为读操作时,根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;还用于从所述对象表中获取所述读取地址对应的对象的起始地址; 第一判断单元,用于当所述第一获取单元获取到所述读取地址对应的对象的起始地址时,判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址; 第一更新单元,用于当所述第一判断单元判断为是时,更新优化列表中所述读取地址对应的对象的起始地址的读次数; 第一创建单元,用于当所述第一判断单元判断为否时,根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位; 所述第四更新模块,具体包括: 第二获取单元,用于当所述第七判断模块或所述第九判断模块判断为写操作时,根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;还用于从对象表中获取所述写地址对应的对象的起始地址; 第二判断单元,用于当所述第二获取单元获取到所述写地址对应的对象的起始地址时,判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址; 第二更新单元,用于当所述第二判断单元判断为是时,更新所述优化列表中所述写地址对应的对象的起始地址的写次数; 第二创建单元,用于当所述第二判断单元判断为否时,根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为第二数值,并将优化标识复位。
17.根据权利要求15所述的装置,其特征在于, 所述第五更新模块,具体包括: 第三获取单元,用于当所述第七判断模块或所述第九判断模块判断为读操作时,根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;还用于从所述对象表中获取所述读取地址对应的对象的起始地址; 第三判断单元,用于当所述第一获取单元获取到所述读取地址对应的对象的起始地址时,判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址; 第三更新单元,用于当所述第一判断单元判断为是时,更新优化列表中所述读取地址对应的对象的起始地址的读次数; 第三创建单元,用于当所述第一判断单元判断为否时,根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位; 所述第六更新模块,具体包括: 第四获取单元,用于当所述第七判断模块或所述第九判断模块判断为写操作时,根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;还用于从对象表中获取所述写地址对应的对象的起始地址; 第四判断单元,用于当所述第二获取单元获取到所述写地址对应的对象的起始地址时,判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址; 第四更新单元,用于当所述第二判断单元判断为是时,更新所述优化列表中所述写地址对应的对象的起始地址的写次数; 第四创建单元,用于当所述第二判断单元判断为否时,根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为第二数值,并将优化标识复位。
18.根据权利要求13所述的装置,其特征在于,还包括: 第三调用模块,用于当所述接收模块接收到命令时,调用相应的应用; 第三获取模块,用于当所述第三调用模块调用相应的应用后,获取所述应用的使用次数; 第十一判断模块,用于当所述第三获取模块获取到所述应用的使用次数后,判断所述使用次数是否达到优化预设值; 统计模块,用于当所述第十一判断模块判断为是时,统计所述应用中的对象在对象表中的存储情况; 第十二判断模块,用于当所述统计模块统计得到所述应用中的对象在对象表中的存储情况后,判断是否存在存储位置大于预设值的对象; 第三处理模块,用于当所述第十一判断模块判断为否时,或当所述第十二判断模块判断为否时,将所述应用的使用次数自加预设步长,执行应用的相应操作; 第十三判断模块,用于当所述第十二判断模块判断为是时,根据所述应用判断需要执行的操作类型; 第七更新模块,用于当所述第十三判断模块判断为读操作时,更新所述优化列表中的读次数; 第八更新模块,用于当所述第十三判断模块判断为写操作时,更新所述优化列表中的写次数; 第十四判断模块,用于当所述第十三判断模块判断为其他操作时,或当所述第七更新模块更新完成后,或当所述第八更新模块更新完成后,执行相应操作,将所述应用的使用次数加预设步长,判断所述使用次数与所述优化预设值之差是否大于采集预设值; 所述发送模块,还用于当所述第三处理模块处理完成后,向上位机返回相应数据; 所述接收模块,具体用于当所述第十四判断模块判断为否时,接收上位机发送的命令; 所述第一处理模块,具体用于当所述第十四判断模块判断为是时,将内部保存的优化列表中优化标识复位的对象作为当前优化对象。
19.根据权利要求18所述的装置,其特征在于, 所述第七更新模块,具体包括: 第三获取单元,用于当所述第十三判断模块判断为读操作时,根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;还用于从所述对象表中获取所述读取地址对应的对象的起始地址; 第三判断单元,用于当所述第三获取单元获取到所述读取地址对应的对象的起始地址时,判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址; 第三更新单元,用于当所述第三判断单元判断为是时,更新优化列表中所述读取地址对应的对象的起始地址的读次数; 第三创建单元,用于当所述第三判断单元判断为否时,根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位; 所述第八更新模块,具体包括: 第四获取单元,用于当所述第十四判断模块判断为写操作时,根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;还用于从对象表中获取所述写地址对应的对象的起始地址; 第四判断单元,用于当所述第四获取单元获取到所述写地址对应的对象的起始地址时,判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址; 第四更新单元,用于当所述第四判断单元判断为是时,更新所述优化列表中所述写地址对应的对象的起始地址的写次数; 第四创建单元,用于当所述第四判断单元判断为否时,根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为O,并将优化标识复位; 所述第十四判断模块,具体用于当所述第四创建单元创建完成后,将所述应用的使用次数加预设步长,判断所述使用次数与所述优化预设值之差是否大于采集预设值。
20.根据权利要求14或15或18中任一所述的装置,其特征在于,所述装置还包括: 第十五判断模块,用于当所述接收模块接收到命令后,根据接收到的命令,获取需要优化的操作类型; 第一排序模块,用于当所述第十五判断模块判断为读优化操作时,获取所述优化列表中的读次数,根据所述读次数,对所述优化列表中的信息进行排序; 第二排序模块,用于当所述第十五判断模块判断为写优化操作时,获取所述优化列表中的写次数,根据所述写次数,对所述优化列表中的信息进行排序; 所述第一处理模块,具体用于当所述第一排序模块排序完成后,获取排序后的优化列表中读次数最大且优化标识复位的对象作为当前优化对象;当所述第二排序模块排序完成后,获取排序后的优化列表中写次数最大且优化标识复位的对象作为当前优化对象。
21.根据权利要求13所述的装置,其特征在于, 所述第一处理模块,具体用于当所述接收模块接收到命令后,将内部保存的优化列表中第一个优化标识复位的对象作为当前优化对象; 所述第五判断模块,具体用于当所述置位模块将所述当前优化对象和所述组合对象的优化标识置位后,判断所述优化列表中是否还有优化标识复位的对象; 所述第二获取模块,具体用于当所述第五判断模块判断为是时,将所述当前优化对象的下一个优化标识复位的对象作为当前优化对象。
22.根据权利要求13所述的装置,其特征在于,还包括: 记录模块,用于从对象表中获取所述对象的长度,记录为对象长度表; 所述第一获取模块,具体用于当所述记录模块记录得到所述对象长度表后,从所述对象长度表中获取当前优化对象的长度。
23.根据权利要求22所述的装置,其特征在于, 所述查找模块,具体用于执行以下操作: 步骤fl:获取所述对象长度表中的第一个长度作为当前长度; 步骤f2:判断当前长度是否不大于预设页长与当前优化对象长度之差,如果是,则将当前长度对应的对象作为组合对象,执行步骤f3,否则直接执行步骤f3 ; 步骤f3:判断所述对象长度表中是否还有未查找的长度,如果是,则将当前长度的下一长度作为当前长度,执行步骤f2,否则得到组合对象,触发所述第四判断模块。
24.根据权利要求13所述的装置,其特征在于, 所述第四判断模块,具体用于执行以下操作: 步骤gl:将所有空闲存储空间中的第一部分空闲存储空间作为当前空闲存储空间;步骤g2:判断所述当前空闲存储空间中是否有空物理页,如果是,则执行步骤g3,否则执行步骤g5 ; 步骤g3:将当前空闲存储空间中的第一个空物理页作为当前空物理页; 步骤g4:判断在当前空闲存储空间中是否存在从当前空物理页的起始位置起长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤S10,否则执行步骤g5 ; 步骤g5:所述智能卡判断所有空闲存储空间中是否还有未处理的空闲存储空间,如果是,则将当前空闲存储空间的下一空闲存储空间作为当前空闲存储空间,执行步骤g2,否则将当前优化对象的优化标识置位,触发所述接收模块。
25.根据权利要求13所述的装置,其特征在于, 所述第一更新模块,还用于当所述置位模块将所述当前优化对象的优化标识置位后,将当前优化对象置为空闲存储空间; 所述第二更新模块,还用于当所述置位模块将所述当前优化对象和所述组合对象的优化标识置位后,将当前优化对象和所述组合对象置为空闲存储空间。
【文档编号】G06F12/06GK104182358SQ201410414727
【公开日】2014年12月3日 申请日期:2014年8月21日 优先权日:2014年8月21日
【发明者】陆舟, 于华章 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1