论文部分内容阅读
设备驱动程序是操作系统内核的重要组成部分,在内核中占据着举足轻重的地位。同时,设备驱动在内核源码中所占份额往往可达50%以上,且设备驱动程序与硬件直接相关故而设计逻辑错综复杂,因此设备驱动程序开发和维护的工作量极其繁重,并使其成为操作系统内核漏洞的主要来源。在众多操作系统中,Linux是各种服务器及智能设备上操作系统的首要选择。为了满足新的需求和持续改善系统性能,Linux内核演变非常迅速,这便要求相关设备驱动程序必须及时地加以更新。特别地,设备驱动程序密切依赖于内核诸多功能函数和数据结构,所以内核及驱动支持接口的任何改变通常会引发那些相关联的设备驱动代码在不少地方均须做出相应的调整。毋庸置疑,设备驱动程序更新将会越来越频繁。需要指出的是,目前设备驱动更新工作基本上是依靠手工来完成的,十分费力耗时还容易出错,所以实现设备驱动程序更新的自动化势在必行。综上所述,本文开展Linux设备驱动程序自动更新方法与技术的研究,具有重要的现实意义和应用价值。本文首先研究讨论了 Linux内核差异分析、GCC插件和抽象语法树、函数调用图等相关工作及设备驱动程序协同演化问题,重点分析讨论了设备驱动相关内核依赖接口,对内核驱动依赖接口变化情况进行了分类,提出了一种基于源码的Linux设备驱动程序的自动更新方法,并建立了相应的设备驱动辅助更新模型。具体而言,从设备驱动程序对内核依赖的接口入手,通过针对性地分析设备驱动所依赖的内核接口(函数、宏和数据结构),进而展开相应依赖接口的差异性分析,然后根据设备驱动协同更新影响程度的等级划分标准进行差异筛选分类,从而生成驱动更新辅助信息即对应的更新操作提示,以协助设备驱动开发维护人员完成快速可靠的驱动更新。在此基础上,本文设计实现了一组相应的驱动更新支撑工具,包括设备驱动程序对内核依赖接口的分析工具(含设备驱动对头文件的依赖分析工具和设备驱动依赖接口信息提取工具)、设备驱动依赖接口差异分析工具及设备驱动更新辅助信息生成工具。相关原型经测试验证表明,具有较好的可用性,可以有效改善设备驱动程序的开发和维护工作。其间,还探讨了用于评估设备驱动程序辅助更新工作的量化指标即关于辅助更新提示信息的误报率和漏报率的概念及计算方法。本文关于设备驱动程序自动更新的研究工作只能算是刚刚起步,下一步可在设备驱动源码自动修正完善以及与相关开发过程和环境的有机集成等方面开展进一步研究。