linux 优化版本,Linux版本差异性分析优化与PATCH生成

摘要:

Linux内核代码量极大,逻辑关系复杂,为了方便其他开发者更好的编写诸如驱动程序、文件系统等内核模块内容,Linux内核团队建立了庞大且高效的Linux内核API体系,以方便开发者使用。随着Linux项目的不断发展壮大,其API演化速度也在逐渐加快,而想要将内核模块进行版本适应,使之能够工作在更新或者更符合设计者要求的内核版本中就不得不跨过API修改这一道鸿沟。因此,随着Linux内核API数量的增加及对其修改次数的不断增多,研究并设计一套能够自动化完成内核模块版本适应的系统存在着很高的研究价值和应用价值。为解决版本适应问题,关键在于对版本间API变化信息进行收集和分析,并自动化地根据这些信息对源代码进行修改。在能够提供足够多修改信息的基础上,研制通过这些信息进行自动化修改的工具。本文研究重点就集中到对修改信息的处理和转化为工具可识别内容上。具体研究内容包括:1、提出了一种采用抽象语法树作为主体的变化信息的收集方法。首先,通过编译工具获取两个版本源代码的抽象语法树内容的差异,以之作为修改信息源。由于源代码中普遍存在对于变化来说不敏感的内容,本文重点研究解决了如何从中提取能够代表最大范围源代码修改的信息,其中包括如何对从编译器中得到的信息进行分类合并,并对不敏感信息进行抽象化处理,以保证修改信息的泛用性和准确性,并将无用信息简化等。相比现有的基于文本分析和编译错误分析方法而言,这种方法能够更精确全面地获取修改信息并且更方便对其进行划分。2、提出了一种将进行过处理的修改信息生成为Patch的处理方法。该方法通过对AST-Pattern中所表现出的修改信息进行收集,并保证其能够解决正确地对源代码中需要修改的部分进行匹配等问题。以此为基础设计并实现了通过语义信息生成Patch的方法,并通过这一方法来完成源代码的自动化修改。3、设计并实现了验证系统。本文通过对API修改进行分析和定义,选取了5个包含驱动和文件系统在内的内核模块,总结了从Linux-3.10版本到3.17版本间全部93个与其相关的API修改提交作为分析主体,验证本文系统在分析差异信息后所自动化做出的源代码修改和开发人员实际作出的修改之间的差异,并以此为基础分析本文系统的可行性以及实现效果,并进一步提出未来的改进方向。

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值