[发明专利]一种安卓兼容环境适配多Linux内核的启动方法有效
申请号: | 202211223999.7 | 申请日: | 2022-10-09 |
公开(公告)号: | CN115292721B | 公开(公告)日: | 2023-01-24 |
发明(设计)人: | 温研 | 申请(专利权)人: | 北京麟卓信息科技有限公司 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F8/41;G06F9/445 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100085 北京市海淀区西*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 兼容 环境 适配多 linux 内核 启动 方法 | ||
1.一种安卓兼容环境适配多Linux内核的启动方法,其特征在于,包括以下步骤:
步骤1、将安卓兼容环境的Jar包编译为非位置无关代码类型和位置无关代码类型的内存镜像文件,并将动态基地址的初始值设置为空,其中,非位置无关代码类型的内存镜像文件记为Boot.art文件,位置无关代码类型的内存镜像文件记为Boot.pic.art文件;
步骤2、在Linux系统内运行安卓兼容环境时,加载未启动的进程,若预设路径下存在Boot.art文件则执行步骤3,否则执行步骤7;
步骤3、若动态基地址为空则执行步骤4,否则执行步骤6;
步骤4、获取Boot.art文件的地址空间作为镜像地址空间;获取当前进程的虚拟地址空间作为进程虚拟地址空间;若镜像地址空间被进程虚拟地址空间所占用则执行步骤5,否则将Boot.art文件映射到镜像地址空间完成进程的启动后执行步骤8;
步骤5、若Boot.pic.art文件存在,则将Boot.pic.art文件映射到零地址,采用Linux系统分配的基地址更新动态基地址,再根据动态基地址及镜像地址空间大小确定新的镜像地址空间,完成进程的启动,执行步骤8;若Boot.pic.art文件不存在则执行步骤7;
步骤6、根据动态基地址及镜像地址空间大小确定新的镜像地址空间,将Boot.art文件映射到新的镜像地址空间中,完成进程的启动,执行步骤8;
步骤7、根据当前Linux系统的指令集编译安卓兼容环境启动所依赖的安卓框架的Jar包,得到Boot.art文件和Boot.pic.art,再将Boot.art文件和Boot.pic.art均复制到确定的路径下,执行步骤2;
步骤8、进程加载后导出符号表,记录为兼容环境符号表,兼容环境符号表为二元组的集合,每个二元组包括符号名和符号地址;
步骤9、若安卓兼容环境运行所需的所有进程均已启动,则完成安卓兼容环境的启动结束本流程;否则执行步骤2。
2.根据权利要求1所述的启动方法,其特征在于,所述步骤4中的所述获取Boot.art文件的地址空间作为镜像地址空间的方式为:解析Boot.art文件获取其对应的基地址及镜像地址空间大小,确定内存镜像文件的地址空间,将该地址空间命名为镜像地址空间。
3.根据权利要求1所述的启动方法,其特征在于,所述步骤4中的所述获取当前进程的虚拟地址空间作为进程虚拟地址空间的方式为:获取当前进程的进程ID,读取当前进程的映射文件进而将获取的当前进程所分配的虚拟地址空间作为进程虚拟地址空间。
4.根据权利要求1所述的启动方法,其特征在于,所述步骤2中的所述预设路径为“/system/framework/arch/”。
5.根据权利要求1所述的启动方法,其特征在于,所述步骤2还包括若所述未启动的进程仅存在非位置无关代码类型的编译结果,则在解析未启动的进程的导入符号表时,判断兼容环境符号表是否为空,若兼容环境符号表不为空,则采用兼容环境符号表中保存的符号地址替换导入符号表中具有相同符号名的符号地址,若兼容环境符号表为空则不处理。
6.根据权利要求1所述的启动方法,其特征在于,所述步骤4中所述将Boot.art文件映射到镜像地址空间完成进程的启动的方式为:若当前Linux系统的内核版本不低于5.18,则使用memfd接口将Boot.art映射到镜像地址空间;否则,采用ashmem接口将Boot.art映射到镜像地址空间。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京麟卓信息科技有限公司,未经北京麟卓信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211223999.7/1.html,转载请声明来源钻瓜专利网。