[发明专利]操作系统中的死锁检测方法有效
| 申请号: | 201310351342.3 | 申请日: | 2013-08-13 |
| 公开(公告)号: | CN103399818A | 公开(公告)日: | 2013-11-20 |
| 发明(设计)人: | 李曦;陈香兰;周学海;张海鹏;贾刚勇;朱宗卫 | 申请(专利权)人: | 中国科学技术大学苏州研究院 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F9/46 |
| 代理公司: | 苏州创元专利商标事务所有限公司 32103 | 代理人: | 范晴 |
| 地址: | 215123 江苏省苏州*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 操作系统 中的 死锁 检测 方法 | ||
1.一种操作系统中的死锁检测方法,其特征在于所述方法包括操作系统中多线程或进程并发执行时时进行以下检测:
1)每隔预定的死锁检测周期检查锁的持有者链表HOLDER_LIST是否为空;
2)当锁的持有者链表HOLDER_LIST不为空时,检查锁的持有者链表HOLDER_LIST中每个锁的持有者是不是锁的等待者;
3)当锁的持有者为锁的等待者时,检测锁的持有者与锁的等待者之间是否会形成循环等待图;
当且仅当锁的持有者链表HOLDER_LIST不为空,锁的持有者链表HOLDER_LIST中锁的持有者是锁的等待者,锁的持有者与锁的等待者之间形成循环等待图三者条件同时满足时,判断操作系统中线程或进程并行处理时存在死锁;否则判断不存在死锁。
2.根据权利要求1所述的死锁检测方法,其特征在于所述方法中先构建空的锁的持有者链表HOLDER_LIST,采用操作系统内核跟踪探测工具在操作系统的加锁函数的函数出口处探测,获取锁的持有者信息;当加锁函数退出时,将进程号或线程号、锁类型、资源地址作为新的锁的持有者信息插入锁的持有者链表HOLDER_LIST;当解锁函数退出时,将相应的锁的持有者信息从锁的持有者链表HOLDER_LIST删除。
3.根据权利要求2所述的死锁检测方法,其特征在于所述方法中操作系统内核跟踪探测工具选自linux内核函数的工具systemtap、Solaris内核或FreeBSD内核中的DTrace。
4.根据权利要求1所述的死锁检测方法,其特征在于所述方法中锁的等待者是通过筛选异常进程或线程的方法获取的,所述异常进程或线程为在预定阈值内获不到处理器或在预定阈值内一直占有处理器的进程或线程。
5.根据权利要求4所述的死锁检测方法,其特征在于所述方法中进程或线程的等待时间通过使用当前的系统时间减去进程或线程描述符中的进程或线程最后一次运行的时间来获得的。
6.根据权利要求4所述的死锁检测方法,其特征在于所述方法中预定阈值为进程的时间片与进程持有锁的时间的较大值。
7.根据权利要求6所述的死锁检测方法,其特征在于所述方法中进程持有锁的时间是通过加锁函数与解锁函数之间的时间统计出来的;所述进程的时间片是通过进程的描述符中记录进程总的运行时间与运行次数的比值统计获得的。
8.根据权利要求4所述的死锁检测方法,其特征在于所述方法中预定阈值为10s。
9.根据权利要求4所述的死锁检测方法,其特征在于所述方法中异常进程或线程的筛选是通过判断异常进程的内核栈上有无加锁函数,从异常进程中筛选出锁的等待者。
10.根据权利要求1所述的死锁检测方法,其特征在于所述方法中循环等待图是通过进程或线程间的资源依赖关系进行判断的;当线程或进程T1等待资源R2,线程或进程T2是资源R2的持有者,那么线程或进程T1与T2之间的关系称作资源依赖关系;当线程或进程间存在线程或进程指向自己的资源依赖关系则判断线程或进程间形成循环等待图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学技术大学苏州研究院,未经中国科学技术大学苏州研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310351342.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种宽视角型偏光片及液晶显示盒
- 下一篇:一种车底安检仪





