[发明专利]一种针对分布式系统程序死锁缺陷的测试系统及方法有效

专利信息
申请号: 201810799683.X 申请日: 2018-07-20
公开(公告)号: CN108959098B 公开(公告)日: 2021-11-05
发明(设计)人: 赵靖;王延斌;吴卓霏;鲁华林;姚念民 申请(专利权)人: 大连理工大学
主分类号: G06F11/36 分类号: G06F11/36;G06F9/52
代理公司: 大连理工大学专利中心 21200 代理人: 温福雪;侯明远
地址: 116024 辽*** 国省代码: 辽宁;21
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 针对 分布式 系统 程序 死锁 缺陷 测试 方法
【权利要求书】:

1.一种针对分布式系统程序死锁缺陷的测试系统,其特征在于,所述的针对分布式系统程序死锁缺陷的测试系统包括待测试分布式系统软件、自定义网络事件模拟器、二进制插桩模块、时间序列维护模块、基于优先级的线程调度模块和死锁检测模块;

自定义网络事件模拟器用来模拟分布式系统中其他主机上产生的网络锁事件,并将产生的网络锁事件以JSON格式发送至时间序列维护模块,其中网络锁事件包括时间戳、网络事件线程ID、锁ID和锁事件内存地址;

二进制插桩模块用来对待测试分布式系统软件进行动态插桩,获取待测试分布式系统软件在一次运行过程中各个线程执行的所有锁事件,并通过JSON格式以时间顺序发送给时间序列维护模块,锁事件包括时间戳、线程ID、锁ID和锁事件内存地址;

时间序列维护模块从自定义网络事件模拟器和二进制插桩模块接收JSON格式的锁事件,并将接收到的锁事件按时间顺序和线程ID进行维护,之后将收集到的全部信息通过JSON格式发送给基于优先级的线程调度模块;

基于优先级的线程调度模块从时间序列维护模块中接收JSON格式的数据,使用概率保证调度算法并根据死锁检测模块反馈的结果,对并发的线程进行调度,将其并行逻辑转为串行逻辑,之后将执行结果以锁事件为单位,通过JSON格式发送给死锁检测模块;

死锁检测模块从基于优先级的线程调度模块中接收JSON格式的锁事件,并采用死锁检测算法判断当前线程是否被阻塞,并将结果反馈至基于优先级的线程调度模块,若当前未执行完成的线程均被阻塞,则将其判定为死锁。

2.一种针对分布式系统程序死锁缺陷的测试方法,其特征在于,步骤如下:

(1)自定义网络事件模拟器用来模拟分布式系统中其他主机上产生的网络锁事件,并将产生的网络锁事件以JSON格式发送至时间序列维护模块,其中网络锁事件包括时间戳、网络事件线程ID、锁ID和锁事件内存地址;

(2)二进制插桩模块用来对待测试分布式系统软件进行动态插桩,获取待测试分布式系统软件在一次运行过程中各个线程执行的所有锁事件,并通过JSON格式以时间顺序发送给时间序列维护模块,锁事件包括时间戳、线程ID、锁ID和锁事件内存地址;

(3)时间序列维护模块从自定义网络事件模拟器和二进制插桩模块接收JSON格式的锁事件,并将接收到的锁事件按时间顺序和线程ID进行维护,之后将收集到的全部信息通过JSON格式发送给基于优先级的线程调度模块;

(4)基于优先级的线程调度模块从时间序列维护模块中接收JSON格式的数据,使用概率保证调度算法并根据死锁检测模块反馈的结果,对并发的线程进行调度,将其并行逻辑转为串行逻辑,之后将执行结果以锁事件为单位,通过JSON格式发送给死锁检测模块;

(5)死锁检测模块从基于优先级的线程调度模块中接收JSON格式的锁事件,并采用死锁检测算法判断当前线程是否被阻塞,并将结果反馈至基于优先级的线程调度模块,若当前未执行完成的线程均被阻塞,则将其判定为死锁;

具体如下:

4.1)对概率保证调度算法进行初始化,包括线程数量、线程优先级和优先级转换点,并从最高优先级的线程开始读取数据;

4.1.1)线程数量n及总事件数k与时间序列维护模块发送信息中线程数量相对应;

4.1.2)设置缺陷深度的估计值d;

4.1.3)将优先级{d,d+1,...,d+n-1}随机分配给n个线程;

4.1.4)在k个锁事件中随机选取d-1个作为优先级转换点;

4.2)判断当前读取数据位置是否存在优先级转换点,若不存在,进入步骤4.3),若存在,进入步骤4.4);

4.3)从最高优先级线程中按时间顺序读取第一条尚未被读取的锁事件记录;

4.4)将优先级{1,2…,d-1}随机分配给当前线程以更新当前线程优先级;

4.5)将读取的锁事件数据发送给死锁检测模块,并由死锁检测模块反馈是否终止当前算法以及是否更新当前线程优先级;

4.6)根据死锁检测模块发送的反馈结果判断是否终止算法,若否,进入步骤S207,若是,则终止当前算法;

4.7)根据死锁检测模块发送的反馈结果进一步判断是否需要更新当前线程优先级,若是,进入步骤4.4),若否进入步骤4.2);

重复上述步骤4.2)~4.7),直至终止;

5.1)从基于优先级的线程调度模块中接收锁事件后判该锁事件的类型,若为释放锁事件,进入步骤5.2),若为加锁事件,进入步骤5.3);

5.2)释放当前线程占用的该锁事件对应的内存;

5.3)判断当前锁事件申请的内存是否已被加锁,若被已被加锁,进入步骤5.6),若未被加锁,进入步骤5.4);

5.4)对当前线程申请的内存进行加锁;

5.5)将当前线程设为未被阻塞状态,发送“无需更新线程优先级”的命令给基于优先级的线程调度模块;

5.6)将当前线程设为阻塞状态;

5.7)判断是否存在未被阻塞且正在运行的线程,若存在,进入步骤5.8),若不存在,进入步骤5.9);

5.8)返回“更新当前线程优先级”的命令;

5.9)返回“终止算法”命令并报告死锁。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大连理工大学,未经大连理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201810799683.X/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top