CN117421056B - 系统加载方法及装置、存储介质、计算机程序产品和芯片 - Google Patents
系统加载方法及装置、存储介质、计算机程序产品和芯片 Download PDFInfo
- Publication number
- CN117421056B CN117421056B CN202311742841.5A CN202311742841A CN117421056B CN 117421056 B CN117421056 B CN 117421056B CN 202311742841 A CN202311742841 A CN 202311742841A CN 117421056 B CN117421056 B CN 117421056B
- Authority
- CN
- China
- Prior art keywords
- file
- operating system
- program file
- program
- loading
- 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
Links
- 238000011068 loading method Methods 0.000 title claims abstract description 238
- 238000004590 computer program Methods 0.000 title claims abstract description 15
- 230000003068 static effect Effects 0.000 claims abstract description 22
- 238000012545 processing Methods 0.000 claims description 40
- 230000015654 memory Effects 0.000 claims description 36
- 238000011084 recovery Methods 0.000 claims description 26
- 238000004064 recycling Methods 0.000 claims description 10
- 238000012795 verification Methods 0.000 claims description 4
- 238000000034 method Methods 0.000 description 27
- 238000004458 analytical method Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 12
- 230000006835 compression Effects 0.000 description 11
- 238000007906 compression Methods 0.000 description 11
- 238000005457 optimization Methods 0.000 description 11
- 238000002360 preparation method Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
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)
Abstract
本发明提出了一种系统加载方法及装置、存储介质、计算机程序产品和芯片,涉及计算机技术领域。操作系统加载方法包括:根据操作系统的系统符号表、应用逻辑和程序加载组件确定系统固件;编译生成二进制文件,并对二进制文件进行局部静态链接,得到待加载的程序文件;根据系统固件加载程序文件。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种系统加载方法及装置、存储介质、计算机程序产品和芯片。
背景技术
操作系统的二进制加载技术是指将可执行文件(如程序)从磁盘加载到内存中,并将控制权转移到该程序的入口点,使其开始执行。
然而,目前的二进制加载技术大都是面向大型操作系统,如Windows、Linux等操作系统,对于小型操作系统如RTOS(Real Time Operating System,实时操作系统)嵌入式操作系统,其固件统一,业务代码更新慢,并且内存小,没有虚拟地址的映射,大型操作系统的动态加载方案不适用该小型操作系统。
发明内容
本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。
为此,本发明的第一个方面在于提出一种操作系统加载方法。
本发明的第二个方面在于提出一种操作系统加载装置。
本发明的第三个方面在于提出一种电子设备。
本发明的第四个方面在于提出一种可读存储介质。
本发明的第五个方面在于提出一种计算机程序产品。
本发明的第六个方面在于提出一种芯片。
有鉴于此,根据本发明的一个方面,提出了一种操作系统加载方法,该方法包括:根据操作系统的系统符号表、应用逻辑和程序加载组件确定系统固件;编译生成二进制文件,并对二进制文件进行局部静态链接,得到待加载的程序文件;根据系统固件加载程序文件。
本发明提供的操作系统加载方法的技术方案的执行主体可以为电子设备,还可以为操作系统加载装置,还可以根据实际使用需求进行确定,在此不作具体限定。为了更加清楚地描述本发明提供的操作系统加载方法,下面以操作系统加载方法的执行主体为操作系统加载装置进行说明。
具体地,本发明提出的操作系统加载方法包括系统固件准备阶段、程序文件生成阶段以及程序文件执行阶段。在本发明所提供的操作系统加载方法中,在对操作系统进行加载的过程中,在系统固件准备阶段,操作系统加载装置确定并获取操作系统需要导出的系统符号表,以及获取操作系统基本的系统应用逻辑和用于加载执行程序文件的解析加载组件即程序加载组件。在此基础上,操作系统加载装置对获取到的系统符号表进行压缩优化,并基于操作系统基本的系统应用逻辑、压缩优化后的系统符号表以及程序文件的解析加载组件,打包得到操作系统的系统固件。此时,操作系统的系统固件包含有操作系统基本的系统应用逻辑、压缩优化后的系统符号表以及程序文件的解析加载组件。
进一步地,在程序文件生成阶段,操作系统加载装置基于操作系统的开发环境开发应用程序,并在开发应用程序之后,通过操作系统的编译工具对应用源码进行编译,并把编译结果输出合并,从而编译得到对应的二进制文件,该二进制文件为可执行程序。进一步地,操作系统加载装置基于局部静态链接方法,对合并后的可执行程序即二进制文件进行预链接,输出得到待加载的程序文件。
进一步地,在程序文件执行阶段,操作系统加载装置基于系统固件中的系统符号表,通过系统固件中的程序文件的解析加载组件对得到的程序文件进行加载,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。并且,对操作系统的工作环境进行了优化,使得操作系统能够在固件不变的情况下,能够快速、高效地执行本地更新存储的或者网络下发的二进制可执行文件,能够使得操作系统的业务代码更新摆脱对整体设备OTA(Over-the-AirTechnology,空中下载技术)的依赖,满足了操作系统的应用业务代码的快速更新和执行,提高了操作系统的工作效率。
根据本发明的上述操作系统加载方法,还可以具有以下附加技术特征:
在一些技术方案中,可选地,根据系统固件加载程序文件,包括:解析程序文件的信息段,确定程序文件对应的系统符号名称,并为每个信息段分配物理地址;根据系统符号名称和系统固件中的系统符号表,确定目标系统符号;根据目标系统符号和程序文件的信息段,对程序文件进行链接,得到执行文件;根据执行文件构建运行任务,执行运行任务。
在该技术方案中,操作系统加载装置从网络或本地存储区间读取待加载的程序文件,如操作系统加载装置从存储介质或文件系统中读取待加载的程序文件,并对读取到的程序文件的各个信息段进行解析,以解析得到程序文件对应的系统符号名称,并为程序文件的每个信息段分配物理地址,即为程序文件的每个信息段分配内存。进一步地,操作系统加载装置基于解析到的系统符号名称,对程序文件中需要重定向的部分进行符号查找以及重定向运算。具体地,操作系统加载装置基于解析到的系统符号名称,对系统固件中的系统符号表中的各个系统符号进行匹配比较,以查找到程序文件对应的目标系统符号。进一步地,操作系统加载装置根据确定的目标系统符号以及程序文件的信息段,对程序文件进行链接,即对程序文件进行重定向运算,以构造出可执行环境从而得到执行文件。进一步地,操作系统加载装置根据得到的执行文件构建操作系统的运行任务,并通过系统固件中的程序文件的解析加载组件执行构建的运行任务,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,结合操作系统的任务管理机制、内存管理机制以及重定向运算,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。
在一些技术方案中,可选地,解析程序文件的信息段,包括:根据程序文件的调用信息分离或合并程序文件的信息段。
在该技术方案中,在操作系统加载装置对读取到的程序文件的各个信息段进行解析的过程中,操作系统加载装置根据程序文件的调用信息,也即操作系统加载装置根据该程序文件后续是否需要被调用,分离或合并程序文件的信息段。这样,基于程序文件的调用信息解析程序文件的各个信息段,提高了后续调用程序文件的效率。
在一些技术方案中,可选地,根据系统符号名称和系统固件中的系统符号表,确定目标系统符号,包括:对系统符号名称进行编码;根据编码后的系统符号名称,对系统固件中的系统符号表进行递归比较,确定目标系统符号。
在该技术方案中,操作系统加载装置根据对系统符号表进行压缩优化时的编码方式,对解析到的系统符号名称进行编码。在此基础上,操作系统加载装置基于编码后的系统符号名称,对系统固件中的系统符号表进行递归比较,以将编码后的系统符号名称与系统符号表中的各个系统符号的名称进行匹配比较,从而找到程序文件对应的目标系统符号。这样,通过对系统固件中的系统符号表进行递归比较,查找到程序文件对应的目标系统符号,提高了目标系统符号的查找效率,从而提高了程序文件的执行效率,提高了操作系统的加载效率。
在一些技术方案中,可选地,信息段包括代码段、数据段和重定向段,根据目标系统符号和程序文件的信息段,对程序文件进行链接,得到执行文件,包括:根据程序文件中的重定向段,对程序文件中的代码段和数据段的物理地址进行链接,以及对目标系统符号的物理地址进行链接,得到执行文件。
在该技术方案中,程序文件的信息段具体可包括代码段、重定向段以及数据段。在此基础上,操作系统加载装置利用程序文件中的重定向段,对程序文件进行运行态链接,以完成在程序文件生成阶段时局部静态链接中预留的链接部分。具体地,操作系统加载装置对程序文件中的代码段和数据段的物理地址进行链接,以及对目标系统符号的物理地址进行链接,从而得到上述执行文件。这样,通过对程序文件的代码段、数据段以及目标系统符号进行二次链接得到执行文件,保证了得到的执行文件的准确性,保证了后续程序文件执行的准确性和效率。
在一些技术方案中,可选地,根据执行文件构建运行任务,执行运行任务,包括:对执行文件进行分析,得到栈信息和程序入口信息;根据栈信息和程序入口信息构建运行任务;根据操作系统的运行参数执行运行任务。
在该技术方案中,操作系统加载装置对得到的执行文件进行代码分析,以得到程序文件的程序入口信息以及栈信息,该栈信息具体为栈的占用信息。在此基础上,操作系统加载装置根据得到的程序入口信息以及栈信息,构建操作系统的运行任务。进一步地,操作系统加载装置获取操作系统的运行参数,并基于获取到的运行参数执行上述构建的运行任务,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。
在一些技术方案中,可选地,执行运行任务之后,加载方法还包括:根据程序文件的调用信息确定回收力度,回收力度用于指示执行文件的资源回收程度;根据回收力度对执行文件进行回收。
在该技术方案中,在程序文件执行阶段,在操作系统加载装置基于获取到的操作系统的运行参数执行构建的运行任务之后,操作系统加载装置还会基于程序文件的调用信息,确定上述构造出的可执行环境即执行文件的回收力度,该回收力度用于指示已执行完毕的执行文件的资源回收程度。在此基础上,操作系统加载装置基于确定的回收力度对已执行完毕的执行文件进行回收,以基于程序文件的调用信息对已执行完毕的执行文件进行不同回收程度的资源回收。这样,基于程序文件的调用信息对已执行完毕的执行文件进行不同回收程度的资源回收,提高了后续调用程序文件的效率。
在一些技术方案中,可选地,解析程序文件的信息段之前,加载方法还包括:对程序文件的文件格式和指令集进行验证;解析程序文件的信息段,包括:在程序文件验证通过的情况下,解析程序文件的信息段。
在该技术方案中,在操作系统加载装置对读取到的程序文件的各个信息段进行解析之前,操作系统加载装置还会对读取到的程序文件进行指令集检测以及文件格式检测,以验证读取到的程序文件的指令结构以及文件格式是否与电子设备所支持的指令结构和基本格式相匹配。在此基础上,在读取到的程序文件验证通过的情况下,也即在读取到的程序文件的指令结构以及文件格式与电子设备所支持的指令结构和基本格式相匹配的情况下,操作系统加载装置才对读取到的程序文件的各个信息段进行解析,以解析得到程序文件对应的系统符号名称,并为程序文件的每个信息段分配物理地址。这样,程序文件的指令结构以及文件格式与电子设备所支持的指令结构和基本格式相匹配的情况下,才对读取到的程序文件的各个信息段进行解析,避免了做无用功,提高了操作系统加载的效率。
在一些技术方案中,可选地,根据操作系统的系统符号表、应用逻辑和程序加载组件确定系统固件,包括:对系统符号表进行编码,得到编码后的系统符号表;打包编码后的系统符号表、应用逻辑和程序加载组件,得到系统固件。
在该技术方案中,操作系统加载装置通过对获取到的系统符号表进行编码,对获取到的系统符号表进行压缩优化,以得到编码后的系统符号表。在此基础上,操作系统加载装置对操作系统基本的系统应用逻辑、编码后的系统符号表以及程序文件的解析加载组件进行打包,以打包得到操作系统的系统固件。这样,对系统符号表进行压缩优化再基于系统符号表确定系统固件,减小了固件端二进制文件的大小,以及减小了程序文件的大小,且能够提高后续查找目标系统符号的效率。
在一些技术方案中,可选地,对二进制文件进行局部静态链接,得到待加载的程序文件,包括:对二进制文件的信息段进行合并链接,得到二进制文件的第一代码段、第一数据段和第一重定向段;根据第一代码段、第一数据段和第一重定向段进行重定向计算,得到重定向后的第二代码段;根据第一数据段、第二代码段和第一重定向段确定程序文件。
在该技术方案中,操作系统加载装置以代码为单位,编译得到二进制文件的多个信息段,进一步地,操作系统加载装置基于确定的链接脚本,通过链接器对二进制文件的各个信息段进行合并链接,从而得到二进制文件的第一重定向段、第一数据段以及第一代码段。在此基础上,操作系统加载装置基于局部静态链接的方法,根据上述得到的第一重定向段、第一数据段以及第一代码段,对系统符号以及二进制文件的信息段进行重定向计算,并得到重定向后的第二代码段。进一步地,操作系统加载装置对上述第二代码段、第一数据段以及第一重定向段进行打包,得到上述程序文件。这样,在操作系统加载程序文件的过程中,无需对程序文件的代码段和数据段进行重定向运算,加快了程序文件的加载速度,从而提高了操作系统的加载效率。
根据本发明的第二个方面,提出了一种操作系统加载装置,该装置包括:处理单元,用于根据操作系统的系统符号表、应用逻辑和程序加载组件确定系统固件;处理单元,还用于编译生成二进制文件,并对二进制文件进行局部静态链接,得到待加载的程序文件;处理单元,还用于根据系统固件加载程序文件。
本发明提出的操作系统加载装置包括处理单元,通过处理单元加载操作系统的过程包括系统固件准备阶段、程序文件生成阶段以及程序文件执行阶段。具体地,在对操作系统进行加载的过程中,在系统固件准备阶段,处理单元确定并获取操作系统需要导出的系统符号表,以及获取操作系统基本的系统应用逻辑和用于加载执行程序文件的解析加载组件即程序加载组件。在此基础上,处理单元对获取到的系统符号表进行压缩优化,并基于操作系统基本的系统应用逻辑、压缩优化后的系统符号表以及程序文件的解析加载组件,打包得到操作系统的系统固件。此时,操作系统的系统固件包含有操作系统基本的系统应用逻辑、压缩优化后的系统符号表以及程序文件的解析加载组件。
进一步地,在程序文件生成阶段,处理单元基于操作系统的开发环境开发应用程序,并在开发应用程序之后,通过操作系统的编译工具对应用源码进行编译,并把编译结果输出合并,从而编译得到对应的二进制文件,该二进制文件为可执行程序。进一步地,处理单元基于局部静态链接方法,对合并后的可执行程序即二进制文件进行预链接,输出得到待加载的程序文件。
进一步地,在程序文件执行阶段,处理单元基于系统固件中的系统符号表,通过系统固件中的程序文件的解析加载组件对得到的程序文件进行加载,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。并且,对操作系统的工作环境进行了优化,使得操作系统能够在固件不变的情况下,能够快速、高效地执行本地更新存储的或者网络下发的二进制可执行文件,能够使得操作系统的业务代码更新摆脱对系统OTA的依赖,满足了操作系统的应用业务代码的快速更新和执行,提高了操作系统的工作效率。
根据本发明的第三个方面,提出了一种电子设备,包括处理器和存储器,存储器存储可在处理器上运行的程序或指令,程序或指令被处理器执行时实现如上述任一技术方案中的操作系统加载方法的步骤。因此,本发明第三个方面所提出的电子设备具备上述第一个方面任一技术方案中的操作系统加载方法的全部有益效果,在此不再赘述。
根据本发明的第四个方面,提出了一种可读存储介质,其上存储有程序或指令,该程序或指令被处理器执行时实现如上述任一技术方案中的操作系统加载方法。因此,本发明第四个方面所提出的可读存储介质具备上述第一个方面任一技术方案中的操作系统加载方法的全部有益效果,在此不再赘述。
根据本发明的第五个方面,提出了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上述任一技术方案中的操作系统加载方法。因此,本发明第五个方面所提出的计算机程序产品具备上述第一个方面任一技术方案中的操作系统加载方法的全部有益效果,在此不再赘述。
根据本发明的第六个方面,提出了一种芯片,芯片包括程序或指令,当芯片运行时,用于实现如上述任一技术方案中的操作系统加载方法的步骤。因此,本发明第六个方面所提出的芯片具备上述第一个方面任一技术方案中的操作系统加载方法的全部有益效果,在此不再赘述。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了本发明实施例的操作系统加载方法的流程示意图之一;
图2示出了本发明实施例的操作系统加载方法的流程示意图之二;
图3示出了本发明实施例的操作系统加载方法的流程示意图之三;
图4示出了本发明实施例的操作系统加载方法的流程示意图之四;
图5示出了本发明实施例的操作系统加载方法的流程示意图之五;
图6示出了本发明实施例的操作系统加载方法的流程示意图之六;
图7示出了本发明实施例的操作系统加载方法的原理图之一;
图8示出了本发明实施例的操作系统加载方法的原理图之二;
图9示出了本发明实施例的操作系统加载装置的结构框图;
图10示出了本发明实施例的电子设备的结构框图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不限于下面公开的具体实施例的限制。
下面结合图1至图10,通过具体的实施例及其应用场景对本申请实施例提供的系统加载方法及装置、存储介质、计算机程序产品和芯片进行详细地说明。
在本发明的一个实施例中,如图1所示,操作系统加载方法具体可包括下述的步骤102至步骤106:
步骤102,根据操作系统的系统符号表、应用逻辑和程序加载组件确定系统固件;
步骤104,编译生成二进制文件,并对二进制文件进行局部静态链接,得到待加载的程序文件;
步骤106,根据系统固件加载程序文件。
本发明提供的操作系统加载方法的技术方案的执行主体可以为电子设备,还可以为操作系统加载装置,还可以根据实际使用需求进行确定,在此不作具体限定。为了更加清楚地描述本发明提供的操作系统加载方法,下面以操作系统加载方法的执行主体为操作系统加载装置进行说明。
本发明提供的操作系统加载方法,用于在小型操作系统如RTOS嵌入式操作系统上实现二进制加载技术,以使小型操作系统如RTOS嵌入式操作系统可完成二进制文件的加载和执行。
其中,RTOS是一个免费、开源、实时的操作系统内核,RTOS为小型实时嵌入式操作系统,其对资源要求低,一般用于低资源的硬件平台。进一步地,RTOS具有简单易用、可移植性、可定制性、高效性以及可靠性等优点,RTOS被广泛应用于嵌入式系统中,例如智能家居、汽车、医疗设备以及航空航天等领域的嵌入式系统。
进一步地,RTOS嵌入式操作系统的系统代码和业务代码都是静态链接在一起,其固件统一,并且,RTOS嵌入式操作系统的启动参数、执行参数以及偏移参数等关键参数也是和固件打包阶段的参数紧密相关。这样,导致了RTOS嵌入式操作系统的业务代码不能快速更新,RTOS嵌入式操作系统一有更新就必须要对其所在的整个设备进行OTA操作。进一步地,RTOS嵌入式操作系统一般是低成本的平台,其内存小,没有虚拟地址的映射,目前基于大型操作系统如Linux系统和Windows系统的二进制文件动态加载方案不适用于RTOS嵌入式操作系统等低成本的平台。
因此,本发明提出一种操作系统加载方法,该操作系统加载方法包括系统固件准备阶段、程序文件生成阶段以及程序文件执行阶段。具体地,在本发明所提供的操作系统加载方法中,在对小型操作系统如RTOS嵌入式操作系统进行加载的过程中,在系统固件准备阶段,如图7所示,操作系统加载装置确定并获取操作系统需要导出的系统符号表,以及获取操作系统基本的系统应用逻辑和用于加载执行程序文件的解析加载组件即程序加载组件。在此基础上,操作系统加载装置对获取到的系统符号表进行压缩优化,并基于操作系统基本的系统应用逻辑、压缩优化后的系统符号表以及程序文件的解析加载组件,打包得到操作系统的系统固件。此时,操作系统的系统固件包含有操作系统基本的系统应用逻辑、压缩优化后的系统符号表以及程序文件的解析加载组件。
进一步地,在程序文件生成阶段,如图7所示,操作系统加载装置基于操作系统的开发环境开发应用程序,并在开发应用程序之后,通过操作系统的编译工具对应用源码进行编译,并把编译结果输出合并,从而编译得到对应的二进制文件,该二进制文件为可执行程序。进一步地,操作系统加载装置基于局部静态链接方法,对合并后的可执行程序即二进制文件进行预链接,输出得到待加载的程序文件如ELF(Executable and LinkableFormat,可执行与可链接格式)程序文件。
进一步地,在程序文件执行阶段,操作系统加载装置基于系统固件中的系统符号表,通过系统固件中的程序文件的解析加载组件对得到的程序文件进行加载,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。并且,对操作系统的工作环境进行了优化,使得操作系统能够在固件不变的情况下,能够快速、高效地执行本地更新存储的或者网络下发的二进制可执行文件,能够使得操作系统的业务代码更新摆脱对整体设备OTA的依赖,满足了操作系统的应用业务代码的快速更新和执行,提高了操作系统的工作效率。
其中,上述操作系统具体可为RTOS嵌入式操作系统等小型操作系统,在此不作具体限制。
进一步地,上述程序文件具体可为ELF程序文件,ELF是一种用于二进制文件、可执行文件、目标代码、共享库以及核心转储格式文件的文件格式,ELF程序文件包括代码段、数据段、符号表等。程序文件的具体类型根据操作系统的类型确定,在此不作具体限制。
进一步地,二进制文件为高级语言代码编译后产生的可在CPU(CentralProcessing Unit,中央处理器)中运行的文件。
进一步地,系统固件包含操作系统所在设备运行的正常功能逻辑的全部二进制文件。
进一步地,链接是一种根据二进制文件实际运行的地址,把编译出来的分离的二进制文件进行重定向计算的操作。
在本发明的一些实施例中,可选地,步骤106包括:解析程序文件的信息段,根据解析结果以及系统固件,加载程序文件。
在本发明的一些实施例中,可选地,如图2所示,上述步骤106具体可包括下述的步骤106a至步骤106d:
步骤106a,解析程序文件的信息段,确定程序文件对应的系统符号名称,并为每个信息段分配物理地址;
步骤106b,根据系统符号名称和系统固件中的系统符号表,确定目标系统符号;
步骤106c,根据目标系统符号和程序文件的信息段,对程序文件进行链接,得到执行文件;
步骤106d,根据执行文件构建运行任务,执行运行任务。
在该实施例中,在程序文件执行阶段,如图7所示,在操作系统加载装置根据系统固件对得到的程序文件进行加载的过程中,具体地,操作系统加载装置从网络或本地存储区间读取待加载的程序文件如ELF程序,如操作系统加载装置从存储介质或文件系统中读取待加载的程序文件,并对读取到的程序文件的各个信息段进行解析,以解析得到程序文件对应的系统符号名称,并为程序文件的每个信息段分配物理地址,即为程序文件的每个信息段分配内存。进一步地,操作系统加载装置基于解析到的系统符号名称,对程序文件中需要重定向的部分进行符号查找以及重定向运算。具体地,操作系统加载装置基于解析到的系统符号名称,对系统固件中的系统符号表中的各个系统符号进行匹配比较,以查找到程序文件对应的目标系统符号。
进一步地,操作系统加载装置根据确定的目标系统符号以及程序文件的信息段,对程序文件进行链接,即对程序文件进行重定向运算,以构造出可执行环境从而得到执行文件。进一步地,操作系统加载装置根据得到的执行文件构建操作系统的运行任务,并通过系统固件中的程序文件的解析加载组件执行构建的运行任务,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,结合操作系统的任务管理机制、内存管理机制以及重定向运算,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。
其中,物理地址为CPU能访问、执行的实际内存地址。
在本发明的一些实施例中,可选地,上述解析程序文件的信息段的步骤,具体可包括下述的步骤108:
步骤108,根据程序文件的调用信息分离或合并程序文件的信息段。
在该实施例中,在操作系统加载装置对读取到的程序文件的各个信息段进行解析的过程中,操作系统加载装置根据程序文件的调用信息,也即操作系统加载装置根据该程序文件后续是否需要被调用,分离或合并程序文件的信息段。这样,基于程序文件的调用信息解析程序文件的各个信息段,提高了后续调用程序文件的效率。
例如,在读取到的程序文件后续需要进行二次加载的情况下,操作系统加载装置可以把程序文件的数据段进行分离,以实现多个加载实例共享。
在本发明的一些实施例中,可选地,如图3所示,上述步骤106b具体可包括下述的步骤106b1和步骤106b2:
步骤106b1,对系统符号名称进行编码;
步骤106b2,根据编码后的系统符号名称,对系统固件中的系统符号表进行递归比较,确定目标系统符号。
在该实施例中,在操作系统加载装置基于解析到的系统符号名称,对系统固件中的系统符号表中的各个系统符号进行匹配比较,以确定程序文件对应的目标系统符号的过程中,操作系统加载装置根据对系统符号表进行压缩优化时的编码方式,对解析到的系统符号名称进行编码。在此基础上,操作系统加载装置基于编码后的系统符号名称,对系统固件中的系统符号表进行递归比较,以将编码后的系统符号名称与系统符号表中的各个系统符号的名称进行匹配比较,从而找到程序文件对应的目标系统符号。这样,通过对系统固件中的系统符号表进行递归比较,查找到程序文件对应的目标系统符号,提高了目标系统符号的查找效率,从而提高了程序文件的执行效率,提高了操作系统的加载效率。
在本发明的一些实施例中,可选地,信息段包括代码段、数据段和重定向段,在此基础上,如图4所示,上述步骤106c具体可包括下述的步骤106c1:
步骤106c1,根据程序文件中的重定向段,对程序文件中的代码段和数据段的物理地址进行链接,以及对目标系统符号的物理地址进行链接,得到执行文件。
在该实施例中,程序文件的信息段具体可包括代码段、重定向段以及数据段。在此基础上,在操作系统加载装置根据确定的目标系统符号以及程序文件的信息段,对程序文件进行链接,以构造出可执行环境从而得到执行文件的过程中,具体地,操作系统加载装置利用程序文件中的重定向段,对程序文件进行运行态链接,以完成在程序文件生成阶段时局部静态链接中预留的链接部分。具体地,操作系统加载装置对程序文件中的代码段和数据段的物理地址进行链接,以及对目标系统符号的物理地址进行链接,从而得到上述执行文件。这样,通过对程序文件的代码段、数据段以及目标系统符号进行二次链接得到执行文件,保证了得到的执行文件的准确性,保证了后续程序文件执行的准确性和效率。
在本发明的一些实施例中,可选地,如图5所示,上述步骤106d具体可包括下述的步骤106d1至步骤106d3:
步骤106d1,对执行文件进行分析,得到栈信息和程序入口信息;
步骤106d2,根据栈信息和程序入口信息构建运行任务;
步骤106d3,根据操作系统的运行参数执行运行任务。
在该实施例中,在操作系统加载装置根据得到的执行文件构建操作系统的运行任务,并通过系统固件中的程序文件的解析加载组件执行构建的运行任务的过程中,具体地,操作系统加载装置对程序文件执行阶段得到的执行文件进行代码分析,以得到程序文件的程序入口信息以及栈信息,该栈信息具体为栈的占用信息。在此基础上,操作系统加载装置根据得到的程序入口信息以及栈信息,构建操作系统的运行任务。进一步地,操作系统加载装置获取操作系统的运行参数,并基于获取到的运行参数执行上述构建的运行任务,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。
在本发明的一些实施例中,可选地,在上述步骤106d之后,上述操作系统加载方法具体还可包括下述的步骤110和步骤112:
步骤110,根据程序文件的调用信息确定回收力度;
步骤112,根据回收力度对执行文件进行回收;
其中,回收力度用于指示执行文件的资源回收程度。
在该实施例中,在程序文件执行阶段,如图7所示,在操作系统加载装置基于获取到的操作系统的运行参数执行构建的运行任务之后,操作系统加载装置还会基于程序文件的调用信息,确定上述构造出的可执行环境即执行文件的回收力度,该回收力度用于指示已执行完毕的执行文件的资源回收程度。在此基础上,操作系统加载装置基于确定的回收力度对已执行完毕的执行文件进行回收,以基于程序文件的调用信息对已执行完毕的执行文件进行不同回收程度的资源回收。这样,基于程序文件的调用信息对已执行完毕的执行文件进行不同回收程度的资源回收,提高了后续调用程序文件的效率。
其中,上述调用信息指示程序文件后续是否需要被调用,如调用信息指示程序文件后续是否需要进行二次执行,操作系统加载装置根据程序文件后续是否需要被调用,也即根据程序文件后续是否需要进行二次执行,确定已执行完毕的执行文件的资源回收程度即回收力度。
在本发明的一些实施例中,可选地,在上述步骤106a之前,上述操作系统加载方法具体还可包括下述的步骤114,在此基础上,上述解析程序文件的信息段的步骤,具体可包括下述的116:
步骤114,对程序文件的文件格式和指令集进行验证;
步骤116,在程序文件验证通过的情况下,解析程序文件的信息段。
在该实施例中,在程序文件执行阶段,如图7所示,在操作系统加载装置从存储介质或文件系统中读取到待加载的程序文件之后,并在操作系统加载装置对读取到的程序文件的各个信息段进行解析之前,操作系统加载装置还会对读取到的程序文件进行指令集检测以及文件格式检测,以验证读取到的程序文件的指令结构以及文件格式是否与电子设备所支持的指令结构和基本格式相匹配。在此基础上,在操作系统加载装置对读取到的程序文件的各个信息段进行解析的过程中,在读取到的程序文件验证通过的情况下,也即在读取到的程序文件的指令结构以及文件格式与电子设备所支持的指令结构和基本格式相匹配的情况下,操作系统加载装置才对读取到的程序文件的各个信息段进行解析,以解析得到程序文件对应的系统符号名称,并为程序文件的每个信息段分配物理地址。这样,程序文件的指令结构以及文件格式与电子设备所支持的指令结构和基本格式相匹配的情况下,才对读取到的程序文件的各个信息段进行解析,避免了做无用功,提高了操作系统加载的效率。
在本发明的一些实施例中,可选地,如图6所示,上述步骤102具体可包括下述的102a和步骤102b:
步骤102a,对系统符号表进行编码,得到编码后的系统符号表;
步骤102b,打包编码后的系统符号表、应用逻辑和程序加载组件,得到系统固件。
在该实施例中,在操作系统加载装置基于操作系统需要导出的系统符号表、用于加载执行程序文件的解析加载组件以及操作系统基本的系统应用逻辑确定操作系统的系统固件的过程中,操作系统加载装置通过对获取到的系统符号表进行编码,对获取到的系统符号表进行压缩优化,以得到编码后的系统符号表。在此基础上,操作系统加载装置对操作系统基本的系统应用逻辑、编码后的系统符号表以及程序文件的解析加载组件进行打包,以打包得到操作系统的系统固件。这样,对系统符号表进行压缩优化再基于系统符号表确定系统固件,减小了固件端二进制文件的大小,以及减小了程序文件的大小,且能够提高后续查找目标系统符号的效率。
在实际的应用过程中,上述系统符号表的编码方式包括但不限于:哈夫曼编码、香农编码以及费诺编码等编码方式。对于上述系统符号表的具体编码方式,本领域技术人员可根据实际情况进行设置,在此不作具体限制。
在本发明的一些实施例中,可选地,上述对二进制文件进行局部静态链接,得到待加载的程序文件的步骤,具体可包括下述的步骤104a至步骤104c:
步骤104a,对二进制文件的信息段进行合并链接,得到二进制文件的第一代码段、第一数据段和第一重定向段;
步骤104b,根据第一代码段、第一数据段和第一重定向段进行重定向计算,得到重定向后的第二代码段;
步骤104c,根据第一数据段、第二代码段和第一重定向段确定程序文件。
在该实施例中,在操作系统加载装置基于局部静态链接方法,对合并后的可执行程序即二进制文件进行预链接,输出得到待加载的程序文件,具体地,如图8所示,操作系统加载装置以代码为单位,编译得到二进制文件的多个信息段,进一步地,操作系统加载装置基于确定的链接脚本,通过链接器对二进制文件的各个信息段进行合并链接,从而得到二进制文件的第一重定向段、第一数据段以及第一代码段。在此基础上,操作系统加载装置基于局部静态链接的方法,根据上述得到的第一重定向段、第一数据段以及第一代码段,对系统符号以及二进制文件的信息段进行重定向计算,并得到重定向后的第二代码段。进一步地,操作系统加载装置对上述第二代码段、第一数据段以及第一重定向段进行打包,得到上述程序文件。这样,在操作系统加载程序文件的过程中,无需对程序文件的代码段和数据段进行重定向运算,加快了程序文件的加载速度,从而提高了操作系统的加载效率。
其中,操作系统加载装置在对系统符号以及二进制文件的信息段进行重定向计算的过程中,操作系统加载装置对同一信息段里面的系统符号进行静态链接,并删除对应的重定向信息。进一步地,操作系统加载装置对多信息段内的系统符号进行段地址编排,并根据编排后的偏移信息对多信息段内的系统符号进行静态链接,同时删除对应的重定向信息。进一步地,对于系统符号,操作系统加载装置保留其重新定向信息,以便后续用于对程序文件的运行态链接。这样,不存在动态链接的方式,也不对外提供动态链接系统符号的特性,通过局部静态链接的方法进行链接,加快了程序文件的加载速度,以及减少了程序文件中的重定向段的大小。
需要说明的是,上述操作系统加载方法可根据特定的特征和/或示例应用而采用各种不同的方式进行实施。例如,上述操作系统加载方法可以通过硬件、固件以及/或软件的组合来实施。例如,在硬件实施中,处理器可以在一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器、电子设备、其他用于执行上述功能的设备单元和/或它们的组合中实现。
在本发明的一个实施例中,还提出了一种操作系统加载装置。如图9所示,图9示出了本发明实施例的操作系统加载装置900的结构框图。其中,该操作系统加载装置900具体可包括下述的处理单元902:
处理单元902,用于根据操作系统的系统符号表、应用逻辑和程序加载组件确定系统固件;
处理单元902,还用于编译生成二进制文件,并对二进制文件进行局部静态链接,得到待加载的程序文件;
处理单元902,还用于根据系统固件加载程序文件。
本发明实施例提供的操作系统加载装置900,用于在小型操作系统如RTOS嵌入式操作系统上实现二进制加载技术,以使小型操作系统如RTOS嵌入式操作系统可完成二进制文件的加载和执行。
具体地,本发明提出的操作系统加载装置900包括处理单元902,通过处理单元902加载操作系统的过程包括系统固件准备阶段、程序文件生成阶段以及程序文件执行阶段。具体地,在对小型操作系统如RTOS嵌入式操作系统进行加载的过程中,在系统固件准备阶段,处理单元902确定并获取操作系统需要导出的系统符号表,以及获取操作系统基本的系统应用逻辑和用于加载执行程序文件的解析加载组件即程序加载组件。在此基础上,处理单元902对获取到的系统符号表进行压缩优化,并基于操作系统基本的系统应用逻辑、压缩优化后的系统符号表以及程序文件的解析加载组件,打包得到操作系统的系统固件。此时,操作系统的系统固件包含有操作系统基本的系统应用逻辑、压缩优化后的系统符号表以及程序文件的解析加载组件。
进一步地,在程序文件生成阶段,处理单元902基于操作系统的开发环境开发应用程序,并在开发应用程序之后,通过操作系统的编译工具对应用源码进行编译,并把编译结果输出合并,从而编译得到对应的二进制文件,该二进制文件为可执行程序。进一步地,处理单元902基于局部静态链接方法,对合并后的可执行程序即二进制文件进行预链接,输出得到待加载的程序文件如ELF程序。
进一步地,在程序文件执行阶段,处理单元902基于系统固件中的系统符号表,通过系统固件中的程序文件的解析加载组件对得到的程序文件进行加载,以将程序文件加载到操作系统的内存中,并将控制权转移到该程序文件的入口点,使该程序文件开始在操作系统内执行。这样,实现了小型操作系统上的二进制加载技术,使得小型操作系统可完成二进制文件的加载和执行。并且,对操作系统的工作环境进行了优化,使得操作系统能够在固件不变的情况下,能够快速、高效地执行本地更新存储的或者网络下发的二进制可执行文件,能够使得操作系统的业务代码更新摆脱对系统OTA的依赖,满足了操作系统的应用业务代码的快速更新和执行,提高了操作系统的工作效率。
其中,上述操作系统具体可为RTOS嵌入式操作系统等小型操作系统,在此不作具体限制。
进一步地,上述程序文件具体可为ELF程序文件,程序文件的具体类型根据操作系统的类型确定,在此不作具体限制。
在本发明的一些实施例中,可选地,处理单元902具体用于:解析程序文件的信息段,确定程序文件对应的系统符号名称,并为每个信息段分配物理地址;根据系统符号名称和系统固件中的系统符号表,确定目标系统符号;根据目标系统符号和程序文件的信息段,对程序文件进行链接,得到执行文件;根据执行文件构建运行任务,执行运行任务。
在本发明的一些实施例中,可选地,处理单元902具体用于:根据程序文件的调用信息分离或合并程序文件的信息段。
在本发明的一些实施例中,可选地,处理单元902具体用于:对系统符号名称进行编码;根据编码后的系统符号名称,对系统固件中的系统符号表进行递归比较,确定目标系统符号。
在本发明的一些实施例中,可选地,信息段包括代码段、数据段和重定向段,处理单元902具体用于:根据程序文件中的重定向段,对程序文件中的代码段和数据段的物理地址进行链接,以及对目标系统符号的物理地址进行链接,得到执行文件。
在本发明的一些实施例中,可选地,处理单元902具体用于:对执行文件进行分析,得到栈信息和程序入口信息;根据栈信息和程序入口信息构建运行任务;根据操作系统的运行参数执行运行任务。
在本发明的一些实施例中,可选地,执行运行任务之后,处理单元902还用于:根据程序文件的调用信息确定回收力度,回收力度用于指示执行文件的资源回收程度;根据回收力度对执行文件进行回收。
在本发明的一些实施例中,可选地,解析程序文件的信息段之前,处理单元902还用于:对程序文件的文件格式和指令集进行验证;处理单元902具体用于:在程序文件验证通过的情况下,解析程序文件的信息段。
在本发明的一些实施例中,可选地,处理单元902具体用于:对系统符号表进行编码,得到编码后的系统符号表;打包编码后的系统符号表、应用逻辑和程序加载组件,得到系统固件。
在本发明的一些实施例中,可选地,处理单元902具体用于:对二进制文件的信息段进行合并链接,得到二进制文件的第一代码段、第一数据段和第一重定向段;根据第一代码段、第一数据段和第一重定向段进行重定向计算,得到重定向后的第二代码段;根据第一数据段、第二代码段和第一重定向段确定程序文件。
在本发明的一个实施例中,还提出了一种电子设备。如图10所示,图10示出了本发明实施例提供的电子设备1000的结构框图。其中,该电子设备1000包括:
存储器1002,存储器1002上存储有程序或指令;
处理器1004,处理器1004执行上述程序或指令时实现如上述任一实施例中的操作系统加载方法的步骤。
本实施例提供的电子设备1000包括存储器1002和处理器1004,存储器1002中的程序或指令被处理器1004执行时实现如上述任一实施例中的操作系统加载方法的步骤,因此该电子设备1000具备上述任一实施例中的操作系统加载方法的全部有益效果,在此不再赘述。
具体地,存储器1002和处理器1004可以通过总线或者其它方式连接。处理器1004可包括一个或多个处理单元,处理器1004可以为中央处理器(Central Processing Unit,CPU)、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable GateArray,FPGA)等芯片。
本发明第四方面的实施例,提出了一种可读存储介质。其上存储有程序或指令,程序或指令被处理器执行时实现如上述任一实施例中的操作系统加载方法的步骤。
本发明实施例提供的可读存储介质,其存储的程序或指令被处理器执行时,可实现如上述任一实施例中的操作系统加载方法的步骤。因此,该可读存储介质具备上述任一实施例中的操作系统加载方法的全部有益效果,在此不再赘述。
具体地,上述可读存储介质可以包括能够存储或传输信息的任何介质。可读存储介质的例子包括电子电路、半导体存储器设备、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、光盘只读存储器(Compact Disc Read-OnlyMemory,CD-ROM)、闪存、可擦除ROM(EROM)、磁带、软盘、光盘、硬盘、光纤介质、射频(RF)链路、光数据存储设备等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
具体地,上述可读存储介质可以是一种有形设备,它可以保留和存储供指令执行设备使用的指令。计算机可读存储介质可以是电子存储设备、磁存储设备、光学存储设备、电磁存储设备、半导体存储设备或者上述设备的任何适当组合,但不限于此。具体地,上述可读存储介质的更具体示例的非详尽列表包括:便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字化通用磁盘(DVD)、存储卡、软盘、编码机械设备(例如穿孔卡片或具有记录有指令的凸起结构的凹槽)以及上述设备的任何适当组合。此处使用的可读存储介质并不应被理解为传输信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输媒体传播的电磁波,或通过电线传输的电信号等。
本发明第五方面的实施例,提出了一种计算机程序产品,其包括计算机程序,该计算机程序被处理器执行时实现如上述任一实施例中的操作系统加载方法。因此,本发明第五个方面所提出的计算机程序产品具备上述第一个方面任一实施例中的操作系统加载方法的全部有益效果,在此不再赘述。
在实际的应用过程中,上述计算机程序产品包括但不限于:智能手机、台式电脑、笔记本电脑、平板电脑、智能手表、上位机以及服务器平台等,在此不作具体限制。
本发明第六方面的实施例,提出了一种芯片,芯片包括程序或指令,当芯片运行时,用于实现如上述任一实施例中的操作系统加载方法的步骤。因此,本发明第六个方面所提出的芯片具备上述第一个方面任一实施例中的操作系统加载方法的全部有益效果,在此不再赘述。
在本说明书的描述中,术语“第一”、“第二”仅用于描述的目的,而不能理解为指示或暗示相对重要性,除非另有明确的规定和限定;术语“连接”、“安装”、“固定”等均应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本说明书的描述中,术语“一个实施例”、“一些实施例”、“具体实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或实例。而且,描述的具体特征、结构、材料或特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
另外,本发明各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种操作系统加载方法,其特征在于,所述加载方法包括:
根据操作系统的系统符号表、应用逻辑和程序加载组件确定系统固件;
编译生成二进制文件,并对所述二进制文件进行局部静态链接,得到待加载的程序文件;
根据所述系统固件加载所述程序文件;
所述根据所述系统固件加载所述程序文件,包括:
解析所述程序文件的信息段,确定所述程序文件对应的系统符号名称,并为每个信息段分配物理地址;
根据所述系统符号名称和所述系统固件中的所述系统符号表,确定目标系统符号;
根据所述目标系统符号和所述程序文件的信息段,对所述程序文件进行链接,得到执行文件;
根据所述执行文件构建运行任务,执行所述运行任务。
2.根据权利要求1所述的操作系统加载方法,其特征在于,所述解析所述程序文件的信息段,包括:
根据所述程序文件的调用信息分离或合并所述程序文件的信息段。
3.根据权利要求1所述的操作系统加载方法,其特征在于,所述根据所述系统符号名称和所述系统固件中的所述系统符号表,确定目标系统符号,包括:
对所述系统符号名称进行编码;
根据编码后的所述系统符号名称,对所述系统固件中的所述系统符号表进行递归比较,确定所述目标系统符号。
4.根据权利要求1所述的操作系统加载方法,其特征在于,所述信息段包括代码段、数据段和重定向段,所述根据所述目标系统符号和所述程序文件的信息段,对所述程序文件进行链接,得到执行文件,包括:
根据所述程序文件中的重定向段,对所述程序文件中的代码段和数据段的物理地址进行链接,以及对所述目标系统符号的物理地址进行链接,得到所述执行文件。
5.根据权利要求1所述的操作系统加载方法,其特征在于,所述根据所述执行文件构建运行任务,执行所述运行任务,包括:
对所述执行文件进行分析,得到栈信息和程序入口信息;
根据所述栈信息和所述程序入口信息构建运行任务;
根据所述操作系统的运行参数执行所述运行任务。
6.根据权利要求1所述的操作系统加载方法,其特征在于,所述执行所述运行任务之后,所述加载方法还包括:
根据所述程序文件的调用信息确定回收力度,所述回收力度用于指示所述执行文件的资源回收程度;
根据所述回收力度对所述执行文件进行回收。
7.根据权利要求1所述的操作系统加载方法,其特征在于,所述解析所述程序文件的信息段之前,所述加载方法还包括:
对所述程序文件的文件格式和指令集进行验证;
所述解析所述程序文件的信息段,包括:
在所述程序文件验证通过的情况下,解析所述程序文件的信息段。
8.一种操作系统加载装置,其特征在于,所述加载装置包括:
处理单元,用于根据操作系统的系统符号表、应用逻辑和程序加载组件确定系统固件;
所述处理单元,还用于编译生成二进制文件,并对所述二进制文件进行局部静态链接,得到待加载的程序文件;
所述处理单元,还用于根据所述系统固件加载所述程序文件;
所述处理单元具体用于:
解析所述程序文件的信息段,确定所述程序文件对应的系统符号名称,并为每个信息段分配物理地址;
根据所述系统符号名称和所述系统固件中的所述系统符号表,确定目标系统符号;
根据所述目标系统符号和所述程序文件的信息段,对所述程序文件进行链接,得到执行文件;
根据所述执行文件构建运行任务,执行所述运行任务。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1至7中任一项所述的操作系统加载方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有程序或指令,所述程序或指令被处理器执行时实现如权利要求1至7中任一项所述的操作系统加载方法的步骤。
11.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的操作系统加载方法的步骤。
12.一种芯片,其特征在于,所述芯片包括程序或指令,当所述芯片运行时,用于实现如权利要求1至7中任一项所述的操作系统加载方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311742841.5A CN117421056B (zh) | 2023-12-18 | 2023-12-18 | 系统加载方法及装置、存储介质、计算机程序产品和芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311742841.5A CN117421056B (zh) | 2023-12-18 | 2023-12-18 | 系统加载方法及装置、存储介质、计算机程序产品和芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117421056A CN117421056A (zh) | 2024-01-19 |
CN117421056B true CN117421056B (zh) | 2024-03-05 |
Family
ID=89530602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311742841.5A Active CN117421056B (zh) | 2023-12-18 | 2023-12-18 | 系统加载方法及装置、存储介质、计算机程序产品和芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117421056B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107479920A (zh) * | 2017-08-04 | 2017-12-15 | 浙江大学 | 一种单elf文件实现多操作系统加载的方法 |
CN115495158A (zh) * | 2022-10-09 | 2022-12-20 | 电子科技大学 | 微内核操作系统中系统服务动态构建方法 |
CN117193882A (zh) * | 2023-09-22 | 2023-12-08 | 四川赛纽斯科技有限公司 | 一种基于微内核操作系统的elf加载方法 |
-
2023
- 2023-12-18 CN CN202311742841.5A patent/CN117421056B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107479920A (zh) * | 2017-08-04 | 2017-12-15 | 浙江大学 | 一种单elf文件实现多操作系统加载的方法 |
CN115495158A (zh) * | 2022-10-09 | 2022-12-20 | 电子科技大学 | 微内核操作系统中系统服务动态构建方法 |
CN117193882A (zh) * | 2023-09-22 | 2023-12-08 | 四川赛纽斯科技有限公司 | 一种基于微内核操作系统的elf加载方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117421056A (zh) | 2024-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109766099B (zh) | 前端源码编译方法、装置、存储介质及计算机设备 | |
US8626786B2 (en) | Dynamic language checking | |
US9063760B2 (en) | Employing native routines instead of emulated routines in an application being emulated | |
CN111782523B (zh) | 云端服务部署测试方法、装置、电子设备和存储介质 | |
CN110688096B (zh) | 包含插件的应用程序的构建方法、装置、介质及电子设备 | |
WO2021175053A1 (zh) | 一种在虚拟机中执行功能模块的方法和装置 | |
CN114116134A (zh) | 智能合约部署和执行方法、设备及存储介质 | |
CN113946602A (zh) | 数据查找方法、装置、设备和介质 | |
WO2022038461A1 (en) | Method and system for identifying and extracting independent services from a computer program | |
CN113138768A (zh) | 应用程序包生成方法、装置、电子设备以及可读存储介质 | |
CN113986402A (zh) | 函数调用方法、装置、电子设备及存储介质 | |
CN108845864B (zh) | 一种基于spring框架的JVM垃圾回收方法和装置 | |
CN112965721B (zh) | 基于Android的项目编译方法、装置、计算机设备及存储介质 | |
CN114115884B (zh) | 一种编程服务的管理方法以及相关装置 | |
CN117421056B (zh) | 系统加载方法及装置、存储介质、计算机程序产品和芯片 | |
CN117435257B (zh) | 系统加载方法及装置、存储介质、计算机程序产品和芯片 | |
CN113656044B (zh) | 安卓安装包压缩方法、装置、计算机设备及存储介质 | |
CN113791809B (zh) | 应用异常处理方法、装置以及计算机可读存储介质 | |
CN117435258B (zh) | 系统加载方法及装置、存储介质、计算机程序产品和芯片 | |
CN113568623B (zh) | 一种部署应用的方法、装置和电子设备 | |
CN115544518A (zh) | 漏洞扫描引擎实现方法、装置、漏洞扫描方法及电子设备 | |
CN112650502A (zh) | 批处理任务处理方法、装置、计算机设备和存储介质 | |
JP2010140233A (ja) | エミュレーションシステム及びエミュレーション方法 | |
CN116302847B (zh) | 异常信息的动态采集方法、装置、计算机设备及介质 | |
CN115792578A (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 |