一种网络启动方法、装置、电子设备及存储介质与流程



1.本发明涉及网络启动技术领域,特别是涉及一种网络启动方法、一种网络启动装置、一种电子设备以及一种计算机可读存储介质。


背景技术:



2.内存地址空间就是在中央处理器cpu域里对每一块内存空间进行唯一的编号,每块内存空间都能够存放数据,编号的目的在于能够快速准确的到对应的内存空间。内存地址空间有多种类型,根据uefi规范可分为efiloadercode、efiloaderdata、efibootservicescode、efibootservicesdata、efiruntimeservicescode、efiruntimeservicesdata等16种类型。
3.pxe(预启动执行环境,preboot execution environment)作为常见的网络引导启动的方法,工作模式为客户端、服务端,客户端通过网络从服务端下载镜像到内存空间,并加载安装启动文件。pxe网络引导启动过程为:1)uefi(可扩展固件接口,unified extensible firmware interface)模式下,客户端的bios(基本输入输出系统,basic input output system)从服务端下载网络启动程序文件nbp,并将nbp存放到内存中;2)执行nbp文件,nbp文件会将继续从服务端下载内核文件vmlinuz、初始内存映像文件initrd文件;3)所有启动镜像下载完成后,控制权交给系统内核,开始启动。
4.但是,从服务端下载的启动文件通常是存放在2g以下的内存地址空间区域,也就是1m-mmcfg_base区域,一旦启动文件过大,则无法存放完整的启动文件,导致无法正常启动,从而导致网络启动效率低下。


技术实现要素:



5.本发明实施例是提供一种网络启动方法、装置、电子设备以及计算机可读存储介质,以解决内存地址空间无法自动适配启动文件大小的问题。
6.本发明实施例公开了一种网络启动方法,可以包括:
7.生成内存类型信息表单;所述内存类型信息表单包括内存类型信息和历史内存预取信息;所述内存类型信息具有对应的内存地址空间;
8.采用所述历史内存预取信息为所述内存地址空间分配内存,并获取针对所述内存地址空间的第一内存分配值;
9.获取启动文件,并确定针对所述启动文件的数据字节数;
10.当所述数据字节数大于所述第一内存分配值时,根据所述数据字节数和所述第一内存分配值调整所述第一内存分配值,生成第二内存分配值;所述第二内存分配值大于或等于所述数据字节数;
11.采用所述第二内存分配值为所述内存地址空间分配内存,并在所述内存地址空间中储存所述启动文件,以启动网络。
12.可选地,所述方法应用于客户端设备,所述客户端设备装载有闪存基本输入输出
系统,所述闪存基本输入输出系统配置有非易失性随机存取存储器,所述生成内存类型信息表单的步骤可以进一步包括:
13.生成内存类型信息表单,并将所述内存类型信息表单存储至所述非易失性随机存取存储器。
14.可选地,在所述采用所述历史内存预取信息为所述内存地址空间分配内存,并获取针对所述内存地址空间的第一内存分配值的步骤之前,所述方法还可以包括:
15.将所述内存类型信息和所述历史内存预取信息以手动挡块形式保存。
16.可选地,所述当所述数据字节数大于所述第一内存分配值时,根据所述数据字节数和所述第一内存分配值调整所述第一内存分配值,生成第二内存分配值的步骤可以包括:
17.按照预设规则生成多个针对所述内存地址空间的内存值增量档位;所述内存值增量档位具有对应的增量内存分配值;
18.计算所述数据字节数和所述第一内存分配值的差值;
19.通过所述差值从多个所述增量内存值增量档位中确定第一目标档位,并将所述第一目标档位对应的增量内存分配值确定为第二内存分配值。
20.可选地,还可以包括:
21.当所述数据字节数小于所述第一内存分配值时,按照预设规则生成多个针对所述内存地址空间的内存值减量档位;所述内存值减量档位具有对应的减量内存分配值;
22.通过所述差值从多个所述内存值减量档位中确定第二目标档位,并将所述第二目标档位对应的减量内存分配值确定为第三内存分配值;
23.采用所述第三内存分配值为所述内存地址空间分配内存,并在所述内存地址空间中储存所述启动文件,以启动网络。
24.本发明实施例还公开了一种网络启动装置,可以包括:
25.内存类型信息表单生成模块,用于生成内存类型信息表单;所述内存类型信息表单包括内存类型信息和历史内存预取信息;所述内存类型信息具有对应的内存地址空间;
26.第一内存分配值获取模块,用于采用所述历史内存预取信息为所述内存地址空间分配内存,并获取针对所述内存地址空间的第一内存分配值;
27.数据字节数确定模块,用于获取启动文件,并确定针对所述启动文件的数据字节数;
28.第二内存分配值生成模块,用于当所述数据字节数大于所述第一内存分配值时,根据所述数据字节数和所述第一内存分配值调整所述第一内存分配值,生成第二内存分配值;所述第二内存分配值大于或等于所述数据字节数;
29.网络启动模块,用于采用所述第二内存分配值为所述内存地址空间分配内存,并在所述内存地址空间中储存所述启动文件,以启动网络。
30.可选地,所述装置应用于客户端设备,所述客户端设备装载有闪存基本输入输出系统,所述闪存基本输入输出系统配置有非易失性随机存取存储器,所内存类型信息表单生成模块可以进一步包括:
31.内存类型信息表单生成子模块,用于生成内存类型信息表单,并将所述内存类型信息表单存储至所述非易失性随机存取存储器。
32.可选地,所述装置还可以包括:
33.手动挡块形式保存模块,用于将所述内存类型信息和所述历史内存预取信息以手动挡块形式保存。
34.可选地,所述第二内存分配值生成模块可以包括:
35.内存值增量档位生成子模块,用于按照预设规则生成多个针对所述内存地址空间的内存值增量档位;所述内存值增量档位具有对应的增量内存分配值;
36.差值计算子模块,用于计算所述数据字节数和所述第一内存分配值的差值;
37.第二内存分配值确定子模块,用于通过所述差值从多个所述增量内存值增量档位中确定第一目标档位,并将所述第一目标档位对应的增量内存分配值确定为第二内存分配值。
38.可选地,还可以包括:
39.内存值减量档位生成子模块,用于在所述数据字节数小于所述第一内存分配值时,按照预设规则生成多个针对所述内存地址空间的内存值减量档位;所述内存值减量档位具有对应的减量内存分配值;
40.第三内存分配值确定子模块,用于通过所述差值从多个所述内存值减量档位中确定第二目标档位,并将所述第二目标档位对应的减量内存分配值确定为第三内存分配值;
41.网络启动子模块,用于采用所述第三内存分配值为所述内存地址空间分配内存,并在所述内存地址空间中储存所述启动文件,以启动网络。
42.本发明实施例还公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;
43.所述存储器,用于存放计算机程序;
44.所述处理器,用于执行存储器上所存放的程序时,实现如本发明实施例所述的方法。
45.本发明实施例还公开了一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本发明实施例所述的方法。
46.本发明实施例包括以下优点:
47.本发明实施例,通过生成内存类型信息表单;内存类型信息表单包括内存类型信息和历史内存预取信息;内存类型信息具有对应的内存地址空间;采用历史内存预取信息为内存地址空间分配内存,并获取针对内存地址空间的第一内存分配值;获取启动文件,并确定针对启动文件的数据字节数;当数据字节数大于第一内存分配值时,根据数据字节数和第一内存分配值调整第一内存分配值,生成第二内存分配值;第二内存分配值大于或等于数据字节数;采用第二内存分配值为内存地址空间分配内存,并在内存地址空间中储存启动文件,以启动网络,从而解决了内存地址空间无法自动适配启动文件大小的问题,进而提升了网络启动效率。
附图说明
48.图1是相关技术的一种4g内存地址空间的结构示意图;
49.图2是本发明实施例中提供的一种网络启动方法的步骤流程图;
50.图3是本发明实施例中提供的一种内存类型信息表单的结构示意图;
51.图4是本发明实施例中提供的一种网络启动方法的流程示意图;
52.图5是本发明实施例中提供的一种网络启动装置的结构框图;
53.图6是本发明各实施例中提供的一种电子设备的硬件结构框图。
具体实施方式
54.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
55.在实际应用中,在早期intel架构中,有32根地址总线,因此内存地址最大寻址空间为4g,诞生4g内存地址空间的概念。随着计算机领域的发展,内存地址最大寻址空间早已经超过4g,但intel架构需要向前兼容,4g内存地址空间的概念沿用至今。
56.内存地址空间就是在cpu域里对每一块内存空间进行唯一的编号,每块内存空间都能够存放数据,编号的目的在于能够快速准确的到对应的内存空间。内存地址空间有多种类型,根据uefi规范可分为efiloadercode、efiloaderdata、efibootservicescode、efibootservicesdata、efiruntimeservicescode、efiruntimeservicesdata等16种类型。
57.参考图1,图1是相关技术的一种4g内存地址空间的结构示意图,4g内存地址空间的布局如下,0m-mmcfg_base范围是动态随机存取存储器dram区域的地址空间,该区域存放不同类型的内存数据,用于启动时服务、运行时服务以及os(操作系统,operating system)引导时的一些临时数据。mmcfg_base-4g范围是映射内存mmio区域的地址空间,这块区域存放着pcie(高速串行计算机扩展总线标准,peripheral component interconnect express)设备的数据。在服务器平台intel whitley上mmcfg_base的值默认为2g。
58.pxe作为常见的网络引导启动的方法,工作模式为客户端、服务端,客户端通过网络从服务端下载镜像到内存空间,并加载安装启动文件。pxe网络引导启动过程为:1)uefi模式下,客户端的bios从服务端下载nbp文件,并将nbp文件存放到内存中,2)执行nbp文件,nbp文件会将继续从服务端下载vmlinuz、initrd文件,3)所有启动镜像下载完成后,控制权交给系统内核,开始启动。
59.但是,从服务端下载的启动文件通常是存放在2g以下的内存地址空间区域,也就是1m-mmcfg_base区域,一旦启动文件过大,则无法存放完整的启动文件,导致无法正常启动,例如,实验室里做的diag 8.3os的initrd的大小为400m,diag 7.6os的initrd的大小为321m,同一台机器进入diag7.6os能够正常启动,但是进入diag 8.3os时则无法启动,通过收集系统日志,分析存储器映射控制寄存器memmap和内存使用情况,发现是因为diag 8.3的initrd文件的大小已经超出2g以下可用连续内存区域的大小,因而无法加载文件。经调查,随着diag os的不断升级,其initrd文件的大小会越来越大,出现无法正常启动的问题会越来越多。
60.所以,本发明实施例的一个核心发明点在于,提出了一种动态调整内存地址空间的方案,通过该方案可以根据每次启动时服务器实际使用的内存情况,对内存地址空间进行动态调整,从而实现2g以下的可用连续内存空间满足pxe启动文件的大小,进而能够正常的启动网络系统。
61.为了使本领域技术人员更好的理解本发明实施例,以下对本发明实施例所涉及的
部分技术名词进行解释。
62.pxe(preboot execution environment)预启动执行环境
63.mmio(memory-mapped i/o)内存映射i/o
64.mmcfg(memory-mapped configuration)内存映射配置
65.nbp(network boot program)网络启动程序
66.pei(pre-efi initialization)efi(可扩展固件接口,extensible firmware interface)前期初始化
67.dxe(driver execution environment)驱动执行环境
68.bds(boot device selection)启动设备选择
69.参照图2,示出了本发明实施例中提供的一种网络启动方法的步骤流程图,具体可以包括如下步骤:
70.步骤201,生成内存类型信息表单;所述内存类型信息表单包括内存类型信息和历史内存预取信息;所述内存类型信息具有对应的内存地址空间;
71.步骤202,采用所述历史内存预取信息为所述内存地址空间分配内存,并获取针对所述内存地址空间的第一内存分配值;
72.步骤203,获取启动文件,并确定针对所述启动文件的数据字节数;
73.步骤204,当所述数据字节数大于所述第一内存分配值时,根据所述数据字节数和所述第一内存分配值调整所述第一内存分配值,生成第二内存分配值;所述第二内存分配值大于或等于所述数据字节数;
74.步骤205,采用所述第二内存分配值为所述内存地址空间分配内存,并在所述内存地址空间中储存所述启动文件,以启动网络。
75.在具体实现中,本发明实施例可以应用于具有网络系统的设备中,例如,服务器、个人计算机等等。
76.在实际应用中,启动网络大致分为pei阶段、dxe阶段和bds阶段,在pei阶段的后期,内存初始化完成,这时需要为各种类型的内存分配地址空间,以满足后续开机过程中各个设备的使用需求。
77.所以,本发明实施例可以在pei阶段生成内存类型信息表单,其中,内存类型信息表单可以包括内存类型信息和历史内存预取信息、当前内存预取信息、下一次启动时的内存预取信息等信息,并且,内存类型信息可以具有对应的内存地址空间。
78.参考图3,图3是本发明实施例中提供的一种内存类型信息表单的结构示意图,内存类型信息表单301可以用于展示变量memorytypeinformation,内存类型信息表单301可以包括内存类型信息302和上次开机时的内存预取信息303、本次开机时的内存预取信息304、下一次开机时的内存预取信息305。
79.在实际应用中,在dxe阶段,该阶段主要是执行大部分的初始化工作,从功能上进行描述,dxe内核负责dxe基础服务和执行流程,dxe派遣器负责调度执行dxe驱动,初始化系统设备。
80.所以,本发明实施例可以在dxe阶段采用历史内存预取信息为内存地址空间分配内存,并获取针对内存地址空间的第一内存分配值。具体地,第一内存分配值可以是用于表达采用历史内存预取信息为内存地址空间分配了多少内存。
81.例如,采用历史内存预取信息为内存地址空间efiruntimeservicescode分配大小为0x250页,0x250页则可以是针对内存地址空间efiruntimeservicescode的第一内存分配值,采用历史内存预取信息为内存地址空间efiruntimeservicesdata分配0x2200页,0x2200页则可以是针对内存地址空间eefiruntimeservicesdata的第一内存分配值,采用历史内存预取信息为内存地址空间efibootservicescode分配0x1000页,0x1000页则可以是针对内存地址空间efibootservicescode的第一内存分配值,采用历史内存预取信息为内存地址空间efibootservicesdata分配0xb000页,0xb000页则可以是针对内存地址空间efibootservicesdata的第一内存分配值。
82.在实际应用中,在bds阶段,该阶段主要是执行启动策略,比如初始化控制台的设备、加载必要的设备驱动和加载、执行启动项。在这个阶段,统计各个类型的内存使用情况,并将数据填入到memorytypeinformation变量中,使用函数countunusablememory()来计算2g以下连续可用的内存地址空间。
83.所以,本发明实施例可以在bds阶段获取启动文件,并确定针对启动文件的数据字节数,当pxe启动文件需要加载到内存中时,可以判断数据字节数是否大于第一内存分配值,从而比较启动文件和可用内存地址空间的大小。
84.当数据字节数大于第一内存分配值时,则本发明实施例可以对内存地址空间进行调整,具体地,可以根据用于表达启动文件大小的数据字节数和第一内存分配值调整第一内存分配值,生成第二内存分配值,其中,第二内存分配值可以大于或等于数据字节数。
85.在计算出第二内存分配值后,本发明实施例可以采用第二内存分配值为内存地址空间分配内存,并在内存地址空间中储存启动文件,以启动网络。
86.示例性地,可以通过第二内存分配值设置mmcfg_base来调整整个dram区域的大小,从而使得连续可用内存地址空间的增多,若第二内存分配值大于或等于数据字节数,则说明当前的内存空间已经能够满足启动文件的需求,能够正常进行启动,所以,本发明实施例可以在采用第二内存分配值为内存地址空间分配内存后,在内存地址空间中储存启动文件,以启动网络。
87.本发明实施例,通过生成内存类型信息表单;内存类型信息表单包括内存类型信息和历史内存预取信息;内存类型信息具有对应的内存地址空间;采用历史内存预取信息为内存地址空间分配内存,并获取针对内存地址空间的第一内存分配值;获取启动文件,并确定针对启动文件的数据字节数;当数据字节数大于第一内存分配值时,根据数据字节数和第一内存分配值调整第一内存分配值,生成第二内存分配值;第二内存分配值大于或等于数据字节数;采用第二内存分配值为内存地址空间分配内存,并在内存地址空间中储存启动文件,以启动网络,从而解决了内存地址空间无法自动适配启动文件大小的问题,进而提升了网络启动效率。
88.在上述实施例的基础上,提出了上述实施例的变型实施例,在此需要说明的是,为了使描述简要,在变型实施例中仅描述与上述实施例的不同之处。
89.在本发明的一个可选地实施例中,所述方法应用于客户端设备,所述客户端设备装载有闪存基本输入输出系统,所述闪存基本输入输出系统配置有非易失性随机存取存储器,所述生成内存类型信息表单的步骤进一步包括:
90.生成内存类型信息表单,并将所述内存类型信息表单存储至所述非易失性随机存
取存储器。
91.在实际应用中,客户端设备通过网络从服务端下载镜像到内存空间,并加载安装启动文件,但由于客户端设备在掉电后,通常会删除内存类型信息表单中的信息,导致无法提取内存类型信息表单中的历史内存预取信息。
92.所以,在具体实现中,本发明实施例可以应用于客户端设备,客户端设备可以是具有网络系统的设备,而本发明实施例可以为客户端设备配置闪存基本输入输出系统bios(basic input output system),闪存基本输入输出系统配置有非易失性随机存取存储器nvram,本发明实施例可以将生成的内存类型信息表单储至非易失性随机存取存储器,即,通过将变量memorytypeinformation存入到bios flash的nvram区域,该区域的数据在掉电之后不会丢失。
93.本发明实施例,天天生成内存类型信息表单,并将所述内存类型信息表单存储至所述非易失性随机存取存储器,从而避免了内存类型信息表单在客户端掉电后被删除,更进一步地提升了网络的启动效率。
94.在本发明的一个可选地实施例中,在所述采用所述历史内存预取信息为所述内存地址空间分配内存,并获取针对所述内存地址空间的第一内存分配值的步骤之前,所述方法还包括:
95.将所述内存类型信息和所述历史内存预取信息以手动挡块形式保存。
96.在具体实现中在pei阶段的后期,内存初始化完成,这时需要为各种类型的内存分配地址空间,以满足后续开机过程中各个设备的使用需求,那么会以上次内存预取的情况进行分配,但由于因为pei阶段会导致数据会被清除,所以,本发明实施例可以将内存类型信息和历史内存预取信息以手动挡块hob的形式建立,从而实现以hob的形式可以保留下来的内存类型信息和历史内存预取信息可以在dxe阶段进行使用。
97.本发明实施例,通过将所述内存类型信息和所述历史内存预取信息以手动挡块形式保存,从而实现以hob的形式可以保留下来的内存类型信息和历史内存预取信息不被删除,可以在dxe阶段进行使用,更进一步地提升了网络的启动效率。
98.在本发明的一个可选地实施例中,所述当所述数据字节数大于所述第一内存分配值时,根据所述数据字节数和所述第一内存分配值调整所述第一内存分配值,生成第二内存分配值的步骤包括:
99.按照预设规则生成多个针对所述内存地址空间的内存值增量档位;所述内存值增量档位具有对应的增量内存分配值;
100.计算所述数据字节数和所述第一内存分配值的差值;
101.通过所述差值从多个所述增量内存值增量档位中确定第一目标档位,并将所述第一目标档位对应的增量内存分配值确定为第二内存分配值;
102.将与所述目标档位对应的内存地址空间确定为目标内存地址空间。
103.在具体实现中,虽然为内存地址空间分配更多的内存空间可以有效的避免启动文件大于内存地址空间,但是,过分的为内存地址空间分配更多的内存空间也会导致内存空间的浪费。
104.本发明实施例可以按照预设规则生成多个针对内存地址空间的内存值增量档位,其中,内存值增量档可以具有对应的增量内存分配值;生成多个针对内存地址空间的内存
值增量档位后,可以计算数据字节数和第一内存分配值的差值,然后通过差值从多个增量内存值增量档位中确定第一目标档位,并将第一目标档位对应的增量内存分配值确定为第二内存分配值。
105.例如,为内存地址空间配置4个内存值增量档位,分别为第一档、第二档、第三档和第四档,其中,内存值增量档可以具有对应的增量内存分配值,具体地,第一档对应的增量内存分配值为2g,第二档对应的增量内存分配值为2.5g,第三档对应的增量内存分配值为3g,第四档对应的增量内存分配值为3.5g;在计算数据字节数和第一内存分配值的差值后,假设差值小于500m,则可以匹配到第一档,并将第一档作为第一目标档位,同时,可以将第一目标档位对应的增量内存分配值2.5g确定为第二内存分配值。又如,假设差值大于500m小于1g,则可以匹配到第三档3g,并将第三档作为第一目标档位,同时,可以将第一目标档位对应的增量内存分配值3g确定为第二内存分配值,依此类推,通过设置mmcfg_base来调整整个dram区域的大小,从而使得连续可用内存地址空间的增多。
106.当然,上述例子仅为示例,本领域技术人员可以按任意增量内存分配值和任意档位数分配针对内存地址空间的内存值增量档位,对此,本发明实施例不作限定。
107.本发明实施例,通过按照预设规则生成多个针对所述内存地址空间的内存值增量档位;所述内存值增量档位具有对应的增量内存分配值;计算所述数据字节数和所述第一内存分配值的差值;通过所述差值从多个所述增量内存值增量档位中确定第一目标档位,并将所述第一目标档位对应的增量内存分配值确定为第二内存分配值,既实现了连续可用内存地址空间的增多,也避免了过分的为内存地址空间分配更多的内存空间也可以导致内存空间的浪费,从而更进一步地提升了启动网络的效率。
108.在本发明的一个可选地实施例中,当所述数据字节数小于所述第一内存分配值时,按照预设规则生成多个针对所述内存地址空间的内存值减量档位;所述内存值减量档位具有对应的减量内存分配值;
109.通过所述差值从多个所述内存值减量档位中确定第二目标档位,并将所述第二目标档位对应的减量内存分配值确定为第三内存分配值;
110.采用所述第三内存分配值为所述内存地址空间分配内存,并在所述内存地址空间中储存所述启动文件,以启动网络。
111.由上可知,虽然为内存地址空间分配更多的内存空间可以有效的避免启动文件大于内存地址空间,但是,过分的为内存地址空间分配更多的内存空间也会导致内存空间的浪费。
112.同理,如果数据字节数原小于第一内存分配值时,若依旧采用历史内存预取信息为内存地址空间分配内存,也会导致内存空间的浪费。
113.本发明实施例可以在数据字节数小于第一内存分配值时,按照预设规则生成多个针对内存地址空间的内存值减量档位,其中,内存值减量档位具有对应的减量内存分配值;在生成多个针对内存地址空间的内存值减量档位后,可以通过差值从多个内存值减量档位中确定出第二目标档位,并将第二目标档位对应的减量内存分配值确定为第三内存分配值,然后可以采用第三内存分配值为内存地址空间分配内存,并在内存地址空间中储存启动文件,以启动网络。
114.例如,为内存地址空间配置4个内存值减量档位,分别为第一档、第二档、第三档和
第四档,其中,内存值减量档可以具有对应的增量内存分配值,具体地,第一档对应的增量内存分配值为2.5g,第二档对应的增量内存分配值为2g,第三档对应的增量内存分配值为1.5g,第四档对应的增量内存分配值为1g;假设当前mmcfg_base的档位为2.5g,在计算数据字节数和第一内存分配值的差值后,假设差值大于-500,则可以匹配到第二档,并将第二档作为第二目标档位,同时,可以将第二目标档位对应的增量内存分配值2g确定为第三内存分配值,然后可以采用第三内存分配值2g为内存地址空间分配内存,并在内存地址空间中储存启动文件,以启动网络。
115.本发明实施例,通过当所述数据字节数小于所述第一内存分配值时,按照预设规则生成多个针对所述内存地址空间的内存值减量档位;所述内存值减量档位具有对应的减量内存分配值;通过所述差值从多个所述内存值减量档位中确定第二目标档位,并将所述第二目标档位对应的减量内存分配值确定为第三内存分配值;采用所述第三内存分配值为所述内存地址空间分配内存,并在所述内存地址空间中储存所述启动文件,以启动网络,既实现了内存地址空间能够被分配到足够的空间以储存启动文件,也避免了过分的为内存地址空间分配更多的内存空间也可以导致内存空间的浪费,从而更进一步地提升了启动网络的效率。
116.为使本领域技术人员更好的理解本发明实施例,以下用一完整示例对本发明实施例进行说明。
117.参考图4,图4是本发明实施例中提供的一种网络启动方法的流程示意图,维护一张记录内存预取情况的表格,通过变量memorytypeinformation存入到bios flash的nvram区域,该区域的数据在掉电之后不会丢失。变量memorytypeinformation包括,内存的类型、上次开机时各类型内存预取的情况、本次开机时各类型内存预取的情况和下一次开机时各类型内存预取情况。通过这一张表格,就能够计算出2g以下的连续可用内存地址空间区域的大小。
118.在pei阶段的后期,内存初始化完成,这时需要为各种类型的内存分配地址空间,以满足后续开机过程中各个设备的使用需求,那么会以上次内存预取的情况进行分配,会将分配情况以hob的形式建立,因为pei阶段的数据会被清除,以hob的形式可以保留下来在dxe阶段进行使用。
119.在dxe阶段,该阶段主要是执行大部分的初始化工作,从功能上来讲,dxe内核负责dxe基础服务和执行流程,dxe派遣器负责调度执行dxe驱动,初始化系统设备。dxe阶段在初始化内存服务时获取在pei创建的hob,根据hob里的各内存类型的分配情况实际分配内存。以上图为例,为efiruntimeservicescode内存类型分配大小为0x250个页,efiruntimeservicesdata分配0x2200页,efibootservicescode分配0x1000页,efibootservicesdata分配0xb000页。
120.在bds阶段,该阶段主要是执行启动策略,比如初始化控制台的设备、加载必要的设备驱动和加载、执行启动项。在这个阶段,统计各个类型的内存使用情况,并将数据填入到memorytypeinformation变量中,使用函数countunusablememory()来计算2g以下连续可用的内存地址空间。当pxe启动文件需要加载到内存中时,会比较启动文件和可用内存地址空间的大小,若启动文件的大小大于可用内存地址空间,则进行调整内存地址空间,具体的方法是:计算启动文件与可用内存地址空间的大小差值,用该差值去匹配mmcfg_base的
档位,mmcfg_base有四个档位(2g、2.5g、3g、3.5g),比如差值小于500m,就会匹配到2.5g,差值大于500m小于1g,就会匹配到3g,依此类推,通过设置mmcfg_base来调整整个dram区域的大小,从而使得连续可用内存地址空间的增多;若启动文件的大小小于可用内存地址空间,说明当前的内存空间已经能够满足启动文件的需求,能够正常进行启动,这时计算可用内存地址空间和启动文件大小的差值,同时检查mmcfg_base的档位,比如当前mmcfg_base的档位为2.5g,差值大于500m,则可以设置mmcfg_base档位为2g。
121.通过上述方式,一方面可以根据当前内存地址空间的使用情况,计算可用内存地址空间,比较pxe启动文件的大小,若不满足则进行动态调整内存地址空间,适用性高,能够解决内存地址空间资源不足的问题,另一方面,通过动态的调整内存地址空间,可以提高内存的使用率。
122.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
123.参照图5,示出了本发明实施例中提供的一种网络启动装置的结构框图,具体可以包括如下模块:
124.内存类型信息表单生成模块501,用于生成内存类型信息表单;所述内存类型信息表单包括内存类型信息和历史内存预取信息;所述内存类型信息具有对应的内存地址空间;
125.第一内存分配值获取模块502,用于采用所述历史内存预取信息为所述内存地址空间分配内存,并获取针对所述内存地址空间的第一内存分配值;
126.数据字节数确定模块503,用于获取启动文件,并确定针对所述启动文件的数据字节数;
127.第二内存分配值生成模块504,用于当所述数据字节数大于所述第一内存分配值时,根据所述数据字节数和所述第一内存分配值调整所述第一内存分配值,生成第二内存分配值;所述第二内存分配值大于或等于所述数据字节数;
128.网络启动模块505,用于采用所述第二内存分配值为所述内存地址空间分配内存,并在所述内存地址空间中储存所述启动文件,以启动网络。
129.可选地,所述装置应用于客户端设备,所述客户端设备装载有闪存基本输入输出系统,所述闪存基本输入输出系统配置有非易失性随机存取存储器,所内存类型信息表单生成模块可以进一步包括:
130.内存类型信息表单生成子模块,用于生成内存类型信息表单,并将所述内存类型信息表单存储至所述非易失性随机存取存储器。
131.可选地,所述装置还可以包括:
132.手动挡块形式保存模块,用于将所述内存类型信息和所述历史内存预取信息以手动挡块形式保存。
133.可选地,所述第二内存分配值生成模块可以包括:
134.内存值增量档位生成子模块,用于按照预设规则生成多个针对所述内存地址空间
的内存值增量档位;所述内存值增量档位具有对应的增量内存分配值;
135.差值计算子模块,用于计算所述数据字节数和所述第一内存分配值的差值;
136.第二内存分配值确定子模块,用于通过所述差值从多个所述增量内存值增量档位中确定第一目标档位,并将所述第一目标档位对应的增量内存分配值确定为第二内存分配值。
137.可选地,还可以包括:
138.内存值减量档位生成子模块,用于在所述数据字节数小于所述第一内存分配值时,按照预设规则生成多个针对所述内存地址空间的内存值减量档位;所述内存值减量档位具有对应的减量内存分配值;
139.第三内存分配值确定子模块,用于通过所述差值从多个所述内存值减量档位中确定第二目标档位,并将所述第二目标档位对应的减量内存分配值确定为第三内存分配值;
140.网络启动子模块,用于采用所述第三内存分配值为所述内存地址空间分配内存,并在所述内存地址空间中储存所述启动文件,以启动网络。
141.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
142.另外,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述网络启动方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
143.本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述网络启动方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等。
144.图6为实现本发明各个实施例的一种电子设备的硬件结构示意图。
145.该电子设备600包括但不限于:射频单元601、网络模块602、音频输出单元603、输入单元604、传感器605、显示单元606、用户输入单元607、接口单元608、存储器609、处理器610、以及电源611等部件。本领域技术人员可以理解,图6中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施例中,电子设备包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。
146.应理解的是,本发明实施例中,射频单元601可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自的下行数据接收后,给处理器610处理;另外,将上行的数据发送给。通常,射频单元601包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元601还可以通过无线通信系统与网络和其他设备通信。
147.电子设备通过网络模块602为用户提供了无线的宽带互联网访问,如帮助用户收发、浏览网页和访问流式媒体等。
148.音频输出单元603可以将射频单元601或网络模块602接收的或者在存储器609中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元603还可以提供与电
子设备600执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元603包括扬声器、蜂鸣器以及受话器等。
149.输入单元604用于接收音频或视频信号。输入单元604可以包括图形处理器(graphics processing unit,gpu)6041和麦克风6042,图形处理器6041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元606上。经图形处理器6041处理后的图像帧可以存储在存储器609(或其它存储介质)中或者经由射频单元601或网络模块602进行发送。麦克风6042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元601发送到移动通信的格式输出。
150.电子设备600还包括至少一种传感器605,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板6061的亮度,接近传感器可在电子设备600移动到耳边时,关闭显示面板6061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器605还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。
151.显示单元606用于显示由用户输入的信息或提供给用户的信息。显示单元606可包括显示面板6061,可以采用液晶显示器(liquid crystal display,lcd)、有机发光二极管(organic light-emitting diode,oled)等形式来配置显示面板6061。
152.用户输入单元607可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元607包括触控面板6071以及其他输入设备6072。触控面板6071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板6071上或在触控面板6071附近的操作)。触控面板6071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器610,接收处理器610发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板6071。除了触控面板6071,用户输入单元607还可以包括其他输入设备6072。具体地,其他输入设备6072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
153.进一步的,触控面板6071可覆盖在显示面板6061上,当触控面板6071检测到在其上或附近的触摸操作后,传送给处理器610以确定触摸事件的类型,随后处理器610根据触摸事件的类型在显示面板6061上提供相应的视觉输出。虽然在图6中,触控面板6071与显示面板6061是作为两个独立的部件来实现电子设备的输入和输出功能,但是在某些实施例中,可以将触控面板6071与显示面板6061集成而实现电子设备的输入和输出功能,具体此处不做限定。
154.接口单元608为外部装置与电子设备600连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端
口、用于连接具有识别模块的装置的端口、音频输入/输出(i/o)端口、视频i/o端口、耳机端口等等。接口单元608可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到电子设备600内的一个或多个元件或者可以用于在电子设备600和外部装置之间传输数据。
155.存储器609可用于存储软件程序以及各种数据。存储器609可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器609可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
156.处理器610是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器609内的软件程序和/或模块,以及调用存储在存储器609内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器610可包括一个或多个处理单元;优选的,处理器610可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器610中。
157.电子设备600还可以包括给各个部件供电的电源611(比如电池),优选的,电源611可以通过电源管理系统与处理器610逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
158.另外,电子设备600包括一些未示出的功能模块,在此不再赘述。
159.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
160.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
161.上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
162.本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
163.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
164.在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
165.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
166.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
167.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
168.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

技术特征:


1.一种网络启动方法,其特征在于,包括:生成内存类型信息表单;所述内存类型信息表单包括内存类型信息和历史内存预取信息;所述内存类型信息具有对应的内存地址空间;采用所述历史内存预取信息为所述内存地址空间分配内存,并获取针对所述内存地址空间的第一内存分配值;获取启动文件,并确定针对所述启动文件的数据字节数;当所述数据字节数大于所述第一内存分配值时,根据所述数据字节数和所述第一内存分配值调整所述第一内存分配值,生成第二内存分配值;所述第二内存分配值大于或等于所述数据字节数;采用所述第二内存分配值为所述内存地址空间分配内存,并在所述内存地址空间中储存所述启动文件,以启动网络。2.根据权利要求1所述的方法,其特征在于,所述方法应用于客户端设备,所述客户端设备装载有闪存基本输入输出系统,所述闪存基本输入输出系统配置有非易失性随机存取存储器,所述生成内存类型信息表单的步骤进一步包括:生成内存类型信息表单,并将所述内存类型信息表单存储至所述非易失性随机存取存储器。3.根据权利要求1或2所述的方法,其特征在于,在所述采用所述历史内存预取信息为所述内存地址空间分配内存,并获取针对所述内存地址空间的第一内存分配值的步骤之前,所述方法还包括:将所述内存类型信息和所述历史内存预取信息以手动挡块形式保存。4.根据权利要求1所述的方法,其特征在于,所述当所述数据字节数大于所述第一内存分配值时,根据所述数据字节数和所述第一内存分配值调整所述第一内存分配值,生成第二内存分配值的步骤包括:按照预设规则生成多个针对所述内存地址空间的内存值增量档位;所述内存值增量档位具有对应的增量内存分配值;计算所述数据字节数和所述第一内存分配值的差值;通过所述差值从多个所述增量内存值增量档位中确定第一目标档位,并将所述第一目标档位对应的增量内存分配值确定为第二内存分配值。5.根据权利要求4所述的方法,其特征在于,还包括:当所述数据字节数小于所述第一内存分配值时,按照预设规则生成多个针对所述内存地址空间的内存值减量档位;所述内存值减量档位具有对应的减量内存分配值;通过所述差值从多个所述内存值减量档位中确定第二目标档位,并将所述第二目标档位对应的减量内存分配值确定为第三内存分配值;采用所述第三内存分配值为所述内存地址空间分配内存,并在所述内存地址空间中储存所述启动文件,以启动网络。6.一种网络启动装置,其特征在于,包括:内存类型信息表单生成模块,用于生成内存类型信息表单;所述内存类型信息表单包括内存类型信息和历史内存预取信息;所述内存类型信息具有对应的内存地址空间;第一内存分配值获取模块,用于采用所述历史内存预取信息为所述内存地址空间分配
内存,并获取针对所述内存地址空间的第一内存分配值;数据字节数确定模块,用于获取启动文件,并确定针对所述启动文件的数据字节数;第二内存分配值生成模块,用于当所述数据字节数大于所述第一内存分配值时,根据所述数据字节数和所述第一内存分配值调整所述第一内存分配值,生成第二内存分配值;所述第二内存分配值大于或等于所述数据字节数;网络启动模块,用于采用所述第二内存分配值为所述内存地址空间分配内存,并在所述内存地址空间中储存所述启动文件,以启动网络。7.根据权利要求6所述的装置,其特征在于,所述第二内存分配值生成模块包括:内存值增量档位生成子模块,用于按照预设规则生成多个针对所述内存地址空间的内存值增量档位;所述内存值增量档位具有对应的增量内存分配值;差值计算子模块,用于计算所述数据字节数和所述第一内存分配值的差值;第二内存分配值确定子模块,用于通过所述差值从多个所述增量内存值增量档位中确定第一目标档位,并将所述第一目标档位对应的增量内存分配值确定为第二内存分配值。8.根据权利要求7所述的装置,其特征在于,还包括:内存值减量档位生成子模块,用于在所述数据字节数小于所述第一内存分配值时,按照预设规则生成多个针对所述内存地址空间的内存值减量档位;所述内存值减量档位具有对应的减量内存分配值;第三内存分配值确定子模块,用于通过所述差值从多个所述内存值减量档位中确定第二目标档位,并将所述第二目标档位对应的减量内存分配值确定为第三内存分配值;网络启动子模块,用于采用所述第三内存分配值为所述内存地址空间分配内存,并在所述内存地址空间中储存所述启动文件,以启动网络。9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;所述存储器,用于存放计算机程序;所述处理器,用于执行存储器上所存放的程序时,实现如权利要求1-5任一项所述的方法。10.一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-5任一项所述的方法。

技术总结


本发明实施例提供了一种网络启动方法、装置、电子设备及存储介质,通过生成内存类型信息表单;内存类型信息具有对应的内存地址空间;采用历史内存预取信息为内存地址空间分配内存,并获取针对内存地址空间的第一内存分配值;获取启动文件,并确定针对启动文件的数据字节数;当数据字节数大于第一内存分配值时,根据数据字节数和第一内存分配值调整第一内存分配值,生成第二内存分配值;第二内存分配值大于或等于数据字节数;采用第二内存分配值为内存地址空间分配内存,并在内存地址空间中储存启动文件,以启动网络,从而解决了内存地址空间无法自动适配启动文件大小的问题,进而提升了网络启动效率。提升了网络启动效率。提升了网络启动效率。


技术研发人员:

侯轲 李婷婷 芦飞

受保护的技术使用者:

苏州浪潮智能科技有限公司

技术研发日:

2022.09.28

技术公布日:

2022/12/23

本文发布于:2024-09-21 08:40:19,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/44170.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:内存   所述   分配   档位
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议