镜像的摘要计算方法、装置、设备及可读存储介质转让专利

申请号 : CN202110390512.3

文献号 : CN113221116B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李筱云刘峻臣谢绍新何鑫

申请人 : 烽火通信科技股份有限公司武汉飞思灵微电子技术有限公司

摘要 :

本发明提供一种镜像的摘要计算方法、装置、设备及可读存储介质。该方法包括:确定分段大小;第一核心读取镜像,每次读取所述分段大小的分段数据;处于空闲状态的核心对未进行过摘要计算的分段数据进行摘要计算,得到分段消息摘要;当镜像读取完毕,且对所有分段数据的摘要计算过程完成时,将计算得到的所有分段消息摘要整合为整体消息摘要。通过本发明,采用读取以及计算并行的方式,缩短了对镜像进行消息摘要计算所需的时间,从而加快了启动装载过程。

权利要求 :

1.一种镜像的摘要计算方法,其特征在于,所述镜像的摘要计算方法包括:

确定分段大小;

第一核心读取镜像,每次读取所述分段大小的分段数据;

处于空闲状态的核心对未进行过摘要计算的分段数据进行摘要计算,得到分段消息摘要;

当镜像读取完毕,且对所有分段数据的摘要计算过程完成时,将计算得到的所有分段消息摘要整合为整体消息摘要;

所述确定分段大小的步骤包括:

当以任意大于零的值为分段大小时,若镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值小于对单个分段数据进行摘要计算所需的时间,则通过公式一确定初始分段大小,所述公式一如下:其中,Sb1为初始分段大小,St为镜像大小,tw为任务切换的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度;

根据Sb1是否能被St整除,确定分段大小。

2.如权利要求1所述的镜像的摘要计算方法,其特征在于,所述确定分段大小的步骤包括:当以任意大于零的值为分段大小时,若镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值大于对单个分段数据进行摘要计算所需的时间,则通过公式二确定初始分段大小,所述公式二如下:其中,Sb2为初始分段大小,St为镜像大小,tw为任务切换的固定耗时,tcs是每次计算的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,Cn为核心数量,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度,tfa为读取单位长度数据Sa的固定耗时;

根据Sb2是否能被St整除,确定分段大小。

3.如权利要求1所述的镜像的摘要计算方法,其特征在于,所述确定分段大小的步骤包括:当存在第三分段大小Sbs,且以Sbs为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值等于对单个分段数据进行摘要计算所需的时间,则通过公式一计算第一分段大小,通过公式二计算第二分段大小;

所述公式一如下:

其中,Sb1为第一分段大小,St为镜像大小,tw为任务切换的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度;

所述公式二如下:

其中,Sb2为第二分段大小,St为镜像大小,tw为任务切换的固定耗时,tcs是每次计算的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,Cn为核心数量,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度,tfa为读取单位长度数据Sa的固定耗时;

当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值大于对单个分段数据进行摘要计算所需的时间,根据Sb2是否能被St整除,确定分段大小。

4.如权利要求3所述的镜像的摘要计算方法,其特征在于,在所述当存在第三分段大小Sbs,且以Sbs为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值等于对单个分段数据进行摘要计算所需的时间,则通过公式一计算第一分段大小,通过公式二计算第二分段大小的步骤之后,还包括:当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不大于对单个分段数据进行摘要计算所需的时间,根据Sb1是否能被St整除,确定分段大小。

5.如权利要求3所述的镜像的摘要计算方法,其特征在于,在所述当存在第三分段大小Sbs,且以Sbs为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值等于对单个分段数据进行摘要计算所需的时间,则通过公式一计算第一分段大小,通过公式二计算第二分段大小的步骤之后,还包括:当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值大于对单个分段数据进行摘要计算所需的时间;

若Sb1被St整除,则以Sb1为分段大小,计算以Sb1为分段大小时对所述镜像进行摘要计算所需的第一总时间;

若Sb1不被St整除,则获取与Sb1最接近且能被St整除的第一值和第二值,其中,所述第一值大于Sb1,所述第二值小于Sb1;

计算以第一值作为分段大小时对所述镜像进行摘要计算所需的第二总时间,计算以所述第二值作为分段大小时对所述镜像进行摘要计算所需的第三总时间;

若Sb2被St整除,则以Sb2为分段大小,计算以Sb2为分段大小时对所述镜像进行摘要计算所需的第四总时间;

若Sb2不被St整除,则获取与Sb2最接近且能被St整除的第三值和第四值,其中,所述第三值大于Sb2,所述第四值小于Sb2;

计算以所述第三值作为分段大小时对所述镜像进行摘要计算所需的第五总时间,计算以所述第四值作为分段大小时对所述镜像进行摘要计算所需的第六总时间;

从第一总时间和第四总时间中查找最小值,并以最小值对应的分段大小为分段大小;

或,从第一总时间、第五总时间以及第六总时间中查找最小值,并以最小值对应的分段大小为分段大小;

或,从第二总时间、第三总时间以及第四总时间中查找最小值,并以最小值对应的分段大小为分段大小;

或,从第二总时间、第三总时间、第五总时间以及第六总时间中查找最小值,并以最小值对应的分段大小为分段大小。

6.如权利要求3所述的镜像的摘要计算方法,其特征在于,在所述当存在第三分段大小Sbs,且以Sbs为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值等于对单个分段数据进行摘要计算所需的时间,则通过公式一计算第一分段大小,通过公式二计算第二分段大小的步骤之后,还包括:当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不大于对单个分段数据进行摘要计算所需的时间,根据Sbs是否能被St整除,确定分段大小。

7.一种镜像的摘要计算装置,其特征在于,所述镜像的摘要计算装置包括:

确定模块,用于确定分段大小;

第一核心,用于读取镜像,每次读取所述分段大小的分段数据;

处于空闲状态的核心,用于对未进行过摘要计算的分段数据进行摘要计算,得到分段消息摘要;

整合模块,用于当镜像读取完毕,且对所有分段数据的摘要计算过程完成时,将计算得到的所有分段消息摘要整合为整体消息摘要;

确定模块,用于:

当以任意大于零的值为分段大小时,若镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值小于对单个分段数据进行摘要计算所需的时间,则通过公式一确定初始分段大小,所述公式一如下:其中,Sb1为初始分段大小,St为镜像大小,tw为任务切换的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度;

根据Sb1是否能被St整除,确定分段大小。

8.一种镜像的摘要计算设备,其特征在于,所述镜像的摘要计算设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的镜像的摘要计算程序,其中所述镜像的摘要计算程序被所述处理器执行时,实现如权利要求1至6中任一项所述的镜像的摘要计算方法的步骤。

9.一种可读存储介质,其特征在于,所述可读存储介质上存储有镜像的摘要计算程序,其中所述镜像的摘要计算程序被处理器执行时,实现如权利要求1至6中任一项所述的镜像的摘要计算方法的步骤。

说明书 :

镜像的摘要计算方法、装置、设备及可读存储介质

技术领域

[0001] 本发明涉及数据处理技术领域,尤其涉及一种镜像的摘要计算方法、装置、设备及可读存储介质。

背景技术

[0002] 为了能够保证知识产权的安全、客户敏感信息不被泄露、防止嵌入式设备遭到破解,很多嵌入式设备纷纷开始在引导过程中加入安全启动的功能。安全启动过程各不相同,从最简单的循环冗余校验到基于Rsa_sha256的数字签名与验签,再到多重密钥加密的复杂检验过程,各个产品有各自的实现方案。不过这些安全启动过程都包含对整个镜像的摘要计算、对摘要信息的加密,有些甚至包括对整个镜像文件的加密,这些过程都包含大量的计算。这些计算在个人电脑或者编译服务器上影响不大,但是在嵌入式设备上可能会影响用户的体验。
[0003] 当前常用的启动装载(BootLoader)如uboot、armboot都是单核单线程的,需要顺序的执行读出镜像到RAM、安全启动计算的步骤。常见的启动装载,单核进行32M文件的sha256运算时,uboot需要13s时间,在加上从非易事性存储读取镜像的时间,整个启动装载过程耗时较久。

发明内容

[0004] 本发明的主要目的在于提供一种镜像的摘要计算方法、装置、设备及可读存储介质,旨在解决现有技术中启动装载过程耗时较久的技术问题。
[0005] 第一方面,本发明提供一种镜像的摘要计算方法,所述镜像的摘要计算方法包括:
[0006] 确定分段大小;
[0007] 第一核心读取镜像,每次读取所述分段大小的分段数据;
[0008] 处于空闲状态的核心对未进行过摘要计算的分段数据进行摘要计算,得到分段消息摘要;
[0009] 当镜像读取完毕,且对所有分段数据的摘要计算过程完成时,将计算得到的所有分段消息摘要整合为整体消息摘要。
[0010] 可选的,所述确定分段大小的步骤包括:
[0011] 当以任意大于零的值为分段大小时,若镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值小于对单个分段数据进行摘要计算所需的时间,则通过公式一确定初始分段大小,所述公式一如下:
[0012]
[0013] 其中,Sb1为初始分段大小,St为镜像大小,tw为任务切换的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度;
[0014] 根据Sb1是否能被St整除,确定分段大小。
[0015] 可选的,所述确定分段大小的步骤包括:
[0016] 当以任意大于零的值为分段大小时,若镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值大于对单个分段数据进行摘要计算所需的时间,则通过公式二确定初始分段大小,所述公式二如下:
[0017]
[0018] 其中,Sb2为初始分段大小,St为镜像大小,tw为任务切换的固定耗时,tcs是每次计算的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,Cn为核心数量,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度,tfa为读取单位长度数据Sa的固定耗时;
[0019] 根据Sb2是否能被St整除,确定分段大小。
[0020] 可选的,所述确定分段大小的步骤包括:
[0021] 当存在第三分段大小Sbs,且以Sbs为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值等于对单个分段数据进行摘要计算所需的时间,则通过公式一计算第一分段大小,通过公式二计算第二分段大小;
[0022] 所述公式一如下:
[0023]
[0024] 其中,Sb1为第一分段大小,St为镜像大小,tw为任务切换的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度;
[0025] 所述公式二如下:
[0026]
[0027] 其中,Sb2为第二分段大小,St为镜像大小,tw为任务切换的固定耗时,tcs是每次计算的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,Cn为核心数量,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度,tfa为读取单位长度数据Sa的固定耗时;
[0028] 当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值大于对单个分段数据进行摘要计算所需的时间,根据Sb2是否能被St整除,确定分段大小。
[0029] 可选的,在所述当存在第三分段大小Sbs,且以Sbs为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值等于对单个分段数据进行摘要计算所需的时间,则通过公式一计算第一分段大小,通过公式二计算第二分段大小的步骤之后,还包括:
[0030] 当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不大于对单个分段数据进行摘要计算所需的时间,根据Sb1是否能被St整除,确定分段大小。
[0031] 可选的,在所述当存在第三分段大小Sbs,且以Sbs为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值等于对单个分段数据进行摘要计算所需的时间,则通过公式一计算第一分段大小,通过公式二计算第二分段大小的步骤之后,还包括:
[0032] 当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值大于对单个分段数据进行摘要计算所需的时间;
[0033] 若Sb1被St整除,则以Sb1为分段大小,计算以Sb1为分段大小时对所述镜像进行摘要计算所需的第一总时间;
[0034] 若Sb1不被St整除,则获取与Sb1最接近且能被St整除的第一值和第二值,其中,所述第一值大于Sb1,所述第二值小于Sb1;
[0035] 计算以第一值作为分段大小时对所述镜像进行摘要计算所需的第二总时间,计算以所述第二值作为分段大小时对所述镜像进行摘要计算所需的第三总时间;
[0036] 若Sb2被St整除,则以Sb2为分段大小,计算以Sb2为分段大小时对所述镜像进行摘要计算所需的第四总时间;
[0037] 若Sb2不被St整除,则获取与Sb2最接近且能被St整除的第三值和第四值,其中,所述第三值大于Sb2,所述第四值小于Sb2;
[0038] 计算以所述第三值作为分段大小时对所述镜像进行摘要计算所需的第五总时间,计算以所述第四值作为分段大小时对所述镜像进行摘要计算所需的第六总时间;
[0039] 从第一总时间和第四总时间中查找最小值,并以最小值对应的分段大小为分段大小;
[0040] 或,从第一总时间、第五总时间以及第六总时间中查找最小值,并以最小值对应的分段大小为分段大小;
[0041] 或,从第二总时间、第三总时间以及第四总时间中查找最小值,并以最小值对应的分段大小为分段大小;
[0042] 或,从第二总时间、第三总时间、第五总时间以及第六总时间中查找最小值,并以最小值对应的分段大小为分段大小。
[0043] 可选的,在所述当存在第三分段大小Sbs,且以Sbs为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值等于对单个分段数据进行摘要计算所需的时间,则通过公式一计算第一分段大小,通过公式二计算第二分段大小的步骤之后,还包括:
[0044] 当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不大于对单个分段数据进行摘要计算所需的时间,根据Sbs是否能被St整除,确定分段大小。
[0045] 第二方面,本发明还提供一种镜像的摘要计算装置,所述镜像的摘要计算装置包括:
[0046] 确定模块,用于确定分段大小;
[0047] 第一核心,用于读取镜像,每次读取所述分段大小的分段数据;
[0048] 处于空闲状态的核心,用于对未进行过摘要计算的分段数据进行摘要计算,得到分段消息摘要;
[0049] 整合模块,用于当镜像读取完毕,且对所有分段数据的摘要计算过程完成时,将计算得到的所有分段消息摘要整合为整体消息摘要。
[0050] 第三方面,本发明还提供一种镜像的摘要计算设备,所述镜像的摘要计算设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的镜像的摘要计算程序,其中所述镜像的摘要计算程序被所述处理器执行时,实现镜像的摘要计算方法的步骤。
[0051] 第四方面,本发明还提供一种可读存储介质,所述可读存储介质上存储有镜像的摘要计算程序,其中所述镜像的摘要计算程序被处理器执行时,实现镜像的摘要计算方法的步骤。
[0052] 本发明中,确定分段大小;第一核心读取镜像,每次读取所述分段大小的分段数据;处于空闲状态的核心对未进行过摘要计算的分段数据进行摘要计算,得到分段消息摘要;当镜像读取完毕,且对所有分段数据的摘要计算过程完成时,将计算得到的所有分段消息摘要整合为整体消息摘要。通过本发明,采用读取以及计算并行的方式,缩短了对镜像进行消息摘要计算所需的时间,从而加快了启动装载过程。

附图说明

[0053] 图1为本发明实施例方案中涉及的镜像的摘要计算设备的硬件结构示意图;
[0054] 图2为本发明镜像的摘要计算方法一实施例的流程示意图;
[0055] 图3为一实施例中tf的组成示意图;
[0056] 图4为一实施例中tc的组成示意图;
[0057] 图5(a)为一实施例中符合情形一的镜像摘要分段计算场景示意图;
[0058] 图5(b)为另一实施例中符合情形一的镜像摘要分段计算场景示意图;
[0059] 图6(a)为一实施例中符合情形二的镜像摘要分段计算场景示意图;
[0060] 图6(b)为另一实施例中符合情形二的镜像摘要分段计算场景示意图;
[0061] 图7为一实施例中分段大小与对镜像进行摘要计算所需的总时间的函数图像;
[0062] 图8为另一实施例中分段大小与对镜像进行摘要计算所需的总时间的函数图像;
[0063] 图9为又一实施例中分段大小与对镜像进行摘要计算所需的总时间的函数图像;
[0064] 图10为再一实施例中分段大小与对镜像进行摘要计算所需的总时间的函数图像;
[0065] 图11为本发明镜像的摘要计算装置一实施例的功能模块示意图。
[0066] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0067] 应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0068] 第一方面,本发明实施例提供一种镜像的摘要计算设备。
[0069] 参照图1,图1为本发明实施例方案中涉及的镜像的摘要计算设备的硬件结构示意图。本发明实施例中,镜像的摘要计算设备可以包括处理器1001(例如中央处理器Central Processing Unit,CPU),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口;存储器1005可以是高速随机存取存储器,也可以是稳定的存储器,例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。本领域技术人员可以理解,图1中示出的硬件结构并不构成对本发明的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0070] 继续参照图1,图1中作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及镜像的摘要计算程序。其中,处理器1001可以调用存储器1005中存储的镜像的摘要计算程序,并执行本发明实施例提供的镜像的摘要计算方法。
[0071] 第二方面,本发明实施例提供了一种镜像的摘要计算方法。
[0072] 参照图2,图2为本发明镜像的摘要计算方法一实施例的流程示意图。如图2所示,一实施例中,镜像的摘要计算方法包括:
[0073] 步骤S10,确定分段大小;
[0074] 本实施例中,采用分段化的方式分段读取镜像文件,并对读取的分段镜像文件进行摘要计算,最后将各个分段镜像文件对应的摘要计算结果整合,得到镜像文件对应的整体消息摘要。采用这种方式,则需要确定一个适宜的分段大小,分段大小不能过大也不能过小,过大则相当于没有分段,仍然是串行计算,无法减少对镜像进行摘要计算所需的时间;过小,就会有更多的任务切换、摘要算法的初始化和结束,实际计算的占比下降,导致效率降低,无法减少对镜像进行摘要计算所需的时间。因此,首先要根据镜像的文件大小、核心数量以及其他与摘要计算相关的因素,综合确定分段大小。
[0075] 进一步地,一实施例中,步骤S10包括:
[0076] 步骤S101,当以任意大于零的值为分段大小时,若镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值小于对单个分段数据进行摘要计算所需的时间,则通过公式一确定初始分段大小,所述公式一如下:
[0077]
[0078] 其中,Sb1为初始分段大小,St为镜像大小,tw为任务切换的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度;
[0079] 根据Sb1是否能被St整除,确定分段大小。
[0080] 本实施例中,将主核从镜像读取分段大小的数据的耗时记为tf,参照图3,图3为一实施例中tf的组成示意图。如图3所示,tf由两部分组成,一部分为固定部分另一部分为线性增长部分。固定部分是每次无论读取数据多少都需要的耗时,即读取操作固定耗时tfs,如获取设备、地址转换等需要的耗时;线性增长部分是和读取数据数量成正比的耗时,即读取操作线性耗时tfl。tf的计算公式如下:
[0081]
[0082] 其中,tfs是读取操作固定耗时,tfa是读取单位长度Sa的数据所需要的时间,Sa是单位长度,Sb是分段长度。
[0083] 同样的,将对分段大小的数据进行摘要计算的耗时记为tc,参照图4,图4为一实施例中tc的组成示意图。如图4所示,tc由两部分组成,一部分为每次计算的固定耗时tcs,另一部分是和计算数据数量成正比的耗时tcl。如图4所示,摘要计算可以单独使用用摘要算法(crc8‑32,sha1‑512,md1‑5)、单独使用加密算法(aes、rsa、ecc)或结合使用加密算法和摘要算法。tc的计算公式如下:
[0084]
[0085] 其中,tcs是每次计算的固定耗时,tca是计算单位长度Sa的数据所需要的时间,Sa是单位长度,Sb是分段长度。
[0086] 将对每个分段对应的消息摘要进行整合的耗时记为ttc,ttc的计算公式如下:
[0087]
[0088] 其中,ttcl是摘要整合的线性部分,tcs是每次计算的固定耗时,tca是计算单位长度Sa的数据所需要的时间,Sa是单位长度,Sb是分段长度,Ssa是摘要长度(对于不同算法,Ssa不同,例如采用SHA256算法,则Ssa为256Bit=32Byte), 为对一个分段的消息摘要进行摘要计算所需的时间,St为镜像长度,那么对St/Sb个分段而言,在不考虑每次计算的固定耗时的情况下,对于St/Sb个摘要信息的整合,需要耗时
[0089] 需要指出的是,若计算过程单独使用加密算法,则不需要将各个分段对应的消息摘要进行整合,所以为ttc为0。
[0090] 根据分段大小的不同,会出现两种镜像摘要分段计算情形。
[0091] 图5(a)、图5(b)为情形一,主要特点是最后一个分段的摘要计算在最后一个分段读取出来之后立即开始,所用的总时间就是“读取总时间”+“对一个分段大小的数据进行摘要计算的耗时”+“所有摘要计算总时间”。
[0092] 图6(a)、图6(b)为情形二,主要特点是最后一个分段的摘要计算没法在最后一个分段读取出来之后立即开始,所用的总时间为“读取总时间”+“读取完成时剩余摘要计算时间除以核心数所得的平均值”+“所有摘要计算总时间”。
[0093] 当“读取完成时剩余摘要计算时间除以核心数所得的平均值”等于“对一个分段大小的数据进行摘要计算的耗时”时,是两种方式的切换点,当前者小于后者时,调度方式为情形一,当前者大于后者时,调度方式为情形二。
[0094] 结合图6(b)看,镜像读取完毕后剩余摘要计算总共所需时间为虚框中的cpu0~cpu3中的耗时部分,也就是cpu0~cpu3的总共耗时(排除左下角的cpu0的所有分段数据汇总所需时间)减去4个cpu0读取耗时(虚线框顶部虚线上部分):
[0095] 某cpu的读取耗时(即图中cpu0):
[0096] 全部cpu的摘要计算耗时:
[0097] 其他cpu在某cpu读取完后,依次介入计算摘要前需等待读出数据的时间(图中cpu1~cpu3的顶部虚线框部分):
[0098]
[0099] 上述之和为cpu0~cpu3的总共耗时,则镜像读取完毕后剩余摘要计算总共所需时间:
[0100]
[0101] 当以任意大于零的值为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值减去对单个分段数据进行摘要计算所需的时间,通过公式表示如下:
[0102]
[0103] 其中,tw为任务切换的固定耗时,tc为对分段大小的数据进行摘要计算的耗时,St为镜像长度,Sb是分段长度,Cn为核心数量(本实施例适用于多核多线程的设备,核心数量至少为2),tf为主核从镜像读取分段大小的数据的耗时。 是分段摘要计算的总时间; 是开始计算摘要前需要等待数据读出时的等待时间; 是读取镜像的总耗时, 是读取完成时剩余
摘要计算时间除以核心数所得的平均值;tc是对一个分段大小的数据进行摘要计算的耗时。当以任意大于零的值为分段大小时,若公式(4)小于零,则调度方式为方式一,当以任意大于零的值为分段大小时,若公式(4)大于零,则调度方式为方式二。
[0104] 即情形一:以任意大于零的值为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值小于对单个分段数据进行摘要计算所需的时间。
[0105] 参照图5(a),图5(a)为一实施例中符合情形一的镜像摘要分段计算场景示意图。如图5(a)所示,核心数量为2,通过分段将镜像分为了三个分段,cpu0根据确定的分段大小从镜像读取对应大小的数据,cpu1在空闲时对分段数据进行摘要计算,当对所有进行分段数据摘要计算完成后,cpu0对每个分段数据对应的消息摘要进行汇总,得到镜像的消息摘要。参照图5(b),图5(b)为另一实施例中符合情形一的镜像摘要分段计算场景示意图。如图
5(b)所示,核心数量为4,通过分段将镜像分为了五个分段,cpu0根据确定的分段大小从镜像读取对应大小的数据,cpu1、cpu2以及cpu3在空闲时对分段数据进行摘要计算,当对所有进行分段数据摘要计算完成后,cpu0对每个分段数据对应的消息摘要进行汇总,得到镜像的消息摘要。
[0106] 基于上述公式(1)、(2)以及(4)小于零,进行如下推导:
[0107] 首先,对公式(4)小于零变形如下:
[0108]
[0109]
[0110]
[0111]
[0112] 代入公式(1)和(2),得到:
[0113]
[0114]
[0115]
[0116]
[0117] 不等式两边同时乘以Sb,得到Sb的函数如下:
[0118]
[0119] 这个函数是一个ax^2+bx+c的函数(a可能大于0、小于0、等于0;b也可能等于0)。
[0120] 当只要Sb>0,都有Fs(Sb)>0时,符合情形一,对镜像进行摘要计算所需的总时间为:
[0121]
[0122] 令f1(sb)′=0,可以获得极小值点,也就是最佳分段大小,公式(1)、(2)以及(3)带入公式(6),推导过程如下:
[0123]
[0124]
[0125] f1(Sb)是一个ax+b/x+c的函数(a,b,c均大于0),其在第一象限存在极值。
[0126] 求1阶导数,并让上式为0,得到:
[0127]
[0128] 从而,导出初始分段大小的计算公式(记为公式一)如下:
[0129]
[0130] 其中,Sb1为初始分段大小,St为镜像大小,tw为任务切换的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度。
[0131] 如此,即可在符合情形一时,通过公式一计算得到初始分段大小Sb1。在得到初始分段大小Sb1后,再根据Sb1是否能被St整除,确定分段大小。
[0132] 具体的,在Sb1能被St整除时,将Sb1作为最终确定的分段大小。
[0133] 当计算得到的Sb1不能被St整除时,找到最接近Sb1,且能被St整除的2个值(一个比Sb1大,一个比Sb1小),对其中一个值而言,将该值代入公式(6),得到以该值作为分段大小时,对镜像进行摘要计算所需的总时间。对另一个值做相同处理,得到以另一个值作为分段大小时,对镜像进行摘要计算所需的总时间。如此,即可得到分别以这2个值作为分段大小时,对镜像进行摘要计算所需的总时间,并以最小总时间对应的分段大小作为最终确定的分段大小。
[0134] 通过本实施例,根据运行环境以及与与摘要计算相关的因素,给出了计算最优分段大小的方式,从而有效缩短了计算镜像摘要所需的时间,从而有效降低了启动装载过程的耗时。
[0135] 进一步地,一实施例中,步骤S10还包括:
[0136] 步骤S102,当以任意大于零的值为分段大小时,若镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值大于对单个分段数据进行摘要计算所需的时间,则通过公式二确定初始分段大小,所述公式二如下:
[0137]
[0138] 其中,Sb2为初始分段大小,St为镜像大小,tw为任务切换的固定耗时,tcs是每次计算的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,Cn为核心数量,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度,tfa为读取单位长度数据Sa的固定耗时;
[0139] 根据Sb2是否能被St整除,确定分段大小。
[0140] 本实施例中,当符合情形二,即以任意大于零的值为分段大小时,均有镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值大于对单个分段数据进行摘要计算所需的时间,即只要Sb>0,都有Fs(Sb)<0。参照图6(a),图6(a)为一实施例中符合情形二的镜像摘要分段计算场景示意图。如图6(a)所示,核心数量为2,通过分段将镜像分为了五个分段,cpu0根据确定的分段大小从镜像读取对应大小的数据,cpu1以及cpu0在空闲时对分段数据进行摘要计算(cpu0将镜像全部读取完毕后,便处于空闲状态),当对所有进行分段数据摘要计算完成后,cpu0对每个分段数据对应的消息摘要进行汇总,得到镜像的消息摘要。参照图6(b),图6(b)为另一实施例中符合情形二的镜像摘要分段计算场景示意图。如图6(b)所示,核心数量为4,通过分段将镜像分为了八个分段,cpu0根据确定的分段大小从镜像读取对应大小的数据,cpu1、cpu2、cpu3以及cpu0在空闲时对分段数据进行摘要计算(cpu0将镜像全部读取完毕后,便处于空闲状态),当对所有进行分段数据摘要计算完成后,cpu0对每个分段数据对应的消息摘要进行汇总,得到镜像的消息摘要。
[0141] 符合情形二时,对镜像进行摘要计算所需的总时间为:
[0142]
[0143] 其中,对(7)变形如下:
[0144]
[0145]
[0146]
[0147]
[0148] 带入公式(1)、(2)、(3),进一步得出:
[0149]
[0150]
[0151]
[0152]
[0153]
[0154] f2(Sb)是一个ax+b/x+c的函数(a,b,c均大于0),其在第一象限存在极值。在本发明中,结合公式(5)(6)(7)的函数形态,可以导出不同场景下的最优取值。
[0155] 令f2(sb)′=0,可以获得极小值点,也就是分段大小,f2(sb)′=0如下:
[0156] 继续变形,有:
[0157]
[0158] 可得:
[0159] 从而得出分段大小的计算公式(记为公式二)如下:
[0160]
[0161] 其中,Sb2为初始分段大小,St为镜像大小,tw为任务切换的固定耗时,tcs是每次计算的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,Cn为核心数量,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度,tfa为读取单位长度数据Sa的固定耗时。
[0162] 如此,即可在符合情形二时,通过公式二计算得到初始分段大小Sb2。在得到初始分段大小Sb2后,再根据Sb2是否能被St整除,确定分段大小。
[0163] 具体的,在Sb2能被St整除时,将Sb2作为最终确定的分段大小。当计算得到的Sb2不能被St整除时,找到最接近Sb2,且能被St整除的2个值(一个比Sb2大,一个比Sb2小),对其中一个值而言,将该值代入公式(7),得到以该值作为分段大小时,对镜像进行摘要计算所需的总时间。对另一个值做相同处理,得到以另一个值作为分段大小时,对镜像进行摘要计算所需的总时间。如此,即可得到分别以这2个值作为分段大小时,对镜像进行摘要计算所需的总时间,并以最小总时间对应的分段大小作为最终确定的分段大小。
[0164] 通过本实施例,根据运行环境以及与与摘要计算相关的因素,给出了计算最优分段大小的方式,从而有效缩短了计算镜像摘要所需的时间,从而有效降低了启动装载过程的耗时。
[0165] 步骤S20,第一核心读取镜像,每次读取所述分段大小的分段数据;
[0166] 本实施例中,基于步骤S10确定分段大小后,第一核心(可以是主核,也可以是任一从核)便开始读取镜像,且每次读取分段大小的分段数据。容易理解的是,若一次读取后,还有剩余的未读取过的镜像文件,则再次读取分段大小的分段数据,直至读取完整个镜像文件。
[0167] 步骤S30,处于空闲状态的核心对未进行过摘要计算的分段数据进行摘要计算,得到分段消息摘要;
[0168] 本实施例中,假设核心数量为4,分别为主核cpu0、从核cpu1、从核cpu2以及从核cpu3,以主核作为第一核心。当主核cpu0在t1时刻读取到分段数据1,从核cpu1、从核cpu2以及从核cpu3均处于空闲状态,则从核cpu1、从核cpu2以及从核cpu3中的任一个便可从主核cpu0获取该分段数据1,例如从核cpu1获取到该分段数据1,并对分段数据1进行摘要计算,得到分段消息摘要1;由于主核读取镜像是持续进行的,当主核cpu0在t2时刻读取到分段数据2,此时从核cpu1的计算任务还未执行完成,则从核cpu2以及从核cpu3中的任一个便可从主核cpu0获取该分段数据2,并对分段数据2进行摘要计算,得到分段消息摘要2,以此类推。需要指出的是,若主核cpu0在执行完读取任务后(即将镜像读取完毕)也可参与到摘要计算,参见图6(a)以及图6(b)。
[0169] 步骤S40,当镜像读取完毕,且对所有分段数据的摘要计算过程完成时,将计算得到的所有分段消息摘要整合为整体消息摘要。
[0170] 本实施例中,当镜像读取完毕,且对所有分段数据的摘要计算过程完成时,即可对计算得到的所有分段消息摘要进行整合,得到整体消息摘要,即完成了对镜像的摘要计算。后续,即可使用整体消息摘要进行安全校验,从而实现安全启动的自动装载。
[0171] 本实施例中,确定分段大小;第一核心读取镜像,每次读取所述分段大小的分段数据;处于空闲状态的核心对未进行过摘要计算的分段数据进行摘要计算,得到分段消息摘要;当镜像读取完毕,且对所有分段数据的摘要计算过程完成时,将计算得到的所有分段消息摘要整合为整体消息摘要。通过本实施例,采用读取以及计算并行的方式,缩短了对镜像进行消息摘要计算所需的时间,从而加快了启动装载过程。
[0172] 进一步地,一实施例中,步骤S10包括:
[0173] 步骤S103,当存在第三分段大小Sbs,且以Sbs为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值等于对单个分段数据进行摘要计算所需的时间,则通过公式一计算第一分段大小,通过公式二计算第二分段大小;
[0174] 所述公式一如下:
[0175]
[0176] 其中,Sb1为第一分段大小,St为镜像大小,tw为任务切换的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度;
[0177] 所述公式二如下:
[0178]
[0179] 其中,Sb2为第二分段大小,St为镜像大小,tw为任务切换的固定耗时,tcs是每次计算的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,Cn为核心数量,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度,tfa为读取单位长度数据Sa的固定耗时;
[0180] 本实施例中,当存在第三分段大小Sbs,且以Sbs为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值等于对单个分段数据进行摘要计算所需的时间。即存在Sbs,使得Fs(Sb)=0时,通过公式一计算得到第一分段大小Sb1,通过公式二计算得到第二分段大小Sb2。
[0181] 步骤S104,当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值大于对单个分段数据进行摘要计算所需的时间,则根据Sb2是否能被St整除,确定分段大小。
[0182] 本实施例中,当以求得的Sb1作为Sb时,若Fs(Sb)>0不成立,且以求得的Sb2作为Sb时,Fs(Sb)<0成立,则以Sb2为分段大小。即Sb1实际不存在,Sb2实际存在,参照图7,图7为一实施例中分段大小与对镜像进行摘要计算所需的总时间的函数图像。如图7所示,横坐标为分段大小,纵坐标为对镜像进行摘要计算所需的总时间,Sb1实际不存在,极小值点为Sb2,则根据Sb2是否能被St整除,确定分段大小。
[0183] 其中,在Sb2能被St整除时,将Sb2作为最终确定的分段大小。当计算得到的Sb2不能被St整除时,找到最接近Sb2,且能被St整除的2个值(一个比Sb2大,一个比Sb2小),对其中一个值而言,将该值作为Sb,代入公式(5),若计算得到的Fs(Sb)<0,则将该值代入公式(7),得到以该值作为分段大小时,对镜像进行摘要计算所需的总时间。其中,若将该值代入公式(5),计算得到的Fs(Sb)>0时,则确定不能以该值作为分段大小,无需计算该值对应的总时间。对另一个值做相同处理,得到以另一个值作为分段大小时,对镜像进行摘要计算所需的总时间,或确定不能以另一个值作为分段大小。如此,当得到分别以这2个值作为分段大小时,对镜像进行摘要计算所需的总时间,则以最小总时间对应的分段大小作为最终确定的分段大小;或两个值中只有一个值能作为分段大小时,直接以能作为分段大小的值作为分段大小。
[0184] 进一步地,一实施例中,在步骤S103之后,还包括:
[0185] 步骤S105,当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不大于对单个分段数据进行摘要计算所需的时间,根据Sb1是否能被St整除,确定分段大小。
[0186] 本实施例中,当以求得的Sb1作为Sb时,若Fs(Sb)>0成立,且以求得的Sb2作为Sb时,Fs(Sb)<0不成立,则以Sb1为分段大小。即Sb2实际不存在,Sb1实际存在,参照图8,图8为另一实施例中分段大小与对镜像进行摘要计算所需的总时间的函数图像。如图8所示,横坐标为分段大小,纵坐标为对镜像进行摘要计算所需的总时间,Sb2实际不存在,极小值点为Sb1,则根据Sb1是否能被St整除,确定分段大小。
[0187] 其中,在Sb1能被St整除时,将Sb1作为最终确定的分段大小。
[0188] 当计算得到的Sb1不能被St整除时,找到最接近Sb1,且能被St整除的2个值(一个比Sb1大,一个比Sb1小),对其中一个值而言,将该值作为Sb,代入公式(5),若计算得到的Fs(Sb)>0时,则将该值代入公式(6),得到以该值作为分段大小时,对镜像进行摘要计算所需的总时间。其中,若将该值代入公式(5),计算得到的Fs(Sb)<0时,则确定不能以该值作为分段大小,无需计算该值对应的总时间。对另一个值做相同处理,得到以另一个值作为分段大小时,对镜像进行摘要计算所需的总时间。如此,当得到分别以这2个值作为分段大小时,对镜像进行摘要计算所需的总时间,则以最小总时间对应的分段大小作为最终确定的分段大小;或两个值中只有一个值能作为分段大小时,直接以能作为分段大小的值作为分段大小。
[0189] 进一步地,一实施例中,在步骤S103之后,还包括:
[0190] 步骤S106,当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值大于对单个分段数据进行摘要计算所需的时间;
[0191] 若Sb1被St整除,则以Sb1为分段大小,计算以Sb1为分段大小时对所述镜像进行摘要计算所需的第一总时间;
[0192] 若Sb1不被St整除,则获取与Sb1最接近且能被St整除的第一值和第二值,其中,所述第一值大于Sb1,所述第二值小于Sb1;
[0193] 计算以第一值作为分段大小时对所述镜像进行摘要计算所需的第二总时间,计算以所述第二值作为分段大小时对所述镜像进行摘要计算所需的第三总时间;
[0194] 若Sb2被St整除,则以Sb2为分段大小,计算以Sb2为分段大小时对所述镜像进行摘要计算所需的第四总时间;
[0195] 若Sb2不被St整除,则获取与Sb2最接近且能被St整除的第三值和第四值,其中,所述第三值大于Sb2,所述第四值小于Sb2;
[0196] 计算以所述第三值作为分段大小时对所述镜像进行摘要计算所需的第五总时间,计算以所述第四值作为分段大小时对所述镜像进行摘要计算所需的第六总时间;
[0197] 本实施例中,当以Sb1为Sb时,Fs(Sb)>0成立,且以Sb2作为Sb时,Fs(Sb)<0也成立。参照图9,图9为又一实施例中分段大小与对镜像进行摘要计算所需的总时间的函数图像。
如图9所示,横坐标为分段大小,纵坐标为对镜像进行摘要计算所需的总时间,Sb1和Sb2都实际存在则需要进一步以Sb1和Sb2为基础,确定最终的分段大小。
[0198] 首先,分别判断Sb1和Sb2是否能被St整除。
[0199] 其中,对Sb1而言,若Sb1被St整除,则以Sb1为分段大小,将Sb1为代入公式(6),得到以Sb1为分段大小时对镜像进行摘要计算所需的第一总时间;若Sb1不被St整除,则找到最接近Sb1,且能被St整除的第一值和第二值(第一值比Sb1大,第二值比Sb1小)。以第一值为例,将第一值作为Sb,代入公式(5),若计算得到的Fs(Sb)>0时,则将第一值代入公式(6),得到以第一值作为分段大小时,对镜像进行摘要计算所需的第二总时间;若将第一值代入公式(5),计算得到的Fs(Sb)<0时,则确定不能以第一值作为分段大小,无需计算总时间,即第二总时间为空。同样的,按照相同方式,即可得到以第二值作为分段大小时,对镜像进行摘要计算所需的第三总时间。
[0200] 对Sb2而言,若Sb2被St整除,则以Sb2为分段大小,将Sb2为代入公式(7),得到以Sb2为分段大小时对镜像进行摘要计算所需的第四总时间;若Sb2不被St整除,则找到最接近Sb2,且能被St整除的第三值和第四值(第三值比Sb2大,第四值比Sb2小)。以第三值为例,将第三值作为Sb,代入公式(5),若计算得到的Fs(Sb)<0时,则将第三值代入公式(7),得到以第三值作为分段大小时,对镜像进行摘要计算所需的第五总时间;若将第三值代入公式(5),计算得到的Fs(Sb)>0时,则确定不能以第三值作为分段大小,无需计算总时间,即第五总时间为空。同样的,按照相同方式,即可得到以第四值作为分段大小时,对镜像进行摘要计算所需的第六总时间。
[0201] 步骤S107,从第一总时间和第四总时间中查找最小值,并以最小值对应的分段大小为分段大小;
[0202] 或,从第一总时间、第五总时间以及第六总时间中查找最小值,并以最小值对应的分段大小为分段大小;
[0203] 或,从第二总时间、第三总时间以及第四总时间中查找最小值,并以最小值对应的分段大小为分段大小;
[0204] 或,从第二总时间、第三总时间、第五总时间以及第六总时间中查找最小值,并以最小值对应的分段大小为分段大小。
[0205] 本实施例中,若Sb1被St整除,且Sb2被St整除,则从第一总时间和第四总时间中查找最小值,然后以最小值对应的分段大小为分段大小;
[0206] 若Sb1被St整除,Sb2不被St整除,则从第一总时间、第五总时间以及第六总时间中查找最小值,然后以最小值对应的分段大小为分段大小;
[0207] 若Sb1不被St整除,Sb2被St整除,则第二总时间、第三总时间以及第四总时间中查找最小值,然后以最小值对应的分段大小为分段大小;
[0208] 若Sb1不被St整除,Sb2不被St整除,则从第二总时间、第三总时间、第五总时间以及第六总时间中查找最小值,然后以最小值对应的分段大小为分段大小。
[0209] 需要说明的是,第二总时间、第三总时间、第五总时间以及第六总时间可能为空,在查找最小值的流程中,忽略为空的值。
[0210] 进一步地,一实施例中,在步骤S103之后,还包括:
[0211] 步骤S109,当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不大于对单个分段数据进行摘要计算所需的时间,根据Sbs是否能被St整除,确定分段大小。
[0212] 本实施例中,当以求得的Sb1作为Sb时,若Fs(Sb)>0不成立,且以求得的Sb2作为Sb时,Fs(Sb)<0也不成立,即Sb1和Sb2都实际不存在。参照图10,图10为再一实施例中分段大小与对镜像进行摘要计算所需的总时间的函数图像。如图10所示,横坐标为分段大小,纵坐标为对镜像进行摘要计算所需的总时间,Sb1和Sb2都实际不存在,则根据Sbs是否能被St整除,确定最终的分段大小。
[0213] 当小于St的Sbs的取值只有一个时:
[0214] 若Sbs被St整除,则以Sbs为分段大小。当Sbs不被St整除时,找出与Sbs最接近且能被St整除的两个值,其中一个值比Sbs大,另一个值比Sbs小。以其中一个值为例,将该值作为Sb,代入公式(5),若计算得到的Fs(Sb)>0时,则将该值代入公式(6),得到以该值作为分段大小时,对镜像进行摘要计算所需的总时间;若计算得到的Fs(Sb)<0时,则将该值代入公式(7),得到以该值作为分段大小时,对镜像进行摘要计算所需的总时间。同样的,按照相同方式,即可得到以另一个值作为分段大小时,对镜像进行摘要计算所需的总时间。将两个总时间进行比较,并选取最小的总时间,并以最小总时间对应的分段大小作为最终确定的分段大小。
[0215] 当小于St的Sbs的取值为两个时,分别记为Sbs1以及Sbs2,则存在如下四种情况:
[0216] 情况1:Sbs1以及Sbs2均能被St整除。
[0217] 将Sbs1代入公式(6),得到以Sbs1作为分段大小时,对镜像进行摘要计算所需的总时间。同理,对Sbs2按相同方式处理,得到以Sbs2作为分段大小时,对镜像进行摘要计算所需的总时间。若以Sbs1作为分段大小时,对镜像进行摘要计算所需的总时间,小于以Sbs2作为分段大小时,对镜像进行摘要计算所需的总时间,则以Sbs1作为最终确定的分段大小,反之,以Sbs2作为最终确定的分段大小。
[0218] 或是,将Sbs1代入公式(7),得到以Sbs1作为分段大小时,对镜像进行摘要计算所需的总时间。同理,对Sbs2按相同方式处理,得到以Sbs2作为分段大小时,对镜像进行摘要计算所需的总时间。若以Sbs1作为分段大小时,对镜像进行摘要计算所需的总时间,小于以Sbs2作为分段大小时,对镜像进行摘要计算所需的总时间,则以Sbs1作为最终确定的分段大小,反之,以Sbs2作为最终确定的分段大小。
[0219] 需要说明的是,在Fs(Ssb1)=0时,结合公式(4)、(6)以及(7)可知,将Sbs1代入公式(6)得到的值与将Sbs1代入公式(7)得到的值是相等的;同理,在Fs(Ssb2)=0时,将Sbs2代入公式(6)得到的值与将Sbs2代入公式(7)得到的值是相等的。
[0220] 情况2:Sbs1能被St整除,Sbs2不能被St整除。
[0221] 将Sbs1代入公式(6)或(7),得到以Sbs1作为分段大小时,对镜像进行摘要计算所需的总时间。
[0222] 找出与Sbs2最接近且能被St整除的两个值,其中一个值比Sbs2大,另一个值比Sbs2小。以其中一个值为例,将该值作为Sb,代入公式(5),若计算得到的Fs(Sb)>0时,则将该值代入公式(6),得到以该值作为分段大小时,对镜像进行摘要计算所需的总时间;若计算得到的Fs(Sb)<0时,则将该值代入公式(7),得到以该值作为分段大小时,对镜像进行摘要计算所需的总时间。同样的,按照相同方式,即可得到以另一个值作为分段大小时,对镜像进行摘要计算所需的总时间。
[0223] 将三个总时间进行比较,并选取最小的总时间,并以最小总时间对应的分段大小作为最终确定的分段大小。
[0224] 情况3:Sbs1不能被St整除,Sbs2能被St整除。
[0225] 找出与Sbs1最接近且能被St整除的两个值,其中一个值比Sbs1大,另一个值比Sbs1小。以其中一个值为例,将该值作为Sb,代入公式(5),若计算得到的Fs(Sb)>0时,则将该值代入公式(6),得到以该值作为分段大小时,对镜像进行摘要计算所需的总时间;若计算得到的Fs(Sb)<0时,则将该值代入公式(7),得到以该值作为分段大小时,对镜像进行摘要计算所需的总时间。同样的,按照相同方式,即可得到以另一个值作为分段大小时,对镜像进行摘要计算所需的总时间。
[0226] 则将Sbs2代入公式(6)或公式(7),得到以Sbs2作为分段大小时,对镜像进行摘要计算所需的总时间。
[0227] 将三个总时间进行比较,并选取最小的总时间,并以最小总时间对应的分段大小作为最终确定的分段大小。
[0228] 情况4:Sbs1以及Sbs2均不能被St整除。
[0229] 找出与Sbs1最接近且能被St整除的两个值,其中一个值比Sbs1大,另一个值比Sbs1小。以其中一个值为例,将该值作为Sb,代入公式(5),若计算得到的Fs(Sb)>0时,则将该值代入公式(6),得到以该值作为分段大小时,对镜像进行摘要计算所需的总时间;若计算得到的Fs(Sb)<0时,则将该值代入公式(7),得到以该值作为分段大小时,对镜像进行摘要计算所需的总时间。同样的,按照相同方式,即可得到以另一个值作为分段大小时,对镜像进行摘要计算所需的总时间。
[0230] 找出与Sbs2最接近且能被St整除的两个值,其中一个值比Sbs2大,另一个值比Sbs2小。以其中一个值为例,将该值作为Sb,代入公式(5),若计算得到的Fs(Sb)>0时,则将该值代入公式(6),得到以该值作为分段大小时,对镜像进行摘要计算所需的总时间;若计算得到的Fs(Sb)<0时,则将该值代入公式(7),得到以该值作为分段大小时,对镜像进行摘要计算所需的总时间。同样的,按照相同方式,即可得到以另一个值作为分段大小时,对镜像进行摘要计算所需的总时间。
[0231] 将四个总时间进行比较,并选取最小的总时间,并以最小总时间对应的分段大小作为最终确定的分段大小。
[0232] 第三方面,本发明实施例还提供一种镜像的摘要计算装置。
[0233] 参照图11,图11为本发明镜像的摘要计算装置一实施例的功能模块示意图。如图11所示,镜像的摘要计算装置包括:
[0234] 确定模块10,用于确定分段大小;
[0235] 第一核心20,用于读取镜像,每次读取所述分段大小的分段数据;
[0236] 处于空闲状态的核心30,用于对未进行过摘要计算的分段数据进行摘要计算,得到分段消息摘要;
[0237] 整合模块40,用于当镜像读取完毕,且对所有分段数据的摘要计算过程完成时,将计算得到的所有分段消息摘要整合为整体消息摘要。
[0238] 进一步的,一实施例中,确定模块10,用于:
[0239] 当以任意大于零的值为分段大小时,若镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值小于对单个分段数据进行摘要计算所需的时间,则通过公式一确定初始分段大小,所述公式一如下:
[0240]
[0241] 其中,Sb1为初始分段大小,St为镜像大小,tw为任务切换的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度;
[0242] 根据Sb1是否能被St整除,确定分段大小。
[0243] 进一步的,一实施例中,确定模块10,用于:
[0244] 当以任意大于零的值为分段大小时,若镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值大于对单个分段数据进行摘要计算所需的时间,则通过公式二确定初始分段大小,所述公式二如下:
[0245]
[0246] 其中,Sb2为初始分段大小,St为镜像大小,tw为任务切换的固定耗时,tcs是每次计算的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,Cn为核心数量,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度,tfa为读取单位长度数据Sa的固定耗时;
[0247] 根据Sb2是否能被St整除,确定分段大小。
[0248] 进一步的,一实施例中,确定模块10,用于:
[0249] 当存在第三分段大小Sbs,且以Sbs为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值等于对单个分段数据进行摘要计算所需的时间,则通过公式一计算第一分段大小,通过公式二计算第二分段大小;
[0250] 所述公式一如下:
[0251]
[0252] 其中,Sb1为第一分段大小,St为镜像大小,tw为任务切换的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度;
[0253] 所述公式二如下:
[0254]
[0255] 其中,Sb2为第二分段大小,St为镜像大小,tw为任务切换的固定耗时,tcs是每次计算的固定耗时,tfs是每次读取所述分段大小的分段数据的固定耗时,Cn为核心数量,tca为计算单位长度数据Sa的固定耗时,Ssa为消息摘要长度,tfa为读取单位长度数据Sa的固定耗时;
[0256] 当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值大于对单个分段数据进行摘要计算所需的时间,根据Sb2是否能被St整除,确定分段大小。
[0257] 进一步的,一实施例中,确定模块10,用于:
[0258] 当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不大于对单个分段数据进行摘要计算所需的时间,根据Sb1是否能被St整除,确定分段大小。
[0259] 进一步的,一实施例中,确定模块10,用于:
[0260] 当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值大于对单个分段数据进行摘要计算所需的时间;
[0261] 若Sb1被St整除,则以Sb1为分段大小,计算以Sb1为分段大小时对所述镜像进行摘要计算所需的第一总时间;
[0262] 若Sb1不被St整除,则获取与Sb1最接近且能被St整除的第一值和第二值,其中,所述第一值大于Sb1,所述第二值小于Sb1;
[0263] 计算以第一值作为分段大小时对所述镜像进行摘要计算所需的第二总时间,计算以所述第二值作为分段大小时对所述镜像进行摘要计算所需的第三总时间;
[0264] 若Sb2被St整除,则以Sb2为分段大小,计算以Sb2为分段大小时对所述镜像进行摘要计算所需的第四总时间;
[0265] 若Sb2不被St整除,则获取与Sb2最接近且能被St整除的第三值和第四值,其中,所述第三值大于Sb2,所述第四值小于Sb2;
[0266] 计算以所述第三值作为分段大小时对所述镜像进行摘要计算所需的第五总时间,计算以所述第四值作为分段大小时对所述镜像进行摘要计算所需的第六总时间;
[0267] 从第一总时间和第四总时间中查找最小值,并以最小值对应的分段大小为分段大小;
[0268] 或,从第一总时间、第五总时间以及第六总时间中查找最小值,并以最小值对应的分段大小为分段大小;
[0269] 或,从第二总时间、第三总时间以及第四总时间中查找最小值,并以最小值对应的分段大小为分段大小;
[0270] 或,从第二总时间、第三总时间、第五总时间以及第六总时间中查找最小值,并以最小值对应的分段大小为分段大小。
[0271] 进一步的,一实施例中,确定模块10,用于:
[0272] 当以Sb1为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不小于对单个分段数据进行摘要计算所需的时间,且以Sb2为分段大小时,镜像读取完毕后剩余摘要计算总共所需时间除以核心数所得的平均值不大于对单个分段数据进行摘要计算所需的时间,根据Sbs是否能被St整除,确定分段大小。
[0273] 其中,上述镜像的摘要计算装置中各个模块的功能实现与上述镜像的摘要计算方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
[0274] 第四方面,本发明实施例还提供一种可读存储介质。
[0275] 本发明可读存储介质上存储有镜像的摘要计算程序,其中所述镜像的摘要计算程序被处理器执行时,实现如上述的镜像的摘要计算方法的步骤。
[0276] 其中,镜像的摘要计算程序被执行时所实现的方法可参照本发明镜像的摘要计算方法的各个实施例,此处不再赘述。
[0277] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0278] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0279] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
[0280] 以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。