本发明专利技术公开了一种基于动态加载机制的国产操作系统启动优化方法,包括步骤:对操作系统内核进行模块级裁剪,使用Linux自身提供的可视化图形配置界面进行功能模块的整体裁剪,确定动态加载机制下最小操作系统内核的配置项;设计目标模块与中断服务例程的动态加载方式,通过通信机制将已加载模块链中未检索到的模块下载至本地;通过目标模块的依赖关系分析方法、符号解析和重定位方法,完成目标文件读入内存后的动态链接操作;设计指定模块的动态卸载方法,收回该模块在操作系统中分配的存储空间并取消其外部引用,实现动态链接的逆操作。本发明专利技术能够明确操作系统中模块启动和运行时需要加载的耦合数据与行为,缩短启动时间。
【技术实现步骤摘要】
本专利技术涉及操作系统的启动,尤其涉及一种基于动态加载机制的国产操作系统启动优化方法。
技术介绍
1、linux操作系统以其源代码开放且免费、持续更新和硬件支持丰富等优势被越来越多的嵌入式系统所采用。由于linux内核的不断更新与完善,系统软件的体量不断变大,庞大的代码量造成了较长的启动时间。对于如今广泛应用的移动消费类电子产品(如手机、平板电脑等)、车载信息系统和物联网设备而言,冗长的系统建立时间无疑是难以忍受的。一个快速启动的linux系统不仅有利于增加用户的良好使用体验,而且对提高系统的稳定性和可靠性也有很大的帮助。快速的启动不仅能够优化用户体验从而增强市场竞争力,在作为网络终端或工业应用时更能迅速重启,从而减小事故率或事故损失,因此需要研究操作系统的快速可靠启动方法。
2、目前以银河麒麟为代表的国产操作系统都是基于linux内核开发而来的通用操作系统,因此继承了linux内核模块化的特点。该操作系统的linux内核文件体积较大,包含的各类驱动也更为全面。然而,当搭载该类操作系统的嵌入式设备作为控制核心时,其功能往往具有较强的专用性。因此通用操作系统中存在的大量扩展驱动未被使用,造成了内核体积的浪费,并显著拖慢启动时间。
3、为加快启动速度,目前主流的做法是利用linux内核易裁剪的特性,通过针对性地裁剪内核,移除非必要的驱动来缩减内核体积。然而裁剪内核对启动时间的优化程度有限,当内核裁剪至测试任务所需的最小体积后,启动速度难以进一步提升。
技术实现思路
<
p>1、专利技术目的:本专利技术的目的是提供一种能实现异步处理的能力、缩短启动时间的基于动态加载机制的国产操作系统启动优化方法。2、技术方案:本专利技术的国产操作系统启动优化方法,包括如下步骤:
3、s1,对操作系统内核进行模块级裁剪,使用linux自身提供的可视化图形配置界面进行功能模块的整体裁剪,确定动态加载机制下最小操作系统内核的配置项;
4、s2,设计目标模块与中断服务例程的动态加载方式,通过通信机制将已加载模块链中未检索到的模块下载至本地;
5、s3,通过设计目标模块的依赖关系分析方法、符号解析和重定位方法,完成目标文件读入内存后的动态链接操作;
6、s4,设计指定模块的动态卸载方法,收回该模块在操作系统中分配的存储空间并取消其外部引用,实现动态链接的逆操作。
7、进一步,步骤s1中,对操作系统内核进行模块级裁剪的具体步骤如下:
8、s11,通过make menuconfig命令生成图形配置界面,根据需求选择是否将应用模块编译到内核中;
9、s12,通过修改config配置文件对通用的bootloader代码进行裁剪,减少不必要的初始化流程,优化操作系统的引导加载程序;
10、s13,对linux内核中的文件系统和设备驱动部分进行针对性裁剪,将系统启动必要的功能与设备编译进内核,其余的功能与设备编译为非初始化模块。
11、进一步,步骤s2中,目标模块与中断服务例程的动态加载方式的具体实现步骤如下:
12、s21,确定目标模块的格式信息,得到可加载模块的组织方式,实现内核模块与应用模块的动态加载;
13、其中,所述目标模块格式信息确定的具体步骤包括如下:
14、s211,将目标文件的概述信息设置为头信息,所述概述信息包括代码的大小、源文件名和创建日期;
15、s212,将由编译器或汇编器产生的二进制指令和数据,设置为目标文件的目标代码;
16、s213,链接器在修改目标代码的地址时,会对目标代码的位置列表进行调整,将地址的位置列表设置为目标文件的重定位信息;
17、s214,将目标模块中定义的全局符号,以及从其它模块导入的或者由链接器定义的符号,设置为目标文件的符号信息;
18、s215,将目标代码中与链接无关但会被调试器使用到的其它信息,设置为目标文件的调试信息,所述其他信息包括源代码文件和行号、本地符号、被目标代码使用的数据结构描述;
19、s22,设计基于动态加载机制的中断服务例程加载方法,具体实现步骤如下:
20、s221,建立中断向量表,获取中断服务程序的入口地址偏移量和段地址,分别装入ip及cs中,以转入中断服务程序;
21、s222,将中断服务程序的入口地址填写到中断向量表中,以便产生中断时能转入中断程序服务程序去执行;
22、s223,定义一个中断激活函数,调用中断向量值执行中断服务程序;
23、s224,在程序结束后,恢复被修改的中断向量,使中断服务程序入口地址指向原来的中断服务程序。
24、进一步,步骤s3中,完成目标文件读入内存后的动态链接操作的具体实现步骤如下:
25、s31,设计一种基于makefile文件编译链接规则的模块依赖关系分析方法,从内容预处理、文件关键信息分析提取和递归分析处理三方面进行分析;
26、其中,所述模块依赖关系分析方法的具体步骤包括如下:
27、s311,对内核文件进行内容预处理,保留非注释并且完整的文件内容;
28、s312,解析的配置文件遇到变量引用语句时,遍历保存的变量,找到匹配的变量名进而获取其变量值;
29、s313,根据分支判断语句的编写格式,准确识别语句块并进行如下操作:判断条件是否成立、跳过或直接处理非分支判断语句和每层分支判断语句的结束符匹配;
30、s314,分析内核文件的内置函数,通过相同功能的程序代码来解析和描述每个内置函数的功能步骤,并在遇到相应的内置函数调用语句时跳转到case分支语句块加以处理,得到对应函数的返回值作为原内置函数调用的解析结果;
31、s315,从规则语句中提取内核文件依赖信息,对依赖信息进行变量引用和内置函数调用的处理操作,将依赖目标、生成命令保存在数据结构中;
32、s316,从include语句、规则语句块的生成命令和目标变量值中,不断提取子层的文件路径进行自上而下的递归分析处理;
33、s317,设计依赖信息数据结构,保存linux内核文件或内核模块之间的依赖关系描述信息,所述依赖信息包括目标、依赖目标、生成目标的命令以及目标所在文件路径;
34、s318,利用树形控件,查找结构体数组中保存的依赖关系,将所有依赖关系描述成树形结构并展示给用户;
35、s32,建立系统符号表,通过目标模块的符号解析和重定位方法,实现对目标模块外部接口的识别、链接;
36、所述目标模块的符号解析和重定位方法的具体步骤包括如下:
37、s321,扫描目标模块得到相应的符号,将符号名、内存中的物理地址、模块链写入动态加载机制创建的系统符号表中;
38、s322,设计符号名与物理内存地址的弱绑定方法:使符号不直接指向实际的内存本文档来自技高网
...
【技术保护点】
1.一种基于动态加载机制的国产操作系统启动优化方法,其特征在于,包括如下步骤:
2.根据权利要求1所述基于动态加载机制的国产操作系统启动优化方法,其特征在于,步骤S1中,对操作系统内核进行模块级裁剪的具体步骤如下:
3.根据权利要求1所述基于动态加载机制的国产操作系统启动优化方法,其特征在于,步骤S2中,目标模块与中断服务例程的动态加载方式的具体实现步骤如下:
4.根据权利要求1所述基于动态加载机制的国产操作系统启动优化方法,其特征在于,步骤S3中,完成目标文件读入内存后的动态链接操作的具体实现步骤如下:
5.根据权利要求1所述基于动态加载机制的国产操作系统启动优化方法,其特征在于,步骤S4中,指定模块的动态卸载方法的实现包括如下步骤:
【技术特征摘要】
1.一种基于动态加载机制的国产操作系统启动优化方法,其特征在于,包括如下步骤:
2.根据权利要求1所述基于动态加载机制的国产操作系统启动优化方法,其特征在于,步骤s1中,对操作系统内核进行模块级裁剪的具体步骤如下:
3.根据权利要求1所述基于动态加载机制的国产操作系统启动优化方法,其特征在于,步骤s2中,目标模块与中断服...
【专利技术属性】
技术研发人员:张柯,孟恭,沈利华,董诗绎,杨恝澳,李宁,孙德胜,蔡小影,
申请(专利权)人:南京航空航天大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。