CN114035970A - 一种数据并发竞争冲突检测分析方法及系统 - Google Patents
一种数据并发竞争冲突检测分析方法及系统 Download PDFInfo
- Publication number
- CN114035970A CN114035970A CN202210023261.XA CN202210023261A CN114035970A CN 114035970 A CN114035970 A CN 114035970A CN 202210023261 A CN202210023261 A CN 202210023261A CN 114035970 A CN114035970 A CN 114035970A
- Authority
- CN
- China
- Prior art keywords
- thread
- resource
- deadlock
- mutex
- bitmap
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种数据并发竞争冲突检测分析方法及系统,涉及数据竞争分析技术领域。该方法包括:发送mutex互斥资源接口的监控指令;对监控指令进行处理,创建对应mmap内存存储区,并对对应的mutex互斥资源接口进行hook;当线程访问mutex互斥资源接口时,判断内存存储区中是否存在当前的mutex互斥资源接口地址,如果否,则对mmap内存存储区中的数据进行更新,当mmap内存存储区中持有count为负时,获取并根据当前锁持有者的线程情况信息采用对应的死锁检测方法进行死锁判定,进行异常输出。本发明可有效解决生产实际中大量隐秘的内存操作并发竞争问题。
Description
技术领域
本发明涉及数据竞争分析技术领域,具体而言,涉及一种数据并发竞争冲突检测分析方法及系统。
背景技术
基于多处理的系统中汇集多个CPU,但是共享内存子系统,无法避免的带来数据竞争。竞争同步不当的时候,会带来各种数据异常,这类问题一直很难调试和定位。传统方式一般是对存在竞争的临界资源进行互斥锁的操作等,锁的冲突加剧,从而导致多CPU处理的优势明显下降。死锁检测的方式方法充满多样性,单一的方式检测已经难以满足复杂系统的死锁冲突检测。小规模的程序检测死锁相对生产而言是相对容易发现的,大型复杂的系统、分布式的复杂系统中如何发现死锁变得极其困难,以及嵌套递归等等复杂场景造成的死锁更是在静态扫描过程难以检测。其中大型系统或者分布式应用中对于一个持有某个资源的线程,等待另一个或者多个持有自己等待自己持有资源的状态,这种死锁的判定异常困难。往往生产出现这类问题又无法定位触发条件。大量的生产业务系统往往需要既满足性能需求又能对异常的竞争进行追踪定位,因此,亟需提供一种新的分析检测手段,解决生产实际中大量隐秘的内存操作并发竞争问题。
发明内容
为了克服上述问题或者至少部分地解决上述问题,本发明实施例提供一种数据并发竞争冲突检测分析方法及系统,可有效解决生产实际中大量隐秘的内存操作并发竞争问题。
本发明的实施例是这样实现的:
第一方面,本发明实施例提供一种数据并发竞争冲突检测分析方法,包括以下步骤:
S1、基于系统临界资源保护接口情况信息生成并发送mutex互斥资源接口的监控指令;
S2、对监控指令进行处理,创建对应mmap内存存储区,并对对应的mutex互斥资源接口进行hook;
S3、当线程访问mutex互斥资源接口时,判断内存存储区中是否存在当前的mutex互斥资源接口地址,如果是,则结束;如果否,则对mmap内存存储区中的数据进行更新,并进入步骤S4;
S4、当mmap内存存储区中持有count为负时,获取并根据当前锁持有者的线程情况信息采用对应的死锁检测方法进行死锁判定,生成死锁检测结果,并进行异常输出。
为了解决现有技术中的无法对数据并发竞争进行精准分析的技术问题,通过对系统的线程创建接口、互斥锁进行钩子回调,不同于传统的复写方式,本发明极大的减少了开销。通过在系统层hook需要死锁检测的临界资源保护接口,通过mmap映射动态检测存储区,依据一个持有某个资源的线程,等待其它线程持有资源或者多个等待已被持有资源的不可获取状态的这种死锁的判定,采用基于多位图逻辑辅助判定的方式,能够在极低的开销内判定死锁,并且能够捕获死锁过程的资源情况,方便系统诊断。
基于第一方面,在本发明的一些实施例中,上述存储区包括锁地址链表、资源持有者位图和等待资源位图。
基于第一方面,在本发明的一些实施例中,上述锁地址链表包括计数器count、时间戳、线程id和线程位图。
基于第一方面,在本发明的一些实施例中,上述步骤S3包括:
当线程访问mutex互斥资源接口时,判断当前锁地址链表是否存在当前的mutex地址,如果是,则结束;如果否,则对线程位图进行标记,并将mutex地址、线程id、时间戳、计数器count和标记后的线程位图存放至mmap内存存储区;
判断count是否为0,如果是,则更新资源持有者位图;如果否,则更新等待资源位图,并进入步骤S4。
基于第一方面,在本发明的一些实施例中,上述步骤S4包括:
判断持有count是否为负,如果否,则结束;如果是,则获取当前锁持有者的线程情况信息;
判断当前锁持有者的线程情况信息是否为单线程,如果是,则判断线程位图的bit使用位数量是否为1,若是,则为非死锁,若否,则为死锁,记录持有死锁的相关记录,并进行异常输出;如果否,则根据资源持有者位图和等待资源位图结合进行死锁判断,当且仅当线程持有者的所有占用资源在同一位图中为非死锁状态,线程的两个位图进行逻辑与操作,运算后的结果若为真则为非死锁状态,记录持有死锁的相关记录,并进行异常输出。
第二方面,本发明实施例提供一种数据并发竞争冲突检测分析系统,包括系统临界资源客户端模块、系统临界资源hook模块、数据更新模块以及死锁冲突检测模块,其中:
系统临界资源客户端模块,用于基于系统临界资源保护接口情况信息生成并发送mutex互斥资源接口的监控指令;
系统临界资源hook模块,用于对监控指令进行处理,创建对应mmap内存存储区,并对对应的mutex互斥资源接口进行hook;
数据更新模块,用于当线程访问mutex互斥资源接口时,判断内存存储区中是否存在当前的mutex互斥资源接口地址,如果是,则结束;如果否,则对mmap内存存储区中的数据进行更新,并进入死锁冲突检测模块;
死锁冲突检测模块,当mmap内存存储区中持有count为负时,获取并根据当前锁持有者的线程情况信息采用对应的死锁检测方法进行死锁判定,生成死锁检测结果,并进行异常输出。
为了解决现有技术中的无法对数据并发竞争进行精准分析的技术问题,本发明基于系统临界资源客户端模块通过和系统临界资源hook模块交互以控制当前系统检测哪些临界资源保护接口;系统临界资源hook模块负责响应系统临界资源客户端模块的处理请求,并对请求的临界资源保护接口hook,创建相关mmap内存存储区,然后通过死锁冲突检测模块进行死锁冲突检测,采用基于多位图逻辑辅助判定的方式,能够在极低的开销内判定死锁,并且能够捕获死锁过程的资源情况,方便系统诊断。
基于第二方面,在本发明的一些实施例中,该数据并发竞争冲突检测分析系统还包括资源回溯模块,用于回溯死锁相关业务线程。
基于第二方面,在本发明的一些实施例中,该数据并发竞争冲突检测分析系统还包括解锁模块,用于提供接锁的处理,通过扫描锁地址链表,找到死锁的mutex地址,进行解锁。
第三方面,本申请实施例提供一种电子设备,其包括存储器,用于存储一个或多个程序;处理器。当一个或多个程序被处理器执行时,实现如上述第一方面中任一项的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面中任一项的方法。
本发明实施例至少具有如下优点或有益效果:
本发明实施例提供一种数据并发竞争冲突检测分析方法及系统,通过对系统的线程创建接口、互斥锁进行钩子回调,不同于传统的复写方式,本发明极大的减少了开销。通过在系统层hook需要死锁检测的临界资源保护接口,通过mmap映射动态检测存储区,依据一个持有某个资源的线程,等待其它线程持有资源或者多个等待已被持有资源的不可获取状态的这种死锁的判定,采用基于多位图逻辑辅助判定的方式,能够在极低的开销内判定死锁。本发明设计的动态检测手段,对系统应用是无感知、低耦合的,并且极其高效,对实际系统使用并不产生延迟,通过一定的辅助位图空间达到高效的检测冲突,并且能够捕获死锁过程的资源情况,方便系统诊断。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例一种数据并发竞争冲突检测分析方法的流程图;
图2为本发明实施例一种数据并发竞争冲突检测分析系统的原理框图;
图3为本发明实施例提供的一种电子设备的结构框图。
图中标记说明:100、系统临界资源客户端模块;200、系统临界资源hook模块;300、数据更新模块;400、死锁冲突检测模块;500、资源回溯模块;600、解锁模块;101、存储器;102、处理器;103、通信接口。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
实施例:
如图1所示,第一方面,本发明实施例提供一种数据并发竞争冲突检测分析方法,包括以下步骤:
S1、基于系统临界资源保护接口情况信息生成并发送mutex互斥资源接口的监控指令;
S2、对监控指令进行处理,创建对应mmap内存存储区,并对对应的mutex互斥资源接口进行hook;上述存储区包括锁地址链表、资源持有者位图和等待资源位图。上述锁地址链表包括计数器count、时间戳、线程id和线程位图。count初始状态是1,表示资源可用,count初始状态是0表示资源被占用,为负表示多人等待资源。
S3、当线程访问mutex互斥资源接口时,判断内存存储区中是否存在当前的mutex互斥资源接口地址,如果是,则结束;如果否,则对mmap内存存储区中的数据进行更新,并进入步骤S4;
进一步地,当线程访问mutex互斥资源接口时,判断当前锁地址链表是否存在当前的mutex地址,如果是,则结束;如果否,则对线程位图进行标记,并将mutex地址、线程id、时间戳、计数器count和标记后的线程位图存放至mmap内存存储区;判断count是否为0,如果是,则更新资源持有者位图;如果否,则更新等待资源位图,并进入步骤S4。
S4、当mmap内存存储区中持有count为负时,获取并根据当前锁持有者的线程情况信息采用对应的死锁检测方法进行死锁判定,生成死锁检测结果,并进行异常输出。
进一步地,判断持有count是否为负,如果否,则结束;如果是,则获取当前锁持有者的线程情况信息;判断当前锁持有者的线程情况信息是否为单线程,如果是,则判断线程位图的bit使用位数量是否为1,若是,则为非死锁,若否,则为死锁,记录持有死锁的相关记录,该相关记录包括线程的id线程地址等这些线程的描述信息,并进行异常输出;如果否,则根据资源持有者位图和等待资源位图结合进行死锁判断,当且仅当线程持有者的所有占用资源在同一位图中为非死锁状态,线程的两个位图进行逻辑与操作,运算后的结果若为真则为非死锁状态,记录持有死锁的相关记录,并进行异常输出。死锁会导致系统服务不响应不可用,可能是局部应用或者整体服务的瘫痪,检测到这种死锁是一种异常,所以将其描述为异常输出,就是输出带有明确的异常信息。上述逻辑与操作运算是指两个值中,若有一个假则结果为假,只有两个都是真的情况下才是真。
一个资源被相同线程持有和单线程多次持有对死锁判断是不一致的,因此,本发明引入线程位图。比如:场景1:线程A持有锁资源mutex1,然后继续对资源mutex1上锁,此时的count计数是-1,这是一种明显的死锁场景,因为线程A锁定第二次的过程处于等待,而持有这个等待资源的便是自己,无人能够再次唤醒线程A,从而导致死锁。
场景2:如果线程A持有mutex1,线程B也持有mutex1,此时的count计数是-1,同场景1是一个表象,但是这种情况并非死锁,线程B可以等待线程1释放资源,从而有机会获得资源。对于这种当资源为负的情况,具体的死锁判断包括以下步骤:通过引入线程位图可以极其方便的判断,对于场景1,线程的位图只有单使用者,位图使用的bit位一定是1,场景2的线程位图,一定至少是2,从而可以判断当前是否是临界资源的死锁。这种设计带来极其可观的性能开销,只需要几个cpu指令便可以判断这种死锁场景。资源持有者位图是资源持有状态为0的位图,等待资源位图相反是等待资源的希望持有者的位图,这类希望持有资源者一定所有用的count是为负的,引入这两个位图是为了快速诊断一个持有某个资源的线程,等待另一个或者多个持有自己等待自己持有资源的状态这种复杂死锁判断。
比如场景A线程A持有资源mutex1、mutex2,线程B持有资源mutex1、mutex2,这里的持有并不是真的拥有资源,而是同时对资源抢占,因为多处理系统的设计,谁优先执行抢占指令是不可知的,因此会存在如下几种场景,线程A拥有第一种mutex1:0、mutex2:0;第二种mutex1:0、mutex2:1;第三种mutex1:1、mutex2:1;第四种mutex1:0、mutex2:1;这四类资源持有情况,对于除第一种、第三种之外的情况均发生死锁,其希望持有的资源得不到释放,而第一种、第三种只要自己释放任意资源都能唤醒希望持有资源的竞争者。引入count后,死锁冲突问题被拆解为如何判断不同count状态是解决当前死锁的重要手段,因此本发明中继续进入两个位图,资源持有者位图是资源持有状态为0的位图,等待资源位图相反是等待资源的希望持有者的位图,这样只需要判定任意的资源持有者对多个资源是否保持同一状态即可判断是否存在死锁冲突,从而规避传统通过超时机制、构造有向图的复杂处理,同时当前的判断对于递归锁同样适用。
为了解决现有技术中的无法对数据并发竞争进行精准分析的技术问题,本发明通过对系统的线程创建接口、互斥锁进行钩子回调,不同于传统的复写方式,本发明极大的减少了开销。通过在系统层hook需要死锁检测的临界资源保护接口,通过mmap映射动态检测存储区,依据一个持有某个资源的线程,等待其它线程持有资源或者多个等待已被持有资源的不可获取状态的这种死锁的判定,采用基于多位图逻辑辅助判定的方式,能够在极低的开销内判定死锁。本发明设计的动态检测手段,对系统应用是无感知、低耦合的,并且极其高效,对实际系统使用并不产生延迟,通过一定的辅助位图空间达到高效的检测冲突,能够在极低的开销内判定死锁,并回溯死锁相关业务线程、同时可以提供接锁的处理,并且能够捕获死锁过程的资源情况,方便系统诊断。
如图2所示,第二方面,本发明实施例提供一种数据并发竞争冲突检测分析系统,包括系统临界资源客户端模块100、系统临界资源hook模块200、数据更新模块300以及死锁冲突检测模块400,其中:
系统临界资源客户端模块100,用于基于系统临界资源200保护接口情况信息生成并发送mutex互斥资源接口的监控指令;
系统临界资源hook模块200,用于对监控指令进行处理,创建对应mmap内存存储区,并对对应的mutex互斥资源接口进行hook;
数据更新模块300,用于当线程访问mutex互斥资源接口时,判断内存存储区中是否存在当前的mutex互斥资源接口地址,如果是,则结束;如果否,则对mmap内存存储区中的数据进行更新,并进入死锁冲突检测模块400;
死锁冲突检测模块400,当mmap内存存储区中持有count为负时,获取并根据当前锁持有者的线程情况信息采用对应的死锁检测方法进行死锁判定,生成死锁检测结果,并进行异常输出。
为了解决现有技术中的无法对数据并发竞争进行精准分析的技术问题,本发明基于系统临界资源客户端模块100通过和系统临界资源hook模块200交互以控制当前系统检测哪些临界资源保护接口;系统临界资源hook模块200负责响应系统临界资源客户端模块100的处理请求,并对请求的临界资源保护接口hook,创建相关mmap内存存储区,然后通过死锁冲突检测模块400进行死锁冲突检测,采用基于多位图逻辑辅助判定的方式,能够在极低的开销内判定死锁,并且能够捕获死锁过程的资源情况,方便系统诊断。
基于第二方面,在本发明的一些实施例中,该数据并发竞争冲突检测分析系统还包括资源回溯模块500,用于回溯死锁相关业务线程。资源回溯目的是服务解锁模块600,上述其他模块的信息可以被回溯模块用来检索,找到死锁的具体线程。
基于第二方面,在本发明的一些实施例中,该数据并发竞争冲突检测分析系统还包括解锁模块600,用于提供接锁的处理,通过扫描锁地址链表,找到死锁的mutex地址,进行解锁。
如图3所示,第三方面,本申请实施例提供一种电子设备,其包括存储器101,用于存储一个或多个程序;处理器102。当一个或多个程序被处理器102执行时,实现如上述第一方面中任一项的方法。
还包括通信接口103,该存储器101、处理器102和通信接口103相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器101可用于存储软件程序及模块,处理器102通过执行存储在存储器101内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口103可用于与其他节点设备进行信令或数据的通信。
其中,存储器101可以是但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器102可以是一种集成电路芯片,具有信号处理能力。该处理器102可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请所提供的实施例中,应该理解到,所揭露的方法及系统和方法,也可以通过其它的方式实现。以上所描述的方法及系统实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的方法及系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器102执行时实现如上述第一方面中任一项的方法。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
Claims (10)
1.一种数据并发竞争冲突检测分析方法,其特征在于,包括以下步骤:
S1、基于系统临界资源保护接口情况信息生成并发送mutex互斥资源接口的监控指令;
S2、对监控指令进行处理,创建对应mmap内存存储区,并对对应的mutex互斥资源接口进行hook;
S3、当线程访问mutex互斥资源接口时,判断内存存储区中是否存在当前的mutex互斥资源接口地址,如果是,则结束;如果否,则对mmap内存存储区中的数据进行更新,并进入步骤S4;
S4、当mmap内存存储区中持有count为负时,获取并根据当前锁持有者的线程情况信息采用对应的死锁检测方法进行死锁判定,生成死锁检测结果,并进行异常输出。
2.根据权利要求1所述的一种数据并发竞争冲突检测分析方法,其特征在于,所述存储区包括锁地址链表、资源持有者位图和等待资源位图。
3.根据权利要求2所述的一种数据并发竞争冲突检测分析方法,其特征在于,所述锁地址链表包括计数器count、时间戳、线程id和线程位图。
4.根据权利要求3所述的一种数据并发竞争冲突检测分析方法,其特征在于,所述步骤S3包括:
当线程访问mutex互斥资源接口时,判断当前锁地址链表是否存在当前的mutex地址,如果是,则结束;如果否,则对线程位图进行标记,并将mutex地址、线程id、时间戳、计数器count和标记后的线程位图存放至mmap内存存储区;
判断count是否为0,如果是,则更新资源持有者位图;如果否,则更新等待资源位图,并进入步骤S4。
5.根据权利要求3所述的一种数据并发竞争冲突检测分析方法,其特征在于,所述步骤S4包括:
判断持有count是否为负,如果否,则结束;如果是,则获取当前锁持有者的线程情况信息;
判断当前锁持有者的线程情况信息是否为单线程,如果是,则判断线程位图的bit使用位数量是否为1,若是,则为非死锁,若否,则为死锁,记录持有死锁的相关记录,并进行异常输出;如果否,则根据资源持有者位图和等待资源位图结合进行死锁判断,当且仅当线程持有者的所有占用资源在同一位图中为非死锁状态,线程的两个位图进行逻辑与操作,运算后的结果若为真则为非死锁状态,记录持有死锁的相关记录,并进行异常输出。
6.一种数据并发竞争冲突检测分析系统,其特征在于,包括系统临界资源客户端模块、系统临界资源hook模块、数据更新模块以及死锁冲突检测模块,其中:
系统临界资源客户端模块,用于基于系统临界资源保护接口情况信息生成并发送mutex互斥资源接口的监控指令;
系统临界资源hook模块,用于对监控指令进行处理,创建对应mmap内存存储区,并对对应的mutex互斥资源接口进行hook;
数据更新模块,用于当线程访问mutex互斥资源接口时,判断内存存储区中是否存在当前的mutex互斥资源接口地址,如果是,则结束;如果否,则对mmap内存存储区中的数据进行更新,并进入死锁冲突检测模块;
死锁冲突检测模块,当mmap内存存储区中持有count为负时,获取并根据当前锁持有者的线程情况信息采用对应的死锁检测方法进行死锁判定,生成死锁检测结果,并进行异常输出。
7.根据权利要求6所述的一种数据并发竞争冲突检测分析系统,其特征在于,还包括资源回溯模块,用于回溯死锁相关业务线程。
8.根据权利要求6所述的一种数据并发竞争冲突检测分析系统,其特征在于,还包括解锁模块,用于提供接锁的处理,通过扫描锁地址链表,找到死锁的mutex地址,进行解锁。
9.一种电子设备,其特征在于,包括:
存储器,用于存储一个或多个程序;
处理器;
当所述一个或多个程序被所述处理器执行时,实现如权利要求1-5中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210023261.XA CN114035970B (zh) | 2022-01-10 | 2022-01-10 | 一种数据并发竞争冲突检测分析方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210023261.XA CN114035970B (zh) | 2022-01-10 | 2022-01-10 | 一种数据并发竞争冲突检测分析方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114035970A true CN114035970A (zh) | 2022-02-11 |
CN114035970B CN114035970B (zh) | 2022-04-22 |
Family
ID=80141502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210023261.XA Active CN114035970B (zh) | 2022-01-10 | 2022-01-10 | 一种数据并发竞争冲突检测分析方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114035970B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795514A (zh) * | 2023-06-30 | 2023-09-22 | 荣耀终端有限公司 | 应用程序的线程标识方法、电子设备以及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7093262B2 (en) * | 2002-07-30 | 2006-08-15 | Intel Corporation | Detecting deadlocks in multithreaded programs |
CN1973266A (zh) * | 2004-04-02 | 2007-05-30 | 西姆毕恩软件有限公司 | 对或涉及用于计算装置的操作系统的改进 |
CN103440171A (zh) * | 2013-08-25 | 2013-12-11 | 浙江大学 | 一种构件化硬件实时操作系统的实现方法 |
CN103761182A (zh) * | 2013-12-26 | 2014-04-30 | 上海华为技术有限公司 | 一种死锁检测方法及装置 |
CN104065636A (zh) * | 2013-07-02 | 2014-09-24 | 腾讯科技(深圳)有限公司 | 数据处理方法和系统 |
CN105849705A (zh) * | 2014-12-13 | 2016-08-10 | 上海兆芯集成电路有限公司 | 用于检测暂停的逻辑分析器 |
CN107479980A (zh) * | 2016-06-08 | 2017-12-15 | 阿里巴巴集团控股有限公司 | 一种检测应用中死锁的方法与设备 |
CN109213576A (zh) * | 2017-07-01 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 程序死锁检测方法、存储介质、设备及系统 |
US10915424B2 (en) * | 2017-10-12 | 2021-02-09 | The Board Of Regents Of The University Of Texas System | Defeating deadlocks in production software |
-
2022
- 2022-01-10 CN CN202210023261.XA patent/CN114035970B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7093262B2 (en) * | 2002-07-30 | 2006-08-15 | Intel Corporation | Detecting deadlocks in multithreaded programs |
CN1973266A (zh) * | 2004-04-02 | 2007-05-30 | 西姆毕恩软件有限公司 | 对或涉及用于计算装置的操作系统的改进 |
CN104065636A (zh) * | 2013-07-02 | 2014-09-24 | 腾讯科技(深圳)有限公司 | 数据处理方法和系统 |
CN103440171A (zh) * | 2013-08-25 | 2013-12-11 | 浙江大学 | 一种构件化硬件实时操作系统的实现方法 |
CN103761182A (zh) * | 2013-12-26 | 2014-04-30 | 上海华为技术有限公司 | 一种死锁检测方法及装置 |
CN105849705A (zh) * | 2014-12-13 | 2016-08-10 | 上海兆芯集成电路有限公司 | 用于检测暂停的逻辑分析器 |
CN107479980A (zh) * | 2016-06-08 | 2017-12-15 | 阿里巴巴集团控股有限公司 | 一种检测应用中死锁的方法与设备 |
CN109213576A (zh) * | 2017-07-01 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 程序死锁检测方法、存储介质、设备及系统 |
US10915424B2 (en) * | 2017-10-12 | 2021-02-09 | The Board Of Regents Of The University Of Texas System | Defeating deadlocks in production software |
Non-Patent Citations (1)
Title |
---|
禹振 等: "使用锁分配图动态检测混合死锁", 《计算机研究与发展》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795514A (zh) * | 2023-06-30 | 2023-09-22 | 荣耀终端有限公司 | 应用程序的线程标识方法、电子设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114035970B (zh) | 2022-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3285194B1 (en) | Tracing system operations across remote procedure linkages to identify request originators | |
US5895494A (en) | Method of executing perform locked operation instructions for supporting recovery of data consistency if lost due to processor failure, and a method of recovering the data consistency after processor failure | |
US6643802B1 (en) | Coordinated multinode dump collection in response to a fault | |
US6343371B1 (en) | System and method for statically detecting potential race conditions in multi-threaded computer programs | |
US20120151275A1 (en) | Assessing computer programs using stack frame signatures | |
US20130332910A1 (en) | Dynamic livelock analysis of multi-threaded programs | |
EP3488346B1 (en) | Anomaly detection using sequences of system calls | |
CN109669858B (zh) | 程序死锁的测试方法、装置和设备 | |
KR20080038301A (ko) | 차단 로컬 센스 동기화 배리어 | |
CN114035970B (zh) | 一种数据并发竞争冲突检测分析方法及系统 | |
US6721775B1 (en) | Resource contention analysis employing time-ordered entries in a blocking queue and waiting queue | |
US8135690B2 (en) | Concurrency object classification | |
US20100057965A1 (en) | Extension of Lock Discipline Violation Detection for Lock Wait Patterns | |
US6304938B1 (en) | Detecting a state change in a lock structure to validate a potential deadlock | |
CN113157426A (zh) | 一种任务调度方法、系统、设备及存储介质 | |
WO2018058241A1 (en) | Non-coupled software lockstep | |
US20110320873A1 (en) | Error identification | |
WO2022267676A1 (zh) | 共享内存的数据处理方法、装置、设备和介质 | |
CN115878336A (zh) | 锁操作中的信息处理方法、装置及计算设备 | |
CN114090322A (zh) | 一种线程死锁检测方法及装置 | |
CN114461409A (zh) | 一种互斥信号量异常阻塞辅助分析方法、系统及存储介质 | |
CN115809150A (zh) | 一种分布式死锁检测方法、装置及电子设备 | |
EP1569121B1 (en) | Method and system for detecting potential deadlocks in computer programs | |
Glasbergen et al. | Sentinel: Understanding data systems | |
Rangaiyengar et al. | Multi-Layer Observability for Fault Localization in Microservices Based Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |