发明内容
根据本发明的一个方面,提供一种基于缓存内移出的数据组进行动态处理的方法,所述方法包括:
对移动终端内处理器的缓存中多个数据组中每个数据组的被访问次数进行实时统计,将预定时间段内的被访问次数低于第一次数阈值的数据组确定为准备从所述缓存移动到第一存储器的待移出的数据组;
基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且在第一存储器中存储的多个关联数据组,根据每个关联数据组与所述待移出的数据组的关联度为每个关联数据组设置关联级别,其中关联级别包括:高关联级别、中关联级别和低关联级别;
对第一存储器内多个数据段中的每个数据段进行扫描,以确定每个数据段所包括的关联数据组的数量,将剩余空间能够容纳所述待移出的数据组的多个数据段中具有最多数量的关联数据组的数据段确定为当前数据段(从最多的开始选,直到确定符合要求的);
确定在所述当前数据段内多个数据区中为所述待移出的数据组所分配的当前数据区,将所述待移出的数据组从缓存移动到所述当前数据段的当前数据区中;
扫描所述当前数据段内除所述当前数据区之外的所有数据区,将所述当前数据段内除所述当前数据区之外的并且具有至少一个关联数据组的数据区确定为关联数据区,根据所述当前数据段内的每个关联数据区内关联数据组所涉及的最高的关联级别确定每个关联数据区的压缩率和压缩级,其中压缩率包括高压缩率、中压缩率和低压缩率并且高压缩率、中压缩率和低压缩率的压缩程度依次升高;其中压缩级包括:第一压缩级、第二压缩级、第三压缩级和第四压缩级并且第一压缩级、第二压缩级、第三压缩级和第四压缩级的压缩次序依次降低;
将所述当前数据区设置为高压缩率并且标记为第一压缩级,其中根据所述当前数据段内的每个关联数据区内关联数据组所涉及的最高的关联级别确定每个关联数据区的压缩率和压缩级包括:当所涉及的最高的关联级别为高关联级别、中关联级别或低关联级别时,将关联数据区的压缩率相应地设置为高压缩率、中压缩率或低压缩率;将所涉及的最高的关联级别为高关联级别的关联数据区标记为第二压缩级、将所涉及的最高的关联级别为中关联级别的关联数据区标记为第三压缩级以及将所涉及的最高的关联级别为低关联级别的关联数据区标记为第四压缩级;
在所述当前数据段内(从低地址向高地址方向,或从高地址向低地址方向-扩展一个方案)按照压缩级和压缩率进行压缩:
首先,按照高压缩率对标记为第一压缩级的所述当前数据区中的数据组进行压缩;
然后,按照高压缩率对标记为第二压缩级的关联数据区中的数据组进行压缩;
接着,按照中压缩率对标记为第三压缩级的关联数据区中的数据组进行压缩;
最后,按照低压缩率对标记为第四压缩级的关联数据区中的数据组进行压缩;
在所述当前数据段内按照压缩级和压缩率进行压缩的同时,确定多个数据段中除所述当前数据段之外并且具有关联数据组的至少一个关联数据段,其中每个关联数据段内的至少一个关联数据区存储了关联数据组;
根据每个关联数据段的至少一个关联数据区中每个关联数据区内关联数据组所涉及的最高的关联级别确定关联数据段内每个关联数据区的压缩率和压缩级包括:当关联数据区所涉及的最高的关联级别为高关联级别、中关联级别或低关联级别时,将关联数据区的压缩率相应地标记为高压缩率、中压缩率或低压缩率;将所涉及的最高的关联级别为高关联级别的关联数据区标记为第二压缩级,以及将所涉及的最高的关联级别为中关联级别或关联级别的关联数据区标记为第三压缩级;
响应于所述当前压缩数据段内的按照压缩级和压缩率的压缩的完成,在所述至少一个关联压缩数据段(中每个关联压缩数据段--并行、或串行)内按照压缩级和压缩率进行压缩:
首先,按照高压缩率对每个关联压缩数据段内的标记为第二压缩级的关联数据区进行压缩;
然后,按照中压缩率对每个关联压缩数据段内的标记为第三压缩级和中压缩率的关联数据区进行压缩,并且同时按照低压缩率对每个关联压缩数据段内的标记为第三压缩级和低压缩率的关联数据区进行压缩。
还包括,对第一存储器内每个数据段中多个数据组中每个数据组的被访问次数进行实时统计,将预定时间段内的被访问次数高于第二次数阈值的数据组确定为待移入的数据组。
当所述缓存的剩余存储空间比率高于移入阈值时,将至少一个待移入的数据组构成按照存储尺寸递增的队列,从存储尺寸最小的待移入的数据组开始,按照队列顺序将所述至少一个待移入的数据组移动到所述缓存内,直到将下一个待移入的数据组移动到所述缓存后,所述缓存的剩余存储空间比率低于移出阈值为止;其中移入阈值大于移出阈值。
其中所述第二次数阈值大于所述第一次数阈值,或者所述第二次数阈值小于所述第一次数阈值;
其中所述预定时间段为以当前时间为结束点并且以过去的时间为开始点的一段时间;
根据系统配置或用户设置来确定所述预定时间段的时间长度;
所述缓存为处理器内部或外部的高速缓冲存储器;
所述被访问次数是每个数据组被处理器访问的次数。
当存在具有最多数量的关联数据组并且剩余空间能够容纳所述待移出的数据组的多个数据段时,从多个数据段中随机选择一个数据段以作为当前数据段;或者
当存在具有最多数量的关联数据组并且剩余空间能够容纳所述待移出的数据组的多个数据段时,从多个数据段中选择剩余空间最大的数据段以作为当前数据段;或者
当存在具有最多数量的关联数据组并且剩余空间能够容纳所述待移出的数据组的多个数据段时,从多个数据段中选择剩余空间最小的数据段以作为当前数据段。
当具有最多数量的关联数据组的数据段的剩余空间不能容纳所述待移出的数据组,则选择具有第二最多数量的关联数据组的数据段并判断剩余空间能否容纳所述待移出的数据组,直到确定剩余空间能够容纳所述待移出的数据组的多个数据段中具有最多数量的关联数据组的数据段为止。
在检测到所述移动终端的操作系统被加载到所述第一存储器中并且所述操作系统启动完成时,根据预先设置的加载配置文件确定所述移动终端的待加载的多个应用,将与所述待加载的多个应用中每个应用相关联的文件包从第二存储器复制到所述第一存储器中。
所述第一存储器为易失性存储器,并且所述第二存储器为非易失性存储器。
在所述操作系统启动完成之后并且在根据预先设置的加载配置文件确定所述移动终端的待加载的多个应用之前,在所述第一存储器中创建用于存储数据的多个数据段,其中每个数据段包括多个数据区。
其中与每个应用相关联的文件包包括至少一个数据组,并且在所述第一存储器或缓存中,使用数据组作为对数据进行存储时的基本存储单元。
其中任意的数据组被存储在数据段的单个数据区中,并且单个数据区中能够存储至少一个数据组。
所述第二存储器中包括用于存储压缩数据的多个压缩数据段,其中每个压缩数据段包括多个压缩数据区,并且每个压缩数据区包括多个子区域。
其中与每个应用相关联的文件包包括经过压缩的至少一个数据组,并且在所述第二存储器中,使用经过压缩的数据组作为对数据进行压缩存储时的基本存储单元;
其中任意的经过压缩的数据组被存储在数据段的单个数据区中,并且单个数据区中能够存储至少一个数据组。
其中确定在所述当前数据段内多个数据区中为所述待移出的数据组所分配的当前数据区包括:
在当前数据段的多个数据区中为待移出的数据组随机分配数据区以作为当前数据区;或
计算所述待移出的数据组的标识符的哈希值,根据所述哈希值在所述当前数据段的多个数据区中选择一个数据区以作为当前数据区;或
将当前数据段的多个数据区中剩余存储空间比率最大的数据区作为当前数据区;或者
将所述当前数据段的多个数据区中剩余存储空间最大的数据区作为当前数据区。
在根据预先设置的加载配置文件确定待加载的多个应用之后,将关联统计文件从第二存储器复制到第一存储器中,所述关联统计文件包括多条关联统计信息,其中每条关联统计信息用于指示每个数据组的多个关联数据组。
还包括确定多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度,基于内容关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;
其中将任意的两个数据组的摘要信息进行内容匹配的匹配值来确定所述任意的两个数据组之间的内容关联度。
所述预先设置的选择规则包括:排序列表中内容关联度大于关联度阈值的多个数据组,或者排序列表中内容关联度排名在预定名次之前的多个数据组。
还包括确定多个数据组中除当前数据组之外的每个数据组与当前数据组的运行关联度,基于运行关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;
其中获取每个数据组的运行历史信息,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度。
所述预先设置的选择规则包括:排序列表中运行关联度大于关联度阈值的多个数据组,或者排序列表中运行关联度排名在预定名次之前的多个数据组。
还包括确定多个数据组中除当前数据组之外的每个数据组与当前数据组的反馈关联度,基于反馈关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;
其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对用户预先设置的关联度规则进行解析以确定多个数据组中需要进行反馈关联度设置的由两个数据组构成的数据组对,根据关联度规则为至少一个数据组对中的两个数据组设置反馈关联度。
所述预先设置的选择规则包括:排序列表中反馈关联度大于关联度阈值的多个数据组,或者排序列表中反馈关联度排名在预定名次之前的多个数据组。
还包括确定多个数据组中除当前数据组之外的每个数据组与当前数据组的综合关联度,基于综合关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;
其中将任意两个数据组的摘要信息进行内容匹配来确定所述任意两个数据组之间的内容关联度;
其中获取每个数据组的运行历史信息,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度;
其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度和运行关联度进行加权计算以确定综合关联度。
所述预先设置的选择规则包括:排序列表中综合关联度大于关联度阈值的多个数据组,或者排序列表中综合关联度排名在预定名次之前的多个数据组。
还包括确定多个数据组中除当前数据组之外的每个数据组与当前数据组的综合关联度,基于综合关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;
其中将任意两个数据组的摘要信息进行内容匹配来确定所述任意两个数据组之间的内容关联度;
其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对用户预先设置的关联度规则进行解析以确定多个数据组中需要进行反馈关联度设置的由两个数据组构成的数据组对,根据关联度规则为至少一个数据组对中的两个数据组设置反馈关联度。
其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度和反馈关联度进行加权计算以确定综合关联度。
所述预先设置的选择规则包括:排序列表中综合关联度大于关联度阈值的多个数据组,或者排序列表中综合关联度排名在预定名次之前的多个数据组。
还包括确定多个数据组中除当前数据组之外的每个数据组与当前数据组的综合关联度,基于综合关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;
其中获取每个数据组的运行历史信息,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度;
其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对用户预先设置的关联度规则进行解析以确定多个数据组中需要进行反馈关联度设置的由两个数据组构成的数据组对,根据关联度规则为至少一个数据组对中的两个数据组设置反馈关联度。
其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的运行关联度和反馈关联度进行加权计算以确定综合关联度。
所述预先设置的选择规则包括:排序列表中综合关联度大于关联度阈值的多个数据组,或者排序列表中综合关联度排名在预定名次之前的多个数据组。
还包括确定多个数据组中除当前数据组之外的每个数据组与当前数据组的综合关联度,基于综合关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;
其中将任意两个数据组的摘要信息进行内容匹配来确定任意两个数据组之间的内容关联度;
其中获取每个数据组的运行历史信息,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度;
其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对用户预先设置的关联度规则进行解析以确定多个数据组中需要进行反馈关联度设置的由两个数据组构成的数据组对,根据关联度规则为至少一个数据组对中的两个数据组设置反馈关联度。
其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度、运行关联度和反馈关联度进行加权计算以确定综合关联度。
所述预先设置的选择规则包括:排序列表中综合关联度大于关联度阈值的多个数据组,或者排序列表中综合关联度排名在预定名次之前的多个数据组。
根据每个关联数据组与所述待移出的数据组的关联度为每个关联数据组设置关联级别包括:
当关联数据组与所述待移出的数据组的关联度大于或等于第一关联度阈值时,将关联数据组的关联级别设置为高关联级别;
当关联数据组与所述待移出的数据组的关联度小于第一关联度阈值并且大于或等于第二关联度阈值时,将关联数据组的关联级别设置为中关联级别;以及
当关联数据组与所述待移出的数据组的关联度小于第二关联度阈值时,将关联数据组的关联级别设置为低关联级别。
其中第一关联度阈值大于第二关联度阈值。
还包括基于所述多个关联数据组中每个关联数据组在进行关联运行时与待移出的数据组的关联运行次数、关联运行时间和同步启动次数,为在所述关联统计信息中为每个关联数据组设置关联级别。
还包括获取每个数据组的运行历史信息,根据运行历史信息确定每个关联数据组在进行关联运行时与待移出的数据组的关联运行次数、关联运行时间和同步启动次数。
其中关联运行次数是在统计时间段内,两个数据组进行关联运行的次数;
其中关联运行时间是在统计时间段内,两个数据组进行关联运行的时间长度;
其中同步启动次数是在统计时间段内,两个数据组进行同步启动的次数;
其中关联运行是指两个数据组各自被调用或开始运行的时间的差值大于第一预定时间间隔并且小于第二预定时间间隔;
其中同步启动是指两个数据组各自被调用或开始运行的时间的差值小于或等于第一预定时间间隔。
基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的多个关联数据组包括:
基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且关联级别为高关联级别的多个关联数据组。
基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的多个关联数据组包括:
基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且关联级别为中关联级别的多个关联数据组。
基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的多个关联数据组包括:
基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且关联级别为高关联级别和中关联级别的多个关联数据组。
每个关联数据区中具有至少一个关联数据组。
其中高压缩率为90%、中压缩率为80%以及低压缩率为70%(实际上是压缩率的范围)。
其中对标记为第二压缩级的关联数据区中的数据组进行压缩包括:按照高压缩率从低地址向高地址方向或从高地址向低地址方向对标记为第二压缩级的多个关联数据区中的数据组进行压缩。
其中对标记为第三压缩级的关联数据区中的数据组进行压缩包括:按照中压缩率从低地址向高地址方向或从高地址向低地址方向对标记为第三压缩级的多个关联数据区中的数据组进行压缩。
其中对标记为第四压缩级的关联数据区中的数据组进行压缩包括:按照低压缩率从低地址向高地址方向或从高地址向低地址方向对标记为第四压缩级的多个关联数据区中的数据组进行压缩。
其中按照高压缩率对每个关联压缩数据段内的标记为第二压缩级的关联数据区进行压缩包括:
基于多个关联压缩数据段的串行或并行方式,按照高压缩率对每个关联压缩数据段内的标记为第二压缩级的关联数据区进行压缩。
其中按照中压缩率对每个关联压缩数据段内的标记为第三压缩级和中压缩率的关联数据区进行压缩包括:
基于多个关联压缩数据段的串行或并行方式,按照中压缩率对每个关联压缩数据段内的标记为第三压缩级和中压缩率的关联数据区进行压缩。
其中按照低压缩率对每个关联压缩数据段内的标记为第三压缩级和低压缩率的关联数据区进行压缩包括:
基于多个关联压缩数据段的串行或并行方式,按照低压缩率对每个关联压缩数据段内的标记为第三压缩级和低压缩率的关联数据区进行压缩。
将对当前数据段的当前数据区中的数据组进行压缩所产生的压缩的数据组移动到所述第一存储器的第一缓冲区中;以及
将对当前数据段的每个关联数据区中的数据组进行压缩所产生的压缩的数据组移动到所述第一存储器的第二缓冲区中。
在将压缩的数据组移动到所述第一存储器的第一缓冲区中后,将所述当前数据区的存储空间进行初始化。
在将压缩的数据组移动到所述第一存储器的第二缓冲区中后,将每个关联数据区的存储空间进行初始化。
将具有至少一个关联数据组的数据段选择作为关联数据段,并且将关联数据段内具有至少一个关联数据组的数据区确定为关联数据区。
将对每个关联数据段内至少一个关联数据区中每个关联数据区中的数据组进行压缩所产生的压缩的数据组移动到所述第一存储器的第二缓冲区中。
在将压缩的数据组移动到所述第一存储器的第二缓冲区中后,将每个关联数据段内至少一个关联数据区中每个关联数据区的存储空间进行初始化。
确定第一存储器内所有数据组中每个数据组在每个第三预定时间间隔内的被访问次数,将当前的第三预定时间间隔内被访问次数高于第三数量阈值的数据组移动到缓存中;
或者确定第一存储器内所有经过压缩的数据组中每个经过压缩的数据组在每个第三预定时间间隔内的被访问次数,将当前的第三预定时间间隔内被访问次数高于第三数量阈值的经过压缩的数据组进行解压缩并移动到缓存中。
根据本发明的另一个方面,提供一种基于缓存内移出的数据组进行动态处理的系统,所述系统包括:
统计单元,对移动终端内处理器的缓存中多个数据组中每个数据组的被访问次数进行实时统计,将预定时间段内的被访问次数低于第一次数阈值的数据组确定为准备从所述缓存移动到第一存储器的待移出的数据组;
关联单元,基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且在第一存储器中存储的多个关联数据组,根据每个关联数据组与所述待移出的数据组的关联度为每个关联数据组设置关联级别,其中关联级别包括:高关联级别、中关联级别和低关联级别;
第一扫描单元,对第一存储器内多个数据段中的每个数据段进行扫描,以确定每个数据段所包括的关联数据组的数量,将剩余空间能够容纳所述待移出的数据组的多个数据段中具有最多数量的关联数据组的数据段确定为当前数据段(从最多的开始选,直到确定符合要求的);
移动单元,确定在所述当前数据段内多个数据区中为所述待移出的数据组所分配的当前数据区,将所述待移出的数据组从缓存移动到所述当前数据段的当前数据区中;
第二扫描单元,扫描所述当前数据段内除所述当前数据区之外的所有数据区,将所述当前数据段内除所述当前数据区之外的并且具有至少一个关联数据组的数据区确定为关联数据区,根据所述当前数据段内的每个关联数据区内关联数据组所涉及的最高的关联级别确定每个关联数据区的压缩率和压缩级,其中压缩率包括高压缩率、中压缩率和低压缩率并且高压缩率、中压缩率和低压缩率的压缩程度依次升高;其中压缩级包括:第一压缩级、第二压缩级、第三压缩级和第四压缩级并且第一压缩级、第二压缩级、第三压缩级和第四压缩级的压缩次序依次降低;
第一设置单元,将所述当前数据区设置为高压缩率并且标记为第一压缩级,其中根据所述当前数据段内的每个关联数据区内关联数据组所涉及的最高的关联级别确定每个关联数据区的压缩率和压缩级包括:当所涉及的最高的关联级别为高关联级别、中关联级别或低关联级别时,将关联数据区的压缩率相应地设置为高压缩率、中压缩率或低压缩率;将所涉及的最高的关联级别为高关联级别的关联数据区标记为第二压缩级、将所涉及的最高的关联级别为中关联级别的关联数据区标记为第三压缩级以及将所涉及的最高的关联级别为关联级别的关联数据区标记为第四压缩级;
第一压缩单元,在所述当前数据段内(从低地址向高地址方向,或从高地址向低地址方向-扩展一个方案)按照压缩级和压缩率进行压缩:
首先,按照高压缩率对标记为第一压缩级的所述当前数据区中的数据组进行压缩;
然后,按照高压缩率对标记为第二压缩级的关联数据区中的数据组进行压缩;
接着,按照中压缩率对标记为第三压缩级的关联数据区中的数据组进行压缩;
最后,按照低压缩率对标记为第四压缩级的关联数据区中的数据组进行压缩;
第三扫描单元,在所述当前数据段内按照压缩级和压缩率进行压缩的同时,确定多个数据段中除所述当前数据段之外并且具有关联数据组的至少一个关联数据段,其中每个关联数据段内的至少一个关联数据区存储了关联数据组;
第二设置单元,根据每个关联数据段的至少一个关联数据区中每个关联数据区内关联数据组所涉及的最高的关联级别确定关联数据段内每个关联数据区的压缩率和压缩级包括:当关联数据区所涉及的最高的关联级别为高关联级别、中关联级别或低关联级别时,将关联数据区的压缩率相应地标记为高压缩率、中压缩率或低压缩率;将所涉及的最高的关联级别为高关联级别的关联数据区标记为第二压缩级,以及将所涉及的最高的关联级别为中关联级别或低关联级别的关联数据区标记为第三压缩级;
第二压缩单元,响应于所述当前压缩数据段内的按照压缩级和压缩率的压缩的完成,在所述至少一个关联压缩数据段(中每个关联压缩数据段--并行、或串行)内按照压缩级和压缩率进行压缩:
首先,按照高压缩率对每个关联压缩数据段内的标记为第二压缩级的关联数据区进行压缩;
然后,按照中压缩率对每个关联压缩数据段内的标记为第三压缩级和中压缩率的关联数据区进行压缩,并且同时按照低压缩率对每个关联压缩数据段内的标记为第三压缩级和低压缩率的关联数据区进行压缩。
统计单元对第一存储器内每个数据段中多个数据组中每个数据组的被访问次数进行实时统计,将预定时间段内的被访问次数高于第二次数阈值的数据组确定为待移入的数据组。
移动单元当所述缓存的剩余存储空间比率高于移入阈值时,将至少一个待移入的数据组构成按照存储尺寸递增的队列,从存储尺寸最小的待移入的数据组开始,按照队列顺序将所述至少一个待移入的数据组移动到所述缓存内,直到将下一个待移入的数据组移动到所述缓存后,所述缓存的剩余存储空间比率低于移出阈值为止;其中移入阈值大于移出阈值。
其中所述第二次数阈值大于所述第一次数阈值,或者所述第二次数阈值小于所述第一次数阈值;
其中所述预定时间段为以当前时间为结束点并且以过去的时间为开始点的一段时间;
根据系统配置或用户设置来确定所述预定时间段的时间长度;
所述缓存为处理器内部或外部的高速缓冲存储器;
所述被访问次数是每个数据组被处理器访问的次数。
当存在具有最多数量的关联数据组并且剩余空间能够容纳所述待移出的数据组的多个数据段时,第一扫描单元从多个数据段中随机选择一个数据段以作为当前数据段;或者
当存在具有最多数量的关联数据组并且剩余空间能够容纳所述待移出的数据组的多个数据段时,第一扫描单元从多个数据段中选择剩余空间最大的数据段以作为当前数据段;或者
当存在具有最多数量的关联数据组并且剩余空间能够容纳所述待移出的数据组的多个数据段时,第一扫描单元从多个数据段中选择剩余空间最小的数据段以作为当前数据段。
当具有最多数量的关联数据组的数据段的剩余空间不能容纳所述待移出的数据组,第一扫描单元选择具有第二最多数量的关联数据组的数据段并判断剩余空间能否容纳所述待移出的数据组,直到确定剩余空间能够容纳所述待移出的数据组的多个数据段中具有最多数量的关联数据组的数据段为止。
还包括初始化单元,在检测到所述移动终端的操作系统被加载到所述第一存储器中并且所述操作系统启动完成时,根据预先设置的加载配置文件确定所述移动终端的待加载的多个应用,将与所述待加载的多个应用中每个应用相关联的文件包从第二存储器复制到所述第一存储器中。
所述第一存储器为易失性存储器,并且所述第二存储器为非易失性存储器。
在所述操作系统启动完成之后并且在根据预先设置的加载配置文件确定所述移动终端的待加载的多个应用之前,初始化单元在所述第一存储器中创建用于存储数据的多个数据段,其中每个数据段包括多个数据区。
其中与每个应用相关联的文件包包括至少一个数据组,并且在所述第一存储器或缓存中,使用数据组作为对数据进行存储时的基本存储单元。
其中任意的数据组被存储在数据段的单个数据区中,并且单个数据区中能够存储至少一个数据组。
所述第二存储器中包括用于存储压缩数据的多个压缩数据段,其中每个压缩数据段包括多个压缩数据区,并且每个压缩数据区包括多个子区域。
其中与每个应用相关联的文件包包括经过压缩的至少一个数据组,并且在所述第二存储器中,使用经过压缩的数据组作为对数据进行压缩存储时的基本存储单元;
其中任意的经过压缩的数据组被存储在数据段的单个数据区中,并且单个数据区中能够存储至少一个数据组。
其中移动单元确定在所述当前数据段内多个数据区中为所述待移出的数据组所分配的当前数据区包括:
移动单元在所述当前数据段的多个数据区中为所述待移出的数据组随机分配数据区以作为当前数据区;或者
移动单元计算所述待移出的数据组的标识符的哈希值,根据所述哈希值在所述当前数据段的多个数据区中选择一个数据区以作为当前数据区;或者
移动单元将所述当前数据段的多个数据区中剩余存储空间比率最大的数据区作为当前数据区;或者
移动单元将所述当前数据段的多个数据区中剩余存储空间最大的数据区作为当前数据区。
在根据预先设置的加载配置文件确定待加载的多个应用之后,将关联统计文件从第二存储器复制到第一存储器中,所述关联统计文件包括多条关联统计信息,其中每条关联统计信息用于指示每个数据组的多个关联数据组。
关联单元确定多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度,基于内容关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;
其中将任意的两个数据组的摘要信息进行内容匹配的匹配值来确定所述任意的两个数据组之间的内容关联度。
所述预先设置的选择规则包括:排序列表中内容关联度大于关联度阈值的多个数据组,或者排序列表中内容关联度排名在预定名次之前的多个数据组。
关联单元确定多个数据组中除当前数据组之外的每个数据组与当前数据组的运行关联度,基于运行关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;
其中获取每个数据组的运行历史信息,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度。
所述预先设置的选择规则包括:排序列表中运行关联度大于关联度阈值的多个数据组,或者排序列表中运行关联度排名在预定名次之前的多个数据组。
关联单元确定多个数据组中除当前数据组之外的每个数据组与当前数据组的反馈关联度,基于反馈关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;
其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对用户预先设置的关联度规则进行解析以确定多个数据组中需要进行反馈关联度设置的由两个数据组构成的数据组对,根据关联度规则为至少一个数据组对中的两个数据组设置反馈关联度。
所述预先设置的选择规则包括:排序列表中反馈关联度大于关联度阈值的多个数据组,或者排序列表中反馈关联度排名在预定名次之前的多个数据组。
关联单元确定多个数据组中除当前数据组之外的每个数据组与当前数据组的综合关联度,基于综合关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;
其中将任意两个数据组的摘要信息进行内容匹配来确定所述任意两个数据组之间的内容关联度;
其中获取每个数据组的运行历史信息,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度;
其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度和运行关联度进行加权计算以确定综合关联度。
所述预先设置的选择规则包括:排序列表中综合关联度大于关联度阈值的多个数据组,或者排序列表中综合关联度排名在预定名次之前的多个数据组。
关联单元确定多个数据组中除当前数据组之外的每个数据组与当前数据组的综合关联度,基于综合关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从排序列表中选择多个数据组以作为当前数据组的多个关联数据组;
其中将任意两个数据组的摘要信息进行内容匹配来确定所述任意两个数据组之间的内容关联度;
其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对用户预先设置的关联度规则进行解析以确定多个数据组中需要进行反馈关联度设置的由两个数据组构成的数据组对,根据关联度规则为至少一个数据组对中的两个数据组设置反馈关联度。
其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度和反馈关联度进行加权计算以确定综合关联度。
所述预先设置的选择规则包括:排序列表中综合关联度大于关联度阈值的多个数据组,或者排序列表中综合关联度排名在预定名次之前的多个数据组。
关联单元确定多个数据组中除当前数据组之外的每个数据组与当前数据组的综合关联度,基于综合关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;
其中获取每个数据组的运行历史信息,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度;
其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对用户预先设置的关联度规则进行解析以确定多个数据组中需要进行反馈关联度设置的由两个数据组构成的数据组对,根据关联度规则为至少一个数据组对中的两个数据组设置反馈关联度。
其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的运行关联度和反馈关联度进行加权计算以确定综合关联度。
所述预先设置的选择规则包括:排序列表中综合关联度大于关联度阈值的多个数据组,或者排序列表中综合关联度排名在预定名次之前的多个数据组。
关联单元确定多个数据组中除当前数据组之外的每个数据组与当前数据组的综合关联度,基于综合关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;
其中将任意两个数据组的摘要信息进行内容匹配来确定所述任意两个数据组之间的内容关联度;
其中获取每个数据组的运行历史信息,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度;
其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对用户预先设置的关联度规则进行解析以确定多个数据组中需要进行反馈关联度设置的由两个数据组构成的数据组对,根据关联度规则为至少一个数据组对中的两个数据组设置反馈关联度。
其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度、运行关联度和反馈关联度进行加权计算以确定综合关联度。
所述预先设置的选择规则包括:排序列表中综合关联度大于关联度阈值的多个数据组,或者排序列表中综合关联度排名在预定名次之前的多个数据组。
关联单元根据每个关联数据组与所述待移出的数据组的关联度为每个关联数据组设置关联级别包括:
当关联数据组与所述待移出的数据组的关联度大于或等于第一关联度阈值时,将关联数据组的关联级别设置为高关联级别;
当关联数据组与所述待移出的数据组的关联度小于第一关联度阈值并且大于或等于第二关联度阈值时,将关联数据组的关联级别设置为中关联级别;以及
当关联数据组与所述待移出的数据组的关联度小于第二关联度阈值时,将关联数据组的关联级别设置为低关联级别。
其中第一关联度阈值大于第二关联度阈值。
关联单元基于所述多个关联数据组中每个关联数据组在进行关联运行时与待移出的数据组的关联运行次数、关联运行时间和同步启动次数,为在所述关联统计信息中为每个关联数据组设置关联级别。
关联单元获取每个数据组的运行历史信息,根据运行历史信息确定每个关联数据组在进行关联运行时与待移出的数据组的关联运行次数、关联运行时间和同步启动次数。
其中关联运行次数是在统计时间段内,两个数据组进行关联运行的次数;
其中关联运行时间是在统计时间段内,两个数据组进行关联运行的时间长度;
其中同步启动次数是在统计时间段内,两个数据组进行同步启动的次数;
其中关联运行是指两个数据组各自被调用或开始运行的时间的差值大于第一预定时间间隔并且小于第二预定时间间隔;
其中同步启动是指两个数据组各自被调用或开始运行的时间的差值小于或等于第一预定时间间隔。
关联单元基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的多个关联数据组包括:
关联单元基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且关联级别为高关联级别的多个关联数据组。
关联单元基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的多个关联数据组包括:
关联单元基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且关联级别为中关联级别的多个关联数据组。
关联单元基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的多个关联数据组包括:
关联单元基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且关联级别为高关联级别和中关联级别的多个关联数据组。
每个关联数据区中具有至少一个关联数据组。
其中高压缩率为90%、中压缩率为80%以及低压缩率为70%(实际上是压缩率的范围)。
其中对标记为第二压缩级的关联数据区中的数据组进行压缩包括:按照高压缩率从低地址向高地址方向或从高地址向低地址方向对标记为第二压缩级的多个关联数据区中的数据组进行压缩。
其中对标记为第三压缩级的关联数据区中的数据组进行压缩包括:按照中压缩率从低地址向高地址方向或从高地址向低地址方向对标记为第三压缩级的多个关联数据区中的数据组进行压缩。
其中对标记为第四压缩级的关联数据区中的数据组进行压缩包括:按照低压缩率从低地址向高地址方向或从高地址向低地址方向对标记为第四压缩级的多个关联数据区中的数据组进行压缩。
其中第二压缩单元按照高压缩率对每个关联压缩数据段内的标记为第二压缩级的关联数据区进行压缩包括:
第二压缩单元基于多个关联压缩数据段的串行或并行方式,按照高压缩率对每个关联压缩数据段内的标记为第二压缩级的关联数据区进行压缩。
其中第二压缩单元按照中压缩率对每个关联压缩数据段内的标记为第三压缩级和中压缩率的关联数据区进行压缩包括:
第二压缩单元基于多个关联压缩数据段的串行或并行方式,按照中压缩率对每个关联压缩数据段内的标记为第三压缩级和中压缩率的关联数据区进行压缩。
其中第二压缩单元按照低压缩率对每个关联压缩数据段内的标记为第三压缩级和低压缩率的关联数据区进行压缩包括:
第二压缩单元基于多个关联压缩数据段的串行或并行方式,按照低压缩率对每个关联压缩数据段内的标记为第三压缩级和低压缩率的关联数据区进行压缩。
移动单元将对当前数据段的当前数据区中的数据组进行压缩所产生的压缩的数据组移动到所述第一存储器的第一缓冲区中;以及
移动单元将对当前数据段的每个关联数据区中的数据组进行压缩所产生的压缩的数据组移动到所述第一存储器的第二缓冲区中。
在将压缩的数据组移动到所述第一存储器的第一缓冲区中后,初始化单元将所述当前数据区的存储空间进行初始化。
在将压缩的数据组移动到所述第一存储器的第二缓冲区中后,初始化单元将每个关联数据区的存储空间进行初始化。
第三扫描单元将具有至少一个关联数据组的数据段选择作为关联数据段,并且将关联数据段内具有至少一个关联数据组的数据区确定为关联数据区。
移动单元,将对每个关联数据段内至少一个关联数据区中每个关联数据区中的数据组进行压缩所产生的压缩的数据组移动到所述第一存储器的第二缓冲区中。
在将压缩的数据组移动到所述第一存储器的第二缓冲区中后,初始化单元将每个关联数据段内至少一个关联数据区中每个关联数据区的存储空间进行初始化。
确定第一存储器内所有数据组中每个数据组在每个第三预定时间间隔内的被访问次数,移动单元将当前的第三预定时间间隔内被访问次数高于第三数量阈值的数据组移动到缓存中;或者
确定第一存储器内所有经过压缩的数据组中每个经过压缩的数据组在每个第三预定时间间隔内的被访问次数,移动单元将当前的第三预定时间间隔内被访问次数高于第三数量阈值的经过压缩的数据组进行解压缩并移动到缓存中。
具体实施方式
图1为根据本发明实施方式的基于缓存内移出的数据组进行动态处理的方法100的流程图。如图1所示,方法100从步骤101处开始。
在步骤101,对移动终端内处理器的缓存中多个数据组中每个数据组的被访问次数进行实时统计,将预定时间段内的被访问次数低于第一次数阈值的数据组确定为准备从所述缓存移动到第一存储器的待移出的数据组。其中预定时间段(例如,8个小时、16个小时、1天等)为以当前时间为结束点并且以过去的时间为开始点的一段时间。本申请会实时统计处理器对(缓存中或第一存储器中)每个数据组的访问记录(例如包括数据组的标识符和访问时间)并且根据访问记录来确定每个数据组的被访问次数的实时统计信息。预定时间段可以被看作是沿时间前进的移动时间窗,并且可以根据用户设置或系统配置来确定移动时间窗的时间长度(即,预定时间段),即,可以根据系统配置或用户设置来确定所述预定时间段的时间长度。
移动终端可以是任意类型的移动设备,包括移动手机、站、单元、设备、多媒体平板、通信器、膝上型计算机、个人数字助理(PDA)或其任意组合。通常,移动终端可以通过网络连接与其它设备进行通信连接,其它设备例如是移动设备、服务器、基站等。其中缓存为处理器内部或外部的高速缓冲存储器。高速缓冲存储器是位于主存(内存,本申请中的第一存储器)与处理器之间的一级存储器,其由静态存储芯片(静态随机存取存储器SRAM)组成,容量比较小但速度比主存高得多,接近于处理器的速度。
此外,本申请对移动终端的第一存储器内每个数据段中多个数据组中每个数据组的被访问次数进行实时统计,将预定时间段内的被访问次数高于第二次数阈值的数据组(或经过压缩的数据组)确定为准备从第一存储器移动到缓存的待移入的数据组(或经过压缩的数据组)。
其中第二次数阈值大于第一次数阈值,或者第二次数阈值小于第一次数阈值。例如,第一次数阈值为300次、500次、1000次等,第二次数阈值为300次、500次、1000次等。此外,所述被访问次数是每个数据组被处理器访问的次数。
可替换地,当所述缓存的剩余存储空间比率高于移入阈值(例如,20%、30%、40%)时,将至少一个待移入的数据组构成按照存储尺寸递增的队列,从存储尺寸最小的待移入的数据组开始,按照队列顺序将所述至少一个待移入的数据组移动到所述缓存内,直到将下一个待移入的数据组移动到所述缓存后,所述缓存的剩余存储空间比率低于移出阈值(例如,10%、15%)为止。其中移入阈值大于移出阈值。例如,缓存的剩余存储空间比率为25%并且移入阈值为20%时,将待移入的数据组1-10构成按照存储尺寸递增的队列。从将待移入的数据组1移动到缓存内开始,对下一个待移入的数据组进行判断。当下一个待移入的数据组被移动到缓存内后,缓存的剩余存储空间比率为12%并且移出阈值为15%时,将下一个待移入的数据组被移动到缓存后停止进行待移入的数据组的移动。
(可分案)此外,还包括当所述缓存的剩余存储空间比率高于移入阈值时,将至少一个待移入的数据组构成按照存储尺寸递减的队列,从存储尺寸最大的待移入的数据组开始,按照队列顺序将所述至少一个待移入的数据组移动到所述缓存内,直到将下一个待移入的数据组移动到所述缓存后,所述缓存的剩余存储空间比率低于移出阈值为止。
还包括当所述缓存的剩余存储空间比率高于移入阈值时,将至少一个待移入的数据组构成按照存储时间递减的队列,从存储时间最长的待移入的数据组开始,按照队列顺序将所述至少一个待移入的数据组移动到所述缓存内,直到将下一个待移入的数据组移动到所述缓存后,所述缓存的剩余存储空间比率低于移出阈值为止。
还包括当所述缓存的剩余存储空间比率高于移入阈值时,将至少一个待移入的数据组构成按照存储时间递增的队列,从存储时间最短的待移入的数据组开始,按照队列顺序将所述至少一个待移入的数据组移动到所述缓存内,直到将下一个待移入的数据组移动到所述缓存后,所述缓存的剩余存储空间比率低于移出阈值为止。
在检测到所述移动终端的操作系统被加载到所述第一存储器中并且所述操作系统启动完成时,根据预先设置的加载配置文件确定所述移动终端的待加载的多个应用,将与所述待加载的多个应用中每个应用相关联的文件包从第二存储器复制到所述第一存储器中。其中,第一存储器为易失性存储器,例如随机存取存储器RAM,内存,并且所述第二存储器为非易失性存储器,例如闪速存储器。当移动终端关机时,操作系统被存储在第二存储器中,并且当移动终端启动运行时,将操作系统从第二存储器加载到第一存储器中。加载配置文件可以是移动终端出厂时预先设置的,或者可以是由移动终端的用户所预先设置的。其中,加载配置文件中可以记载移动终端内多个应用中能够在操作系统启动时自动启动的一个或多个应用。通常,每个应用均具有相关联的文件包或至少一个文件包,并且每个文件包中可以包括多个文件子包,即通过层级方式来构建每个应用的文件结构。
在移动终端的操作系统启动完成之后(这里是指操作系统的系统服务、系统应用、资源管理、网络初始化等启动完成,而用户应用并未加载的时候)并且在根据预先设置的加载配置文件确定所述移动终端的待加载的多个应用之前,在所述第一存储器的存储区中创建用于存储数据的多个数据段,其中每个数据段包括多个数据区,如图2所示。图2为根据本发明实施方式的存储设备200的逻辑结构的示意图。存储设备200(例如,第一存储器)包括:引导区201、第一缓冲区202、第二缓冲区203、存储区204和保留存储区205。其中引导区201用于存储与操作系统的启动相关联的系统文件以及用于指示存储设备200内的存储目录信息的目录文件。第一缓冲区202和第二缓冲区203包括多个压缩数据段并且均用于存储经过压缩的数据组。通常,第一缓冲区202和第二缓冲区203中存储的经过压缩的数据组可以来自存储器204或第二存储器。
应当了解的是,在第二存储器中,与每个应用相关联的数据文件通常是按照压缩文件的方式进行存储。通常,单个数据文件可以包括至少一个数据组。因此,在第二存储器中,数据组或数据文件均是以压缩的数据文件或压缩的数据组形式进行存储的。在第二存储器中,通常以压缩的数据文件为单位进行存储,并且当压缩的数据文件被加载到第一存储器中时,会将压缩的数据文件进行拆分(通常,数据文件包括至少一个数据组)以生成多个经过压缩的数据组。应当了解的是,在第二存储器中,多媒体文件,例如图片、视频、音频、文档等,可以按照压缩的形式或非压缩的形式进行存储。保留存储区205包括多个数据段和经过压缩的数据段,并且用于存储备份文件、或用于存储系统预留资源、或用于存储应急文件、或用于移动终端进行应急存储时的存储区域。
存储区204用于存储未经压缩的数据组或未被压缩的数据组,并且数据组是能够被处理器、控制器、通信接口等器件直接读取、获取、访问、处理或计算的数据集合。存储区204包括用于存储数据的多个数据段,例如,数据段204-1、数据段204-2、数据段204-3、数据段204-5、......等。图2中将数据段204-1、数据段204-2、数据段204-3以及数据段204-5的存储空间(或容量)设置为不同,但是应当了解的是,每个数据段的存储空间(或容量)可以相同或不同,或部分相同。在满足特定条件时,存储区204中的未经压缩的数据组或未被压缩的数据组可以被移动或复制到缓存中。
多个数据段中的每个数据段包括多个数据区,如图3所示。图3为根据本发明实施方式的数据段300的逻辑结构的示意图。在图3中,数据段300包括:数据区301-1、数据区301-2、数据区301-3、数据区301-4、数据区301-5、数据区301-6、数据区301-7、......。每个数据区的存储空间(或容量)可以相同或不同,或部分的数据区的存储空间相同。
其中与每个应用相关联的文件包包括至少一个数据组,并且在所述第一存储器或缓存中,使用数据组作为对数据进行存储时的基本存储单元。或者,在第一存储器中,使用经过压缩的数据组作为对数据进行存储时的基本存储单元。也就是说,在第一存储器中,每个应用均以多个经过压缩的数据组或未经压缩的数据组的形式进行存储。
其中任意的数据组被存储在数据段的单个数据区中,并且单个数据区中能够存储至少一个数据组。第二存储器中包括用于存储压缩数据的多个压缩数据段,其中每个压缩数据段包括多个压缩数据区,并且每个压缩数据区包括多个子区域。其中与每个应用相关联的文件包包括经过压缩的至少一个数据组,并且在所述第二存储器中,使用经过压缩的数据组作为对数据进行压缩存储时的基本存储单元。其中任意的经过压缩的数据组被存储在数据段的单个数据区中,并且单个数据区中能够存储至少一个数据组。
在步骤102,基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且在第一存储器中存储的多个关联数据组,根据每个关联数据组与所述待移出的数据组的关联度为每个关联数据组设置关联级别,其中关联级别包括:高关联级别、中关联级别和低关联级别。
图5为根据本发明实施方式的用于确定关联数据组的方法500的流程图。如图5所示,方法500从步骤501开始。在步骤501,确定多个数据组(即,经过压缩的数据组)中除当前数据组之外的每个数据组与当前数据组的内容关联度。通过将多个数据组中的每个数据组作为当前数据组,本申请能够确定多个数据组中任意两个数据组之间的内容关联度。
在步骤502,基于内容关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表。通过将多个数据组中的每个数据组作为当前数据组,本申请可以获得每个数据组各自的排序列表,其中排序列表中多个数据组中除自身之外的每个数据组根据内容关联度进行降序排列。例如,在当前数据组的排序列表中,与当前数据组的内容关联度最大的数据组排在第一位,并且与当前数据组的内容关联度最小的数据组排在最后一位。当存在与当前数据组的内容关联度相同的至少两个数据组时,根据至少两个数据组的标识符确定先后顺序,或根据随机方式确定至少两个数据组的先后顺序。
在步骤503,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组。所述预先设置的选择规则包括:排序列表中内容关联度大于关联度阈值的多个数据组,或者排序列表中内容关联度排名在预定名次之前的多个数据组等。通常,可以根据用户输入或系统设置来确定关联度阈值,例如关联度阈值为70%、80%、85%等。或者,根据用户输入或系统设置来确定预定名次,例如,预定名次为前20名、前30名、前35名等。
其中将任意的两个数据组的摘要信息进行内容匹配的匹配值作为所述任意的两个数据组之间的内容关联度。本申请根据每个数据组的内容、作用、来源等信息为每个数据组确定摘要信息,并且摘要信息用于描述数据组的各种相关特征。本申请通过文本比对、语义比对等内容匹配方式确定任意两个数据组的摘要信息的匹配值。
图6为根据本发明另一实施方式的用于确定关联数据组的方法600的流程图。如图6所示,方法600从步骤601开始。在步骤601,确定多个数据组中除当前数据组之外的每个数据组与当前数据组的运行关联度。通过将多个数据组中的每个数据组作为当前数据组,本申请能够确定多个数据组中任意两个数据组之间的运行关联度。
在步骤602,基于运行关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表。通过将多个数据组中的每个数据组作为当前数据组,本申请可以获得每个数据组各自的排序列表,其中排序列表中多个数据组中除自身之外的每个数据组根据运行关联度进行降序排列。例如,在当前数据组的排序列表中,与当前数据组的运行关联度最大的数据组排在第一位,并且与当前数据组的运行关联度最小的数据组排在最后一位。当存在与当前数据组的运行关联度相同的至少两个数据组时,根据至少两个数据组的标识符确定先后顺序,或根据随机方式确定至少两个数据组的先后顺序。
在步骤603,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组。预先设置的选择规则包括:排序列表中运行关联度大于关联度阈值的多个数据组,或者排序列表中运行关联度排名在预定名次之前的多个数据组。通常,可以根据用户输入或系统设置来确定关联度阈值,例如关联度阈值为5次、8次、10次等。或者,根据用户输入或系统设置来确定预定名次,例如,预定名次为前20名、前30名、前35名等。
本申请获取每个数据组的运行历史信息,其中运行历史信息包括每个数据组的运行时间、被读取时间、被写入时间、被解压时间等。然后,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,即在每个基本时间单元内运行了哪些数据组。通常,可以根据用户输入或系统设置来确定基本时间单元,例如,5分钟、10分钟、15分钟等。本申请将时间划分为连续的基本时间单元,并且将基本时间单元作为基础的统计单元。然后,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度。例如,第一数据组在第1、3、5、6、7、8和9基本时间单元内运行,并且第二数据组在第2、3、4、6、7、8和9基本时间单元内运行,则第一数据组和第二数据组在相同的基本时间单元内运行的次数为5。任意数据组在同一基本时间单元内运行多次时,在运行关联度计算时只记为1次。应当了解的是,在确定运行关联度时,通常会预先确定统计时间的长度,即根据预定数量的基本时间单元进行运行关联度的计算,例如,30个基本时间单元、50个基本时间单元、60个基本时间单元等。
图7为根据本发明再一实施方式的用于确定关联数据组的方法700的流程图。如图7所示,方法700从步骤701开始。在步骤701,确定多个数据组中除当前数据组之外的每个数据组与当前数据组的反馈关联度。通过将多个数据组中的每个数据组作为当前数据组,本申请能够确定多个数据组中任意两个数据组之间的反馈关联度。
在步骤702,基于反馈关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表。通过将多个数据组中的每个数据组作为当前数据组,本申请可以获得每个数据组各自的排序列表,其中排序列表中多个数据组中除自身之外的每个数据组根据反馈关联度进行降序排列。例如,在当前数据组的排序列表中,与当前数据组的反馈关联度最大的数据组排在第一位,并且与当前数据组的反馈关联度最小的数据组排在最后一位。当存在与当前数据组的反馈关联度相同的至少两个数据组时,根据至少两个数据组的标识符确定先后顺序,或根据随机方式确定至少两个数据组的先后顺序。
在步骤703,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组。预先设置的选择规则包括:排序列表中反馈关联度大于关联度阈值的多个数据组,或者排序列表中反馈关联度排名在预定名次之前的多个数据组。通常,可以根据用户输入或系统设置来确定关联度阈值,例如关联度阈值为15、25、35等。或者,根据用户输入或系统设置来确定预定名次,例如,预定名次为前20名、前30名、前35名等。
其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对预先设置的关联度规则或对动态运行数据进行解析以确定多个数据组对中需要进行反馈关联度设置的数据组对,根据关联度规则或动态运行数据为每个需要进行反馈关联度设置的数据组对中的两个数据组设置反馈关联度。预先设置的关联度规则例如是由用户、操作系统、系统应用、用户应用等预先设置的关联度规则。关联度规则可以用于指示多个数据组中任意两个数据组之间的关联程度。例如,关联度规则指示第一数据组和第五数据组的关联度较高,例如反馈关联度为20,指示第一数据组和第二数据组的关联度中等,例如反馈关联度为15,以及指示第一数据组和第三数据组的关联度较低,例如反馈关联度为10。动态运行数据例如是由操作系统、系统应用、用户应用等根据数据组的运行数据所确定的多个数据组中任意两个数据组之间的关联程度。例如,动态运行数据指示第二数据组和第五数据组的关联度较高,例如反馈关联度为25,指示第二数据组和第三数据组的关联度中等,例如反馈关联度为15,以及指示第二数据组和第六数据组的关联度较低,例如反馈关联度为5。其中,数据组对的格式为<数据组名称、数据组名称>,并且用于指示两个不同的数据组之间的反馈关联度。例如,关联度规则指示第一数据组和第五数据组的关联度较高,例如反馈关联度为15,则数据组对<第一数据组、第五数据组>的反馈关联度为15。
此外,反馈关联度可以是多个数值的累加和。例如,系统应用根据动态运行数据确定第一数据组和第二数据组的反馈关联度为5、第一用户应用根据动态运行数据确定第一数据组和第二数据组的反馈关联度为10以及第二用户应用根据动态运行数据确定第一数据组和第二数据组的反馈关联度为15时,则第一数据组和第二数据组的反馈关联度为30。
图8为根据本发明又一实施方式的用于确定关联数据组的方法800的流程图。如图8所示,方法800从步骤801开始。在步骤801,确定多个数据组中除当前数据组之外的每个数据组与当前数据组的综合关联度。通过将多个数据组中的每个数据组作为当前数据组,本申请能够确定多个数据组中任意两个数据组之间的综合关联度。
在步骤802,基于综合关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表。通过将多个数据组中的每个数据组作为当前数据组,本申请可以获得每个数据组各自的排序列表,其中排序列表中多个数据组中除自身之外的每个数据组根据综合关联度进行降序排列。例如,在当前数据组的排序列表中,与当前数据组的反馈关联度最大的数据组排在第一位,并且与当前数据组的综合关联度最小的数据组排在最后一位。当存在与当前数据组的综合关联度相同的至少两个数据组时,根据至少两个数据组的标识符确定先后顺序,或根据随机方式确定至少两个数据组的先后顺序。
在步骤803,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组。预先设置的选择规则包括:排序列表中综合关联度大于关联度阈值的多个数据组,或者排序列表中综合关联度排名在预定名次之前的多个数据组。通常,可以根据用户输入或系统设置来确定关联度阈值,例如关联度阈值为70%、80%、85%等。或者,根据用户输入或系统设置来确定预定名次,例如,预定名次为前20名、前30名、前35名等。
在下面的内容中,确定内容关联度、运行关联度和反馈关联度的方式请参照如上的图5-7的内容。
第一实施方式
将任意两个数据组的摘要信息进行内容匹配作为所述任意两个数据组之间的(百分比形式的)内容关联度。
其中获取每个数据组的运行历史信息,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度。
其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度和运行关联度进行加权计算以确定综合关联度。具体地,确定多个数据组中除当前数据组之外的每个数据组与当前数据组的运行关联度中的最大值,即最大运行关联度。然后,将多个数据组中除当前数据组之外的每个数据组与当前数据组的运行关联度除以最大运行关联度,以确定每个数据组与当前数据组的百分比形式的运行关联度。根据用户设置或系统设置、或根据运行状态的动态设置为内容关联度和(百分比形式的)运行关联度确定相同或不同的权重值。根据所确定的权重值,对多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度和(百分比形式的)运行关联度进行加权计算以确定综合关联度。
第二实施方式
其中将任意两个数据组的摘要信息进行内容匹配作为所述任意两个数据组之间的(百分比形式的)内容关联度;
其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对预先设置的关联度规则或对动态运行数据进行解析以确定多个数据组对中需要进行反馈关联度设置的数据组对,根据关联度规则或动态运行数据为每个需要进行反馈关联度设置的数据组对中的两个数据组设置反馈关联度。
其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度和反馈关联度进行加权计算以确定综合关联度。具体地,确定多个数据组中除当前数据组之外的每个数据组与当前数据组的反馈关联度中的最大值,即最大反馈关联度。然后,将多个数据组中除当前数据组之外的每个数据组与当前数据组的反馈关联度除以最大反馈关联度,以确定每个数据组与当前数据组的百分比形式的反馈关联度。根据用户设置或系统设置、或根据运行状态的动态设置为内容关联度和(百分比形式的)反馈关联度确定相同或不同的权重值。根据所确定的权重值,对多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度和(百分比形式的)反馈关联度进行加权计算以确定综合关联度。
第三实施方式
其中获取每个数据组的运行历史信息,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度;
其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对预先设置的关联度规则或对动态运行数据进行解析以确定多个数据组对中需要进行反馈关联度设置的数据组对,根据关联度规则或动态运行数据为每个需要进行反馈关联度设置的数据组对中的两个数据组设置反馈关联度。
其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的运行关联度和反馈关联度进行加权计算以确定综合关联度。具体地,确定多个数据组中除当前数据组之外的每个数据组与当前数据组的运行关联度中的最大值,即最大运行关联度。然后,将多个数据组中除当前数据组之外的每个数据组与当前数据组的运行关联度除以最大运行关联度,以确定每个数据组与当前数据组的百分比形式的运行关联度。确定多个数据组中除当前数据组之外的每个数据组与当前数据组的反馈关联度中的最大值,即最大反馈关联度。然后,将多个数据组中除当前数据组之外的每个数据组与当前数据组的反馈关联度除以最大反馈关联度,以确定每个数据组与当前数据组的百分比形式的反馈关联度。根据用户设置或系统设置、或根据运行状态的动态设置为(百分比形式的)运行关联度和(百分比形式的)反馈关联度确定相同或不同的权重值。根据所确定的权重值,对多个数据组中除当前数据组之外的每个数据组与当前数据组的(百分比形式的)运行关联度和(百分比形式的)反馈关联度进行加权计算以确定综合关联度。
第四实施方式
其中将任意两个数据组的摘要信息进行内容匹配作为所述任意两个数据组之间的(百分比形式的)内容关联度;
其中获取每个数据组的运行历史信息,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度;
其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对预先设置的关联度规则或对动态运行数据进行解析以确定多个数据组对中需要进行反馈关联度设置的数据组对,根据关联度规则或动态运行数据为每个需要进行反馈关联度设置的数据组对中的两个数据组设置反馈关联度。
其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度、运行关联度和反馈关联度进行加权计算以确定综合关联度。具体地,确定多个数据组中除当前数据组之外的每个数据组与当前数据组的运行关联度中的最大值,即最大运行关联度。然后,将多个数据组中除当前数据组之外的每个数据组与当前数据组的运行关联度除以最大运行关联度,以确定每个数据组与当前数据组的百分比形式的运行关联度。确定多个数据组中除当前数据组之外的每个数据组与当前数据组的反馈关联度中的最大值,即最大反馈关联度。然后,将多个数据组中除当前数据组之外的每个数据组与当前数据组的反馈关联度除以最大反馈关联度,以确定每个数据组与当前数据组的百分比形式的反馈关联度。根据用户设置或系统设置、或根据运行状态的动态设置为(百分比形式的)内容关联度、(百分比形式的)运行关联度和(百分比形式的)反馈关联度确定相同或不同的权重值。根据所确定的权重值,对多个数据组中除当前数据组之外的每个数据组与当前数据组的(百分比形式的)内容关联度、(百分比形式的)运行关联度和(百分比形式的)反馈关联度进行加权计算以确定综合关联度。例如,(百分比形式的)内容关联度、(百分比形式的)运行关联度和(百分比形式的)反馈关联度的权重值为1/3、1/3和1/3;1/2、1/4和1/4;1/4、1/4和1/2等。
其中根据每个关联数据组与所述待移出的数据组的关联度为每个关联数据组设置关联级别包括:当关联数据组与所述待移出的数据组的关联度大于或等于第一关联度阈值时,将关联数据组的关联级别设置为高关联级别;当关联数据组与所述待移出的数据组的关联度小于第一关联度阈值并且大于或等于第二关联度阈值时,将关联数据组的关联级别设置为中关联级别;以及当关联数据组与所述待移出的数据组的关联度小于第二关联度阈值时,将关联数据组的关联级别设置为低关联级别。其中第一关联度阈值(例如,95%、90%等)大于第二关联度阈值(例如,75%、80%等)。
可替换地,还包括基于所述多个关联数据组中每个关联数据组在进行关联运行时与待移出的数据组的关联运行次数、关联运行时间和同步启动次数,在所述关联统计信息中为每个关联数据组设置关联等级。此前,获取每个数据组的运行历史信息(运行历史信息通常存储在运行历史文件中,并且例如可以通过日志文件等记录信息来获得),根据运行历史信息确定每个关联数据组在进行关联运行时与待移出的数据组的关联运行次数、关联运行时间和同步启动次数。
其中关联运行次数是在统计时间段(例如,10分钟、20分钟、30分钟等)内,两个数据组进行关联运行的次数(例如,5次、6次、8次等);其中关联运行时间是在统计时间段内,两个数据组进行关联运行的时间长度(例如,2分钟、3分钟、5分钟等);其中同步启动次数是在统计时间段内,两个数据组进行同步启动的次数(例如,3次、4次、5次等);其中关联运行是指两个数据组各自被调用或开始运行的时间的差值大于第一预定时间间隔并且小于第二预定时间间隔。其中同步启动是指两个数据组各自被调用或开始运行的时间的差值小于或等于第一预定时间间隔。其中第二预定时间间隔大于第一预定时间间隔,例如第二预定时间间隔为30秒,并且第一预定时间间隔为5秒。
在确定数据组的关联级别后,本申请可以根据关联级别对待移出的数据组(或任意数据组)的关联数据组进行过滤或筛选。例如,基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的多个关联数据组包括:基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且关联级别为高关联级别的多个关联数据组。基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的多个关联数据组包括:基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且关联级别为中关联级别的多个关联数据组。基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的多个关联数据组包括:基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且关联级别为高关联级别和中关联级别的多个关联数据组。
在步骤103,对第一存储器内多个数据段中的每个数据段进行扫描,以确定每个数据段所包括的关联数据组的数量,将剩余空间能够容纳所述待移出的数据组的多个数据段中具有最多数量的关联数据组的数据段确定为当前数据段(从最多的开始选,直到确定符合要求的)。当存在具有最多数量的关联数据组并且剩余空间能够容纳所述待移出的数据组的多个数据段时,从多个数据段中随机选择一个数据段以作为当前数据段;或者当存在具有最多数量的关联数据组并且剩余空间能够容纳所述待移出的数据组的多个数据段时,从多个数据段中选择剩余空间最大的数据段以作为当前数据段;或者当存在具有最多数量的关联数据组并且剩余空间能够容纳所述待移出的数据组的多个数据段时,从多个数据段中选择剩余空间最小的数据段以作为当前数据段。
当具有最多数量的关联数据组的数据段的剩余空间不能容纳所述待移出的数据组,则选择具有第二最多数量的关联数据组的数据段并判断剩余空间能否容纳所述待移出的数据组,直到确定剩余空间能够容纳所述待移出的数据组的多个数据段中具有最多数量的关联数据组的数据段为止。
例如,数据段204-1包括10个关联数据组、数据段204-2包括20个关联数据组、数据段204-3包括20个关联数据组并且数据段204-4包括30个关联数据组。数据段204-1、204-2和204-3的剩余空间能够容纳待移出的数据组,但是数据段204-4剩余空间不能够容纳待移出的数据组(例如,剩余空间为零或剩余空间低于最低存储阈值导致无法存储额外的数据组)。可以确定数据段204-2和204-3可以作为当前数据段的候选者,为此可以将数据段204-2和204-3中的随机一个、剩余空间最大的或剩余空间最小的数据段选择作为当前数据段(例如数据段204-2)。
在步骤104,确定在所述当前数据段内多个数据区中为所述待移出的数据组所分配的当前数据区,将所述待移出的数据组从缓存移动到所述当前数据段的当前数据区中。其中确定在所述当前数据段内多个数据区中为所述待移出的数据组所分配的当前数据区包括:在所述当前数据段的多个数据区中为所述待移出的数据组随机分配数据区以作为当前数据区。或者计算所述待移出的数据组的标识符的哈希值,根据所述哈希值在所述当前数据段的多个数据区中选择一个数据区以作为当前数据区。或者将所述当前数据段的多个数据区中剩余存储空间最大的数据区作为当前数据区。或者将所述当前数据段的多个数据区中剩余存储空间最小的数据区作为当前数据区。
第一存储器中包括数据段索引信息表,并且数据段索引信息表包括第一缓冲区、第二缓冲区、存储区和保留存储区中每个的数据段索引信息。针对于存储区,数据段索引信息包括每个数据段的标识、起始地址、结束地址、存储容量等。针对于第一缓冲区和第二缓冲区,数据段索引信息包括每个压缩数据段的标识、起始地址、结束地址、存储容量等。针对于保留存储区,数据段索引信息包括每个压缩数据段或非压缩数据段的标识、起始地址、结束地址、存储容量等。
优选地,可以将第一缓冲区、第二缓冲区、存储区和保留存储区中每个的数据段索引信息构成单个数据段索引信息表,并且将这个单个数据段索引信息表存储在引导区中。可替换地,可以将第一缓冲区、第二缓冲区、存储区和保留存储区中每个的数据段索引信息构成各自的数据段索引信息表,并且将第一缓冲区、第二缓冲区、存储区和保留存储区的数据段索引信息表存储在各自的存储区域内。数据段索引信息可以包括二元组<数据组的标识符、所属数据段的标识符>。
在步骤105,扫描所述当前数据段内除所述当前数据区之外的所有数据区,将所述当前数据段内除所述当前数据区之外的并且具有至少一个关联数据组的数据区确定为关联数据区,根据所述当前数据段内的每个关联数据区内关联数据组所涉及的最高的关联级别确定每个关联数据区的压缩率和压缩级,其中压缩率包括高压缩率、中压缩率和低压缩率并且高压缩率、中压缩率和低压缩率的压缩程度依次升高;其中压缩级包括:第一压缩级、第二压缩级、第三压缩级和第四压缩级并且第一压缩级、第二压缩级、第三压缩级和第四压缩级的压缩次序依次降低。
其中,每个数据段或压缩数据段的目录区域内存储数据区索引信息表。数据区索引信息表可以包括二元组<数据组的标识符、所属(压缩)数据区的标识符>。确定每个关联数据组的标识符并且根据关联数据组的标识符对所述每个数据区索引信息表进行查询,根据查询结果确定所述每个关联数据组在当前数据段中所位于的数据区。根据每个关联数据组所位于的数据区确定关联数据区并且每个关联数据区中具有至少一个关联数据组。
例如,高压缩率为90%、中压缩率为80%以及低压缩率为70%。可替换地,高压缩率为压缩率89%-99%、中压缩率为压缩率79%-89%(不含89%)以及低压缩率为压缩率小于79%。可替换地,高压缩率为压缩率85%-100%(不含100%)、中压缩率为压缩率70%-85%(不含85%)以及低压缩率为压缩率小于70%。上述数值仅是示意性的,所属领域技术人员应当了解,压缩率的取值或取值范围可以是任何合理数值。
第一压缩级、第二压缩级、第三压缩级和第四压缩级的压缩次序依次降低。应当了解的是,第一压缩级、第二压缩级、第三压缩级和第四压缩级可以用于指示对数据组进行压缩的顺序等级,例如第一批次、第二批次、第三批次和第四批次等。或者,将两个或多个压缩级确定为相同的批次。
在步骤106,将所述当前数据区设置为高压缩率并且标记为第一压缩级。本申请将当前数据区作为被访问概率较大的区域,因此将当前数据区进行最低程度的压缩并且进行优先处理。
本申请根据所述当前数据段内的每个关联数据区内关联数据组所涉及的最高的关联级别(即,将每个关联数据区内至少一个关联数据组中具有最高关联级别的关联数据组的关联级别作为关联数据组所涉及的最高的关联级别)确定每个关联数据区的压缩率和压缩级包括:当所涉及的最高的关联级别为高关联级别、中关联级别或低关联级别时,将关联数据区的压缩率相应地设置为高压缩率、中压缩率或低压缩率;将所涉及的最高的关联级别为高关联级别的关联数据区标记为第二压缩级、将所涉及的最高的关联级别为中关联级别的关联数据区标记为第三压缩级以及将所涉及的最高的关联级别为低关联级别的关联数据区标记为第四压缩级。
例如,当前数据段内具有关联数据区1、2和3,并且关联数据区1具有1个高关联级别的关联数据组和3个中关联级别的数据组、关联数据区2具有5个低关联级别的数据组以及关联数据区3具有2个中关联级别的关联数据组和1个低关联级别的数据组。由此可知,关联数据区1所涉及的最高的关联级别为高关联级别,将关联数据区1的压缩率设置为高压缩率并且标记为第二压缩级;关联数据区2所涉及的最高的关联级别为低关联级别,将关联数据区2的压缩率设置为低压缩率并标记为第四压缩级;关联数据区3所涉及的最高的关联级别为中关联级别,将关联数据区3的压缩率设置为中压缩率并标记为第三压缩级。
在步骤107,在所述当前数据段内(从低地址向高地址方向,或从高地址向低地址方向-扩展一个方案)按照压缩级和压缩率进行压缩,如图4所示。图4为根据本发明实施方式的在当前数据段内按压缩级和压缩率压缩的方法400的流程图。方法400从步骤401处开始。在步骤401,按照高压缩率对标记为第一压缩级的所述当前数据区中的数据组进行压缩;在步骤402,按照高压缩率对标记为第二压缩级的(可以是多个关联数据区)关联数据区中的数据组进行压缩;在步骤403,按照中压缩率对标记为第三压缩级的(可以是多个关联数据区)关联数据区中的数据组进行压缩;在步骤404,按照低压缩率对标记为第四压缩级的(可以是多个关联数据区)关联数据区中的数据组进行压缩。本申请按照压缩级确定当前数据段内进行压缩时的顺序,即第一压缩级的当前数据区中的所有数据组压缩完成后,对第二压缩级的关联数据区中的所有数据组进行压缩,依此类推。
其中对标记为第二压缩级的关联数据区中的数据组进行压缩包括:按照高压缩率从低地址向高地址方向或从高地址向低地址方向对标记为第二压缩级的多个关联数据区中的数据组进行压缩。其中对标记为第三压缩级的关联数据区中的数据组进行压缩包括:按照中压缩率从低地址向高地址方向或从高地址向低地址方向对标记为第三压缩级的多个关联数据区中的数据组进行压缩。其中对标记为第四压缩级的关联数据区中的数据组进行压缩包括:按照低压缩率从低地址向高地址方向或从高地址向低地址方向对标记为第四压缩级的多个关联数据区中的数据组进行压缩。
在步骤108,在所述当前数据段内按照压缩级和压缩率进行压缩的同时,确定多个数据段中除所述当前数据段之外并且具有关联数据组的至少一个关联数据段,其中每个关联数据段内的至少一个关联数据区存储了关联数据组。
其中,每个数据段或压缩数据段的目录区域内存储数据区索引信息表。数据区索引信息表可以包括二元组<数据组的标识符、所属(压缩)数据区的标识符>。确定每个关联数据组的标识符并且根据关联数据组的标识符对除当前数据段之外的每个数据段的每个数据区索引信息表进行查询,根据查询结果确定所述每个关联数据组所在的数据段(关联数据段)以及在数据段中所位于的数据区。将具有关联数据组的数据段确定为关联数据段。以及,根据关联数据段中每个关联数据组所位于的数据区确定关联数据区并且每个关联数据区中具有至少一个关联数据组。
在所述当前数据段内按照压缩级和压缩率进行压缩后,将对当前数据段的当前数据区中的(多个)数据组进行压缩所产生的(多个)压缩的数据组移动到所述第一存储器的第一缓冲区中。将对当前数据段的每个关联数据区中的(多个)数据组进行压缩所产生的(多个)压缩的数据组移动到所述第一存储器的第二缓冲区中。在将(多个)压缩的数据组移动到所述第一存储器的第一缓冲区中后,将所述当前数据区的存储空间进行初始化。在将(多个)压缩的数据组移动到所述第一存储器的第二缓冲区中后,将每个关联数据区的存储空间进行初始化。即,在将当前数据段内的当前数据区和每个关联数据区中的多个数据组(当前数据区和每个关联数据区中的所有数据组)进行压缩后,将当前数据区和每个关联数据区的存储空间进行初始化。初始化例如是存储空间重置、存储内容删除等,使得当前数据区和每个关联数据区能够存储新的数据。
在步骤109,根据每个关联数据段的至少一个关联数据区中每个关联数据区内关联数据组所涉及的最高的关联级别确定关联数据段内每个关联数据区的压缩率和压缩级包括:当关联数据区所涉及的最高的关联级别为高关联级别、中关联级别或低关联级别时,将关联数据区的压缩率相应地设置为高压缩率、中压缩率或低压缩率;将所涉及的最高的关联级别为高关联级别的关联数据区标记为第二压缩级,以及将所涉及的最高的关联级别为中关联级别或低关联级别的关联数据区标记为第三压缩级。
本申请根据(多个关联数据段中的每个)关联数据段内的每个关联数据区内关联数据组所涉及的最高的关联级别(即,将每个关联数据区内至少一个关联数据组中具有最高关联级别的关联数据组的关联级别作为关联数据组所涉及的最高的关联级别)确定每个关联数据区的压缩率和压缩级包括:当所涉及的最高的关联级别为高关联级别、中关联级别或低关联级别时,将关联数据区的压缩率相应地设置为高压缩率、中压缩率或低压缩率;将所涉及的最高的关联级别为高关联级别的关联数据区标记为第二压缩级、将所涉及的最高的关联级别为中关联级别的关联数据区标记为第三压缩级以及将所涉及的最高的关联级别为低关联级别的关联数据区标记为第四压缩级。
本申请根据(多个关联数据段中的)每个关联数据段的至少一个关联数据区中每个关联数据区内关联数据组所涉及的最高的关联级别(即,将每个关联数据区内至少一个关联数据组中具有最高关联级别的关联数据组的关联级别作为关联数据组所涉及的最高的关联级别)确定关联数据段内每个关联数据区的压缩率和压缩级包括:当关联数据区所涉及的最高的关联级别为高关联级别、中关联级别或低关联级别时,将关联数据区的压缩率相应地标记为高压缩率、中压缩率或低压缩率;将所涉及的最高的关联级别为高关联级别的关联数据区标记为第二压缩级,以及将所涉及的最高的关联级别为中关联级别或低关联级别的关联数据区标记为第三压缩级。
例如,关联数据段1内具有关联数据区1和2,并且关联数据段2内具有关联数据区3。关联数据区1具有1个高关联级别的关联数据组和3个中关联级别的数据组、关联数据区2具有5个低关联级别的数据组以及关联数据区3具有2个中关联级别的关联数据组和1个低关联级别的数据组。由此可知,关联数据区1所涉及的最高的关联级别为高关联级别,将关联数据区1的压缩率设置为高压缩率并标记为第二压缩级;关联数据区2所涉及的最高的关联级别为低关联级别,将关联数据区2的压缩率设置为低压缩率并标记为第三压缩级;关联数据区3所涉及的最高的关联级别为中关联级别,将关联数据区3的压缩率设置为中压缩率并标记为第三压缩级。
在步骤110,响应于所述当前压缩数据段内的按照压缩级和压缩率的压缩的完成,在所述至少一个关联压缩数据段(中每个关联压缩数据段并行、或串行)的每个关联压缩数据段内按照压缩级和压缩率进行压缩:首先,按照高压缩率对每个关联压缩数据段内的标记为第二压缩级的关联数据区进行压缩;然后,按照中压缩率对每个关联压缩数据段内的标记为第三压缩级和中压缩率的关联数据区进行压缩,并且同时按照低压缩率对每个关联压缩数据段内的标记为第三压缩级和低压缩率的关联数据区进行压缩。
其中将具有至少一个关联数据组的数据段选择作为关联数据段,并且将关联数据段内具有至少一个关联数据组的数据区确定为关联数据区。
其中按照高压缩率对每个关联压缩数据段内的标记为第二压缩级的关联数据区进行压缩包括:基于多个关联压缩数据段的串行或并行方式,按照高压缩率对每个关联压缩数据段内的标记为第二压缩级的关联数据区进行压缩。其中按照中压缩率对每个关联压缩数据段内的标记为第三压缩级和中压缩率的关联数据区进行压缩包括:基于多个关联压缩数据段的串行或并行方式,按照中压缩率对每个关联压缩数据段内的标记为第三压缩级和中压缩率的关联数据区进行压缩。其中按照低压缩率对每个关联压缩数据段内的标记为第三压缩级和低压缩率的关联数据区进行压缩包括:基于多个关联压缩数据段的串行或并行方式,按照低压缩率对每个关联压缩数据段内的标记为第三压缩级和低压缩率的关联数据区进行压缩。
将对每个关联数据段内至少一个关联数据区中每个关联数据区中的多个数据组(每个关联数据区中的所有数据组)进行压缩所产生的多个压缩的数据组移动到所述第一存储器的第二缓冲区中。在将压缩的数据组移动到所述第一存储器的第二缓冲区中后,将每个关联数据段内至少一个关联数据区中每个关联数据区的存储空间进行初始化。即,在将每个关联数据段内每个关联数据区中的多个数据组(每个关联数据区中的所有数据组)进行压缩后,将每个关联数据区的存储空间进行初始化。初始化例如是存储空间重置、存储内容删除等,使得当前数据区和每个关联数据区能够存储新的数据。
确定第一存储器内所有数据组(存储区中存储的)中每个数据组在每个第三预定时间间隔内的被访问次数,将当前的第三预定时间间隔内被访问次数高于第三次数阈值的数据组移动到缓存中。或者确定第一存储器内所有经过压缩的数据组(第一缓冲区或第二缓冲区中存储的)中每个经过压缩的数据组在每个第三预定内的被访问次数,将当前的第三预定时间间隔内被访问次数高于第三次数阈值的经过压缩的数据组进行解压缩并移动到缓存中。
图9为根据本发明实施方式的基于缓存内移出的数据组进行动态处理的系统900的结构示意图。如图9所示,系统900包括:
统计单元901,对移动终端内处理器的缓存中多个数据组中每个数据组的被访问次数进行实时统计,将预定时间段内的被访问次数低于第一次数阈值的数据组确定为准备从所述缓存移动到第一存储器的待移出的数据组。
其中预定时间段(例如,8个小时、16个小时、1天等)为以当前时间为结束点并且以过去的时间为开始点的一段时间。本申请会实时统计处理器对(缓存中或第一存储器中)每个数据组的访问记录(例如包括数据组的标识符和访问时间)并且根据访问记录来确定每个数据组的被访问次数的实时统计信息。预定时间段可以被看作是沿时间前进的移动时间窗,并且可以根据用户设置或系统配置来确定移动时间窗的时间长度(即,预定时间段),即,可以根据系统配置或用户设置来确定所述预定时间段的时间长度。
移动终端可以是任意类型的移动设备,包括移动手机、站、单元、设备、多媒体平板、通信器、膝上型计算机、个人数字助理(PDA)或其任意组合。通常,移动终端可以通过网络连接与其它设备进行通信连接,其它设备例如是移动设备、服务器、基站等。其中缓存为处理器内部或外部的高速缓冲存储器。高速缓冲存储器是位于主存(内存,本申请中的第一存储器)与处理器之间的一级存储器,其由静态存储芯片(静态随机存取存储器SRAM)组成,容量比较小但速度比主存高得多,接近于处理器的速度。
此外,本申请对移动终端的第一存储器内每个数据段中多个数据组中每个数据组的被访问次数进行实时统计,将预定时间段内的被访问次数高于第二次数阈值的数据组(或经过压缩的数据组)确定为准备从第一存储器移动到缓存的待移入的数据组(或经过压缩的数据组)。
其中第二次数阈值大于第一次数阈值,或者第二次数阈值小于第一次数阈值。例如,第一次数阈值为300次、500次、1000次等,第二次数阈值为300次、500次、1000次等。此外,所述被访问次数是每个数据组被处理器访问的次数。
可替换地,当所述缓存的剩余存储空间比率高于移入阈值(例如,20%、30%、40%)时,将至少一个待移入的数据组构成按照存储尺寸递增的队列,从存储尺寸最小的待移入的数据组开始,按照队列顺序将所述至少一个待移入的数据组移动到所述缓存内,直到将下一个待移入的数据组移动到所述缓存后,所述缓存的剩余存储空间比率低于移出阈值(例如,10%、15%)为止。其中移入阈值大于移出阈值。例如,缓存的剩余存储空间比率为25%并且移入阈值为20%时,将待移入的数据组1-10构成按照存储尺寸递增的队列。从将待移入的数据组1移动到缓存内开始,对下一个待移入的数据组进行判断。当下一个待移入的数据组被移动到缓存内后,缓存的剩余存储空间比率为12%并且移出阈值为15%时,将下一个待移入的数据组被移动到缓存后停止进行待移入的数据组的移动。
此外,还包括当所述缓存的剩余存储空间比率高于移入阈值时,将至少一个待移入的数据组构成按照存储尺寸递减的队列,从存储尺寸最大的待移入的数据组开始,按照队列顺序将所述至少一个待移入的数据组移动到所述缓存内,直到将下一个待移入的数据组移动到所述缓存后,所述缓存的剩余存储空间比率低于移出阈值为止。
还包括当所述缓存的剩余存储空间比率高于移入阈值时,将至少一个待移入的数据组构成按照存储时间递减的队列,从存储时间最长的待移入的数据组开始,按照队列顺序将所述至少一个待移入的数据组移动到所述缓存内,直到将下一个待移入的数据组移动到所述缓存后,所述缓存的剩余存储空间比率低于移出阈值为止。
还包括当所述缓存的剩余存储空间比率高于移入阈值时,将至少一个待移入的数据组构成按照存储时间递增的队列,从存储时间最短的待移入的数据组开始,按照队列顺序将所述至少一个待移入的数据组移动到所述缓存内,直到将下一个待移入的数据组移动到所述缓存后,所述缓存的剩余存储空间比率低于移出阈值为止。
在检测到所述移动终端的操作系统被加载到所述第一存储器中并且所述操作系统启动完成时,根据预先设置的加载配置文件确定所述移动终端的待加载的多个应用,将与所述待加载的多个应用中每个应用相关联的文件包从第二存储器复制到所述第一存储器中。其中,第一存储器为易失性存储器,例如随机存取存储器RAM,内存,并且所述第二存储器为非易失性存储器,例如闪速存储器。当移动终端关机时,操作系统被存储在第二存储器中,并且当移动终端启动运行时,将操作系统从第二存储器加载到第一存储器中。加载配置文件可以是移动终端出厂时预先设置的,或者可以是由移动终端的用户所预先设置的。其中,加载配置文件中可以记载移动终端内多个应用中能够在操作系统启动时自动启动的一个或多个应用。通常,每个应用均具有相关联的文件包或至少一个文件包,并且每个文件包中可以包括多个文件子包,即通过层级方式来构建每个应用的文件结构。
在移动终端的操作系统启动完成之后(这里是指操作系统的系统服务、系统应用、资源管理、网络初始化等启动完成,而用户应用并未加载的时候)并且在根据预先设置的加载配置文件确定所述移动终端的待加载的多个应用之前,在所述第一存储器的存储区中创建用于存储数据的多个数据段,其中每个数据段包括多个数据区,如图2所示。多个数据段中的每个数据段包括多个数据区,如图3所示。
其中与每个应用相关联的文件包包括至少一个数据组,并且在所述第一存储器或缓存中,使用数据组作为对数据进行存储时的基本存储单元。或者,在第一存储器中,使用经过压缩的数据组作为对数据进行存储时的基本存储单元。也就是说,在第一存储器中,每个应用均以多个经过压缩的数据组或未经压缩的数据组的形式进行存储。
其中任意的数据组被存储在数据段的单个数据区中,并且单个数据区中能够存储至少一个数据组。第二存储器中包括用于存储压缩数据的多个压缩数据段,其中每个压缩数据段包括多个压缩数据区,并且每个压缩数据区包括多个子区域。其中与每个应用相关联的文件包包括经过压缩的至少一个数据组,并且在所述第二存储器中,使用经过压缩的数据组作为对数据进行压缩存储时的基本存储单元。其中任意的经过压缩的数据组被存储在数据段的单个数据区中,并且单个数据区中能够存储至少一个数据组。
关联单元902,基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且在第一存储器中存储的多个关联数据组,根据每个关联数据组与所述待移出的数据组的关联度为每个关联数据组设置关联级别,其中关联级别包括:高关联级别、中关联级别和低关联级别。在根据预先设置的加载配置文件确定待加载的多个应用之后,将关联统计文件从第二存储器复制到第一存储器中,所述关联统计文件包括多条关联统计信息,其中每条关联统计信息用于指示每个数据组的多个关联数据组。
关联单元902确定多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度,基于内容关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;其中将任意的两个数据组的摘要信息进行内容匹配的匹配值来确定所述任意的两个数据组之间的内容关联度。预先设置的选择规则包括:排序列表中内容关联度大于关联度阈值的多个数据组,或者排序列表中内容关联度排名在预定名次之前的多个数据组。
关联单元902确定多个数据组中除当前数据组之外的每个数据组与当前数据组的运行关联度,基于运行关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;其中获取每个数据组的运行历史信息,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度。预先设置的选择规则包括:排序列表中运行关联度大于关联度阈值的多个数据组,或者排序列表中运行关联度排名在预定名次之前的多个数据组。
关联单元902确定多个数据组中除当前数据组之外的每个数据组与当前数据组的反馈关联度,基于反馈关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对用户预先设置的关联度规则进行解析以确定多个数据组中需要进行反馈关联度设置的由两个数据组构成的数据组对,根据关联度规则为至少一个数据组对中的两个数据组设置反馈关联度。预先设置的选择规则包括:排序列表中反馈关联度大于关联度阈值的多个数据组,或者排序列表中反馈关联度排名在预定名次之前的多个数据组。
关联单元902确定多个数据组中除当前数据组之外的每个数据组与当前数据组的综合关联度,基于综合关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;其中将任意两个数据组的摘要信息进行内容匹配来确定所述任意两个数据组之间的内容关联度;其中获取每个数据组的运行历史信息,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度;其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度和运行关联度进行加权计算以确定综合关联度。预先设置的选择规则包括:排序列表中综合关联度大于关联度阈值的多个数据组,或者排序列表中综合关联度排名在预定名次之前的多个数据组。
关联单元902确定多个数据组中除当前数据组之外的每个数据组与当前数据组的综合关联度,基于综合关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;其中将任意两个数据组的摘要信息进行内容匹配来确定所述任意两个数据组之间的内容关联度;其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对用户预先设置的关联度规则进行解析以确定多个数据组中需要进行反馈关联度设置的由两个数据组构成的数据组对,根据关联度规则为至少一个数据组对中的两个数据组设置反馈关联度。其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度和反馈关联度进行加权计算以确定综合关联度。所述预先设置的选择规则包括:排序列表中综合关联度大于关联度阈值的多个数据组,或者排序列表中综合关联度排名在预定名次之前的多个数据组。
关联单元902确定多个数据组中除当前数据组之外的每个数据组与当前数据组的综合关联度,基于综合关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;其中获取每个数据组的运行历史信息,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度;其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对用户预先设置的关联度规则进行解析以确定多个数据组中需要进行反馈关联度设置的由两个数据组构成的数据组对,根据关联度规则为至少一个数据组对中的两个数据组设置反馈关联度。其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的运行关联度和反馈关联度进行加权计算以确定综合关联度。预先设置的选择规则包括:排序列表中综合关联度大于关联度阈值的多个数据组,或者排序列表中综合关联度排名在预定名次之前的多个数据组。
关联单元902确定多个数据组中除当前数据组之外的每个数据组与当前数据组的综合关联度,基于综合关联度对除当前数据组之外的每个数据组进行降序排列以生成排序列表,根据预先设置的选择规则从所述排序列表中选择多个数据组以作为所述当前数据组的多个关联数据组;其中将任意两个数据组的摘要信息进行内容匹配来确定所述任意两个数据组之间的内容关联度;其中获取每个数据组的运行历史信息,根据运行历史信息确定每个基本时间单元内运行的数据组的统计数据,确定任意的两个数据组在相同的基本时间单元内运行的次数,基于在相同的基本时间单元内运行的次数来确定任意的两个数据组之间的运行关联度;其中将任意的两个数据组之间的反馈关联度的初始值设置为0,并且对用户预先设置的关联度规则进行解析以确定多个数据组中需要进行反馈关联度设置的由两个数据组构成的数据组对,根据关联度规则为至少一个数据组对中的两个数据组设置反馈关联度。其中对多个数据组中除当前数据组之外的每个数据组与当前数据组的内容关联度、运行关联度和反馈关联度进行加权计算以确定综合关联度。预先设置的选择规则包括:排序列表中综合关联度大于关联度阈值的多个数据组,或者排序列表中综合关联度排名在预定名次之前的多个数据组。
关联单元902根据每个关联数据组与所述待移出的数据组的关联度为每个关联数据组设置关联级别包括:当关联数据组与所述待移出的数据组的关联度大于或等于第一关联度阈值时,将关联数据组的关联级别设置为高关联级别;当关联数据组与所述待移出的数据组的关联度小于第一关联度阈值并且大于或等于第二关联度阈值时,将关联数据组的关联级别设置为中关联级别;以及当关联数据组与所述待移出的数据组的关联度小于第二关联度阈值时,将关联数据组的关联级别设置为低关联级别。其中第一关联度阈值大于第二关联度阈值。
关联单元902基于所述多个关联数据组中每个关联数据组在进行关联运行时与待移出的数据组的关联运行次数、关联运行时间和同步启动次数,为在所述关联统计信息中为每个关联数据组设置关联级别。关联单元902获取每个数据组的运行历史信息,根据运行历史信息确定每个关联数据组在进行关联运行时与待移出的数据组的关联运行次数、关联运行时间和同步启动次数。
其中关联运行次数是在统计时间段内,两个数据组进行关联运行的次数;其中关联运行时间是在统计时间段内,两个数据组进行关联运行的时间长度;其中同步启动次数是在统计时间段内,两个数据组进行同步启动的次数;其中关联运行是指两个数据组各自被调用或开始运行的时间的差值大于第一预定时间间隔并且小于第二预定时间间隔;其中同步启动是指两个数据组各自被调用或开始运行的时间的差值小于或等于第一预定时间间隔。
关联单元902基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的多个关联数据组包括:关联单元902基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且关联级别为高关联级别的多个关联数据组。关联单元902基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的多个关联数据组包括:关联单元902基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且关联级别为中关联级别的多个关联数据组。关联单元902基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的多个关联数据组包括:关联单元902基于所述待移出的数据组的关联统计信息,确定所述待移出的数据组在运行时需要关联运行的并且关联级别为高关联级别和中关联级别的多个关联数据组。
第一扫描单元903,对第一存储器内多个数据段中的每个数据段进行扫描,以确定每个数据段所包括的关联数据组的数量,将剩余空间能够容纳所述待移出的数据组的多个数据段中具有最多数量的关联数据组的数据段确定为当前数据段(从最多的开始选,直到确定符合要求的)。当存在具有最多数量的关联数据组并且剩余空间能够容纳所述待移出的数据组的多个数据段时,从多个数据段中随机选择一个数据段以作为当前数据段;或者当存在具有最多数量的关联数据组并且剩余空间能够容纳所述待移出的数据组的多个数据段时,从多个数据段中选择剩余空间最大的数据段以作为当前数据段;或者当存在具有最多数量的关联数据组并且剩余空间能够容纳所述待移出的数据组的多个数据段时,从多个数据段中选择剩余空间最小的数据段以作为当前数据段。
当具有最多数量的关联数据组的数据段的剩余空间不能容纳所述待移出的数据组,则选择具有第二最多数量的关联数据组的数据段并判断剩余空间能否容纳所述待移出的数据组,直到确定剩余空间能够容纳所述待移出的数据组的多个数据段中具有最多数量的关联数据组的数据段为止。
例如,数据段204-1包括10个关联数据组、数据段204-2包括20个关联数据组、数据段204-3包括20个关联数据组并且数据段204-4包括30个关联数据组。数据段204-1、204-2和204-3的剩余空间能够容纳待移出的数据组,但是数据段204-4剩余空间不能够容纳待移出的数据组(例如,剩余空间为零或剩余空间低于最低存储阈值导致无法存储额外的数据组)。可以确定数据段204-2和204-3可以作为当前数据段的候选者,为此可以将数据段204-2和204-3中的随机一个、剩余空间最大的或剩余空间最小的数据段选择作为当前数据段(例如数据段204-2)。
移动单元904,确定在所述当前数据段内多个数据区中为所述待移出的数据组所分配的当前数据区,将所述待移出的数据组从缓存移动到所述当前数据段的当前数据区中。其中确定在所述当前数据段内多个数据区中为所述待移出的数据组所分配的当前数据区包括:在所述当前数据段的多个数据区中为所述待移出的数据组随机分配数据区以作为当前数据区。或者计算所述待移出的数据组的标识符的哈希值,根据所述哈希值在所述当前数据段的多个数据区中选择一个数据区以作为当前数据区。或者将所述当前数据段的多个数据区中剩余存储空间最大的数据区作为当前数据区。或者将所述当前数据段的多个数据区中剩余存储空间最小的数据区作为当前数据区。
第一存储器中包括数据段索引信息表,并且数据段索引信息表包括第一缓冲区、第二缓冲区、存储区和保留存储区中每个的数据段索引信息。针对于存储区,数据段索引信息包括每个数据段的标识、起始地址、结束地址、存储容量等。针对于第一缓冲区和第二缓冲区,数据段索引信息包括每个压缩数据段的标识、起始地址、结束地址、存储容量等。针对于保留存储区,数据段索引信息包括每个压缩数据段或非压缩数据段的标识、起始地址、结束地址、存储容量等。
优选地,可以将第一缓冲区、第二缓冲区、存储区和保留存储区中每个的数据段索引信息构成单个数据段索引信息表,并且将这个单个数据段索引信息表存储在引导区中。可替换地,可以将第一缓冲区、第二缓冲区、存储区和保留存储区中每个的数据段索引信息构成各自的数据段索引信息表,并且将第一缓冲区、第二缓冲区、存储区和保留存储区的数据段索引信息表存储在各自的存储区域内。数据段索引信息可以包括二元组<数据组的标识符、所属数据段的标识符>。
第二扫描单元905,扫描所述当前数据段内除所述当前数据区之外的所有数据区,将所述当前数据段内除所述当前数据区之外的并且具有至少一个关联数据组的数据区确定为关联数据区,根据所述当前数据段内的每个关联数据区内关联数据组所涉及的最高的关联级别确定每个关联数据区的压缩率和压缩级,其中压缩率包括高压缩率、中压缩率和低压缩率并且高压缩率、中压缩率和低压缩率的压缩程度依次升高;其中压缩级包括:第一压缩级、第二压缩级、第三压缩级和第四压缩级并且第一压缩级、第二压缩级、第三压缩级和第四压缩级的压缩次序依次降低。
其中,每个数据段或压缩数据段的目录区域内存储数据区索引信息表。数据区索引信息表可以包括二元组<数据组的标识符、所属(压缩)数据区的标识符>。确定每个关联数据组的标识符并且根据关联数据组的标识符对所述每个数据区索引信息表进行查询,根据查询结果确定所述每个关联数据组在当前数据段中所位于的数据区。根据每个关联数据组所位于的数据区确定关联数据区并且每个关联数据区中具有至少一个关联数据组。
例如,高压缩率为90%、中压缩率为80%以及低压缩率为70%。可替换地,高压缩率为压缩率89%-99%、中压缩率为压缩率79%-89%(不含89%)以及低压缩率为压缩率小于79%。可替换地,高压缩率为压缩率85%-100%(不含100%)、中压缩率为压缩率70%-85%(不含85%)以及低压缩率为压缩率小于70%。上述数值仅是示意性的,所属领域技术人员应当了解,压缩率的取值或取值范围可以是任何合理数值。
第一压缩级、第二压缩级、第三压缩级和第四压缩级的压缩次序依次降低。应当了解的是,第一压缩级、第二压缩级、第三压缩级和第四压缩级可以用于指示对数据组进行压缩的顺序等级,例如第一批次、第二批次、第三批次和第四批次等。或者,将两个或多个压缩级确定为相同的批次。
第一设置单元906,将所述当前数据区设置为高压缩率并且标记为第一压缩级,其中根据所述当前数据段内的每个关联数据区内关联数据组所涉及的最高的关联级别确定每个关联数据区的压缩率和压缩级包括:当所涉及的最高的关联级别为高关联级别、中关联级别或低关联级别时,将关联数据区的压缩率相应地设置为高压缩率、中压缩率或低压缩率;将所涉及的最高的关联级别为高关联级别的关联数据区标记为第二压缩级、将所涉及的最高的关联级别为中关联级别的关联数据区标记为第三压缩级以及将所涉及的最高的关联级别为关联级别的关联数据区标记为第四压缩级。
本申请根据所述当前数据段内的每个关联数据区内关联数据组所涉及的最高的关联级别(即,将每个关联数据区内至少一个关联数据组中具有最高关联级别的关联数据组的关联级别作为关联数据组所涉及的最高的关联级别)确定每个关联数据区的压缩率和压缩级包括:当所涉及的最高的关联级别为高关联级别、中关联级别或低关联级别时,将关联数据区的压缩率相应地设置为高压缩率、中压缩率或低压缩率;将所涉及的最高的关联级别为高关联级别的关联数据区标记为第二压缩级、将所涉及的最高的关联级别为中关联级别的关联数据区标记为第三压缩级以及将所涉及的最高的关联级别为低关联级别的关联数据区标记为第四压缩级。
例如,当前数据段内具有关联数据区1、2和3,并且关联数据区1具有1个高关联级别的关联数据组和3个中关联级别的数据组、关联数据区2具有5个低关联级别的数据组以及关联数据区3具有2个中关联级别的关联数据组和1个低关联级别的数据组。由此可知,关联数据区1所涉及的最高的关联级别为高关联级别,将关联数据区1的压缩率设置为高压缩率并且标记为第二压缩级;关联数据区2所涉及的最高的关联级别为低关联级别,将关联数据区2的压缩率设置为低压缩率并标记为第四压缩级;关联数据区3所涉及的最高的关联级别为中关联级别,将关联数据区3的压缩率设置为中压缩率并标记为第三压缩级。
第一压缩单元907,在所述当前数据段内(从低地址向高地址方向,或从高地址向低地址方向-扩展一个方案)按照压缩级和压缩率进行压缩:首先,按照高压缩率对标记为第一压缩级的所述当前数据区中的数据组进行压缩;然后,按照高压缩率对标记为第二压缩级的关联数据区中的数据组进行压缩;接着,按照中压缩率对标记为第三压缩级的(可以是多个关联数据区)关联数据区中的数据组进行压缩;最后,按照低压缩率对标记为第四压缩级的(可以是多个关联数据区)关联数据区中的数据组进行压缩。本申请按照压缩级确定当前数据段内进行压缩时的顺序,即第一压缩级的当前数据区中的所有数据组压缩完成后,对第二压缩级的关联数据区中的所有数据组进行压缩,依此类推。
其中对标记为第二压缩级的关联数据区中的数据组进行压缩包括:按照高压缩率从低地址向高地址方向或从高地址向低地址方向对标记为第二压缩级的多个关联数据区中的数据组进行压缩。其中对标记为第三压缩级的关联数据区中的数据组进行压缩包括:按照中压缩率从低地址向高地址方向或从高地址向低地址方向对标记为第三压缩级的多个关联数据区中的数据组进行压缩。其中对标记为第四压缩级的关联数据区中的数据组进行压缩包括:按照低压缩率从低地址向高地址方向或从高地址向低地址方向对标记为第四压缩级的多个关联数据区中的数据组进行压缩。
第三扫描单元908,在所述当前数据段内按照压缩级和压缩率进行压缩的同时,确定多个数据段中除所述当前数据段之外并且具有关联数据组的至少一个关联数据段,其中每个关联数据段内的至少一个关联数据区存储了关联数据组;
其中,每个数据段或压缩数据段的目录区域内存储数据区索引信息表。数据区索引信息表可以包括二元组<数据组的标识符、所属(压缩)数据区的标识符>。确定每个关联数据组的标识符并且根据关联数据组的标识符对除当前数据段之外的每个数据段的每个数据区索引信息表进行查询,根据查询结果确定所述每个关联数据组所在的数据段(关联数据段)以及在数据段中所位于的数据区。将具有关联数据组的数据段确定为关联数据段。以及,根据关联数据段中每个关联数据组所位于的数据区确定关联数据区并且每个关联数据区中具有至少一个关联数据组。
在所述当前数据段内按照压缩级和压缩率进行压缩后,将对当前数据段的当前数据区中的(多个)数据组进行压缩所产生的(多个)压缩的数据组移动到所述第一存储器的第一缓冲区中。将对当前数据段的每个关联数据区中的(多个)数据组进行压缩所产生的(多个)压缩的数据组移动到所述第一存储器的第二缓冲区中。在将(多个)压缩的数据组移动到所述第一存储器的第一缓冲区中后,将所述当前数据区的存储空间进行初始化。在将(多个)压缩的数据组移动到所述第一存储器的第二缓冲区中后,将每个关联数据区的存储空间进行初始化。即,在将当前数据段内的当前数据区和每个关联数据区中的多个数据组(当前数据区和每个关联数据区中的所有数据组)进行压缩后,将当前数据区和每个关联数据区的存储空间进行初始化。初始化例如是存储空间重置、存储内容删除等,使得当前数据区和每个关联数据区能够存储新的数据。
第二设置单元909,根据每个关联数据段的至少一个关联数据区中每个关联数据区内关联数据组所涉及的最高的关联级别确定关联数据段内每个关联数据区的压缩率和压缩级包括:当关联数据区所涉及的最高的关联级别为高关联级别、中关联级别或低关联级别时,将关联数据区的压缩率相应地标记为高压缩率、中压缩率或低压缩率;将所涉及的最高的关联级别为高关联级别的关联数据区标记为第二压缩级,以及将所涉及的最高的关联级别为中关联级别或低关联级别的关联数据区标记为第三压缩级。
本申请根据(多个关联数据段中的每个)关联数据段内的每个关联数据区内关联数据组所涉及的最高的关联级别(即,将每个关联数据区内至少一个关联数据组中具有最高关联级别的关联数据组的关联级别作为关联数据组所涉及的最高的关联级别)确定每个关联数据区的压缩率和压缩级包括:当所涉及的最高的关联级别为高关联级别、中关联级别或低关联级别时,将关联数据区的压缩率相应地设置为高压缩率、中压缩率或低压缩率;将所涉及的最高的关联级别为高关联级别的关联数据区标记为第二压缩级、将所涉及的最高的关联级别为中关联级别的关联数据区标记为第三压缩级以及将所涉及的最高的关联级别为低关联级别的关联数据区标记为第四压缩级。
本申请根据(多个关联数据段中的)每个关联数据段的至少一个关联数据区中每个关联数据区内关联数据组所涉及的最高的关联级别(即,将每个关联数据区内至少一个关联数据组中具有最高关联级别的关联数据组的关联级别作为关联数据组所涉及的最高的关联级别)确定关联数据段内每个关联数据区的压缩率和压缩级包括:当关联数据区所涉及的最高的关联级别为高关联级别、中关联级别或低关联级别时,将关联数据区的压缩率相应地标记为高压缩率、中压缩率或低压缩率;将所涉及的最高的关联级别为高关联级别的关联数据区标记为第二压缩级,以及将所涉及的最高的关联级别为中关联级别或低关联级别的关联数据区标记为第三压缩级。
例如,关联数据段1内具有关联数据区1和2,并且关联数据段2内具有关联数据区3。关联数据区1具有1个高关联级别的关联数据组和3个中关联级别的数据组、关联数据区2具有5个低关联级别的数据组以及关联数据区3具有2个中关联级别的关联数据组和1个低关联级别的数据组。由此可知,关联数据区1所涉及的最高的关联级别为高关联级别,将关联数据区1的压缩率设置为高压缩率并标记为第二压缩级;关联数据区2所涉及的最高的关联级别为低关联级别,将关联数据区2的压缩率设置为低压缩率并标记为第三压缩级;关联数据区3所涉及的最高的关联级别为中关联级别,将关联数据区3的压缩率设置为中压缩率并标记为第三压缩级。
第二压缩单元910,响应于所述当前压缩数据段内的按照压缩级和压缩率的压缩的完成,在所述至少一个关联压缩数据段(中每个关联压缩数据段--并行、或串行)内按照压缩级和压缩率进行压缩:首先,按照高压缩率对每个关联压缩数据段内的标记为第二压缩级的关联数据区进行压缩;然后,按照中压缩率对每个关联压缩数据段内的标记为第三压缩级和中压缩率的关联数据区进行压缩,并且同时按照低压缩率对每个关联压缩数据段内的标记为第三压缩级和低压缩率的关联数据区进行压缩。
其中将具有至少一个关联数据组的数据段选择作为关联数据段,并且将关联数据段内具有至少一个关联数据组的数据区确定为关联数据区。
其中按照高压缩率对每个关联压缩数据段内的标记为第二压缩级的关联数据区进行压缩包括:基于多个关联压缩数据段的串行或并行方式,按照高压缩率对每个关联压缩数据段内的标记为第二压缩级的关联数据区进行压缩。其中按照中压缩率对每个关联压缩数据段内的标记为第三压缩级和中压缩率的关联数据区进行压缩包括:基于多个关联压缩数据段的串行或并行方式,按照中压缩率对每个关联压缩数据段内的标记为第三压缩级和中压缩率的关联数据区进行压缩。其中按照低压缩率对每个关联压缩数据段内的标记为第三压缩级和低压缩率的关联数据区进行压缩包括:基于多个关联压缩数据段的串行或并行方式,按照低压缩率对每个关联压缩数据段内的标记为第三压缩级和低压缩率的关联数据区进行压缩。
将对每个关联数据段内至少一个关联数据区中每个关联数据区中的多个数据组(每个关联数据区中的所有数据组)进行压缩所产生的多个压缩的数据组移动到所述第一存储器的第二缓冲区中。在将压缩的数据组移动到所述第一存储器的第二缓冲区中后,将每个关联数据段内至少一个关联数据区中每个关联数据区的存储空间进行初始化。即,在将每个关联数据段内每个关联数据区中的多个数据组(每个关联数据区中的所有数据组)进行压缩后,将每个关联数据区的存储空间进行初始化。初始化例如是存储空间重置、存储内容删除等,使得当前数据区和每个关联数据区能够存储新的数据。
确定第一存储器内所有数据组(存储区中存储的)中每个数据组在每个第三预定时间间隔内的被访问次数,将当前的第三预定时间间隔内被访问次数高于第三次数阈值的数据组移动到缓存中。或者确定第一存储器内所有经过压缩的数据组(第一缓冲区或第二缓冲区中存储的)中每个经过压缩的数据组在每个第三预定内的被访问次数,将当前的第三预定时间间隔内被访问次数高于第三次数阈值的经过压缩的数据组进行解压缩并移动到缓存中。