系统加载方法及装置、存储介质、计算机程序产品和芯片与流程

文档序号:36813376发布日期:2024-01-26 16:16阅读:11来源:国知局
系统加载方法及装置、存储介质、计算机程序产品和芯片与流程

本发明涉及计算机,具体而言,涉及一种系统加载方法及装置、存储介质、计算机程序产品和芯片。


背景技术:

1、操作系统的二进制加载技术是指将可执行文件(如程序)从磁盘加载到内存中,并将控制权转移到该程序的入口点,使其开始执行。

2、然而,目前的二进制加载技术大都是面向大型操作系统,如windows、linux等操作系统,对于小型操作系统如rtos(real time operating system,实时操作系统)嵌入式操作系统,其固件统一,业务代码更新慢,并且内存小,没有虚拟地址的映射,大型操作系统的动态加载方案不适用该小型操作系统。


技术实现思路

1、本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。

2、为此,本发明的第一个方面在于提出一种操作系统加载方法。

3、本发明的第二个方面在于提出一种操作系统加载装置。

4、本发明的第三个方面在于提出一种电子设备。

5、本发明的第四个方面在于提出一种可读存储介质。

6、本发明的第五个方面在于提出一种计算机程序产品。

7、本发明的第六个方面在于提出一种芯片。

8、有鉴于此,根据本发明的一个方面,提出了一种操作系统加载方法,该方法包括:对操作系统的系统符号表进行编码,得到编码后的系统符号表;打包编码后的系统符号表、操作系统的应用逻辑和程序加载组件,得到系统固件;编译生成二进制文件,并对二进制文件进行局部静态链接,得到待加载的程序文件;根据系统固件加载程序文件;其中,系统符号表的编码方式包括哈夫曼编码、香农编码和费诺编码中的至少一种。

9、本发明提供的操作系统加载方法的技术方案的执行主体可以为电子设备,还可以为操作系统加载装置,还可以根据实际使用需求进行确定,在此不作具体限定。为了更加清楚地描述本发明提供的操作系统加载方法,下面以操作系统加载方法的执行主体为操作系统加载装置进行说明。

10、具体地,本发明提出的操作系统加载方法包括系统固件准备阶段、程序文件生成阶段以及程序文件执行阶段。在本发明所提供的操作系统加载方法中,在对操作系统进行加载的过程中,在系统固件准备阶段,操作系统加载装置确定并获取操作系统需要导出的系统符号表,以及获取操作系统基本的系统应用逻辑和用于加载执行程序文件的解析加载组件即程序加载组件。在此基础上,操作系统加载装置通过对获取到的系统符号表进行编码,对获取到的系统符号表进行压缩优化,以得到编码后的系统符号表。进一步地,操作系统加载装置对操作系统基本的系统应用逻辑、编码后的系统符号表以及程序文件的解析加载组件进行打包,以打包得到操作系统的系统固件。此时,操作系统的系统固件包含有操作系统基本的系统应用逻辑、压缩优化后的系统符号表以及程序文件的解析加载组件。这样,对系统符号表进行压缩优化后再基于系统符号表确定系统固件,减小了固件端二进制文件的大小,以及减小了程序文件的大小,且能够提高后续查找目标系统符号的效率。

11、进一步地,在程序文件生成阶段,操作系统加载装置基于操作系统的开发环境开发应用程序,并在开发应用程序之后,通过操作系统的编译工具对应用源码进行编译,并把编译结果输出合并,从而编译得到对应的二进制文件,该二进制文件为可执行程序。进一步地,操作系统加载装置基于局部静态链接方法,对合并后的可执行程序即二进制文件进行预链接,输出得到待加载的程序文件。

12、进一步地,在程序文件执行阶段,操作系统加载装置基于系统固件中的系统符号表,通过系统固件中的程序文件的解析加载组件对得到的程序文件进行加载,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。并且,对操作系统的工作环境进行了优化,使得操作系统能够在固件不变的情况下,能够快速、高效地执行本地更新存储的或者网络下发的二进制可执行文件,能够使得操作系统的业务代码更新摆脱对设备ota(over-the-air technology,空中下载技术)的依赖,满足了操作系统的应用业务代码的快速更新和执行,提高了操作系统的工作效率。

13、根据本发明的上述操作系统加载方法,还可以具有以下附加技术特征:

14、在一些技术方案中,可选地,对操作系统的系统符号表进行编码,得到编码后的系统符号表,包括:获取系统符号表中的多个第一元组,一个第一元组对应一个系统符号,每个第一元组中包括系统符号的符号名称和物理地址;对每个第一元组中的符号名称进行编码,得到第一编码表;对多个第一元组进行分级,得到多级符号表;对多级符号表中的符号名称进行编码,得到第二编码表;根据第一编码表和第二编码表确定编码后的系统符号表。

15、在该技术方案中,操作系统加载装置读取系统符号表,以得到系统符号表中的多个第一元组。其中,一个第一元组对应一个系统符号,每个第一元组中包括其对应的一个系统符号的物理地址以及符号名称,系统符号的物理地址具体为系统符号对应的函数地址。也即,在第一元组中,各个系统符号以{符号名称-函数地址}的形式存在。

16、进一步地,对于每个第一元组中的符号名称,操作系统加载装置对每个符号名称进行编码,以对每个符号名称进行压缩优化,得到第一编码表。进一步地,操作系统加载装置基于每个第一元组中符号名称的前缀信息,对上述多个第一元组进行多级检索分级,以将多个第一元组划分至不同层级的不同元组,从而得到多级符号表。进一步地,操作系统加载装置按照与第一元组中的符号名称相同的编码方式,对多级符号表中的每个符号名称进行编码,得到第二编码表。在此基础上,操作系统加载装置将得到的第二编码表以及第一编码表确定为上述编码后的系统符号表。这样,有别于直接的“符号-地址”的保存方式,通过编码的方式对系统符号表进行压缩优化,并对系统符号表中的系统符号进行多级检索分级,提高了通过系统符号表查找符号的效率,从而提高了后续查找目标系统符号的效率,提高了程序文件的执行加载效率。

17、在一些技术方案中,可选地,对多个第一元组进行分级,得到多级符号表,包括:根据多个第一元组的前缀信息,对多个第一元组进行分组,得到第一层级的多个第二元组,每个第二元组包括至少一个系统符号和每个系统符号的物理地址;根据多个第二元组的前缀信息,对多个第二元组进行分组,得到第二层级的多个第三元组,每个第三元组包括至少一个第二元组和每个第二元组的物理地址;根据多个第三元组的前缀信息继续对多个第三元组进行递归分组,直至递归分组的结果满足递归停止条件时停止递归,得到多级符号表,其中,n为正整数。

18、在该技术方案中,操作系统加载装置获取每个第一元组的前缀信息,并将前缀信息相同的第一元组划分至同一个第二元组,以完成对多个第一元组的分组,得到第一层级的多个第二元组。其中,一个第二元组对应至少一个第一元组,每个第二元组中包括其对应的至少一个第一元组中的系统符号和每个系统符号的物理地址,系统符号的物理地址具体为系统符号对应的函数地址。也即,在第二元组中,系统符号以{部分符号名称-函数地址}的形式存在。

19、进一步地,操作系统加载装置再基于每个第二元组的前缀信息,将前缀信息相同的第二元组划分至同一个第三元组,以完成对多个第二元组的分组,得到第二层级的多个第三元组。其中,一个第三元组对应至少一个第二元组,每个第三元组中包括其对应的至少一个第二元组和每个第二元组的物理地址。在此基础上,操作系统加载装置再基于每个第三元组的前缀信息,继续对第二层级的多个第三元组进行递归分组,以得到下一层级的多个元组,直至递归分组的结果满足预设的递归停止条件时,操作系统加载装置停止对元组的递归分组,并将系统符号表当前的递归分组结果确定为上述多级符号表。这样,对系统符号表进行递归分组,提高了后续基于编码后的系统符号表查找符号的效率,从而提高了后续查找目标系统符号的效率,提高了程序文件的执行加载效率。

20、在一些技术方案中,可选地,递归停止条件包括以下至少一项:递归分组得到的第n层级中的元组数量位于预设范围之内、递归次数大于或等于次数阈值;其中,n为正整数。

21、在该技术方案中,上述递归停止条件具体可为递归分组得到的第n层级中的元组数量位于预设范围之内,或者递归停止条件为递归次数大于或等于次数阈值。

22、可以理解的是,随着对元组的递归分组,后面得到的层级中所包含的元组数量会逐渐减少。基于此,在本发明提出的操作系统加载方法中,在操作系统加载装置每次进行递归分组之后,操作系统加载装置会记录当前的递归次数,并将分组得到的元组数量与预设范围进行比较,在递归分组后得到的第n层级中的元组数量位于预设范围之内的情况下,或者在递归次数大于或等于次数阈值的情况下,操作系统加载装置停止对元组的递归分组,并将系统符号表当前的递归分组结果确定为上述多级符号表。这样,在递归分组的结果满足预设的递归停止条件时停止对系统符号表进行递归分组,在提高后续基于编码后的系统符号表查找符号的效率,从而提高后续查找目标系统符号的效率,提高程序文件的执行加载效率的同时,避免递归次数过多,减少了计算工作量。

23、在一些技术方案中,可选地,根据系统固件加载程序文件,包括:解析程序文件的信息段,确定程序文件对应的系统符号名称,并为每个信息段分配物理地址;根据系统符号名称和系统固件中的系统符号表,确定目标系统符号;根据目标系统符号和程序文件的信息段,对程序文件进行链接,得到执行文件;根据执行文件构建运行任务,执行运行任务。

24、在该技术方案中,操作系统加载装置从网络或本地存储区间读取待加载的程序文件,如操作系统加载装置从存储介质或文件系统中读取待加载的程序文件,并对读取到的程序文件的各个信息段进行解析,以解析得到程序文件对应的系统符号名称,并为程序文件的每个信息段分配物理地址,即为程序文件的每个信息段分配内存。进一步地,操作系统加载装置基于解析到的系统符号名称,对程序文件中需要重定向的部分进行符号查找以及重定向运算。具体地,操作系统加载装置基于解析到的系统符号名称,对系统固件中的系统符号表中的各个系统符号进行匹配比较,以查找到程序文件对应的目标系统符号。进一步地,操作系统加载装置根据确定的目标系统符号以及程序文件的信息段,对程序文件进行链接,即对程序文件进行重定向运算,以构造出可执行环境从而得到执行文件。进一步地,操作系统加载装置根据得到的执行文件构建操作系统的运行任务,并通过系统固件中的程序文件的解析加载组件执行构建的运行任务,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,结合操作系统的任务管理机制、内存管理机制以及重定向运算,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。

25、在一些技术方案中,可选地,对二进制文件进行局部静态链接,得到待加载的程序文件,包括:对二进制文件的信息段进行合并链接,得到二进制文件的第一代码段、第一数据段和第一重定向段;根据第一代码段、第一数据段和第一重定向段进行重定向计算,得到重定向后的第二代码段;根据第一数据段、第二代码段和第一重定向段确定程序文件。

26、在该技术方案中,操作系统加载装置以代码为单位,编译得到二进制文件的多个信息段,进一步地,操作系统加载装置基于确定的链接脚本,通过链接器对二进制文件的各个信息段进行合并链接,从而得到二进制文件的第一重定向段、第一数据段以及第一代码段。在此基础上,操作系统加载装置基于局部静态链接的方法,根据上述得到的第一重定向段、第一数据段以及第一代码段,对系统符号以及二进制文件的信息段进行重定向计算,并得到重定向后的第二代码段。进一步地,操作系统加载装置对上述第二代码段、第一数据段以及第一重定向段进行打包,得到上述程序文件。这样,在操作系统加载程序文件的过程中,无需对程序文件的代码段和数据段进行重定向运算,加快了程序文件的加载速度,从而提高了操作系统加载效率。

27、根据本发明的第二个方面,提出了一种操作系统加载装置,该装置包括:处理单元,用于对操作系统的系统符号表进行编码,得到编码后的系统符号表;处理单元,还用于打包编码后的系统符号表、操作系统的应用逻辑和程序加载组件,得到系统固件;处理单元,还用于编译生成二进制文件,并对二进制文件进行局部静态链接,得到待加载的程序文件;处理单元,还用于根据系统固件加载程序文件;其中,系统符号表的编码方式包括哈夫曼编码、香农编码和费诺编码中的至少一种。

28、本发明提出的操作系统加载装置包括处理单元,通过处理单元加载操作系统的过程包括系统固件准备阶段、程序文件生成阶段以及程序文件执行阶段。具体地,在对操作系统进行加载的过程中,在系统固件准备阶段,处理单元确定并获取操作系统需要导出的系统符号表,以及获取操作系统基本的系统应用逻辑和用于加载执行程序文件的解析加载组件即程序加载组件。在此基础上,处理单元通过对获取到的系统符号表进行编码,对获取到的系统符号表进行压缩优化,以得到编码后的系统符号表。进一步地,处理单元对操作系统基本的系统应用逻辑、编码后的系统符号表以及程序文件的解析加载组件进行打包,以打包得到操作系统的系统固件。此时,操作系统的系统固件包含有操作系统基本的系统应用逻辑、压缩优化后的系统符号表以及程序文件的解析加载组件。这样,对系统符号表进行压缩优化后再基于系统符号表确定系统固件,减小了固件端二进制文件的大小,以及减小了程序文件的大小,且能够提高后续查找目标系统符号的效率。

29、进一步地,在程序文件生成阶段,处理单元基于操作系统的开发环境开发应用程序,并在开发应用程序之后,通过操作系统的编译工具对应用源码进行编译,并把编译结果输出合并,从而编译得到对应的二进制文件,该二进制文件为可执行程序。进一步地,处理单元基于局部静态链接方法,对合并后的可执行程序即二进制文件进行预链接,输出得到待加载的程序文件。

30、进一步地,在程序文件执行阶段,处理单元基于系统固件中的系统符号表,通过系统固件中的程序文件的解析加载组件对得到的程序文件进行加载,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。并且,对操作系统的工作环境进行了优化,使得操作系统能够在固件不变的情况下,能够快速、高效地执行本地更新存储的或者网络下发的二进制可执行文件,能够使得操作系统的业务代码更新摆脱对整体设备ota的依赖,满足了操作系统的应用业务代码的快速更新和执行,提高了操作系统的工作效率。

31、根据本发明的第三个方面,提出了一种电子设备,包括处理器和存储器,存储器存储可在处理器上运行的程序或指令,程序或指令被处理器执行时实现如上述任一技术方案中的操作系统加载方法的步骤。因此,本发明第三个方面所提出的电子设备具备上述第一个方面任一技术方案中的操作系统加载方法的全部有益效果,在此不再赘述。

32、根据本发明的第四个方面,提出了一种可读存储介质,其上存储有程序或指令,该程序或指令被处理器执行时实现如上述任一技术方案中的操作系统加载方法。因此,本发明第四个方面所提出的可读存储介质具备上述第一个方面任一技术方案中的操作系统加载方法的全部有益效果,在此不再赘述。

33、根据本发明的第五个方面,提出了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上述任一技术方案中的操作系统加载方法。因此,本发明第五个方面所提出的计算机程序产品具备上述第一个方面任一技术方案中的操作系统加载方法的全部有益效果,在此不再赘述。

34、根据本发明的第六个方面,提出了一种芯片,芯片包括程序或指令,当芯片运行时,用于实现如上述任一技术方案中的操作系统加载方法的步骤。因此,本发明第六个方面所提出的芯片具备上述第一个方面任一技术方案中的操作系统加载方法的全部有益效果,在此不再赘述。

35、本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1