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

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

Info

Publication number
CN117435258B
CN117435258B CN202311742820.3A CN202311742820A CN117435258B CN 117435258 B CN117435258 B CN 117435258B CN 202311742820 A CN202311742820 A CN 202311742820A CN 117435258 B CN117435258 B CN 117435258B
Authority
CN
China
Prior art keywords
operating system
loading
program
segment
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202311742820.3A
Other languages
English (en)
Other versions
CN117435258A (zh
Inventor
何伟宏
尹江荣
伍云云
刘志平
叶楚汉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Midea Robozone Technology Co Ltd
Original Assignee
Midea Robozone Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Midea Robozone Technology Co Ltd filed Critical Midea Robozone Technology Co Ltd
Priority to CN202311742820.3A priority Critical patent/CN117435258B/zh
Publication of CN117435258A publication Critical patent/CN117435258A/zh
Application granted granted Critical
Publication of CN117435258B publication Critical patent/CN117435258B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出了一种系统加载方法及装置、存储介质、计算机程序产品和芯片,涉及计算机技术领域。操作系统加载方法包括:对操作系统的系统符号表进行编码,得到编码后的系统符号表;打包编码后的系统符号表、操作系统的应用逻辑和程序加载组件,得到系统固件;编译生成二进制文件,并对二进制文件进行局部静态链接,得到待加载的程序文件;根据系统固件加载程序文件;其中,系统符号表的编码方式包括哈夫曼编码、香农编码和费诺编码中的至少一种。

Description

系统加载方法及装置、存储介质、计算机程序产品和芯片
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种系统加载方法及装置、存储介质、计算机程序产品和芯片。
背景技术
操作系统的二进制加载技术是指将可执行文件(如程序)从磁盘加载到内存中,并将控制权转移到该程序的入口点,使其开始执行。
然而,目前的二进制加载技术大都是面向大型操作系统,如Windows、Linux等操作系统,对于小型操作系统如RTOS(Real Time Operating System,实时操作系统)嵌入式操作系统,其固件统一,业务代码更新慢,并且内存小,没有虚拟地址的映射,大型操作系统的动态加载方案不适用该小型操作系统。
发明内容
本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。
为此,本发明的第一个方面在于提出一种操作系统加载方法。
本发明的第二个方面在于提出一种操作系统加载装置。
本发明的第三个方面在于提出一种电子设备。
本发明的第四个方面在于提出一种可读存储介质。
本发明的第五个方面在于提出一种计算机程序产品。
本发明的第六个方面在于提出一种芯片。
有鉴于此,根据本发明的一个方面,提出了一种操作系统加载方法,该方法包括:对操作系统的系统符号表进行编码,得到编码后的系统符号表;打包编码后的系统符号表、操作系统的应用逻辑和程序加载组件,得到系统固件;编译生成二进制文件,并对二进制文件进行局部静态链接,得到待加载的程序文件;根据系统固件加载程序文件;其中,系统符号表的编码方式包括哈夫曼编码、香农编码和费诺编码中的至少一种。
本发明提供的操作系统加载方法的技术方案的执行主体可以为电子设备,还可以为操作系统加载装置,还可以根据实际使用需求进行确定,在此不作具体限定。为了更加清楚地描述本发明提供的操作系统加载方法,下面以操作系统加载方法的执行主体为操作系统加载装置进行说明。
具体地,本发明提出的操作系统加载方法包括系统固件准备阶段、程序文件生成阶段以及程序文件执行阶段。在本发明所提供的操作系统加载方法中,在对操作系统进行加载的过程中,在系统固件准备阶段,操作系统加载装置确定并获取操作系统需要导出的系统符号表,以及获取操作系统基本的系统应用逻辑和用于加载执行程序文件的解析加载组件即程序加载组件。在此基础上,操作系统加载装置通过对获取到的系统符号表进行编码,对获取到的系统符号表进行压缩优化,以得到编码后的系统符号表。进一步地,操作系统加载装置对操作系统基本的系统应用逻辑、编码后的系统符号表以及程序文件的解析加载组件进行打包,以打包得到操作系统的系统固件。此时,操作系统的系统固件包含有操作系统基本的系统应用逻辑、压缩优化后的系统符号表以及程序文件的解析加载组件。这样,对系统符号表进行压缩优化后再基于系统符号表确定系统固件,减小了固件端二进制文件的大小,以及减小了程序文件的大小,且能够提高后续查找目标系统符号的效率。
进一步地,在程序文件生成阶段,操作系统加载装置基于操作系统的开发环境开发应用程序,并在开发应用程序之后,通过操作系统的编译工具对应用源码进行编译,并把编译结果输出合并,从而编译得到对应的二进制文件,该二进制文件为可执行程序。进一步地,操作系统加载装置基于局部静态链接方法,对合并后的可执行程序即二进制文件进行预链接,输出得到待加载的程序文件。
进一步地,在程序文件执行阶段,操作系统加载装置基于系统固件中的系统符号表,通过系统固件中的程序文件的解析加载组件对得到的程序文件进行加载,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。并且,对操作系统的工作环境进行了优化,使得操作系统能够在固件不变的情况下,能够快速、高效地执行本地更新存储的或者网络下发的二进制可执行文件,能够使得操作系统的业务代码更新摆脱对设备OTA(Over-the-Air Technology,空中下载技术)的依赖,满足了操作系统的应用业务代码的快速更新和执行,提高了操作系统的工作效率。
根据本发明的上述操作系统加载方法,还可以具有以下附加技术特征:
在一些技术方案中,可选地,对操作系统的系统符号表进行编码,得到编码后的系统符号表,包括:获取系统符号表中的多个第一元组,一个第一元组对应一个系统符号,每个第一元组中包括系统符号的符号名称和物理地址;对每个第一元组中的符号名称进行编码,得到第一编码表;对多个第一元组进行分级,得到多级符号表;对多级符号表中的符号名称进行编码,得到第二编码表;根据第一编码表和第二编码表确定编码后的系统符号表。
在该技术方案中,操作系统加载装置读取系统符号表,以得到系统符号表中的多个第一元组。其中,一个第一元组对应一个系统符号,每个第一元组中包括其对应的一个系统符号的物理地址以及符号名称,系统符号的物理地址具体为系统符号对应的函数地址。也即,在第一元组中,各个系统符号以{符号名称-函数地址}的形式存在。
进一步地,对于每个第一元组中的符号名称,操作系统加载装置对每个符号名称进行编码,以对每个符号名称进行压缩优化,得到第一编码表。进一步地,操作系统加载装置基于每个第一元组中符号名称的前缀信息,对上述多个第一元组进行多级检索分级,以将多个第一元组划分至不同层级的不同元组,从而得到多级符号表。进一步地,操作系统加载装置按照与第一元组中的符号名称相同的编码方式,对多级符号表中的每个符号名称进行编码,得到第二编码表。在此基础上,操作系统加载装置将得到的第二编码表以及第一编码表确定为上述编码后的系统符号表。这样,有别于直接的“符号-地址”的保存方式,通过编码的方式对系统符号表进行压缩优化,并对系统符号表中的系统符号进行多级检索分级,提高了通过系统符号表查找符号的效率,从而提高了后续查找目标系统符号的效率,提高了程序文件的执行加载效率。
在一些技术方案中,可选地,对多个第一元组进行分级,得到多级符号表,包括:根据多个第一元组的前缀信息,对多个第一元组进行分组,得到第一层级的多个第二元组,每个第二元组包括至少一个系统符号和每个系统符号的物理地址;根据多个第二元组的前缀信息,对多个第二元组进行分组,得到第二层级的多个第三元组,每个第三元组包括至少一个第二元组和每个第二元组的物理地址;根据多个第三元组的前缀信息继续对多个第三元组进行递归分组,直至递归分组的结果满足递归停止条件时停止递归,得到多级符号表,其中,N为正整数。
在该技术方案中,操作系统加载装置获取每个第一元组的前缀信息,并将前缀信息相同的第一元组划分至同一个第二元组,以完成对多个第一元组的分组,得到第一层级的多个第二元组。其中,一个第二元组对应至少一个第一元组,每个第二元组中包括其对应的至少一个第一元组中的系统符号和每个系统符号的物理地址,系统符号的物理地址具体为系统符号对应的函数地址。也即,在第二元组中,系统符号以{部分符号名称-函数地址}的形式存在。
进一步地,操作系统加载装置再基于每个第二元组的前缀信息,将前缀信息相同的第二元组划分至同一个第三元组,以完成对多个第二元组的分组,得到第二层级的多个第三元组。其中,一个第三元组对应至少一个第二元组,每个第三元组中包括其对应的至少一个第二元组和每个第二元组的物理地址。在此基础上,操作系统加载装置再基于每个第三元组的前缀信息,继续对第二层级的多个第三元组进行递归分组,以得到下一层级的多个元组,直至递归分组的结果满足预设的递归停止条件时,操作系统加载装置停止对元组的递归分组,并将系统符号表当前的递归分组结果确定为上述多级符号表。这样,对系统符号表进行递归分组,提高了后续基于编码后的系统符号表查找符号的效率,从而提高了后续查找目标系统符号的效率,提高了程序文件的执行加载效率。
在一些技术方案中,可选地,递归停止条件包括以下至少一项:递归分组得到的第N层级中的元组数量位于预设范围之内、递归次数大于或等于次数阈值;其中,N为正整数。
在该技术方案中,上述递归停止条件具体可为递归分组得到的第N层级中的元组数量位于预设范围之内,或者递归停止条件为递归次数大于或等于次数阈值。
可以理解的是,随着对元组的递归分组,后面得到的层级中所包含的元组数量会逐渐减少。基于此,在本发明提出的操作系统加载方法中,在操作系统加载装置每次进行递归分组之后,操作系统加载装置会记录当前的递归次数,并将分组得到的元组数量与预设范围进行比较,在递归分组后得到的第N层级中的元组数量位于预设范围之内的情况下,或者在递归次数大于或等于次数阈值的情况下,操作系统加载装置停止对元组的递归分组,并将系统符号表当前的递归分组结果确定为上述多级符号表。这样,在递归分组的结果满足预设的递归停止条件时停止对系统符号表进行递归分组,在提高后续基于编码后的系统符号表查找符号的效率,从而提高后续查找目标系统符号的效率,提高程序文件的执行加载效率的同时,避免递归次数过多,减少了计算工作量。
在一些技术方案中,可选地,根据系统固件加载程序文件,包括:解析程序文件的信息段,确定程序文件对应的系统符号名称,并为每个信息段分配物理地址;根据系统符号名称和系统固件中的系统符号表,确定目标系统符号;根据目标系统符号和程序文件的信息段,对程序文件进行链接,得到执行文件;根据执行文件构建运行任务,执行运行任务。
在该技术方案中,操作系统加载装置从网络或本地存储区间读取待加载的程序文件,如操作系统加载装置从存储介质或文件系统中读取待加载的程序文件,并对读取到的程序文件的各个信息段进行解析,以解析得到程序文件对应的系统符号名称,并为程序文件的每个信息段分配物理地址,即为程序文件的每个信息段分配内存。进一步地,操作系统加载装置基于解析到的系统符号名称,对程序文件中需要重定向的部分进行符号查找以及重定向运算。具体地,操作系统加载装置基于解析到的系统符号名称,对系统固件中的系统符号表中的各个系统符号进行匹配比较,以查找到程序文件对应的目标系统符号。进一步地,操作系统加载装置根据确定的目标系统符号以及程序文件的信息段,对程序文件进行链接,即对程序文件进行重定向运算,以构造出可执行环境从而得到执行文件。进一步地,操作系统加载装置根据得到的执行文件构建操作系统的运行任务,并通过系统固件中的程序文件的解析加载组件执行构建的运行任务,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,结合操作系统的任务管理机制、内存管理机制以及重定向运算,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。
在一些技术方案中,可选地,对二进制文件进行局部静态链接,得到待加载的程序文件,包括:对二进制文件的信息段进行合并链接,得到二进制文件的第一代码段、第一数据段和第一重定向段;根据第一代码段、第一数据段和第一重定向段进行重定向计算,得到重定向后的第二代码段;根据第一数据段、第二代码段和第一重定向段确定程序文件。
在该技术方案中,操作系统加载装置以代码为单位,编译得到二进制文件的多个信息段,进一步地,操作系统加载装置基于确定的链接脚本,通过链接器对二进制文件的各个信息段进行合并链接,从而得到二进制文件的第一重定向段、第一数据段以及第一代码段。在此基础上,操作系统加载装置基于局部静态链接的方法,根据上述得到的第一重定向段、第一数据段以及第一代码段,对系统符号以及二进制文件的信息段进行重定向计算,并得到重定向后的第二代码段。进一步地,操作系统加载装置对上述第二代码段、第一数据段以及第一重定向段进行打包,得到上述程序文件。这样,在操作系统加载程序文件的过程中,无需对程序文件的代码段和数据段进行重定向运算,加快了程序文件的加载速度,从而提高了操作系统加载效率。
根据本发明的第二个方面,提出了一种操作系统加载装置,该装置包括:处理单元,用于对操作系统的系统符号表进行编码,得到编码后的系统符号表;处理单元,还用于打包编码后的系统符号表、操作系统的应用逻辑和程序加载组件,得到系统固件;处理单元,还用于编译生成二进制文件,并对二进制文件进行局部静态链接,得到待加载的程序文件;处理单元,还用于根据系统固件加载程序文件;其中,系统符号表的编码方式包括哈夫曼编码、香农编码和费诺编码中的至少一种。
本发明提出的操作系统加载装置包括处理单元,通过处理单元加载操作系统的过程包括系统固件准备阶段、程序文件生成阶段以及程序文件执行阶段。具体地,在对操作系统进行加载的过程中,在系统固件准备阶段,处理单元确定并获取操作系统需要导出的系统符号表,以及获取操作系统基本的系统应用逻辑和用于加载执行程序文件的解析加载组件即程序加载组件。在此基础上,处理单元通过对获取到的系统符号表进行编码,对获取到的系统符号表进行压缩优化,以得到编码后的系统符号表。进一步地,处理单元对操作系统基本的系统应用逻辑、编码后的系统符号表以及程序文件的解析加载组件进行打包,以打包得到操作系统的系统固件。此时,操作系统的系统固件包含有操作系统基本的系统应用逻辑、压缩优化后的系统符号表以及程序文件的解析加载组件。这样,对系统符号表进行压缩优化后再基于系统符号表确定系统固件,减小了固件端二进制文件的大小,以及减小了程序文件的大小,且能够提高后续查找目标系统符号的效率。
进一步地,在程序文件生成阶段,处理单元基于操作系统的开发环境开发应用程序,并在开发应用程序之后,通过操作系统的编译工具对应用源码进行编译,并把编译结果输出合并,从而编译得到对应的二进制文件,该二进制文件为可执行程序。进一步地,处理单元基于局部静态链接方法,对合并后的可执行程序即二进制文件进行预链接,输出得到待加载的程序文件。
进一步地,在程序文件执行阶段,处理单元基于系统固件中的系统符号表,通过系统固件中的程序文件的解析加载组件对得到的程序文件进行加载,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。并且,对操作系统的工作环境进行了优化,使得操作系统能够在固件不变的情况下,能够快速、高效地执行本地更新存储的或者网络下发的二进制可执行文件,能够使得操作系统的业务代码更新摆脱对整体设备OTA的依赖,满足了操作系统的应用业务代码的快速更新和执行,提高了操作系统的工作效率。
根据本发明的第三个方面,提出了一种电子设备,包括处理器和存储器,存储器存储可在处理器上运行的程序或指令,程序或指令被处理器执行时实现如上述任一技术方案中的操作系统加载方法的步骤。因此,本发明第三个方面所提出的电子设备具备上述第一个方面任一技术方案中的操作系统加载方法的全部有益效果,在此不再赘述。
根据本发明的第四个方面,提出了一种可读存储介质,其上存储有程序或指令,该程序或指令被处理器执行时实现如上述任一技术方案中的操作系统加载方法。因此,本发明第四个方面所提出的可读存储介质具备上述第一个方面任一技术方案中的操作系统加载方法的全部有益效果,在此不再赘述。
根据本发明的第五个方面,提出了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上述任一技术方案中的操作系统加载方法。因此,本发明第五个方面所提出的计算机程序产品具备上述第一个方面任一技术方案中的操作系统加载方法的全部有益效果,在此不再赘述。
根据本发明的第六个方面,提出了一种芯片,芯片包括程序或指令,当芯片运行时,用于实现如上述任一技术方案中的操作系统加载方法的步骤。因此,本发明第六个方面所提出的芯片具备上述第一个方面任一技术方案中的操作系统加载方法的全部有益效果,在此不再赘述。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了本发明实施例的操作系统加载方法的流程示意图之一;
图2示出了本发明实施例的操作系统加载方法的流程示意图之二;
图3示出了本发明实施例的操作系统加载方法的流程示意图之三;
图4示出了本发明实施例的操作系统加载方法的流程示意图之四;
图5示出了本发明实施例的操作系统加载方法的原理图之一;
图6示出了本发明实施例的操作系统加载方法的原理图之二;
图7示出了本发明实施例的操作系统加载装置的结构框图;
图8示出了本发明实施例的电子设备的结构框图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不限于下面公开的具体实施例的限制。
下面结合图1至图8,通过具体的实施例及其应用场景对本申请实施例提供的系统加载方法及装置、存储介质、计算机程序产品和芯片进行详细地说明。
在本发明的一个实施例中,如图1所示,操作系统加载方法具体可包括下述的步骤102至步骤108:
步骤102,对操作系统的系统符号表进行编码,得到编码后的系统符号表;
步骤104,打包编码后的系统符号表、操作系统的应用逻辑和程序加载组件,得到系统固件;
步骤106,编译生成二进制文件,并对二进制文件进行局部静态链接,得到待加载的程序文件;
步骤108,根据系统固件加载程序文件;
其中,系统符号表的编码方式包括费诺编码、香农编码以及哈夫曼编码中的至少一种。
本发明提供的操作系统加载方法的技术方案的执行主体可以为电子设备,还可以为操作系统加载装置,还可以根据实际使用需求进行确定,在此不作具体限定。为了更加清楚地描述本发明提供的操作系统加载方法,下面以操作系统加载方法的执行主体为操作系统加载装置进行说明。
本发明提供的操作系统加载方法,用于在小型操作系统如RTOS嵌入式操作系统上实现二进制加载技术,以使小型操作系统如RTOS嵌入式操作系统可完成二进制文件的加载和执行。
其中,RTOS是一个免费、开源、实时的操作系统内核,RTOS为小型实时嵌入式操作系统,其对资源要求低,一般用于低资源的硬件平台。进一步地,RTOS具有简单易用、可移植性、可定制性、高效性以及可靠性等优点,RTOS被广泛应用于嵌入式系统中,例如智能家居、汽车、医疗设备以及航空航天等领域的嵌入式系统。
进一步地,RTOS嵌入式操作系统的系统代码和业务代码都是静态链接在一起,其固件统一,并且,RTOS嵌入式操作系统的启动参数、执行参数以及偏移参数等关键参数也是和固件打包阶段的参数紧密相关。这样,导致了RTOS嵌入式操作系统的业务代码不能快速更新,RTOS嵌入式操作系统一有更新就必须要对其所在的整个设备进行OTA操作。进一步地,RTOS嵌入式操作系统一般是低成本的平台,其内存小,没有虚拟地址的映射,目前基于大型操作系统如Linux系统和Windows系统的二进制文件动态加载方案不适用于RTOS嵌入式操作系统等低成本的平台。
因此,本发明提出一种操作系统加载方法,该操作系统加载方法包括系统固件准备阶段、程序文件生成阶段以及程序文件执行阶段。具体地,在本发明所提供的操作系统加载方法中,在对小型操作系统如RTOS嵌入式操作系统进行加载的过程中,在系统固件准备阶段,如图5所示,操作系统加载装置确定并获取操作系统需要导出的系统符号表,以及获取操作系统基本的系统应用逻辑和用于加载执行程序文件的解析加载组件即程序加载组件。在此基础上,操作系统加载装置通过对获取到的系统符号表进行编码,对获取到的系统符号表进行压缩优化,以得到编码后的系统符号表。在此基础上,操作系统加载装置对操作系统基本的系统应用逻辑、编码后的系统符号表以及程序文件的解析加载组件进行打包,以打包得到操作系统的系统固件。此时,操作系统的系统固件包含有操作系统基本的系统应用逻辑、压缩优化后的系统符号表以及程序文件的解析加载组件。这样,对系统符号表进行压缩优化后再基于系统符号表确定系统固件,减小了固件端二进制文件的大小,以及减小了程序文件的大小,且能够提高后续查找目标系统符号的效率。
进一步地,在程序文件生成阶段,如图5所示,操作系统加载装置基于操作系统的开发环境开发应用程序,并在开发应用程序之后,通过操作系统的编译工具对应用源码进行编译,并把编译结果输出合并,从而编译得到对应的二进制文件,该二进制文件为可执行程序。进一步地,操作系统加载装置基于局部静态链接方法,对合并后的可执行程序即二进制文件进行预链接,输出得到待加载的程序文件如ELF(Executable and LinkableFormat,可执行与可链接格式)程序文件。
进一步地,在程序文件执行阶段,操作系统加载装置基于系统固件中的系统符号表,通过系统固件中的程序文件的解析加载组件对得到的程序文件进行加载,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。并且,对操作系统的工作环境进行了优化,使得操作系统能够在固件不变的情况下,能够快速、高效地执行本地更新存储的或者网络下发的二进制可执行文件,能够使得操作系统的业务代码更新摆脱对整体设备OTA的依赖,满足了操作系统的应用业务代码的快速更新和执行,提高了操作系统的工作效率。
其中,上述操作系统具体可为RTOS嵌入式操作系统等小型操作系统,在此不作具体限制。
进一步地,上述程序文件具体可为ELF程序文件,ELF是一种用于二进制文件、可执行文件、目标代码、共享库以及核心转储格式文件的文件格式,ELF程序文件包括代码段、数据段、符号表等。程序文件的具体类型根据操作系统的类型确定,在此不作具体限制。
进一步地,二进制文件为高级语言代码编译后产生的可在CPU(CentralProcessing Unit,中央处理器)中运行的文件。
进一步地,系统固件包含操作系统所在设备运行的正常功能逻辑的全部二进制文件。
进一步地,链接是一种根据二进制文件实际运行的地址,把编译出来的分离的二进制文件进行重定向计算的操作。
在实际的应用过程中,上述系统符号表的编码方式包括但不限于:哈夫曼编码、香农编码以及费诺编码等编码方式。对于上述系统符号表的具体编码方式,本领域技术人员可根据实际情况进行设置,在此不作具体限制。
在本发明的一些实施例中,可选地,如图2所示,上述步骤108具体可包括下述的步骤108a至步骤108d:
步骤108a,解析程序文件的信息段,确定程序文件对应的系统符号名称,并为每个信息段分配物理地址;
步骤108b,根据系统符号名称和系统固件中的系统符号表,确定目标系统符号;
步骤108c,根据目标系统符号和程序文件的信息段,对程序文件进行链接,得到执行文件;
步骤108d,根据执行文件构建运行任务,执行运行任务。
在该实施例中,在程序文件执行阶段,如图5所示,在操作系统加载装置根据系统固件对得到的程序文件进行加载的过程中,具体地,操作系统加载装置从网络或本地存储区间读取待加载的程序文件如ELF程序,如操作系统加载装置从存储介质或文件系统中读取待加载的程序文件,并对读取到的程序文件的各个信息段进行解析,以解析得到程序文件对应的系统符号名称,并为程序文件的每个信息段分配物理地址,即为程序文件的每个信息段分配内存。进一步地,操作系统加载装置基于解析到的系统符号名称,对程序文件中需要重定向的部分进行符号查找以及重定向运算。具体地,操作系统加载装置基于解析到的系统符号名称,对系统固件中的系统符号表中的各个系统符号进行匹配比较,以查找到程序文件对应的目标系统符号。
进一步地,操作系统加载装置根据确定的目标系统符号以及程序文件的信息段,对程序文件进行链接,即对程序文件进行重定向运算,以构造出可执行环境从而得到执行文件。进一步地,操作系统加载装置根据得到的执行文件构建操作系统的运行任务,并通过系统固件中的程序文件的解析加载组件执行构建的运行任务,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,结合操作系统的任务管理机制、内存管理机制以及重定向运算,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。
其中,物理地址为CPU能访问、执行的实际内存地址。
在本发明的一些实施例中,可选地,如图3所示,上述步骤102具体可包括下述的步骤102a至步骤102e:
步骤102a,获取系统符号表中的多个第一元组;
步骤102b,对每个第一元组中的符号名称进行编码,得到第一编码表;
步骤102c,对多个第一元组进行分级,得到多级符号表;
步骤102d,对多级符号表中的符号名称进行编码,得到第二编码表;
步骤102e,根据第一编码表和第二编码表确定编码后的系统符号表;
其中,一个第一元组对应一个系统符号,每个第一元组中包括系统符号的符号名称和物理地址。
在该实施例中,在操作系统加载装置通过对获取到的系统符号表进行编码,对获取到的系统符号表进行压缩优化,以得到编码后的系统符号表的过程中,具体地,操作系统加载装置读取系统符号表,以得到系统符号表中的多个第一元组。其中,一个第一元组对应一个系统符号,每个第一元组中包括其对应的一个系统符号的物理地址以及符号名称,系统符号的物理地址具体为系统符号对应的函数地址。也即,在第一元组中,各个系统符号以{符号名称-函数地址}的形式存在。
进一步地,对于每个第一元组中的符号名称,操作系统加载装置对每个符号名称进行编码,以对每个符号名称进行压缩优化,得到第一编码表。进一步地,操作系统加载装置基于每个第一元组中符号名称的前缀信息,对上述多个第一元组进行多级检索分级,以将多个第一元组划分至不同层级的不同元组,从而得到多级符号表。进一步地,操作系统加载装置按照与第一元组中的符号名称相同的编码方式,对多级符号表中的每个符号名称进行编码,得到第二编码表。在此基础上,操作系统加载装置将得到的第二编码表以及第一编码表确定为上述编码后的系统符号表。这样,有别于直接的“符号-地址”的保存方式,通过编码的方式对系统符号表进行压缩优化,并对系统符号表中的系统符号进行多级检索分级,提高了通过系统符号表查找符号的效率,从而提高了后续查找目标系统符号的效率,提高了程序文件的执行加载效率。
在实际的应用过程中,上述第一元组中的符号名称的编码方式包括但不限于:哈夫曼编码、香农编码以及费诺编码等编码方式。对于上述第一元组中的符号名称的具体编码方式,本领域技术人员可根据实际情况进行设置,在此不作具体限制。
在本发明的一些实施例中,可选地,如图4所示,上述步骤102c具体可包括下述的步骤118至步骤122:
步骤118,根据多个第一元组的前缀信息,对多个第一元组进行分组,得到第一层级的多个第二元组;
步骤120,根据多个第二元组的前缀信息,对多个第二元组进行分组,得到第二层级的多个第三元组;
步骤122,根据多个第三元组的前缀信息继续对多个第三元组进行递归分组,直至递归分组的结果满足递归停止条件时停止递归,得到多级符号表;
其中,每个第二元组包括至少一个系统符号和每个系统符号的物理地址;每个第三元组包括至少一个第二元组和每个第二元组的物理地址。
在该实施例中,在操作系统加载装置基于每个第一元组中符号名称的前缀信息,对上述多个第一元组进行多级检索分级,以将多个第一元组划分至不同层级的不同元组,从而得到多级符号表的过程中,具体地,操作系统加载装置获取每个第一元组的前缀信息,并将前缀信息相同的第一元组划分至同一个第二元组,以完成对多个第一元组的分组,得到第一层级的多个第二元组。其中,一个第二元组对应至少一个第一元组,每个第二元组中包括其对应的至少一个第一元组中的系统符号和每个系统符号的物理地址,系统符号的物理地址具体为系统符号对应的函数地址。也即,在第二元组中,系统符号以{部分符号名称-函数地址}的形式存在。
进一步地,操作系统加载装置再基于每个第二元组的前缀信息,将前缀信息相同的第二元组划分至同一个第三元组,以完成对多个第二元组的分组,得到第二层级的多个第三元组。其中,一个第三元组对应至少一个第二元组,每个第三元组中包括其对应的至少一个第二元组和每个第二元组的物理地址。在此基础上,操作系统加载装置再基于每个第三元组的前缀信息,继续对第二层级的多个第三元组进行递归分组,以得到下一层级的多个元组,直至递归分组的结果满足预设的递归停止条件时,操作系统加载装置停止对元组的递归分组,并将系统符号表当前的递归分组结果确定为上述多级符号表。这样,对系统符号表进行递归分组,提高了后续基于编码后的系统符号表查找符号的效率,从而提高了后续查找目标系统符号的效率,提高了程序文件的执行加载效率。
另外,在实际的应用过程中,除根据前缀信息对系统符号表中的系统符号进行递归分级之外,操作系统加载装置还可采用其他分级方式对系统符号表中的系统符号进行分级。例如,基于用户自定义的分级规则对系统符号表中的系统符号进行分级,或者,基于系统符号的符号名称对系统符号表中的系统符号进行分级,或者,基于系统符号的物理地址对系统符号表中的系统符号进行分级。对于系统符号的分级方式,本领域技术人员可根据实际情况进行设置,在此不作具体限制。
在本发明的一些实施例中,可选地,上述递归停止条件包括以下至少一项:递归分组得到的第N层级中的元组数量位于预设范围之内、递归次数大于或等于次数阈值;其中,N为正整数。
在该实施例中,上述递归停止条件具体可为递归分组得到的第N层级中的元组数量位于预设范围之内,或者递归停止条件为递归次数大于或等于次数阈值。
可以理解的是,随着对元组的递归分组,后面得到的层级中所包含的元组数量会逐渐减少。基于此,在本发明提出的操作系统加载方法中,在操作系统加载装置每次进行递归分组之后,操作系统加载装置会记录当前的递归次数,并将分组得到的元组数量与预设范围进行比较,在递归分组后得到的第N层级中的元组数量位于预设范围之内的情况下,或者在递归次数大于或等于次数阈值的情况下,操作系统加载装置停止对元组的递归分组,并将系统符号表当前的递归分组结果确定为上述多级符号表。这样,在递归分组的结果满足预设的递归停止条件时停止对系统符号表进行递归分组,在提高后续基于编码后的系统符号表查找符号的效率,从而提高后续查找目标系统符号的效率,提高程序文件的执行加载效率的同时,避免递归次数过多,减少了计算工作量。
其中,上述预设范围的取值范围具体可为10至15。在实际的应用过程中,对于上述预设范围的具体范围,本领域技术人员可根据实际情况进行设置,在此不作具体限制。
进一步地,上述次数阈值可根据系统符号的数量确定,还可由用户自定义设置。对于上述次数阈值的具体取值,本领域技术人员可根据实际情况进行设置,在此不作具体限制。
在本发明的一些实施例中,可选地,上述对二进制文件进行局部静态链接,得到待加载的程序文件的步骤,具体可包括下述的步骤106a至步骤106c:
步骤106a,对二进制文件的信息段进行合并链接,得到二进制文件的第一代码段、第一数据段和第一重定向段;
步骤106b,根据第一代码段、第一数据段和第一重定向段进行重定向计算,得到重定向后的第二代码段;
步骤106c,根据第一数据段、第二代码段和第一重定向段确定程序文件。
在该实施例中,在操作系统加载装置基于局部静态链接方法,对合并后的可执行程序即二进制文件进行预链接,输出得到待加载的程序文件,具体地,如图6所示,操作系统加载装置以代码为单位,编译得到二进制文件的多个信息段,进一步地,操作系统加载装置基于确定的链接脚本,通过链接器对二进制文件的各个信息段进行合并链接,从而得到二进制文件的第一重定向段、第一数据段以及第一代码段。在此基础上,操作系统加载装置基于局部静态链接的方法,根据上述得到的第一重定向段、第一数据段以及第一代码段,对系统符号以及二进制文件的信息段进行重定向计算,并得到重定向后的第二代码段。进一步地,操作系统加载装置对上述第二代码段、第一数据段以及第一重定向段进行打包,得到上述程序文件。这样,在操作系统加载程序文件的过程中,无需对程序文件的代码段和数据段进行重定向运算,加快了程序文件的加载速度,从而提高了操作系统加载效率。
其中,操作系统加载装置在对系统符号以及二进制文件的信息段进行重定向计算的过程中,操作系统加载装置对同一信息段里面的系统符号进行静态链接,并删除对应的重定向信息。进一步地,操作系统加载装置对多信息段内的系统符号进行段地址编排,并根据编排后的偏移信息对多信息段内的系统符号进行静态链接,同时删除对应的重定向信息。进一步地,对于系统符号,操作系统加载装置保留其重新定向信息,以便后续用于对程序文件的运行态链接。这样,不存在动态链接的方式,也不对外提供动态链接系统符号的特性,通过局部静态链接的方法进行链接,加快了程序文件的加载速度,以及减少了程序文件中的重定向段的大小。
需要说明的是,上述操作系统加载方法可根据特定的特征和/或示例应用而采用各种不同的方式进行实施。例如,上述操作系统加载方法可以通过硬件、固件以及/或软件的组合来实施。例如,在硬件实施中,处理器可以在一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器、电子设备、其他用于执行上述功能的设备单元和/或它们的组合中实现。
在本发明的一个实施例中,还提出了一种操作系统加载装置。如图7所示,图7示出了本发明实施例的操作系统加载装置700的结构框图。其中,该操作系统加载装置700具体可包括下述的处理单元702:
处理单元702,用于对操作系统的系统符号表进行编码,得到编码后的系统符号表;
处理单元702,还用于打包编码后的系统符号表、操作系统的应用逻辑和程序加载组件,得到系统固件;
处理单元702,还用于编译生成二进制文件,并对二进制文件进行局部静态链接,得到待加载的程序文件;
处理单元702,还用于根据系统固件加载程序文件;
其中,系统符号表的编码方式包括哈夫曼编码、香农编码和费诺编码中的至少一种。
本发明实施例提供的操作系统加载装置700,用于在小型操作系统如RTOS嵌入式操作系统上实现二进制加载技术,以使小型操作系统如RTOS嵌入式操作系统可完成二进制文件的加载和执行。
具体地,本发明提出的操作系统加载装置700包括处理单元702,通过处理单元702加载操作系统的过程包括系统固件准备阶段、程序文件生成阶段以及程序文件执行阶段。具体地,在对小型操作系统如RTOS嵌入式操作系统进行加载的过程中,在系统固件准备阶段,处理单元702确定并获取操作系统需要导出的系统符号表,以及获取操作系统基本的系统应用逻辑和用于加载执行程序文件的解析加载组件即程序加载组件。在此基础上,处理单元702通过对获取到的系统符号表进行编码,对获取到的系统符号表进行压缩优化,以得到编码后的系统符号表。在此基础上,处理单元702对操作系统基本的系统应用逻辑、编码后的系统符号表以及程序文件的解析加载组件进行打包,以打包得到操作系统的系统固件。此时,操作系统的系统固件包含有操作系统基本的系统应用逻辑、压缩优化后的系统符号表以及程序文件的解析加载组件。这样,对系统符号表进行压缩优化后再基于系统符号表确定系统固件,减小了固件端二进制文件的大小,以及减小了程序文件的大小,且能够提高后续查找目标系统符号的效率。
进一步地,在程序文件生成阶段,处理单元702基于操作系统的开发环境开发应用程序,并在开发应用程序之后,通过操作系统的编译工具对应用源码进行编译,并把编译结果输出合并,从而编译得到对应的二进制文件,该二进制文件为可执行程序。进一步地,处理单元702基于局部静态链接方法,对合并后的可执行程序即二进制文件进行预链接,输出得到待加载的程序文件如ELF程序。
进一步地,在程序文件执行阶段,处理单元702基于系统固件中的系统符号表,通过系统固件中的程序文件的解析加载组件对得到的程序文件进行加载,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。并且,对操作系统的工作环境进行了优化,使得操作系统能够在固件不变的情况下,能够快速、高效地执行本地更新存储的或者网络下发的二进制可执行文件,能够使得操作系统的业务代码更新摆脱对整体OTA的依赖,满足了操作系统的应用业务代码的快速更新和执行,提高了操作系统的工作效率。
其中,上述操作系统具体可为RTOS嵌入式操作系统等小型操作系统,在此不作具体限制。
进一步地,上述程序文件具体可为ELF程序文件,程序文件的具体类型根据操作系统的类型确定,在此不作具体限制。
在本发明的一些实施例中,可选地,处理单元702具体用于:解析程序文件的信息段,确定程序文件对应的系统符号名称,并为每个信息段分配物理地址;根据系统符号名称和系统固件中的系统符号表,确定目标系统符号;根据目标系统符号和程序文件的信息段,对程序文件进行链接,得到执行文件;根据执行文件构建运行任务,执行运行任务。
在本发明的一些实施例中,可选地,处理单元702具体用于:获取系统符号表中的多个第一元组,一个第一元组对应一个系统符号,每个第一元组中包括系统符号的符号名称和物理地址;对每个第一元组中的符号名称进行编码,得到第一编码表;对多个第一元组进行分级,得到多级符号表;对多级符号表中的符号名称进行编码,得到第二编码表;根据第一编码表和第二编码表确定编码后的系统符号表。
在本发明的一些实施例中,可选地,处理单元702具体用于:根据多个第一元组的前缀信息,对多个第一元组进行分组,得到第一层级的多个第二元组,每个第二元组包括至少一个系统符号和每个系统符号的物理地址;根据多个第二元组的前缀信息,对多个第二元组进行分组,得到第二层级的多个第三元组,每个第三元组包括至少一个第二元组和每个第二元组的物理地址;根据多个第三元组的前缀信息继续对多个第三元组进行递归分组,直至递归分组的结果满足递归停止条件时停止递归,得到多级符号表,其中,N为正整数。
在本发明的一些实施例中,可选地,递归停止条件包括以下至少一项:递归分组得到的第N层级中的元组数量位于预设范围之内、递归次数大于或等于次数阈值;其中,N为正整数。
在本发明的一些实施例中,可选地,处理单元702具体用于:对二进制文件的信息段进行合并链接,得到二进制文件的第一代码段、第一数据段和第一重定向段;根据第一代码段、第一数据段和第一重定向段进行重定向计算,得到重定向后的第二代码段;根据第一数据段、第二代码段和第一重定向段确定程序文件。
在本发明的一个实施例中,还提出了一种电子设备。如图8所示,图8示出了本发明实施例提供的电子设备800的结构框图。其中,该电子设备800包括:
存储器802,存储器802上存储有程序或指令;
处理器804,处理器804执行上述程序或指令时实现如上述任一实施例中的操作系统加载方法的步骤。
本实施例提供的电子设备800包括存储器802和处理器804,存储器802中的程序或指令被处理器804执行时实现如上述任一实施例中的操作系统加载方法的步骤,因此该电子设备800具备上述任一实施例中的操作系统加载方法的全部有益效果,在此不再赘述。
具体地,存储器802和处理器804可以通过总线或者其它方式连接。处理器804可包括一个或多个处理单元,处理器804可以为中央处理器(Central Processing Unit,CPU)、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable GateArray,FPGA)等芯片。
本发明第四方面的实施例,提出了一种可读存储介质。其上存储有程序或指令,程序或指令被处理器执行时实现如上述任一实施例中的操作系统加载方法的步骤。
本发明实施例提供的可读存储介质,其存储的程序或指令被处理器执行时,可实现如上述任一实施例中的操作系统加载方法的步骤。因此,该可读存储介质具备上述任一实施例中的操作系统加载方法的全部有益效果,在此不再赘述。
具体地,上述可读存储介质可以包括能够存储或传输信息的任何介质。可读存储介质的例子包括电子电路、半导体存储器设备、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、光盘只读存储器(Compact Disc Read-OnlyMemory,CD-ROM)、闪存、可擦除ROM(EROM)、磁带、软盘、光盘、硬盘、光纤介质、射频(RF)链路、光数据存储设备等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
具体地,上述可读存储介质可以是一种有形设备,它可以保留和存储供指令执行设备使用的指令。计算机可读存储介质可以是电子存储设备、磁存储设备、光学存储设备、电磁存储设备、半导体存储设备或者上述设备的任何适当组合,但不限于此。具体地,上述可读存储介质的更具体示例的非详尽列表包括:便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字化通用磁盘(DVD)、存储卡、软盘、编码机械设备(例如穿孔卡片或具有记录有指令的凸起结构的凹槽)以及上述设备的任何适当组合。此处使用的可读存储介质并不应被理解为传输信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输媒体传播的电磁波,或通过电线传输的电信号等。
本发明第五方面的实施例,提出了一种计算机程序产品,其包括计算机程序,该计算机程序被处理器执行时实现如上述任一实施例中的操作系统加载方法。因此,本发明第五个方面所提出的计算机程序产品具备上述第一个方面任一实施例中的操作系统加载方法的全部有益效果,在此不再赘述。
在实际的应用过程中,上述计算机程序产品包括但不限于:智能手机、台式电脑、笔记本电脑、平板电脑、智能手表、上位机以及服务器平台等,在此不作具体限制。
本发明第六方面的实施例,提出了一种芯片,芯片包括程序或指令,当芯片运行时,用于实现如上述任一实施例中的操作系统加载方法的步骤。因此,本发明第六个方面所提出的芯片具备上述第一个方面任一实施例中的操作系统加载方法的全部有益效果,在此不再赘述。
在本说明书的描述中,术语“第一”、“第二”仅用于描述的目的,而不能理解为指示或暗示相对重要性,除非另有明确的规定和限定;术语“连接”、“安装”、“固定”等均应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本说明书的描述中,术语“一个实施例”、“一些实施例”、“具体实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或实例。而且,描述的具体特征、结构、材料或特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
另外,本发明各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种操作系统加载方法,其特征在于,所述加载方法包括:
对操作系统的系统符号表进行编码,得到编码后的系统符号表;
打包编码后的所述系统符号表、所述操作系统的应用逻辑和程序加载组件,得到系统固件;
对应用源码进行编译生成二进制文件,并对所述二进制文件进行局部静态链接,得到待加载的程序文件;
根据所述系统固件加载所述程序文件;
其中,所述系统符号表的编码方式包括哈夫曼编码、香农编码和费诺编码中的至少一种,所述程序加载组件为用于加载执行程序文件的解析加载组件;
所述对所述二进制文件进行局部静态链接,得到待加载的程序文件,包括:
对所述二进制文件的信息段进行合并链接,得到所述二进制文件的第一代码段、第一数据段和第一重定向段;
根据所述第一代码段、所述第一数据段和所述第一重定向段进行重定向计算,得到重定向后的第二代码段;
根据所述第一数据段、所述第二代码段和所述第一重定向段确定所述程序文件。
2.根据权利要求1所述的操作系统加载方法,其特征在于,所述对操作系统的系统符号表进行编码,得到编码后的系统符号表,包括:
获取所述系统符号表中的多个第一元组,一个所述第一元组对应一个系统符号,每个所述第一元组中包括系统符号的符号名称和物理地址;
对每个所述第一元组中的符号名称进行编码,得到第一编码表;
对多个所述第一元组进行分级,得到多级符号表;
对所述多级符号表中的符号名称进行编码,得到第二编码表;
根据所述第一编码表和所述第二编码表确定编码后的所述系统符号表。
3.根据权利要求2所述的操作系统加载方法,其特征在于,所述对多个所述第一元组进行分级,得到多级符号表,包括:
根据多个所述第一元组的前缀信息,对多个所述第一元组进行分组,得到第一层级的多个第二元组,每个所述第二元组包括至少一个系统符号和每个所述系统符号的物理地址;
根据多个所述第二元组的前缀信息,对多个所述第二元组进行分组,得到第二层级的多个第三元组,每个所述第三元组包括至少一个所述第二元组和每个所述第二元组的物理地址;
根据多个所述第三元组的前缀信息继续对多个所述第三元组进行递归分组,直至递归分组的结果满足递归停止条件时停止递归,得到所述多级符号表。
4.根据权利要求3所述的操作系统加载方法,其特征在于,所述递归停止条件包括以下至少一项:递归分组得到的第N层级中的元组数量位于预设范围之内、递归次数大于或等于次数阈值;其中,N为正整数。
5.根据权利要求1至4中任一项所述的操作系统加载方法,其特征在于,所述根据所述系统固件加载所述程序文件,包括:
解析所述程序文件的信息段,确定所述程序文件对应的系统符号名称,并为每个信息段分配物理地址;
根据所述系统符号名称和所述系统固件中的所述系统符号表,确定目标系统符号;
根据所述目标系统符号和所述程序文件的信息段,对所述程序文件进行链接,得到执行文件;
根据所述执行文件构建运行任务,执行所述运行任务。
6.根据权利要求1至4中任一项所述的操作系统加载方法,其特征在于,所述对所述二进制文件进行局部静态链接,得到待加载的程序文件,包括:
对所述二进制文件的信息段进行合并链接,得到所述二进制文件的第一代码段、第一数据段和第一重定向段;
根据所述第一代码段、所述第一数据段和所述第一重定向段进行重定向计算,得到重定向后的第二代码段;
根据所述第一数据段、所述第二代码段和所述第一重定向段确定所述程序文件,其中,所述第一重定向段中仅保留系统符号的重定向信息。
7.一种操作系统加载装置,其特征在于,所述加载装置包括:
处理单元,用于对操作系统的系统符号表进行编码,得到编码后的系统符号表;
所述处理单元,还用于打包编码后的所述系统符号表、所述操作系统的应用逻辑和程序加载组件,得到系统固件;
所述处理单元,还用于对应用源码进行编译生成二进制文件,并对所述二进制文件进行局部静态链接,得到待加载的程序文件;
所述处理单元,还用于根据所述系统固件加载所述程序文件;
其中,所述系统符号表的编码方式包括哈夫曼编码、香农编码和费诺编码中的至少一种,所述程序加载组件为用于加载执行程序文件的解析加载组件;
所述处理单元具体用于:对所述二进制文件的信息段进行合并链接,得到所述二进制文件的第一代码段、第一数据段和第一重定向段;根据所述第一代码段、所述第一数据段和所述第一重定向段进行重定向计算,得到重定向后的第二代码段;根据所述第一数据段、所述第二代码段和所述第一重定向段确定所述程序文件。
8.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1至6中任一项所述的操作系统加载方法的步骤。
9.一种可读存储介质,其特征在于,所述可读存储介质上存储有程序或指令,所述程序或指令被处理器执行时实现如权利要求1至6中任一项所述的操作系统加载方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的操作系统加载方法的步骤。
11.一种芯片,其特征在于,所述芯片包括程序或指令,当所述芯片运行时,用于实现如权利要求1至6中任一项所述的操作系统加载方法的步骤。
CN202311742820.3A 2023-12-18 2023-12-18 系统加载方法及装置、存储介质、计算机程序产品和芯片 Active CN117435258B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311742820.3A CN117435258B (zh) 2023-12-18 2023-12-18 系统加载方法及装置、存储介质、计算机程序产品和芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311742820.3A CN117435258B (zh) 2023-12-18 2023-12-18 系统加载方法及装置、存储介质、计算机程序产品和芯片

Publications (2)

Publication Number Publication Date
CN117435258A CN117435258A (zh) 2024-01-23
CN117435258B true CN117435258B (zh) 2024-03-08

Family

ID=89551870

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311742820.3A Active CN117435258B (zh) 2023-12-18 2023-12-18 系统加载方法及装置、存储介质、计算机程序产品和芯片

Country Status (1)

Country Link
CN (1) CN117435258B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113641378A (zh) * 2021-07-13 2021-11-12 烽火通信科技股份有限公司 光模块程序升级方法、装置、设备及可读存储介质
CN114840214A (zh) * 2022-05-05 2022-08-02 阿里巴巴(中国)有限公司 程序编译和启动方法、设备及存储介质
CN115328454A (zh) * 2021-05-10 2022-11-11 阿里云计算有限公司 程序编译和程序加载方法
CN117193872A (zh) * 2023-08-28 2023-12-08 杭州极钛微电子有限公司 一种基于符号表动态执行的芯片启动固件装置和方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115328454A (zh) * 2021-05-10 2022-11-11 阿里云计算有限公司 程序编译和程序加载方法
CN113641378A (zh) * 2021-07-13 2021-11-12 烽火通信科技股份有限公司 光模块程序升级方法、装置、设备及可读存储介质
CN114840214A (zh) * 2022-05-05 2022-08-02 阿里巴巴(中国)有限公司 程序编译和启动方法、设备及存储介质
CN117193872A (zh) * 2023-08-28 2023-12-08 杭州极钛微电子有限公司 一种基于符号表动态执行的芯片启动固件装置和方法

Also Published As

Publication number Publication date
CN117435258A (zh) 2024-01-23

Similar Documents

Publication Publication Date Title
CN110990019B (zh) 一种Java类分析方法、装置、存储介质及电子设备
US10613844B2 (en) Using comments of a program to provide optimizations
US20120130977A1 (en) Dynamic language checking
CN1869937A (zh) 生成方法的系统与方法
US5960197A (en) Compiler dispatch function for object-oriented C
CN110688096B (zh) 包含插件的应用程序的构建方法、装置、介质及电子设备
CN106775781B (zh) 减小应用安装包的方法、装置及电子设备
CN111240689A (zh) 应用程序的构建方法、装置、设备及存储介质
CN113296786B (zh) 数据处理方法、装置、电子设备及存储介质
CN111880777A (zh) 程序信息下发方法、装置、电子设备
CN112463303A (zh) Java虚拟机类加载方法及系统
CN108845864B (zh) 一种基于spring框架的JVM垃圾回收方法和装置
CN112269566B (zh) 脚本生成处理方法、装置、设备及系统
CN117435258B (zh) 系统加载方法及装置、存储介质、计算机程序产品和芯片
CN105094857A (zh) 用于应用加载的方法和系统
AU2016378425B2 (en) Application program running method and apparatus
CN117435257B (zh) 系统加载方法及装置、存储介质、计算机程序产品和芯片
US10684873B2 (en) Efficient data decoding using runtime specialization
CN117421056B (zh) 系统加载方法及装置、存储介质、计算机程序产品和芯片
CN113721928B (zh) 一种基于二进制分析的动态库裁剪方法
CN113141407B (zh) 一种页面资源加载方法、装置和电子设备
CN112650502A (zh) 批处理任务处理方法、装置、计算机设备和存储介质
EP4196874A1 (en) Representing asynchronous state machine in intermediate code
CN111580799A (zh) 领域特定语言脚本拼装方法及系统
CN110895597B (zh) 转码逻辑函数计算方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant