CN104182358A - 一种优化数据读写的方法及装置 - Google Patents
一种优化数据读写的方法及装置 Download PDFInfo
- Publication number
- CN104182358A CN104182358A CN201410414727.4A CN201410414727A CN104182358A CN 104182358 A CN104182358 A CN 104182358A CN 201410414727 A CN201410414727 A CN 201410414727A CN 104182358 A CN104182358 A CN 104182358A
- Authority
- CN
- China
- Prior art keywords
- optimization
- address
- module
- length
- smart card
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种优化数据读写的方法及装置,属于信息安全领域。所述方法包括:智能卡接收到上位机发送的命令,从内部保存的优化列表中获取当前优化对象,若当前优化对象不在物理页的起始位置,则如果当前优化对象的长度大于等于预设页长,则将当前优化对象存放在空闲存储空间的物理页的起始位置,修改引用关系;如果当前优化对象的长度小于预设页长,则获取优化列表中能够与当前优化对象存储在一页的对象,作为组合对象,将当前优化对象和组合对象存放在空闲存储空间的物理页的起始位置,修改引用关系。采用本发明的技术方案,能够实现在应用运行时对读写访问智能卡的操作频度进行优化,减少对象表的读写次数,提高了智能卡的使用寿命。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种优化数据读写的方法及装置。
背景技术
目前,智能卡应用开发商在开发智能卡时,经常会面临这样的问题,由于智能卡芯片性能和存储空间局限性,为了智能卡应用在有限的时间内完成运行,开发工程师不得不对应用进行反复优化,减少对NVM(Nonvolatile Memory,非易失性存储器,目前在智能卡上采用的主要是EEPROM和FLASH)的读次数或写次数和程序的调用复杂度。
现有技术中,智能卡的优化操作是在智能卡闲置情况下进行优化的,如果智能卡处于运行的过程中,则无法对智能卡进行优化,这样会导致在对智能卡进行数据读写时,由于未进行优化,增加了智能卡中对存储器的物理页的读写访问次数,减少了智能卡的使用寿命。
发明内容
本发明为了解决现有技术中存在的不足,提供了一种优化数据读写的方法及装置。
本发明采用的技术方案是:一种优化数据读写的方法,包括:
步骤S1:智能卡上电;
步骤S2:所述智能卡等待接收上位机发送的命令;
步骤S3:当所述智能卡接收到命令后,将内部保存的优化列表中优化标识复位的对象作为当前优化对象;
步骤S4:所述智能卡判断所述当前优化对象的起始地址是否为物理页的起始位置,如果是,则将所述当前优化对象的优化标识置位,执行步骤S13,否则执行步骤S5;
步骤S5:所述智能卡获取所述当前优化对象的长度,判断所述当前优化对象的长度是否大于或等于预设页长,如果是,则执行步骤S6,否则执行步骤S8;
步骤S6:所述智能卡判断所有空闲存储空间中是否存在以物理页的起始位置开始,长度大于当前优化对象的连续存储空间,如果是,则执行步骤S7,否则将当前优化对象的优化标识置位,执行步骤S13;
步骤S7:所述智能卡将当前优化对象复制到所述连续存储空间,根据所述连续存储空间相对于基地址的偏移量,更新所述当前优化对象的引用关系,并将所述当前优化对象的优化标识置位,执行步骤S13;
步骤S8:所述智能卡从所述优化列表中查找长度之和不大于预设页长与当前优化对象的长度之差的多个对象,或,长度不大于预设页长与当前优化对象的长度之差的对象,作为组合对象;
步骤S9:所述智能卡判断所有空闲存储空间中是否存在以页起始位置开始,长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤S10,否则将当前优化对象的优化标识置位,执行步骤S13;
步骤S10:所述智能卡将所述当前优化对象和所述组合对象复制到所述连续存储空间;
步骤S11:所述智能卡根据所述连续存储空间相对于基地址的偏移量和所述当前优化对象的长度,计算所述组合对象相对于基地址的偏移量,根据所述连续存储空间相对于基地址的偏移量更新当前优化对象的引用关系,并根据所述组合对象相对于基地址的偏移量,更新所述组合对象的引用关系;
或,所述智能卡根据所述连续存储空间相对于基地址的偏移量和所述组合对象的长度,计算当前优化对象相对于基地址的偏移量,根据所述连续存储空间相对于基地址的偏移量更新所述组合对象的引用关系,并根据当前优化对象相对于基地址的偏移量,更新当前优化对象的引用关系;
步骤S12:所述智能卡将所述当前优化对象和所述组合对象的优化标识置位;
步骤S13:所述智能卡判断所述优化列表中是否还有优化标识复位的对象,如果是,则从所述优化列表中获取优化标识复位的对象作为当前优化对象,返回执行步骤S4,否则向所述上位机返回优化成功响应,返回步骤S2。
所述步骤S2中,当所述智能卡接收到命令时,还包括:所述智能卡判断接收到的命令是否为预设命令,如果是,则执行步骤S3,否则执行步骤a1;
步骤a1:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是写操作,则更新所述优化列表中的写次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是其他操作,执行相应操作,向所述上位机返回相应响应,返回步骤S2。
所述步骤S2中,当所述智能卡接收到命令时,还包括:所述智能卡判断接收到的命令的类型,如果是采集命令,则执行步骤b1,如果是优化命令,则执行步骤S3,如果是应用命令,则执行步骤b2;
步骤b1:所述智能卡将采集标识位置位,并向所述上位机返回开始采集响应,返回步骤S2;
步骤b2:所述智能卡获取采集标识位,判断所述采集标识位是否置位,如果是,则执行步骤b3,否则向所述上位机返回不需要采集响应,返回步骤S2;
步骤b3:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是写操作,则更新所述优化列表中的写次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是其他操作,执行相应操作,向所述上位机返回相应响应,返回步骤S2;
所述向所述上位机返回命令数据采集成功响应之后,还包括将所述采集标识位复位。
所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是写操作,则更新所述优化列表中的写次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是其他操作,执行相应操作,向所述上位机返回相应响应,返回步骤S2,具体为:
步骤c1:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则执行步骤c2,如果是写操作,则执行步骤c7,如果是其他操作,执行相应操作,返回相应响应,返回步骤S2;
步骤c2:所述智能卡根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;
步骤c3:所述智能卡从所述对象表中获取所述读取地址对应的对象的起始地址;
步骤c4:所述智能卡判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址,如果是,则执行步骤c5,否则执行步骤c6;
步骤c5:所述智能卡更新所述优化列表中所述读取地址对应的对象的起始地址的读次数,执行步骤c12;
步骤c6:所述智能卡根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位,执行步骤c12;
步骤c7:所述智能卡根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;
步骤c8:所述智能卡从对象表中获取所述写地址对应的对象的起始地址;
步骤c9:所述智能卡判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址,如果是,则执行步骤c10,否则执行步骤c11;
步骤c10:所述智能卡更新优化列表中所述写地址对应的对象的起始地址的写次数,执行步骤c12;
步骤c11:所述智能卡根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为0,并将优化标识复位,执行步骤c12;
步骤c12:所述智能卡向上位机返回数据采集成功响应,返回步骤S2。
所述步骤S2中,当接收到命令时,还包括:
步骤d1:所述智能卡调用相应的应用,获取所述应用的使用次数,判断所述使用次数是否达到优化预设值,如果是,则执行步骤d2,否则将所述应用的使用次数自加预设步长,执行应用的相应操作,向上位机返回相应数据,返回步骤S2;
步骤d2:所述智能卡统计所述应用中的对象在对象表中的存储情况,判断是否存在存储位置大于预设值的对象,如果是,则执行步骤d3,否则将所述应用的使用次数自加预设步长,执行应用的相应操作,向上位机返回相应数据,返回步骤S2;
步骤d3:所述智能卡根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,执行步骤d4,如果是写操作,则更新所述优化列表中的写次数,执行步骤d4,否则直接执行步骤d4,如果是其他操作,则执行相应操作,执行步骤d4;
步骤d4:所述智能卡将所述应用的使用次数加预设步长,判断所述使用次数与所述优化预设值之差是否大于采集预设值,如果是,则执行步骤S3,否则返回步骤S2。
所述步骤d3,具体为:
步骤d3-1:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用,判断需要执行的操作类型,如果是读操作,则执行步骤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-11;
步骤d3-10:所述智能卡更新优化列表中所述写地址对应的对象的起始地址的写次数,执行步骤d4;
步骤d3-11:所述智能卡根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为0,并将优化标识复位,执行步骤d4。
所述步骤S3,具体包括:
所述智能卡接收到命令后,根据接收到的命令,获取需要优化的操作类型,如果是读优化操作,则执行步骤e1,如果是写优化操作,则执行步骤e2;
步骤e1:所述智能卡获取所述优化列表中的读次数,根据所述读次数,对所述优化列表中的信息进行排序,并获取排序后的优化列表中读次数最大且优化标识复位的对象作为当前优化对象;
步骤e2:所述智能卡获取所述优化列表中的写次数,根据所述写次数,对所述优化列表中的信息进行排序,并获取排序后的优化列表中写次数最大且优化标识复位的对象作为当前优化对象。
所述步骤S2,具体为:当所述智能卡接收到命令后,将内部保存的优化列表中第一个优化标识复位的对象作为当前优化对象;
所述步骤S13,具体为:所述智能卡判断所述优化列表中是否还有优化标识复位的对象,如果是,则将所述当前优化对象的下一个优化标识复位的对象作为当前优化对象,返回执行步骤S4,否则向所述上位机返回优化成功响应,返回步骤S2。
所述步骤S4之前还包括:从对象表中获取所述对象的长度,将所述对象的长度记录到对象长度表中;
所述步骤S5中,所述获取所述当前优化对象的长度,具体为:从所述对象长度表中获取当前优化对象的长度。
所述步骤S8,具体包括:
步骤f1:所述智能卡获取所述对象长度表中的第一个长度作为当前长度;
步骤f2:所述智能卡判断当前长度是否不大于预设页长与当前优化对象长度之差,如果是,则将当前长度对应的对象作为组合对象,执行步骤f3,否则直接执行步骤f3;
步骤f3:所述智能卡判断所述对象长度表中是否还有未查找的长度,如果是,则将当前长度的下一长度作为当前长度,执行步骤f2,否则得到组合对象,执行步骤S9。
所述步骤S9,具体包括:
步骤g1:所述智能卡将所有空闲存储空间中的第一部分空闲存储空间作为当前空闲存储空间;
步骤g2:所述智能卡判断所述当前空闲存储空间中是否有空物理页,如果是,则执行步骤g3,否则执行步骤g5;
步骤g3:所述智能卡将当前空闲存储空间中的第一个空物理页作为当前空物理页;
步骤g4:所述智能卡判断在当前空闲存储空间中是否存在从当前空物理页的起始位置起长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤S10,否则执行步骤g5;
步骤g5:所述智能卡判断所有空闲存储空间中是否还有未处理的空闲存储空间,如果是,则将当前空闲存储空间的下一空闲存储空间作为当前空闲存储空间,执行步骤g2,否则将当前优化对象的优化标识置位,返回步骤S2。
所述步骤S7还包括:所述智能卡将当前优化对象置为空闲存储空间;
所述步骤S12还包括:所述智能卡将当前优化对象和所述组合对象置为空闲存储空间。
一种优化数据读写的装置,包括:
接收模块,用于接收上位机发送的命令;
第一处理模块,用于当所述接收模块接收到命令后,将内部保存的优化列表中优化标识复位的对象作为当前优化对象;
第一判断模块,用于当所述第一处理模块处理得到当前优化对象后,判断所述当前优化对象的起始地址是否为物理页的起始位置;
第一获取模块,用于当所述第一判断模块判断为否时,获取所述当前优化对象的长度;
第二判断模块,用于当所述第一获取模块获取到所述当前优化对象的长度时,判断所述当前优化对象的长度是否大于或等于预设页长;
第三判断模块,用于当所述第二判断模块判断为是时,判断所有空闲存储空间中是否存在以物理页的起始位置开始,长度大于当前优化对象的连续存储空间;
第一更新模块,用于当所述第三判断模块判断为是时,将当前优化对象复制到所述连续存储空间,根据所述连续存储空间相对于基地址的偏移量,更新所述当前优化对象的引用关系,并所述当前优化对象的优化标识置位;
查找模块,用于当所述第二判断模块判断为否时,从所述优化列表中查找长度之和不大于预设页长与当前优化对象的长度之差的多个对象,或,长度不大于预设页长与当前优化对象的长度之差的对象,作为组合对象;
第四判断模块,用于当所述查找模块查找到所述组合对象后,判断所有空闲存储空间中是否存在以页起始位置开始,长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间;
第二处理模块,用于当所述第四判断模块判断为是时,将所述当前优化对象和所述组合对象复制到所述连续存储空间;
计算模块,用于当所述第二处理模块处理完成后,根据所述连续存储空间相对于基地址的偏移量和所述当前优化对象的长度,计算所述组合对象相对于基地址的偏移量,或,根据所述连续存储空间相对于基地址的偏移量和所述组合对象的长度,计算当前优化对象相对于基地址的偏移量;
第二更新模块,用于当所述计算模块计算得到所述组合对象相对于基地址的偏移量后,根据所述连续存储空间相对于基地址的偏移量更新当前优化对象的引用关系,并根据所述组合对象相对于基地址的偏移量,更新所述组合对象的引用关系,或,根据所述连续存储空间相对于基地址的偏移量更新所述组合对象的引用关系,并根据当前优化对象相对于基地址的偏移量,更新当前优化对象的引用关系;
置位模块,用于当所述第一判断模块判断为是时,将所述当前优化对象的优化标识置位;还用于当所述第三判断模块判断为否时,将所述当前优化对象的优化标识置位;还用于当所述第一更新模块更新完成后,将所述当前优化对象的优化标识置位;还用于当所述第二更新模块更新完成后,将所述当前优化对象和所述组合对象的优化标识置位;
第五判断模块,用于当所述置位模块将所述当前优化对象和所述组合对象的优化标识置位后,判断所述优化列表中是否还有优化标识复位的对象;
第二获取模块,用于当所述第五判断模块判断为是时,从所述优化列表中获取优化标识复位的对象作为当前优化对象;
发送模块,用于当所述第五判断模块判断为否时,向所述上位机返回优化成功响应。
第六判断模块,用于当所述接收模块接收到命令时,判断接收到的命令是否为预设命令;
第一调用模块,用于当所述第六判断模块判断为否时,根据接收到的命令,调用相应的应用;
第七判断模块,用于当所述第一调用单元调用相应的应用后,根据所述应用判断需要执行的操作类型;
第三更新模块,用于当所述第七判断模块判断为读操作时,更新所述优化列表中的读次数;
第四更新模块,用于当所述第七判断模块判断为写操作时,更新所述优化列表中的写次数;
所述发送模块,还用于当所述第三更新单元更新完成后,向上位机返回命令数据采集成功响应;还用于当所述第四更新单元更新完成后,向上位机返回命令数据采集成功响应;还用于当所述第七判断模块判断为其他操作时,执行相应操作,向上位机返回相应响应;
所述第一处理模块,具体用于当所述第六判断模块判断为是时,将内部保存的优化列表中优化标识复位的对象作为当前优化对象。
第八判断模块,用于当所述接收模块接收到命令时,判断接收到的命令的类型;
第九判断模块,用于当所述第八判断模块判断为应用命令时,获取采集标识位,判断所述采集标识位是否置位;
第二调用模块,用于当所述第九判断模块判断为是时,根据接收到的命令,调用相应的应用;
第十判断模块,用于当所述第二调用单元调用相应的应用后,根据所述应用判断需要执行的操作类型;
第五更新模块,用于当所述第十判断模块判断为读操作时,更新所述优化列表中的读次数;
第六更新模块,用于当所述第十判断模块判断为写操作时,更新所述优化列表中的写次数;
所述置位模块,还用于当所述第八判断模块判断为采集命令时,将采集标识位置位;
所述发送模块,还用于当所述置位模块将采集标识位置位时,向上位机返回开始采集响应;还用于当所述第九判断模块判断为否时,向上位机返回不需要采集响应;还用于当所述第五更新模块更新完成后,向上位机返回命令数据采集成功响应;还用于当所述第六更新模块更新完成后,向上位机返回命令数据采集成功响应;
所述装置还包括:复位模块,用于当所述发送模块向上位机返回命令数据采集成功响应后,将所述采集标识位复位。
所述第三更新模块,具体包括:
第一获取单元,用于当所述第七判断模块或所述第九判断模块判断为读操作时,根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;还用于从所述对象表中获取所述读取地址对应的对象的起始地址;
第一判断单元,用于当所述第一获取单元获取到所述读取地址对应的对象的起始地址时,判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址;
第一更新单元,用于当所述第一判断单元判断为是时,更新优化列表中所述读取地址对应的对象的起始地址的读次数;
第一创建单元,用于当所述第一判断单元判断为否时,根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位;
所述第四更新模块,具体包括:
第二获取单元,用于当所述第七判断模块或所述第九判断模块判断为写操作时,根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;还用于从对象表中获取所述写地址对应的对象的起始地址;
第二判断单元,用于当所述第二获取单元获取到所述写地址对应的对象的起始地址时,判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址;
第二更新单元,用于当所述第二判断单元判断为是时,更新所述优化列表中所述写地址对应的对象的起始地址的写次数;
第二创建单元,用于当所述第二判断单元判断为否时,根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为第二数值,并将优化标识复位。
所述第五更新模块,具体包括:
第三获取单元,用于当所述第七判断模块或所述第九判断模块判断为读操作时,根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;还用于从所述对象表中获取所述读取地址对应的对象的起始地址;
第三判断单元,用于当所述第一获取单元获取到所述读取地址对应的对象的起始地址时,判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址;
第三更新单元,用于当所述第一判断单元判断为是时,更新优化列表中所述读取地址对应的对象的起始地址的读次数;
第三创建单元,用于当所述第一判断单元判断为否时,根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位;
所述第六更新模块,具体包括:
第四获取单元,用于当所述第七判断模块或所述第九判断模块判断为写操作时,根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;还用于从对象表中获取所述写地址对应的对象的起始地址;
第四判断单元,用于当所述第二获取单元获取到所述写地址对应的对象的起始地址时,判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址;
第四更新单元,用于当所述第二判断单元判断为是时,更新所述优化列表中所述写地址对应的对象的起始地址的写次数;
第四创建单元,用于当所述第二判断单元判断为否时,根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为第二数值,并将优化标识复位。
第三调用模块,用于当所述接收模块接收到命令时,调用相应的应用;
第三获取模块,用于当所述第三调用模块调用相应的应用后,获取所述应用的使用次数;
第十一判断模块,用于当所述第三获取模块获取到所述应用的使用次数后,判断所述使用次数是否达到优化预设值;
统计模块,用于当所述第十一判断模块判断为是时,统计所述应用中的对象在对象表中的存储情况;
第十二判断模块,用于当所述统计模块统计得到所述应用中的对象在对象表中的存储情况后,判断是否存在存储位置大于预设值的对象;
第三处理模块,用于当所述第十一判断模块判断为否时,或当所述第十二判断模块判断为否时,将所述应用的使用次数自加预设步长,执行应用的相应操作;
第十三判断模块,用于当所述第十二判断模块判断为是时,根据所述应用判断需要执行的操作类型;
第七更新模块,用于当所述第十三判断模块判断为读操作时,更新所述优化列表中的读次数;
第八更新模块,用于当所述第十三判断模块判断为写操作时,更新所述优化列表中的写次数;
第十四判断模块,用于当所述第十三判断模块判断为其他操作时,或当所述第七更新模块更新完成后,或当所述第八更新模块更新完成后,执行相应操作,将所述应用的使用次数加预设步长,判断所述使用次数与所述优化预设值之差是否大于采集预设值;
所述发送模块,还用于当所述第三处理模块处理完成后,向上位机返回相应数据;
所述接收模块,具体用于当所述第十四判断模块判断为否时,接收上位机发送的命令;
所述第一处理模块,具体用于当所述第十四判断模块判断为是时,将内部保存的优化列表中优化标识复位的对象作为当前优化对象。
所述第七更新模块,具体包括:
第三获取单元,用于当所述第十三判断模块判断为读操作时,根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;还用于从所述对象表中获取所述读取地址对应的对象的起始地址;
第三判断单元,用于当所述第三获取单元获取到所述读取地址对应的对象的起始地址时,判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址;
第三更新单元,用于当所述第三判断单元判断为是时,更新优化列表中所述读取地址对应的对象的起始地址的读次数;
第三创建单元,用于当所述第三判断单元判断为否时,根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位;
所述第八更新模块,具体包括:
第四获取单元,用于当所述第十四判断模块判断为写操作时,根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;还用于从对象表中获取所述写地址对应的对象的起始地址;
第四判断单元,用于当所述第四获取单元获取到所述写地址对应的对象的起始地址时,判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址;
第四更新单元,用于当所述第四判断单元判断为是时,更新所述优化列表中所述写地址对应的对象的起始地址的写次数;
第四创建单元,用于当所述第四判断单元判断为否时,根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为0,并将优化标识复位;
所述第十四判断模块,具体用于当所述第四创建单元创建完成后,将所述应用的使用次数加预设步长,判断所述使用次数与所述优化预设值之差是否大于采集预设值。
第十五判断模块,用于当所述接收模块接收到命令后,根据接收到的命令,获取需要优化的操作类型;
第一排序模块,用于当所述第十五判断模块判断为读优化操作时,获取所述优化列表中的读次数,根据所述读次数,对所述优化列表中的信息进行排序;
第二排序模块,用于当所述第十五判断模块判断为写优化操作时,获取所述优化列表中的写次数,根据所述写次数,对所述优化列表中的信息进行排序;
所述第一处理模块,具体用于当所述第一排序模块排序完成后,获取排序后的优化列表中读次数最大且优化标识复位的对象作为当前优化对象;当所述第二排序模块排序完成后,获取排序后的优化列表中写次数最大且优化标识复位的对象作为当前优化对象。
所述第一处理模块,具体用于当所述接收模块接收到命令后,将内部保存的优化列表中第一个优化标识复位的对象作为当前优化对象;
所述第五判断模块,具体用于当所述置位模块将所述当前优化对象和所述组合对象的优化标识置位后,判断所述优化列表中是否还有优化标识复位的对象;
所述第二获取模块,具体用于当所述第五判断模块判断为是时,将所述当前优化对象的下一个优化标识复位的对象作为当前优化对象。
记录模块,用于从对象表中获取所述对象的长度,记录为对象长度表;
所述第一获取模块,具体用于当所述记录模块记录得到所述对象长度表后,从所述对象长度表中获取当前优化对象的长度。
所述查找模块,具体用于执行以下操作:
步骤f1:获取所述对象长度表中的第一个长度作为当前长度;
步骤f2:判断当前长度是否不大于预设页长与当前优化对象长度之差,如果是,则将当前长度对应的对象作为组合对象,执行步骤f3,否则直接执行步骤f3;
步骤f3:判断所述对象长度表中是否还有未查找的长度,如果是,则将当前长度的下一长度作为当前长度,执行步骤f2,否则得到组合对象,触发所述第四判断模块。
所述第四判断模块,具体用于执行以下操作:
步骤g1:将所有空闲存储空间中的第一部分空闲存储空间作为当前空闲存储空间;
步骤g2:判断所述当前空闲存储空间中是否有空物理页,如果是,则执行步骤g3,否则执行步骤g5;
步骤g3:将当前空闲存储空间中的第一个空物理页作为当前空物理页;
步骤g4:判断在当前空闲存储空间中是否存在从当前空物理页的起始位置起长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤S10,否则执行步骤g5;
步骤g5:所述智能卡判断所有空闲存储空间中是否还有未处理的空闲存储空间,如果是,则将当前空闲存储空间的下一空闲存储空间作为当前空闲存储空间,执行步骤g2,否则将当前优化对象的优化标识置位,触发所述接收模块。
所述第一更新模块,还用于当所述置位模块将所述当前优化对象的优化标识置位后,将当前优化对象置为空闲存储空间;
所述第二更新模块,还用于当所述置位模块将所述当前优化对象和所述组合对象的优化标识置位后,将当前优化对象和所述组合对象置为空闲存储空间。
本发明取得的有益效果是:采用本发明的技术方案,能够实现在应用运行时对读写访问智能卡的操作频度进行优化,减少智能卡中对存储器的物理页的读写次数,提高了智能卡的使用寿命。
附图说明
为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需待使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1和图2是本发明实施例一提供的一种优化数据读写的方法流程图;
图3和图4是本发明实施例二提供的一种优化数据读写的方法流程图;
图5和图6是本发明实施例三提供的一种优化数据读写的方法流程图;
图7是本发明实施例四提供的一种优化数据读写的装置图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一提供了一种优化数据读写的方法,如图1和图2所示,包括:
步骤101:智能卡上电;
步骤102:智能卡等待接收上位机发送的命令,当接收到命令时,判断接收到的命令的类型,如果是采集命令,则执行步骤103,如果是应用命令,则执行步骤104,如果是优化命令,执行步骤117;
优选的,智能卡根据命令的前两个字节判定命令的类型,如果命令的前两个字节为0x00AA,则接收到的是采集命令,如果命令的前两个字节为0x00BB,则接收到的是优化命令,命令的前两个字节为其他字节码,则接收到的是应用命令;
步骤103:智能卡将采集标识位置位,并向上位机返回开始采集响应,返回步骤102;
步骤104:智能卡获取采集标识位,判断所述采集标识位是否置位,如果是,则执行步骤105,否则返回不需要采集响应,返回步骤102;
步骤105:智能卡根据接收到的应用命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则执行步骤106,如果是写操作,则执行步骤111,如果是其他操作,执行相应操作,返回相应响应,返回步骤102;
本实施例中,所述应用命令中包括读操作和/或写操作和/或其他操作,例如,智能卡接收到上位机发送的应用命令为修改PIN码命令,则调用相应的修改PIN码的applet应用,该applet应用中包括读原始PIN码的操作和写新PIN码的操作;
步骤106:智能卡根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;
本实施例中,智能卡根据上位机发送的命令获取内部需要执行的应用,该应用为读操作和写操作提供对应的读写起始地址和读写长度;
其中,所述对象表中包括对象、对象的起始地址,对象的长度和对象间的引用关系,所述需要读取数据的读取地址,具体为所述应用命令的数据域;
本实施例中,所述从对象表中获取与所述读取地址对应的对象,具体为:遍历对象表中对象的起始地址,获取最接近且小于或等于所述读取地址的起始地址,获取该起始地址对应的对象;
例如,对象表为:
对象 | 对象的起始地址 | 对象的长度 | 对象间的引用关系 |
1 | 0x00 | 0x13 | 0x00(0x56) |
2 | 0x13 | 0x43 | 0x13(0x56) |
3 | 0x56 | 0x42 | 0x56(0x0000,0x0013) |
…… | …… | …… | …… |
例如,本实施例中,需要读取数据的读取地址为0x30,遍历对象表获取最接近0x30且小于或等于0x30的起始地址为0x13,则获取0x13对应的对象为对象2;
步骤107:智能卡从对象表中获取所述读取地址对应的对象的起始地址;
例如,本实施例中,从对象表中读取到的对象2的起始地址为0x13;
步骤108:智能卡判断从优化列表中是否能找到所述读取地址对应的对象的起始地址,如果是,则执行步骤109,否则执行步骤110;
本实施例中,优化列表中包括对象的起始地址、读次数、写次数和优化标识,其中,智能卡接收到的应用命令调用相应的应用后,根据该应用获取到需要执行的操作,根据需要执行的操作获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象,即为优化列表中的对象;
例如,本实施例中,如表1所示,优化列表为:
对象的起始地址 | 读次数 | 写次数 | 优化标识 |
0x00 | 1 | 0 | 复位 |
0x13 | 3 | 6 | 复位 |
0x56 | 5 | 4 | 复位 |
0x98 | 4 | 3 | 复位 |
表1
其中,本实施例中,对象2的起始地址0x13在优化列表中,执行步骤109;
步骤109:智能卡更新优化列表中所述读取地址对应的对象的起始地址的读次数,执行步骤116;
优选的,更新优化列表中所述读取地址对应的对象的起始地址的读次数,具体为:将优化列表中所述读取地址对应的对象的起始地址的读次数加预设步长或减去预设步长;
例如,本实施例中,如表2所示,更新后的优化列表为:
对象的起始地址 | 读次数 | 写次数 | 优化标识 |
0x00 | 1 | 0 | 复位 |
0x13 | 4 | 6 | 复位 |
0x56 | 5 | 4 | 复位 |
0x98 | 4 | 3 | 复位 |
表2
步骤110:智能卡根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位,执行步骤116;
优选的,第一数值为1,第二数值为0;
步骤111:智能卡根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;
例如,本实施例中,需要写数据的地址为0x50,则从对象表中获取与0x50对应的对象为对象2;
步骤112:智能卡从对象表中获取所述写地址对应的对象的起始地址;
例如,本实施例中,从对象表中获取与0x50对应的对象的起始地址为0x13;
步骤113:智能卡判断从优化列表中是否能找到写地址对应的对象的起始地址,如果是,则执行步骤114,否则执行步骤115;
步骤114:智能卡更新优化列表中所述写地址对应的对象的起始地址的写次数,执行步骤116;
优选的,更新优化列表中所述写地址对应的对象的起始地址的写次数,具体为:将优化列表中所述写地址对应的对象的起始地址的写次数加预设步长或减去预设步长;
例如,0x13在优化列表中,更新写次数,如表3所示,得到的优化列表为:
对象的起始地址 | 读次数 | 写次数 | 优化标识 |
0x00 | 1 | 0 | 复位 |
0x13 | 3 | 7 | 复位 |
0x56 | 5 | 4 | 复位 |
0x98 | 4 | 3 | 复位 |
表3
步骤115:智能卡根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位,执行步骤116;
优选的,第一数值为1,第二数值为0;
步骤116:智能卡向上位机返回命令数据采集成功响应,将采集标识位复位,返回步骤102;
步骤117:智能卡根据接收到的优化命令,获取需要优化的操作类型,如果是读优化操作,则执行步骤118,如果是写优化操作,则执行步骤119;
本实施例中,所述根据接收到的优化命令,获取需要优化的操作类型,具体为:获取所述优化命令的第三个字节,如果为0x00,则为读优化操作,如果是0x01,则为写优化操作;
步骤118:智能卡获取优化列表中的读次数,根据所述读次数,对优化列表中的信息进行排序,获取排序后的优化列表中读次数最大且优化标识复位的对象作为当前优化对象,执行步骤120;
优选的,对优化列表中的信息进行排序,具体为:进行降序排序,获知优化列表中被读次数最多的对象即为降序后的第一个对象;除此之外,还可以采用升序的方式排序,则获知优化列表中被读次数最多的对象即为升序后的最后一个对象;
例如,本实施例中,对优化列表中的读次数进行降序排序后,如表4所示,排序后的优化列表为:
对象的起始地址 | 读次数 | 写次数 | 优化标识 |
0x56 | 5 | 4 | 复位 |
0x13 | 4 | 7 | 复位 |
0x98 | 4 | 3 | 复位 |
0x00 | 1 | 0 | 复位 |
表4
例如,本实施例中,将排序后的优化列表的读次数最大且优化标识复位的对象即对象起始位置为0x56的对象作为当前优化对象;
本实施例中,还可以为:将优化列表中第一个优化标识复位的对象作为当前优化对象;
步骤119:智能卡获取优化列表中的写次数,根据所述写次数,对优化列表中的信息进行排序,获取排序后的优化列表中写次数最大且优化标识复位的对象作为当前优化对象,执行步骤120;
优选的,对优化列表中的信息进行排序,具体为:进行降序排序,获知优化列表中被写次数最多的对象即为降序后的第一个对象;除此之外,还可以采用升序的方式排序,则获知优化列表中被写次数最多的对象即为升序后的最后一个对象;
本实施例中,还可以为:将内部保存的优化列表中第一个优化标识复位的对象作为当前优化对象;
步骤120:智能卡依次从对象表中获取优化列表中所有对象的长度,记录为对象长度表;
例如,本实施例中,如表5所示,获取到的所述对象的长度组成的对象长度表为:
对象的起始地址 | 对象长度 |
0x0000 | 19字节 |
0x0013 | 57字节 |
0x0056 | 66字节 |
0x0145 | 10字节 |
表5
步骤121:智能卡判断当前优化对象是否为物理页的起始位置,如果是,则将当前优化对象的优化标识置位,执行步骤131,否则执行步骤122;
其中,物理页的起始位置具体为(以预设页长为64字节为例):0x00、0x40、0x80、0xC0……即整个物理页的起始位置;
例如,如表6所示,在智能卡的存储区中对象表中的对象相对于物理页的存储,具体为:
表6
其中,从表6可知,对象1、对象6为物理页的起始位置,不需要进行优化;
步骤122:智能卡从对象长度表中获取当前优化对象的长度,判断当前优化对象的长度是否大于或等于预设页长,如果是,则执行步骤123,否则执行步骤125;
本实施例中,预设页长具体由智能卡中存储器的性能决定,可以为64字节或128字节等;
例如,本实施例中,当前优化对象的起始地址为0x56,长度为66字节,大于预设页长64字节;
步骤123:智能卡判断所有空闲存储空间中是否存在以物理页的起始位置开始,长度大于当前优化对象的连续存储空间,如果是,则执行步骤124,否则将当前优化对象的优化标识置位,执行步骤131;
步骤124:智能卡将当前优化对象复制到所述连续存储空间,根据所述连续存储空间相对于基地址的偏移量,更新所述当前优化对象的引用关系,将当前优化对象置为空闲存储空间,并所述当前优化对象的优化标识置位,执行步骤131;
步骤125:智能卡判断是否能够找到与当前优化对象存储在一页的对象,如果是,则执行步骤126,否则执行步骤123;
具体为:所述智能卡遍历所述对象长度表,判断是否能够从对象长度表中获取到与当前优化对象的长度之和小于或等于预设页长的对象,如果是,则执行步骤126,否则对当前优化对象进行处理,执行步骤123;
步骤126:从优化列表中查找长度之和不大于预设页长与当前优化对象的长度之差的多个对象,作为组合对象,或长度不大于预设页长与当前优化对象的长度之差的对象,作为组合对象;
例如,当前优化对象的长度为10字节,预设页长为64字节,则预设页长与当前优化对象的长度之差为54字节,则通过遍历对象长度表,从优化列表中获取长度之和不大于54字节的对象;
如果对象2的长度为20字节,对象3为30字节,对象2和对象3总长度为50字节,小于54字节,则将对象2和对象3作为组合对象;
如果对象2的长度为30字节,对象3的长度为50字节,对象2和对象3的长度为80字节,则将对象2作为组合对象或者将对象3作为组合对象;
本实施例中,所述步骤125与步骤126,具体为:
步骤a1:智能卡获取对象长度表中的第一个长度作为当前长度;
步骤a2:智能卡判断当前长度是否不大于预设页长与当前优化对象长度之差,如果是,则将当前长度对应的对象作为组合对象,执行步骤a3,否则直接执行步骤a3;
步骤a3:智能卡判断对象长度表中是否还有未查找的长度,如果是,则将当前长度的下一长度作为当前长度,执行步骤a2,否则得到组合对象,执行步骤127;
步骤127:智能卡判断所有空闲存储空间中是否存在以页起始位置开始,长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤128,否则将当前优化对象的优化标识置位,执行步骤131;
本实施例中,步骤127具体为:
步骤127-1:智能卡将所有空闲存储空间中的第一部分空闲存储空间作为当前空闲存储空间;
例如,本实施例中,如表6所示,对象3与对象4之间的空闲存储空间为第一部分空闲存储空间;
步骤127-2:智能卡判断所述当前空闲存储空间中是否有空物理页,如果是,则执行步骤127-3,否则执行步骤127-5;
步骤127-3:智能卡将当前空闲存储空间中的第一个空物理页作为当前空物理页;
其中,当前空闲存储空间中的第一个空物理页具体为当前空闲存储空间的第一个整物理页的起始位置开始的空物理页,如表6所示,将当前剩余空闲页从0xC0为起始位置开始的第一个空物理页作为当前空物理页;
步骤127-4:智能卡判断在当前空闲存储空间中是否存在从当前空物理页的起始位置起长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤128,否则执行步骤127-5;
例如,本实施例中,当前优化对象的长度为66字节,从当前空页起能够找到大于当前优化对象的空闲空间;
步骤127-5:智能卡判断所有空闲存储空间中是否还有未处理的空闲存储空间,如果是,则将当前空闲存储空间的下一空闲存储空间作为当前空闲存储空间,执行步骤127-2,否则将当前优化对象的优化标识置位,返回步骤102;
步骤128:智能卡将当前优化对象和组合对象复制到所述连续存储空间;
例如,如表7所示,复制后的对象表为:
表7
步骤129:智能卡根据所述连续存储空间相对于基地址的偏移量和所述当前优化对象的长度,计算所述组合对象相对于基地址的偏移量,根据所述连续存储空间相对于基地址的偏移量更新当前优化对象的引用关系,并根据所述组合对象相对于基地址的偏移量,更新所述组合对象的引用关系;
本实施例中,所述步骤129,还可以为:智能卡根据所述连续存储空间相对于基地址的偏移量和所述组合对象的长度,计算当前优化对象相对于基地址的偏移量,根据所述连续存储空间相对于基地址的偏移量更新所述组合对象的引用关系,并根据当前优化对象相对于基地址的偏移量,更新当前优化对象的引用关系;
其中,对象表中保存有所有对象与其他对象的引用关系,该引用关系存放的是对象与其他对象相对于基地址的偏移量;
例如,对象3与对象1、对象2均有引用关系,在对象表中保存有对象3相对于基地址的偏移量0x56与对象1相对于基地址的偏移量0x00的引用关系,记为0x0056(0x0000),同样的,保存有对象3相对于基地址的偏移量0x56与对象2相对于基地址的偏移量0x13的引用关系,记为0x0056(0x0013);当前优化对象在对象表中相对于基地址的偏移量为0x00C0,则将对象表中记录的当前优化对象3与对象1的引用关系记录为0x00C0(0x0000);
本实施例中,所述根据所述连续存储空间相对于基地址的偏移量和所述当前优化对象的长度,计算所述组合对象相对于基地址的偏移量,具体为:当前优化对象相对于基地址的偏移量为连续存储空间的起始地址,则组合对象相对于基地址的偏移量即为连续存储空间的起始地址与当前优化对象的长度之和;
例如,当前优化对象和组合对象存储至连续存储空间后,当前优化对象相对于基地址的偏移量即为连续存储空间的起始地址0x00,当前优化对象的长度为0x10,则组合对象相对于基地址的偏移量即为0x00+0x10=0x10;如果从对象表中获取当前优化对象与对象1的引用关系为0x0056(0x0030),组合对象与对象1的引用关系为0x0062(0x0030),则将当前优化对象与对象1的引用关系修改为0x0000(0x0030),将组合对象与对象1的引用关系修改为0x0010(0x0030);
同样的,所述根据所述连续存储空间相对于基地址的偏移量和所述组合对象的长度,计算当前优化对象相对于基地址的偏移量,具体为:组合对象相对于基地址的偏移量为连续存储空间的起始地址,则当前优化对象相对于基地址的偏移量即为连续存储空间的起始地址与组合对象的长度之和;
步骤130:智能卡将当前优化对象置为空间存储空间,并将优化列表中的当前优化对象和组合对象的优化标识置位;
例如,本实施例中,如表8所示,优化后的对象表为:
表8
步骤131:所述智能卡判断优化列表中是否还有优化标识复位的对象,如果是,则从所述优化列表中获取优化标识复位的对象作为当前优化对象,返回执行步骤121,否则向上位机返回优化成功响应,返回步骤102。
本实施例中,如表9所示,对优化列表中的对象进行优化后,得到的对象表为:
表9
本实施例中,还可以为:智能卡判断所述优化列表中是否还有优化标识复位的对象,如果是,则将所述当前优化对象的下一个优化标识复位的对象作为当前优化对象,返回执行步骤121,否则返回优化成功响应,返回步骤102;
采用本发明的技术方案,将能够移动的对象移至物理页的起始位置,如此操作,能够实现在对对象表进行读写访问时,减少跨页读写,提高了访问对象表的操作频度,读写速度更快,并能够减少智能卡存储器中的物理页的读写次数,提高了智能卡的使用寿命。
实施例二
本发明实施例二提供了一种优化读操作或写操作的方法,如图3和图4所示,包括:
步骤201:智能卡上电;
步骤202:智能卡等待接收上位机发送的命令;
步骤203:当智能卡接收到命令时,调用相应的应用,获取所述应用的使用次数,判断所述使用次数是否达到优化预设值,如果是,则执行步骤204,否则将所述应用的使用次数自加预设步长,执行应用的相应操作,返回步骤202;
优选的,所述优化预设值为200;
步骤204:智能卡统计所述应用中的对象在对象表中的存储情况,判断是否存在存储位置大于预设值的对象,如果是,则执行步骤205,否则将所述应用的使用次数自加预设步长,执行应用的相应操作,向上位机返回相应数据,返回步骤202;
优选的,当存储位置小于预设值4时,不需要对应用进行优化;其中,存储位置具体为:一个对象存储的存储位置,当一个对象的存储位置大于或等于4处时,说明该对象较分散,占用存储空间较大,需要进行优化;
步骤205:智能卡根据接收到的应用命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则执行步骤206,如果是写操作,则执行步骤212,如果是其他操作,则执行相应操作,执行步骤216;
步骤206:智能卡根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;
步骤207:智能卡从对象表中获取所述读取地址对应的对象的起始地址;
步骤208:智能卡判断从优化列表中是否能找到所述读取地址对应的对象的起始地址,如果是,则执行步骤209,否则执行步骤210;
步骤209:智能卡更新优化列表中所述读取地址对应的对象的起始地址的读次数,执行步骤216;
步骤210:智能卡根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位,执行步骤216;
优选的,第一数值为1,第二数值为0;
步骤211:智能卡根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;
步骤212:智能卡从对象表中获取所述写地址对应的对象的起始地址;
步骤213:智能卡判断从优化列表中是否能找到写地址对应的对象的起始地址,如果是,则执行步骤214,否则执行步骤215;
步骤214:智能卡更新优化列表中所述写地址对应的对象的起始地址的写次数,执行步骤216;
步骤215:智能卡根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为第二数值,并将优化标识复位,执行步骤216;
步骤216:智能卡将应用的使用次数加预设步长,判断所述使用次数与所述优化预设值之差是否大于采集预设值,如果是,则执行步骤217,否则返回步骤202;
优选的,采集预设值为100;
步骤217:智能卡根据接收到的命令,获取需要优化的操作类型,如果是读数据优化,则执行步骤218,如果是写数据优化,则执行步骤219;
步骤218:智能卡获取优化列表中的读次数,根据所述读次数,对优化列表中的信息进行排序,获取排序后的优化列表中读次数最大且优化标识复位的对象作为当前优化对象,执行步骤220;
步骤219:智能卡获取优化列表中的写次数,根据所述写次数,对优化列表中的信息进行排序,获取排序后的优化列表中写次数最大且优化标识复位的对象作为当前优化对象,执行步骤220;
步骤220:智能卡依次从对象表中获取优化列表中所有对象的长度,记录为对象长度表;
步骤221:智能卡判断当前优化对象是否为物理页的起始位置,如果是,则将当前优化对象的优化标识置位,执行步骤232,否则执行步骤222;
步骤222:智能卡从对象长度表中获取当前优化对象的长度,判断当前优化对象的长度是否大于或等于预设页长,如果是,则执行步骤225,否则执行步骤223;
步骤223:智能卡判断所有空闲存储空间中是否存在以物理页的起始位置开始,长度大于当前优化对象的连续存储空间,如果是,则执行步骤224,否则将当前优化对象的优化标识置位,执行步骤231;
步骤224:智能卡将当前优化对象复制到所述连续存储空间,根据所述连续存储空间相对于基地址的偏移量,更新所述当前优化对象的引用关系,将当前优化对象置为空闲存储空间,并所述当前优化对象的优化标识置位,执行步骤231;
步骤225:智能卡判断是否能够找到与当前优化对象存储在一页的对象,如果是,则执行步骤226,否则执行步骤223;
步骤226:从优化列表中查找长度之和不大于预设页长与当前优化对象的长度之差的多个对象,作为组合对象,或长度不大于预设页长与当前优化对象的长度之差的对象,作为组合对象;
步骤227:智能卡判断所有空闲存储空间中是否存在以页起始位置开始,长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤228,否则将当前优化对象的优化标识置位,执行步骤231;
步骤228:智能卡将当前优化对象和组合对象复制到所述连续存储空间;
步骤229:智能卡根据所述连续存储空间相对于基地址的偏移量和所述当前优化对象的长度,计算所述组合对象相对于基地址的偏移量,根据所述连续存储空间相对于基地址的偏移量更新当前优化对象的引用关系,并根据所述组合对象相对于基地址的偏移量,更新所述组合对象的引用关系;
步骤230:智能卡将当前优化对象置为空间存储空间,并将优化列表中的当前优化对象和组合对象的优化标识置位;
步骤231:所述智能卡判断优化列表中是否还有优化标识复位的对象,如果是,则从所述优化列表中获取优化标识复位的对象作为当前优化对象,返回执行步骤221,否则向上位机返回优化成功响应,返回步骤202。
采用本发明的技术方案,将能够移动的对象移至物理页的起始位置,如此操作,能够实现在对对象表进行读写访问时,减少跨页读写,提高了访问对象表的操作频度,读写速度更快,并能够减少智能卡存储器中的物理页的读写次数,提高了智能卡的使用寿命。
实施例三
本发明实施例三提供了一种优化读操作或写操作的方法,如图5和图6所示,包括:
步骤301:智能卡上电;
步骤302:智能卡等待接收上位机发送的命令,当接收到命令时,判断是否接收到的是预设命令,如果是,则执行步骤315,否则执行步骤303;
其中,所述预设命令优选的是PBOC规范中的命令,该命令满足的条件是执行时间较长的命令,例如,修改PIN码命令等;
步骤303:智能卡根据接收到的命令,调用相应的应用,根据所述应用,判断需要执行的操作类型,如果是读操作,则执行步骤304,如果是写操作,则执行步骤309,如果是其他操作,执行相应操作,返回相应响应,返回步骤102;
步骤304:智能卡根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;
步骤305:智能卡从对象表中获取所述读取地址对应的对象的起始地址;
步骤306:智能卡判断从优化列表中是否能找到所述读取地址对应的对象的起始地址,如果是,则执行步骤307,否则执行步骤308;
步骤307:智能卡更新优化列表中所述读取地址对应的对象的起始地址的读次数,执行步骤314;
步骤308:智能卡根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位,执行步骤314;
优选的,第一数值为1,第二数值为0;
步骤309:智能卡根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;
步骤310:智能卡从对象表中获取所述写地址对应的对象的起始地址;
步骤311:智能卡判断从优化列表中是否能找到写地址对应的对象的起始地址,如果是,则执行步骤312,否则执行步骤313;
步骤312:智能卡更新优化列表中所述写地址对应的对象的起始地址的写次数,执行步骤314;
步骤313:智能卡根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位,执行步骤314;
步骤314:智能卡向上位机返回数据采集成功响应,返回步骤302;
步骤315:智能卡根据接收到的预设命令,获取需要优化的操作类型,如果是读操作优化,则执行步骤316,如果是写操作优化,则执行步骤317;
步骤316:智能卡获取优化列表中的读次数,根据所述读次数,对优化列表中的信息进行排序,获取排序后的优化列表中读次数最大且优化标识复位的对象作为当前优化对象,执行步骤318;
步骤317:智能卡获取优化列表中的写次数,根据所述写次数,对优化列表中的信息进行排序,获取排序后的优化列表中写次数最大且优化标识复位的对象作为当前优化对象,执行步骤318;
步骤318:智能卡依次从对象表中获取优化列表中所有对象的长度,记录为对象长度表;
步骤319:智能卡判断当前优化对象是否为物理页的起始位置,如果是,则将当前优化对象的优化标识置位,执行步骤332,否则执行步骤320;
步骤320:智能卡从对象长度表中获取当前优化对象的长度,判断当前优化对象的长度是否大于或等于预设页长,如果是,则执行步骤323,否则执行步骤321;
步骤321:智能卡判断所有空闲存储空间中是否存在以物理页的起始位置开始,长度大于当前优化对象的连续存储空间,如果是,则执行步骤322,否则将当前优化对象的优化标识置位,执行步骤329;
步骤322:智能卡将当前优化对象复制到所述连续存储空间,根据所述连续存储空间相对于基地址的偏移量,更新所述当前优化对象的引用关系,将当前优化对象置为空闲存储空间,并所述当前优化对象的优化标识置位,执行步骤329;
步骤323:智能卡判断是否能够找到与当前优化对象存储在一页的对象,如果是,则执行步骤324,否则执行步骤321;
步骤324:从优化列表中查找长度之和不大于预设页长与当前优化对象的长度之差的多个对象,作为组合对象,或长度不大于预设页长与当前优化对象的长度之差的对象,作为组合对象;
步骤325:智能卡判断所有空闲存储空间中是否存在以页起始位置开始,长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤326,否则将当前优化对象的优化标识置位,执行步骤329;
步骤326:智能卡将当前优化对象和组合对象复制到所述连续存储空间;
步骤327:智能卡根据所述连续存储空间相对于基地址的偏移量和所述当前优化对象的长度,计算所述组合对象相对于基地址的偏移量,根据所述连续存储空间相对于基地址的偏移量更新当前优化对象的引用关系,并根据所述组合对象相对于基地址的偏移量,更新所述组合对象的引用关系;
步骤328:智能卡将当前优化对象置为空间存储空间,并将优化列表中的当前优化对象和组合对象的优化标识置位;
步骤329:所述智能卡判断优化列表中是否还有优化标识复位的对象,如果是,则从所述优化列表中获取优化标识复位的对象作为当前优化对象,返回执行步骤319,否则向上位机返回优化成功响应,返回步骤302;
本实施例中,优化操作的触发还可以为接收到PBOC规范中的选择命令,将结果返回给上位机后,智能卡触发优化操作,在优化操作的过程中,如果接收到上位机发送的命令后,则触发优化中断,记录处理进度,当执行完上位机发送的命令后,根据处理进度继续执行优化操作。
采用本发明的技术方案,将能够移动的对象移至物理页的起始位置,如此操作,能够实现在对对象表进行读写访问时,减少跨页读写,提高了访问对象表的操作频度,读写速度更快,并能够减少智能卡存储器中的物理页的读写次数,提高了智能卡的使用寿命。
实施例四
本发明实施例四提供了一种优化数据读写的装置,如图7所示,所述装置包括:
接收模块101,用于接收上位机发送的命令;
第一处理模块102,用于当所述接收模块101接收到命令后,将内部保存的优化列表中优化标识复位的对象作为当前优化对象;
第一判断模块103,用于当所述第一处理模块102处理得到当前优化对象后,判断所述当前优化对象的起始地址是否为物理页的起始位置;
第一获取模块104,用于当所述第一判断模块103判断为否时,获取所述当前优化对象的长度;
第二判断模块105,用于当所述第一获取模块104获取到所述当前优化对象的长度时,判断所述当前优化对象的长度是否大于或等于预设页长;
第三判断模块106,用于当所述第二判断模块105判断为是时,判断所有空闲存储空间中是否存在以物理页的起始位置开始,长度大于当前优化对象的连续存储空间;
第一更新模块107,用于当所述第三判断模块106判断为是时,将当前优化对象复制到所述连续存储空间,根据所述连续存储空间相对于基地址的偏移量,更新所述当前优化对象的引用关系,并所述当前优化对象的优化标识置位;
查找模块108,用于当所述第二判断模块105判断为否时,从所述优化列表中查找长度之和不大于预设页长与当前优化对象的长度之差的多个对象,作为组合对象,或长度不大于预设页长与当前优化对象的长度之差的对象,作为组合对象;
第四判断模块109,用于当所述查找模块108查找到所述组合对象后,判断所有空闲存储空间中是否存在以页起始位置开始,长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间;
第二处理模块110,用于当所述第四判断模块109判断为是时,将所述当前优化对象和所述组合对象复制到所述连续存储空间;
计算模块111,用于当所述第二处理模块110处理完成后,根据所述连续存储空间相对于基地址的偏移量和所述当前优化对象的长度,计算所述组合对象相对于基地址的偏移量,或,根据所述连续存储空间相对于基地址的偏移量和所述组合对象的长度,计算当前优化对象相对于基地址的偏移量;
第二更新模块112,用于当所述计算模块111计算得到所述组合对象相对于基地址的偏移量后,根据所述连续存储空间相对于基地址的偏移量更新当前优化对象的引用关系,并根据所述组合对象相对于基地址的偏移量,更新所述组合对象的引用关系,或,根据所述连续存储空间相对于基地址的偏移量更新所述组合对象的引用关系,并根据当前优化对象相对于基地址的偏移量,更新当前优化对象的引用关系;
置位模块113,用于当所述第一判断模块103判断为是时,将所述当前优化对象的优化标识置位;还用于当所述第三判断模块106判断为否时,将所述当前优化对象的优化标识置位;还用于当所述第一更新模块107更新完成后,将所述当前优化对象的优化标识置位;还用于当所述第二更新模块112更新完成后,将所述当前优化对象和所述组合对象的优化标识置位;
第五判断模块114,用于当所述置位模块113将所述当前优化对象和所述组合对象的优化标识置位后,判断所述优化列表中是否还有优化标识复位的对象;
第二获取模块115,用于当所述第五判断模块114判断为是时,从所述优化列表中获取优化标识复位的对象作为当前优化对象;
发送模块116,用于当所述第五判断模块114判断为否时,向上位机返回优化成功响应。
进一步地,
本实施例中,所述装置还包括:第六判断模块117,用于当所述接收模块101接收到命令时,判断接收到的命令是否为预设命令;
第一调用模块118,用于当所述第六判断模块117判断为否时,根据接收到的命令,调用相应的应用;
第七判断模块119,用于当所述第一调用单元调用相应的应用后,根据所述应用判断需要执行的操作类型;
第三更新模块120,用于当所述第七判断模块119判断为读操作时,更新所述优化列表中的读次数;
第四更新模块121,用于当所述第七判断模块119判断为写操作时,更新所述优化列表中的写次数;
所述发送模块116,还用于当所述第三更新单元更新完成后,向上位机返回命令数据采集成功响应;还用于当所述第四更新单元1303更新完成后,向上位机返回命令数据采集成功响应;还用于当所述第七判断模块119判断为其他操作时,执行相应操作,向上位机返回相应响应;
所述第一处理模块102,具体用于当所述第六判断模块117判断为是时,将内部保存的优化列表中优化标识复位的对象作为当前优化对象。
优选的,所述装置还包括:第八判断模块122,用于当所述接收模块101接收到命令时,判断接收到的命令的类型;
第九判断模块123,用于当所述第八判断模块122判断为应用命令时,获取采集标识位,判断所述采集标识位是否置位;
第二调用模块124,用于当所述第九判断模块123判断为是时,根据接收到的命令,调用相应的应用;
第十判断模块125,用于当所述第二调用单元调用相应的应用后,根据所述应用判断需要执行的操作类型;
第五更新模块126,用于当所述第十判断模块125判断为读操作时,更新所述优化列表中的读次数;
第六更新模块127,用于当所述第十判断模块125判断为写操作时,更新所述优化列表中的写次数;
所述置位模块113,还用于当所述第八判断模块122判断为采集命令时,将采集标识位置位;
所述发送模块116,还用于当所述置位模块113将采集标识位置位时,向上位机返回开始采集响应;还用于当所述第九判断模块123判断为否时,向上位机返回不需要采集响应;还用于当所述第五更新模块126更新完成后,向上位机返回命令数据采集成功响应;还用于当所述第六更新模块127更新完成后,向上位机返回命令数据采集成功响应;
所述装置还包括:复位模块128,用于当所述发送模块116向上位机返回命令数据采集成功响应后,将所述采集标识位复位。
其中,所述第三更新模块120,具体包括:
第一获取单元1201,用于当所述第七判断模块119或所述第九判断模块123判断为读操作时,根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;还用于从所述对象表中获取所述读取地址对应的对象的起始地址;
第一判断单元1202,用于当所述第一获取单元1201获取到所述读取地址对应的对象的起始地址时,判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址;
第一更新单元1203,用于当所述第一判断单元1202判断为是时,更新优化列表中所述读取地址对应的对象的起始地址的读次数;
第一创建单元1204,用于当所述第一判断单元1202判断为否时,根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位;
所述第四更新模块121,具体包括:
第二获取单元1211,用于当所述第七判断模块119或所述第九判断模块123判断为写操作时,根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;还用于从对象表中获取所述写地址对应的对象的起始地址;
第二判断单元1212,用于当所述第二获取单元1211获取到所述写地址对应的对象的起始地址时,判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址;
第二更新单元1213,用于当所述第二判断单元1212判断为是时,更新所述优化列表中所述写地址对应的对象的起始地址的写次数;
第二创建单元1214,用于当所述第二判断单元1212判断为否时,根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为0,并将优化标识复位。
所述第五更新模块126,具体包括:
第一获取单元1221,用于当所述第七判断模块119或所述第九判断模块123判断为读操作时,根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;还用于从所述对象表中获取所述读取地址对应的对象的起始地址;
第一判断单元1222,用于当所述第一获取单元1221获取到所述读取地址对应的对象的起始地址时,判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址;
第一更新单元1223,用于当所述第一判断单元1222判断为是时,更新优化列表中所述读取地址对应的对象的起始地址的读次数;
第一创建单元1224,用于当所述第一判断单元1222判断为否时,根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位;
所述第六更新模块127,具体包括:
第二获取单元1231,用于当所述第七判断模块119或所述第九判断模块123判断为写操作时,根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;还用于从对象表中获取所述写地址对应的对象的起始地址;
第二判断单元1232,用于当所述第二获取单元1231获取到所述写地址对应的对象的起始地址时,判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址;
第二更新单元1233,用于当所述第二判断单元1232判断为是时,更新所述优化列表中所述写地址对应的对象的起始地址的写次数;
第二创建单元1234,用于当所述第二判断单元1232判断为否时,根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为第二数值,并将优化标识复位。
本实施例中,所述装置还包括:第三调用模块129,用于当所述接收模块101接收到命令时,调用相应的应用;
第三获取模块130,用于当所述第三调用模块129调用相应的应用后,获取所述应用的使用次数;
第十一判断模块131,用于当所述第三获取模块130获取到所述应用的使用次数后,判断所述使用次数是否达到优化预设值;
统计模块132,用于当所述第十一判断模块131判断为是时,统计所述应用中的对象在对象表中的存储情况;
第十二判断模块133,用于当所述统计模块132统计得到所述应用中的对象在对象表中的存储情况后,判断是否存在存储位置大于预设值的对象;
第三处理模块134,用于当所述第十一判断模块131判断为否时,或当所述第十二判断模块133判断为否时,将所述应用的使用次数自加预设步长,执行应用的相应操作;
第十三判断模块135,用于当所述第十二判断模块133判断为是时,根据所述应用判断需要执行的操作类型;
第七更新模块136,用于当所述第十三判断模块135判断为读操作时,更新所述优化列表中的读次数;
第八更新模块137,用于当所述第十三判断模块135判断为写操作时,更新所述优化列表中的写次数;
第十四判断模块138,用于当所述第十三判断模块135判断为其他操作时,或当所述第七更新模块136更新完成后,或当所述第八更新模块137更新完成后,执行相应操作,将所述应用的使用次数加预设步长,判断所述使用次数与所述优化预设值之差是否大于采集预设值;
所述发送模块116,还用于当所述第三处理模块134处理完成后,向上位机返回相应数据;
所述接收模块101,具体用于当所述第十四判断模块138判断为否时,接收上位机发送的命令;
所述第一处理模块102,具体用于当所述第十四判断模块138判断为是时,将内部保存的优化列表中优化标识复位的对象作为当前优化对象。
其中,所述第七更新模块136,具体包括:
第三获取单元,用于当所述第十三判断模块135判断为读操作时,根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;还用于从所述对象表中获取所述读取地址对应的对象的起始地址;
第三判断单元,用于当所述第三获取单元获取到所述读取地址对应的对象的起始地址时,判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址;
第三更新单元,用于当所述第三判断单元判断为是时,更新优化列表中所述读取地址对应的对象的起始地址的读次数;
第三创建单元,用于当所述第三判断单元判断为否时,根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位;
所述第八更新模块137,具体包括:
第四获取单元1301,用于当所述第十四判断模块138判断为写操作时,根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;还用于从对象表中获取所述写地址对应的对象的起始地址;
第四判断单元1302,用于当所述第四获取单元1301获取到所述写地址对应的对象的起始地址时,判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址;
第四更新单元1303,用于当所述第四判断单元1302判断为是时,更新所述优化列表中所述写地址对应的对象的起始地址的写次数;
第四创建单元1304,用于当所述第四判断单元1302判断为否时,根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为0,并将优化标识复位;
所述第十四判断模块138,具体用于当所述第四创建单元1304创建完成后,将所述应用的使用次数加预设步长,判断所述使用次数与所述优化预设值之差是否大于采集预设值。
进一步的,所述装置还包括:
第十五判断模块139,用于当所述接收模块101接收到命令后,根据接收到的命令,获取需要优化的操作类型;
第一排序模块140,用于当所述第十五判断模块139判断为读优化操作时,获取所述优化列表中的读次数,根据所述读次数,对所述优化列表中的信息进行排序;
第二排序模块141,用于当所述第十五判断模块139判断为写优化操作时,获取所述优化列表中的写次数,根据所述写次数,对所述优化列表中的信息进行排序;
所述第一处理模块102,具体用于当所述第一排序模块排序完成后,获取排序后的优化列表中读次数最大且优化标识复位的对象作为当前优化对象;当所述第二排序模块排序完成后,获取排序后的优化列表中写次数最大且优化标识复位的对象作为当前优化对象。
所述第一处理模块102,具体用于当所述接收模块接收到命令后,将内部保存的优化列表中第一个优化标识复位的对象作为当前优化对象;
所述第五判断模块114,具体用于当所述置位模块将所述当前优化对象和所述组合对象的优化标识置位后,判断所述优化列表中是否还有优化标识复位的对象。
所述装置还包括记录模块,用于从对象表中获取所述对象的长度,记录为对象长度表;
所述第一获取模块104,具体用于当所述记录模块记录得到所述对象长度表后,从所述对象长度表中获取当前优化对象的长度。
优选的,所述查找模块108,具体用于执行以下操作:
步骤f1:获取所述对象长度表中的第一个长度作为当前长度;
步骤f2:判断当前长度是否不大于预设页长与当前优化对象长度之差,如果是,则将当前长度对应的对象作为组合对象,执行步骤f3,否则直接执行步骤f3;
步骤f3:判断所述对象长度表中是否还有未查找的长度,如果是,则将当前长度的下一长度作为当前长度,执行步骤f2,否则得到组合对象,触发所述第四判断模块109。
其中,所述第四判断模块109,具体用于执行以下操作:
步骤g1:将所有空闲存储空间中的第一部分空闲存储空间作为当前空闲存储空间;
步骤g2:判断所述当前空闲存储空间中是否有空物理页,如果是,则执行步骤g3,否则执行步骤g5;
步骤g3:将当前空闲存储空间中的第一个空物理页作为当前空物理页;
步骤g4:判断在当前空闲存储空间中是否存在从当前空物理页的起始位置起长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤S10,否则执行步骤g5;
步骤g5:所述智能卡判断所有空闲存储空间中是否还有未处理的空闲存储空间,如果是,则将当前空闲存储空间的下一空闲存储空间作为当前空闲存储空间,执行步骤g2,否则将当前优化对象的优化标识置位,触发所述接收模块101。
进一步的,所述第一更新模块107,还用于当所述置位模块将所述当前优化对象的优化标识置位后,将当前优化对象置为空闲存储空间;
所述第二更新模块112,还用于当所述置位模块将所述当前优化对象和所述组合对象的优化标识置位后,将当前优化对象和所述组合对象置为空闲存储空间。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (25)
1.一种优化数据读写的方法,其特征在于,包括:
步骤S1:智能卡上电;
步骤S2:所述智能卡等待接收上位机发送的命令;
步骤S3:当所述智能卡接收到命令后,将内部保存的优化列表中优化标识复位的对象作为当前优化对象;
步骤S4:所述智能卡判断所述当前优化对象的起始地址是否为物理页的起始位置,如果是,则将所述当前优化对象的优化标识置位,执行步骤S13,否则执行步骤S5;
步骤S5:所述智能卡获取所述当前优化对象的长度,判断所述当前优化对象的长度是否大于或等于预设页长,如果是,则执行步骤S6,否则执行步骤S8;
步骤S6:所述智能卡判断所有空闲存储空间中是否存在以物理页的起始位置开始,长度大于当前优化对象的连续存储空间,如果是,则执行步骤S7,否则将当前优化对象的优化标识置位,执行步骤S13;
步骤S7:所述智能卡将当前优化对象复制到所述连续存储空间,根据所述连续存储空间相对于基地址的偏移量,更新所述当前优化对象的引用关系,并将所述当前优化对象的优化标识置位,执行步骤S13;
步骤S8:所述智能卡从所述优化列表中查找长度之和不大于预设页长与当前优化对象的长度之差的多个对象,或,长度不大于预设页长与当前优化对象的长度之差的对象,作为组合对象;
步骤S9:所述智能卡判断所有空闲存储空间中是否存在以页起始位置开始,长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤S10,否则将当前优化对象的优化标识置位,执行步骤S13;
步骤S10:所述智能卡将所述当前优化对象和所述组合对象复制到所述连续存储空间;
步骤S11:所述智能卡根据所述连续存储空间相对于基地址的偏移量和所述当前优化对象的长度,计算所述组合对象相对于基地址的偏移量,根据所述连续存储空间相对于基地址的偏移量更新当前优化对象的引用关系,并根据所述组合对象相对于基地址的偏移量,更新所述组合对象的引用关系;
或,所述智能卡根据所述连续存储空间相对于基地址的偏移量和所述组合对象的长度,计算当前优化对象相对于基地址的偏移量,根据所述连续存储空间相对于基地址的偏移量更新所述组合对象的引用关系,并根据当前优化对象相对于基地址的偏移量,更新当前优化对象的引用关系;
步骤S12:所述智能卡将所述当前优化对象和所述组合对象的优化标识置位;
步骤S13:所述智能卡判断所述优化列表中是否还有优化标识复位的对象,如果是,则从所述优化列表中获取优化标识复位的对象作为当前优化对象,返回执行步骤S4,否则向所述上位机返回优化成功响应,返回步骤S2。
2.根据权利要求1所述的方法,其特征在于,所述步骤S2中,当所述智能卡接收到命令时,还包括:所述智能卡判断接收到的命令是否为预设命令,如果是,则执行步骤S3,否则执行步骤a1;
步骤a1:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是写操作,则更新所述优化列表中的写次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是其他操作,执行相应操作,向所述上位机返回相应响应,返回步骤S2。
3.根据权利要求1所述的方法,其特征在于,所述步骤S2中,当所述智能卡接收到命令时,还包括:所述智能卡判断接收到的命令的类型,如果是采集命令,则执行步骤b1,如果是优化命令,则执行步骤S3,如果是应用命令,则执行步骤b2;
步骤b1:所述智能卡将采集标识位置位,并向所述上位机返回开始采集响应,返回步骤S2;
步骤b2:所述智能卡获取采集标识位,判断所述采集标识位是否置位,如果是,则执行步骤b3,否则向所述上位机返回不需要采集响应,返回步骤S2;
步骤b3:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是写操作,则更新所述优化列表中的写次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是其他操作,执行相应操作,向所述上位机返回相应响应,返回步骤S2;
所述向所述上位机返回命令数据采集成功响应之后,还包括将所述采集标识位复位。
4.根据权利要求2或3所述的方法,其特征在于,所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是写操作,则更新所述优化列表中的写次数,并向所述上位机返回命令数据采集成功响应,返回步骤S2,如果是其他操作,执行相应操作,向所述上位机返回相应响应,返回步骤S2,具体为:
步骤c1:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用判断需要执行的操作类型,如果是读操作,则执行步骤c2,如果是写操作,则执行步骤c7,如果是其他操作,执行相应操作,返回相应响应,返回步骤S2;
步骤c2:所述智能卡根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;
步骤c3:所述智能卡从所述对象表中获取所述读取地址对应的对象的起始地址;
步骤c4:所述智能卡判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址,如果是,则执行步骤c5,否则执行步骤c6;
步骤c5:所述智能卡更新所述优化列表中所述读取地址对应的对象的起始地址的读次数,执行步骤c12;
步骤c6:所述智能卡根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位,执行步骤c12;
步骤c7:所述智能卡根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;
步骤c8:所述智能卡从对象表中获取所述写地址对应的对象的起始地址;
步骤c9:所述智能卡判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址,如果是,则执行步骤c10,否则执行步骤c11;
步骤c10:所述智能卡更新优化列表中所述写地址对应的对象的起始地址的写次数,执行步骤c12;
步骤c11:所述智能卡根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为0,并将优化标识复位,执行步骤c12;
步骤c12:所述智能卡向上位机返回数据采集成功响应,返回步骤S2。
5.根据权利要求1所述的方法,其特征在于,所述步骤S2中,当接收到命令时,还包括:
步骤d1:所述智能卡调用相应的应用,获取所述应用的使用次数,判断所述使用次数是否达到优化预设值,如果是,则执行步骤d2,否则将所述应用的使用次数自加预设步长,执行应用的相应操作,向上位机返回相应数据,返回步骤S2;
步骤d2:所述智能卡统计所述应用中的对象在对象表中的存储情况,判断是否存在存储位置大于预设值的对象,如果是,则执行步骤d3,否则将所述应用的使用次数自加预设步长,执行应用的相应操作,向上位机返回相应数据,返回步骤S2;
步骤d3:所述智能卡根据所述应用判断需要执行的操作类型,如果是读操作,则更新所述优化列表中的读次数,执行步骤d4,如果是写操作,则更新所述优化列表中的写次数,执行步骤d4,否则直接执行步骤d4,如果是其他操作,则执行相应操作,执行步骤d4;
步骤d4:所述智能卡将所述应用的使用次数加预设步长,判断所述使用次数与所述优化预设值之差是否大于采集预设值,如果是,则执行步骤S3,否则返回步骤S2。
6.根据权利要求5所述的方法,其特征在于,所述步骤d3,具体为:
步骤d3-1:所述智能卡根据接收到的命令,调用相应的应用,根据所述应用,判断需要执行的操作类型,如果是读操作,则执行步骤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-11;
步骤d3-10:所述智能卡更新优化列表中所述写地址对应的对象的起始地址的写次数,执行步骤d4;
步骤d3-11:所述智能卡根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为0,并将优化标识复位,执行步骤d4。
7.根据权利要求2或3或5中任一所述的方法,其特征在于,所述步骤S3,具体包括:
所述智能卡接收到命令后,根据接收到的命令,获取需要优化的操作类型,如果是读优化操作,则执行步骤e1,如果是写优化操作,则执行步骤e2;
步骤e1:所述智能卡获取所述优化列表中的读次数,根据所述读次数,对所述优化列表中的信息进行排序,并获取排序后的优化列表中读次数最大且优化标识复位的对象作为当前优化对象;
步骤e2:所述智能卡获取所述优化列表中的写次数,根据所述写次数,对所述优化列表中的信息进行排序,并获取排序后的优化列表中写次数最大且优化标识复位的对象作为当前优化对象。
8.根据权利要求1所述的方法,其特征在于,
所述步骤S2,具体为:当所述智能卡接收到命令后,将内部保存的优化列表中第一个优化标识复位的对象作为当前优化对象;
所述步骤S13,具体为:所述智能卡判断所述优化列表中是否还有优化标识复位的对象,如果是,则将所述当前优化对象的下一个优化标识复位的对象作为当前优化对象,返回执行步骤S4,否则向所述上位机返回优化成功响应,返回步骤S2。
9.根据权利要求1所述的方法,其特征在于,
所述步骤S4之前还包括:从对象表中获取所述对象的长度,将所述对象的长度记录到对象长度表中;
所述步骤S5中,所述获取所述当前优化对象的长度,具体为:从所述对象长度表中获取当前优化对象的长度。
10.根据权利要求9所述的方法,其特征在于,所述步骤S8,具体包括:
步骤f1:所述智能卡获取所述对象长度表中的第一个长度作为当前长度;
步骤f2:所述智能卡判断当前长度是否不大于预设页长与当前优化对象长度之差,如果是,则将当前长度对应的对象作为组合对象,执行步骤f3,否则直接执行步骤f3;
步骤f3:所述智能卡判断所述对象长度表中是否还有未查找的长度,如果是,则将当前长度的下一长度作为当前长度,执行步骤f2,否则得到组合对象,执行步骤S9。
11.根据权利要求1所述的方法,其特征在于,所述步骤S9,具体包括:
步骤g1:所述智能卡将所有空闲存储空间中的第一部分空闲存储空间作为当前空闲存储空间;
步骤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所述的装置,其特征在于,
所述第七更新模块,具体包括:
第三获取单元,用于当所述第十三判断模块判断为读操作时,根据需要执行的读操作,获取需要读取数据的读取地址,从对象表中获取与所述读取地址对应的对象;还用于从所述对象表中获取所述读取地址对应的对象的起始地址;
第三判断单元,用于当所述第三获取单元获取到所述读取地址对应的对象的起始地址时,判断从所述优化列表中是否能找到与所述读取地址对应的对象的起始地址;
第三更新单元,用于当所述第三判断单元判断为是时,更新优化列表中所述读取地址对应的对象的起始地址的读次数;
第三创建单元,用于当所述第三判断单元判断为否时,根据所述读取地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将对应的写次数置为第二数值,并将优化标识复位;
所述第八更新模块,具体包括:
第四获取单元,用于当所述第十四判断模块判断为写操作时,根据需要执行的写操作,获取需要写数据的写地址,从对象表中获取与所述写地址对应的对象;还用于从对象表中获取所述写地址对应的对象的起始地址;
第四判断单元,用于当所述第四获取单元获取到所述写地址对应的对象的起始地址时,判断从所述优化列表中是否能找到所述写地址对应的对象的起始地址;
第四更新单元,用于当所述第四判断单元判断为是时,更新所述优化列表中所述写地址对应的对象的起始地址的写次数;
第四创建单元,用于当所述第四判断单元判断为否时,根据所述写地址对应的对象的起始地址,在优化列表中创建一条新记录,将对应的读次数置为第一数值,将写次数置为0,并将优化标识复位;
所述第十四判断模块,具体用于当所述第四创建单元创建完成后,将所述应用的使用次数加预设步长,判断所述使用次数与所述优化预设值之差是否大于采集预设值。
20.根据权利要求14或15或18中任一所述的装置,其特征在于,所述装置还包括:
第十五判断模块,用于当所述接收模块接收到命令后,根据接收到的命令,获取需要优化的操作类型;
第一排序模块,用于当所述第十五判断模块判断为读优化操作时,获取所述优化列表中的读次数,根据所述读次数,对所述优化列表中的信息进行排序;
第二排序模块,用于当所述第十五判断模块判断为写优化操作时,获取所述优化列表中的写次数,根据所述写次数,对所述优化列表中的信息进行排序;
所述第一处理模块,具体用于当所述第一排序模块排序完成后,获取排序后的优化列表中读次数最大且优化标识复位的对象作为当前优化对象;当所述第二排序模块排序完成后,获取排序后的优化列表中写次数最大且优化标识复位的对象作为当前优化对象。
21.根据权利要求13所述的装置,其特征在于,
所述第一处理模块,具体用于当所述接收模块接收到命令后,将内部保存的优化列表中第一个优化标识复位的对象作为当前优化对象;
所述第五判断模块,具体用于当所述置位模块将所述当前优化对象和所述组合对象的优化标识置位后,判断所述优化列表中是否还有优化标识复位的对象;
所述第二获取模块,具体用于当所述第五判断模块判断为是时,将所述当前优化对象的下一个优化标识复位的对象作为当前优化对象。
22.根据权利要求13所述的装置,其特征在于,还包括:
记录模块,用于从对象表中获取所述对象的长度,记录为对象长度表;
所述第一获取模块,具体用于当所述记录模块记录得到所述对象长度表后,从所述对象长度表中获取当前优化对象的长度。
23.根据权利要求22所述的装置,其特征在于,
所述查找模块,具体用于执行以下操作:
步骤f1:获取所述对象长度表中的第一个长度作为当前长度;
步骤f2:判断当前长度是否不大于预设页长与当前优化对象长度之差,如果是,则将当前长度对应的对象作为组合对象,执行步骤f3,否则直接执行步骤f3;
步骤f3:判断所述对象长度表中是否还有未查找的长度,如果是,则将当前长度的下一长度作为当前长度,执行步骤f2,否则得到组合对象,触发所述第四判断模块。
24.根据权利要求13所述的装置,其特征在于,
所述第四判断模块,具体用于执行以下操作:
步骤g1:将所有空闲存储空间中的第一部分空闲存储空间作为当前空闲存储空间;
步骤g2:判断所述当前空闲存储空间中是否有空物理页,如果是,则执行步骤g3,否则执行步骤g5;
步骤g3:将当前空闲存储空间中的第一个空物理页作为当前空物理页;
步骤g4:判断在当前空闲存储空间中是否存在从当前空物理页的起始位置起长度大于或等于当前优化对象与所述组合对象长度之和的连续存储空间,如果是,则执行步骤S10,否则执行步骤g5;
步骤g5:所述智能卡判断所有空闲存储空间中是否还有未处理的空闲存储空间,如果是,则将当前空闲存储空间的下一空闲存储空间作为当前空闲存储空间,执行步骤g2,否则将当前优化对象的优化标识置位,触发所述接收模块。
25.根据权利要求13所述的装置,其特征在于,
所述第一更新模块,还用于当所述置位模块将所述当前优化对象的优化标识置位后,将当前优化对象置为空闲存储空间;
所述第二更新模块,还用于当所述置位模块将所述当前优化对象和所述组合对象的优化标识置位后,将当前优化对象和所述组合对象置为空闲存储空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410414727.4A CN104182358B (zh) | 2014-08-21 | 2014-08-21 | 一种优化数据读写的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410414727.4A CN104182358B (zh) | 2014-08-21 | 2014-08-21 | 一种优化数据读写的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104182358A true CN104182358A (zh) | 2014-12-03 |
CN104182358B CN104182358B (zh) | 2017-07-14 |
Family
ID=51963421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410414727.4A Active CN104182358B (zh) | 2014-08-21 | 2014-08-21 | 一种优化数据读写的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104182358B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105955893A (zh) * | 2016-05-05 | 2016-09-21 | 捷开通讯(深圳)有限公司 | 存储数据的写入方法、读取方法以及智能终端 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070159885A1 (en) * | 2004-12-30 | 2007-07-12 | Gorobets Sergey A | On-Chip Data Grouping and Alignment |
CN101197006A (zh) * | 2007-12-19 | 2008-06-11 | 东信和平智能卡股份有限公司 | 智能卡及数据写入方法 |
US20090113112A1 (en) * | 2007-10-25 | 2009-04-30 | Ye Kyung-Wook | Data storage device, memory system, and computing system using nonvolatile memory device |
CN102999437A (zh) * | 2011-09-19 | 2013-03-27 | 群联电子股份有限公司 | 数据搬移方法、存储器控制器与存储器储存装置 |
CN103246610A (zh) * | 2012-02-14 | 2013-08-14 | 中国科学院上海微系统与信息技术研究所 | 基于单类型存储器的嵌入式系统的动态存储管理方法 |
-
2014
- 2014-08-21 CN CN201410414727.4A patent/CN104182358B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070159885A1 (en) * | 2004-12-30 | 2007-07-12 | Gorobets Sergey A | On-Chip Data Grouping and Alignment |
US20090113112A1 (en) * | 2007-10-25 | 2009-04-30 | Ye Kyung-Wook | Data storage device, memory system, and computing system using nonvolatile memory device |
CN101197006A (zh) * | 2007-12-19 | 2008-06-11 | 东信和平智能卡股份有限公司 | 智能卡及数据写入方法 |
CN102999437A (zh) * | 2011-09-19 | 2013-03-27 | 群联电子股份有限公司 | 数据搬移方法、存储器控制器与存储器储存装置 |
CN103246610A (zh) * | 2012-02-14 | 2013-08-14 | 中国科学院上海微系统与信息技术研究所 | 基于单类型存储器的嵌入式系统的动态存储管理方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105955893A (zh) * | 2016-05-05 | 2016-09-21 | 捷开通讯(深圳)有限公司 | 存储数据的写入方法、读取方法以及智能终端 |
CN105955893B (zh) * | 2016-05-05 | 2019-07-26 | 捷开通讯(深圳)有限公司 | 存储数据的写入方法、读取方法以及智能终端 |
Also Published As
Publication number | Publication date |
---|---|
CN104182358B (zh) | 2017-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2115595B1 (en) | Memory device performance enhancement through pre-erase mechanism | |
US8615635B2 (en) | Database management methodology | |
CN101263462B (zh) | 具有区块管理的非易失性存储器 | |
CN108710578A (zh) | 基于闪存的数据存储方法和装置 | |
CN101986649B (zh) | 应用于电信行业计费系统的共享数据中心 | |
CN106383666B (zh) | 一种数据存储方法及装置 | |
CN103164490B (zh) | 一种不固定长度数据的高效存储实现方法和装置 | |
CN101027651A (zh) | 最佳顺序性簇管理的fat分析 | |
CN101164037A (zh) | 闪速存储器中的直接数据文件存储 | |
CN104008061A (zh) | 内存回收方法及装置 | |
CN109558075B (zh) | 一种利用数据冷热属性存储数据的方法及装置 | |
CN110362450A (zh) | 一种日志数据采集方法、装置及计算机可读存储介质 | |
CN107247624A (zh) | 一种面向Key‑Value系统的协同优化方法及系统 | |
CN104933051A (zh) | 文件存储空间回收方法和装置 | |
CN103136215A (zh) | 存储系统的数据读写方法和装置 | |
CN114303123A (zh) | 一种固态硬盘的数据存储方法、装置及固态硬盘ssd | |
CN101246440B (zh) | Java卡系统垃圾回收方法 | |
CN111090392A (zh) | 一种基于特征码的冷热数据分离方法 | |
CN102521146B (zh) | 一种flash存储器块细分的数据寻址存储方法 | |
CN101131649A (zh) | 设有闪存的装置的只读存储器升级速度改善方法 | |
CN104182358A (zh) | 一种优化数据读写的方法及装置 | |
CN111562883B (zh) | 固态硬盘的缓存管理系统、方法、装置 | |
CN102541753A (zh) | 一种嵌入式存储器的读写优化方法 | |
CN104408126A (zh) | 一种数据库的持久化写入方法、装置和系统 | |
CN109165305B (zh) | 一种特征值存储、检索方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |