一种linux用户态互斥锁死锁检测方法及系统技术方案

技术编号:14130899 阅读:497 留言:1更新日期:2016-12-09 19:32
本发明专利技术公开了一种linux用户态互斥锁死锁检测方法,包括:将用户态互斥锁数据结构与lockdep数据结构进行封装;对引入内核lockdep死锁程序的用户态互斥锁接口进行封装;将封装后的用户态互斥锁接口,编译成用户态互斥锁检测动态静态链接库,生成互斥锁死锁检测库文件;根据所述互斥锁死锁检测库文件编译互斥锁死锁检测操作;执行所述互斥锁死锁检测操作,若存在死锁,则记录死锁信息;该方法通过调用lockdep模块能够准确的检测出linux用户态互斥锁死锁;本发明专利技术还公开了一种linux用户态互斥锁死锁检测系统。

【技术实现步骤摘要】

本专利技术涉及操作系统故障管理领域,特别涉及一种linux用户态互斥锁死锁检测方法及系统
技术介绍
死锁就是多个进程(线程)因为等待别的进程已占有的自己所需要的资源而陷入阻塞的一种状态,死锁状态一旦形成,进程本身是解决不了的,需要外在的推动,才能解决,最重要的是死锁不仅仅影响进程业务,而且还会占用系统资源,影响其他进程。内核死锁是长期困扰内核开发人员的问题之一;Linux系统用户态C程序同样存在死锁问题,因此,如何准确的检测出linux用户态互斥锁死锁,是本领域技术人员需要解决的技术问题。
技术实现思路
本专利技术的目的是提供一种linux用户态互斥锁死锁检测方法及系统,均能够通过调用lockdep模块能够准确的检测出linux用户态互斥锁死锁。为解决上述技术问题,本专利技术提供一种linux用户态互斥锁死锁检测方法,包括:将用户态互斥锁数据结构与lockdep数据结构进行封装;对引入内核lockdep死锁程序的用户态互斥锁接口进行封装;将封装后的用户态互斥锁接口,编译成用户态互斥锁检测动态静态链接库,生成互斥锁死锁检测库文件;根据所述互斥锁死锁检测库文件编译互斥锁死锁检测操作;执行所述互斥锁死锁检测操作,若存在死锁,则记录死锁信息。其中,将用户态互斥锁数据结构与lockdep数据结构进行封装,包括:将用户态互斥锁数据结构pthread_mutex_t添加lockdep死锁检测的lockdep_map数据结构。其中,对引入内核lockdep死锁程序的用户态互斥锁接口进行封装,包括:引入内核lockdep死锁程序,定义用户态文件;其中,所述用户态文件包括lockdep.c、lockdep_states.h和lockdep_internals.h;根据所述用户态文件对用户态互斥锁接口进行封装;其中,所述用户态互斥锁接口包括:PTHREAD_MUTEX_INITIALIZER、pthread_mutex_init、pthread_mutex_lock、pthread_mutex_unlock、pthread_mutex_trylock、pthread_mutex_destroy。其中,执行所述互斥锁死锁检测操作,包括:判断编译时是否引入所述互斥锁死锁检测库文件;若引入,则执行所述互斥锁死锁检测操作。其中,记录死锁信息,包括:打印死锁信息。本专利技术提供一种linux用户态互斥锁死锁检测系统,包括:数据结构封装模块,用于将用户态互斥锁数据结构与lockdep数据结构进行封装;接口封装模块,用于对引入内核lockdep死锁程序的用户态互斥锁接口进行封装;编译模块,用于将封装后的用户态互斥锁接口,编译成用户态互斥锁检测动态静态链接库,生成互斥锁死锁检测库文件;用户态程序模块,用于根据所述互斥锁死锁检测库文件编译互斥锁死锁检测操作;执行所述互斥锁死锁检测操作,若存在死锁,则记录死锁信息。其中,所述数据结构封装模块具体为将用户态互斥锁数据结构pthread_mutex_t添加lockdep死锁检测的lockdep_map数据结构的模块。其中,接口封装模块具体为引入内核lockdep死锁程序,定义用户态文件;根据所述用户态文件对用户态互斥锁接口进行封装的模块;其中,所述用户态互斥锁接口包括:PTHREAD_MUTEX_INITIALIZER、pthread_mutex_init、pthread_mutex_lock、pthread_mutex_unlock、pthread_mutex_trylock、pthread_mutex_destroy;所述用户态文件包括lockdep.c、lockdep_states.h和lockdep_internals.h。其中,用户态程序模块,包括:编译单元,用于根据所述互斥锁死锁检测库文件编译互斥锁死锁检测操作;判断单元,用于判断编译时是否引入所述互斥锁死锁检测库文件;执行单元,用于若存在所述互斥锁死锁检测库文件,执行所述互斥锁死锁检测操作;记录单元,用于若存在死锁,则记录死锁信息。其中,所述记录单元具体为打印死锁信息的单元。本专利技术所提供的linux用户态互斥锁死锁检测方法,包括:将用户态互斥锁数据结构与lockdep数据结构进行封装;对引入内核lockdep死锁程序的用户态互斥锁接口进行封装;将封装后的用户态互斥锁接口,编译成用户态互斥锁检测动态静态链接库,生成互斥锁死锁检测库文件;根据所述互斥锁死锁检测库文件编译互斥锁死锁检测操作;执行所述互斥锁死锁检测操作,若存在死锁,则记录死锁信息;可见该方法通过封装lockdep模块,使内核通过调用内核lockdep死锁检测函数来进行用户态互斥锁死锁检测,能够准确的检测出linux用户态互斥锁死锁;本专利技术还提供了一种linux用户态互斥锁死锁检测系统,具有上述有益效果,在此不再赘述。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本专利技术实施例所提供的linux用户态互斥锁死锁检测方法的流程图;图2为本专利技术实施例所提供的linux用户态互斥锁死锁检测系统的结构框图。具体实施方式本专利技术的核心是提供一种linux用户态互斥锁死锁检测方法及系统,均能够通过调用lockdep模块能够准确的检测出linux用户态互斥锁死锁。为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。请参考图1,图1为本专利技术实施例所提供的linux用户态互斥锁死锁检测方法的流程图;该方法可以包括:S100、将用户态互斥锁数据结构与lockdep数据结构进行封装;其中,该步骤即为用户态互斥锁数据结构封装,具体的将用户态互斥锁数据结构pthread_mutex_t添加lockdep死锁检测的lockdep_map数据结构。互斥锁数据结构封装,在原有的数据结构pthread_mutex_t基础上添加lockdep_map数据结构,定义为lockdep_pthread_mutex数据机构。具体过程如下:变量定义如下:#define NR_LOCKDEP_CACHING_CLASSES 2#define MAX_LOCKDEP_SUBCLASSES 8ULS110、对引入内核lockdep死锁程序的用户态互斥锁接口进行封装;其中,该步骤即为用户态互斥锁接口封装,引入内核lockdep死锁程序,定义用户态文件;其中,所述用户态文件包括lockdep.c、lockdep_states.h和lockdep_internals.h;根据所述用户态文件对用户态互斥锁接口进行封装;其中,所述用户态互斥锁接口包括:PTHREAD_MUTEX_INITIALIZER、pthread_mutex_init、pthread_mutex_lock、p本文档来自技高网...
一种linux用户态互斥锁死锁检测方法及系统

【技术保护点】
一种linux用户态互斥锁死锁检测方法,其特征在于,包括:将用户态互斥锁数据结构与lockdep数据结构进行封装;对引入内核lockdep死锁程序的用户态互斥锁接口进行封装;将封装后的用户态互斥锁接口,编译成用户态互斥锁检测动态静态链接库,生成互斥锁死锁检测库文件;根据所述互斥锁死锁检测库文件编译互斥锁死锁检测操作;执行所述互斥锁死锁检测操作,若存在死锁,则记录死锁信息。

【技术特征摘要】
1.一种linux用户态互斥锁死锁检测方法,其特征在于,包括:将用户态互斥锁数据结构与lockdep数据结构进行封装;对引入内核lockdep死锁程序的用户态互斥锁接口进行封装;将封装后的用户态互斥锁接口,编译成用户态互斥锁检测动态静态链接库,生成互斥锁死锁检测库文件;根据所述互斥锁死锁检测库文件编译互斥锁死锁检测操作;执行所述互斥锁死锁检测操作,若存在死锁,则记录死锁信息。2.如权利要求1所述的linux用户态互斥锁死锁检测方法,其特征在于,将用户态互斥锁数据结构与lockdep数据结构进行封装,包括:将用户态互斥锁数据结构pthread_mutex_t添加lockdep死锁检测的lockdep_map数据结构。3.如权利要求2所述的linux用户态互斥锁死锁检测方法,其特征在于,对引入内核lockdep死锁程序的用户态互斥锁接口进行封装,包括:引入内核lockdep死锁程序,定义用户态文件;其中,所述用户态文件包括lockdep.c、lockdep_states.h和lockdep_internals.h;根据所述用户态文件对用户态互斥锁接口进行封装;其中,所述用户态互斥锁接口包括:PTHREAD_MUTEX_INITIALIZER、pthread_mutex_init、pthread_mutex_lock、pthread_mutex_unlock、pthread_mutex_trylock、pthread_mutex_destroy。4.如权利要求3所述的linux用户态互斥锁死锁检测方法,其特征在于,执行所述互斥锁死锁检测操作,包括:判断编译时是否引入所述互斥锁死锁检测库文件;若引入,则执行所述互斥锁死锁检测操作。5.如权利要求4所述的linux用户态互斥锁死锁检测方法,其特征在于,记录死锁信息,包括:打印死锁信息。6.一种linux用户态互斥锁死锁检测系统,其特征在于,包括:数据结构封装...

【专利技术属性】
技术研发人员:王垒徐亚州
申请(专利权)人:浪潮北京电子信息产业有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有1条评论
  • 来自[广东省深圳市电信] 2019年12月05日 14:38
    厉害
    1
1