[发明专利]基于文件的Linux基础软件依赖关系分析方法有效
申请号: | 201410291217.2 | 申请日: | 2014-06-25 |
公开(公告)号: | CN104063220B | 公开(公告)日: | 2017-04-12 |
发明(设计)人: | 陶品;冯立新 | 申请(专利权)人: | 清华大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F17/30 |
代理公司: | 北京华睿卓成知识产权代理事务所(普通合伙)11436 | 代理人: | 张丽新,彭武 |
地址: | 100084*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 文件 linux 基础 软件 依赖 关系 分析 方法 | ||
1.一种用于分析Linux基础软件之间的依赖关系的Linux基础软件依赖关系分析方法,包括:
步骤1:扫描一个Linux系统,得到所有二进制文件的列表,二进制文件包括二进制可执行文件和库文件;
步骤2:获得该列表中的二进制文件之间的依赖关系;
步骤3:消除二进制文件的循环依赖关系,构建集合{X},其中集合{X}由彼此之间不存在循环依赖关系的元素组成,元素X为由处于一个循环依赖链上的所有二进制文件构成的集合或者由不存在于任何一个循环依赖链中的单个二进制文件构成的集合;
步骤4:对集合{X}中的每个元素,依据步骤2获得的二进制文件之间的依赖关系,建立元素之间的依赖关系,其中如果一个元素中存在多个二进制文件与另一个元素中的多个二进制文件存在依赖关系,两个元素之间只记为一个依赖关系,集合{X}中各元素的依赖关系是一个内部不存在循环依赖的树状依赖关系图。
2.根据权利要求1的Linux基础软件依赖关系分析方法,所述步骤2的获得二进制文件之间的依赖关系包括:
步骤2-1:对列表中的每个二进制文件,分析该二进制文件与其他二进制文件之间的函数调用关系,获得该二进制文件所依赖的其他二进制文件的集合;以及
步骤2-2:对上述集合中的每个被依赖的二进制文件,建立一个从被分析的二进制文件到集合中被依赖的该二进制文件的有向依赖连接。
3.根据权利要求1或2的Linux基础软件依赖关系分析方法,所述步骤3的消除二进制文件的循环依赖关系包括:
步骤3-1:查找系统二进制文件的循环依赖关系;
步骤3-2:对于找到的每个循环依赖关系,由处于循环依赖链上的所有二进制文件构成一个集合,记为集合Xi,i=0...M-1,其中M表示整个系统中没有重叠的循环依赖链个数,M为大于等于1的正整数;
步骤3-3:将其他不存在于任何一个循环依赖链中的二进制文件记为只有一个元素的集合Xj,j=M...M+N-1,N表示系统中不在任何一个循环依赖链中的二进制文件个数,N为大于等于1的正整数;以及
步骤3-4:由所有的Xi和Xj构成所述集合{X},该集合{X}的大小为N+M。
4.根据权利要求1或2的Linux基础软件依赖关系分析方法,还包括:
步骤5:依据元素之间的依赖关系,对集合{X}中的每个元素,计算该元素被其他元素直接依赖和间接依赖的总次数,得出该元素的重要性评估。
5.根据权利要求4的Linux基础软件依赖关系分析方法,所述步骤5的对集合{X}中的每个元素,计算该元素被其他元素直接依赖和间接依赖的总次数包括:
步骤5-1:初始化集合{X}中每个元素对应的计数器A和计数器B值均为0,计数器A的值表示该元素被其他元素依赖的次数,计数器B的值表示该元素一共依赖多少个其他元素;
步骤5-2:逐个处理集合{X}中的每个元素,如果该元素依赖其他某个元素,则被依赖的所述其他某个元素所对应的计数器A执行加一操作,该元素对应的计数器B值等于该元素依赖的其他元素的总个数,
步骤5-3:判断集合{X}中是否存在未被处理的元素,如果还有则返回步骤S5-2;否则结束该迭代处理;
步骤5-4:依据各个元素对应的计数器A和计数器B,得到每个元素被其他元素直接依赖和间接依赖的总次数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410291217.2/1.html,转载请声明来源钻瓜专利网。