CN108241581A - 一种基于CPNTools的软件线程冲突检测方法 - Google Patents
一种基于CPNTools的软件线程冲突检测方法 Download PDFInfo
- Publication number
- CN108241581A CN108241581A CN201711493912.7A CN201711493912A CN108241581A CN 108241581 A CN108241581 A CN 108241581A CN 201711493912 A CN201711493912 A CN 201711493912A CN 108241581 A CN108241581 A CN 108241581A
- Authority
- CN
- China
- Prior art keywords
- variable
- cpntools
- thread
- read
- library
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于CPNTools的软件线程冲突检测方法,CPNTools的基础构件由若干个变迁、库所、令牌和有向弧组成;冲突类型分为信号量、条件变量、读写锁和栅栏;其特征是依据冲突类型同时或分别对待检测线种进行冲突检测,并根据如下S1和S2两个步骤进行:S1:建立待检测线程的CPNTools模型;S2:对期待检测的CPNTools模型进行冲突检测。本发明能够检测由于信号量、条件变量、读写锁和栅栏引发的冲突,为软件线线冲突提供了一种新的方法。
Description
技术领域
本发明涉及计算机软件技术、软件线程运行可靠性检测领域,具体地说,涉及一种基于CPNTools的软件线程冲突检测方法。
背景技术
信息技术的快速发展,很大程度上是依托于信息技术中的软件技术。当下软件开发技术中的程序运行,在多CPU与大内存容量的硬件资源支撑下,传统单进程单线程程序显然不能适应软件发展步伐,唯有并发程序才能适应用户的需求。然而并发程序虽然有运算速度快,适应用户使用体验好的良好特性,但其具有较高的复杂度和难以把握的可靠性,特别是当诸多线程对资源利用不科学或不合理之时,将发现资源利用出现冲突的问题,严重影响程序运行的安全性。特别是随着多核CPU的广泛普及,软件开发中线程并行计算中的资源利用冲突检测问题已经成为计算机技术领域重点关注的问题之一。
在实现本发明的过程中,发明人发现现有技术与方法,有一些方法对软件线程冲突检测有作用,然而,在直观性和可视化方面存在这样或那样的不足,方法运用的用户体验上不够。
发明内容
本发明的目的在于针对上述技术背景下存在的一系列问题,提出一种基于CPNTools的软件线程冲突检测方法,既可能有效解决计算机软件开发涉及多线程资源利用争抢冲突的问题,同时还在检测的直观性和可视化方面突显出独有的优势。
本发明为解决问题采用的技术方案为一种基于CPNTools的软件线程冲突检测方法,CPNTools的基础构件由若干个变迁、库所、令牌和有向弧组成;冲突类型分为信号量、条件变量、读写锁和栅栏;其特征是依据冲突类型同时或分别对待检测线种进行冲突检测,并根据如下S1和S2两个步骤进行:S1:建立待检测线程的CPNTools模型;S2:对期待检测的CPNTools模型进行冲突检测。
首先步骤S1为通过建立待检测线程的CPNTools模型,其中操作包括:
1.对所述以待于检测的软件线程所对应的所述条件变量配置资源、所述读写锁配置资源、所述的信号量配置资源和所述栅栏配置资源;所述条件变量配置资源包括条件处理函数、条件变量和互斥锁变量;所述信号量配置资源包括信号量和信号量处理函数;所示栅栏配置资源包括栅栏变量和栅栏处理函数;
2.对所述以待于检测的软件线程所对应的所述条件变量配置资源、所述读写锁配置资源、所述的信号量配置资源和所述栅栏配置资源,分别提取所述信号量、条件变量、读写锁和栅栏;并构建与所述读写锁变量相对应的库所、与所述互斥锁变量相对应的库所,与存储于资源中的条件变量对应的库所、与存储于资源中的信息量相对应的库所以及与所述栅栏变量所对应的库所;
3.对所述以待于检测的软件线程所对应的所述读写变量所对应的库所分别构建加读写锁变量的辅助数据结构;所述读写锁变量的数据结构为保存所述读写锁变量的属性,所述读写锁变量的属性包括加锁的线程列表、线程资源数量,以及加锁类型,所述线程的条件变量的辅助数据结构为记录资源中的条件变量值,该属性值赋予条件是否满足;所述线程的信号量辅助数据结构为记录资源的信号量值;所述线程的栅栏变量数据结构为记录栅栏变量的属性,其属性包括可执行线程、等待线程和所有线程列表;
4.对所述以待于检测的软件线程所对应的所述读写资源中的每个读写处理函数与CPNTools模型中的读写锁变迁相对应地设置,同时构建出所述读写锁处理函数的CPNTools实例;将信号号与CPNTools实例中的一个死锁类型信号量的变迁相对应地配置;
5.将CPNTools实例与待检测软件进程的主体函数库所对应,通过所述待检测进行中的函数调用关系的次序,以及所述函数调用关系内所嵌入的读写锁处理函数、信号量处理函数、条件变量处理函数和栅栏处理函数。
其次步骤S2为对期待检测的CPNTools模型进行冲突检测。具体操作包括:
1.初始化所述待检测CPNTools实例的状态并进行记录,使得所述待检测软件进程中的主体函数获得对应的库所具有令牌,所述读写变量对应库所获得令牌,并配置一个缓存堆栈;
2.初演所述待检测CPNTools实例,从所述待检测软件进程中的主体函数获得对应的库所推演执行;
3.考察CPNTools实例,看是否已经具备可以推演执行的变迁,如果具备则进入b4步骤,否则推演入b6步骤;
4.将所述的具备推演展开的变迁暂存于缓存堆栈内,同时记录下其没有被推演执行的状态;
5.将所述的缓存堆栈中的栈顶要互对应于变迁设置为执行同时将其属性值设计为已经推演执行;所述已经推演执行变迁对应的输入库所的令牌由此移动置于输出库所位置,所述待检测CPNTools实例的状态也进行更新,存储所述新的待检测CPNTools实例状态后,返回步骤b3继续推演执行;
6.考察待检测CPNTools实例中是否还有没有推演执行的变迁,如果存在则表示存在线程冲突,同时提供所已经推演的所有成功执行的变迁,检测停止。
与现有技术和方法相比,本基于CPNTools的软件线程冲突检测方法的良好特性与有益效果在于:
1、本方法所使用的方法具有良好的直观性和可视化特点;
2、本发明可以直观地显现出检测条件变量、读写锁、信号量、栅栏引发的冲突,而且能够在出现冲突时,将所有执行过程进行重新推演,增强了检测实用的全面性;
3、本发明对传统模型进行了扩充,通过对条件变量、读写锁、信号量、栅栏对应的库所对应的变迁添加辅助数据结构,从而可以更加完善地表达对条件变量函数、读写锁函数、信号量函数、栅栏处理函数的执行情况;
4、本发明采用的冲突检测方法中使用了堆栈存储策略,可以快速高效地显现允许执行的变迁,可以快速地回退到上一个被允许但未执行的变迁,从而确保待检测进程所有线程可能执行的路径都可以被检测到。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明一种基于CPNTools的软件线程冲突检测方法示意图。
具体实施方式
以下通过实施例形式对本发明的上述内容再作进一步的详细说明,但不应将此理解为本发明上述主题的范围仅限于以下的实施例。
CPNTools的基础构件由若干个变迁、库所、令牌和有向弧组成;冲突类型分为信号量、条件变量、读写锁和栅栏;其特征是依据冲突类型同时或分别对待检测线种进行冲突检测,并根据如下S1和S2两个步骤进行:S1:建立待检测线程的CPNTools模型;S2:对期待检测的CPNTools模型进行冲突检测。
首先步骤S1为通过建立待检测线程的CPNTools模型,其中操作包括:
1.对所述以待于检测的软件线程所对应的所述条件变量配置资源、所述读写锁配置资源、所述的信号量配置资源和所述栅栏配置资源;所述条件变量配置资源包括条件处理函数、条件变量和互斥锁变量;所述信号量配置资源包括信号量和信号量处理函数;所示栅栏配置资源包括栅栏变量和栅栏处理函数;
2.对所述以待于检测的软件线程所对应的所述条件变量配置资源、所述读写锁配置资源、所述的信号量配置资源和所述栅栏配置资源,分别提取所述信号量、条件变量、读写锁和栅栏;并构建与所述读写锁变量相对应的库所、与所述互斥锁变量相对应的库所,与存储于资源中的条件变量对应的库所、与存储于资源中的信息量相对应的库所以及与所述栅栏变量所对应的库所;
3.对所述以待于检测的软件线程所对应的所述读写变量所对应的库所分别构建加读写锁变量的辅助数据结构;所述读写锁变量的数据结构为保存所述读写锁变量的属性,所述读写锁变量的属性包括加锁的线程列表、线程资源数量,以及加锁类型,所述线程的条件变量的辅助数据结构为记录资源中的条件变量值,该属性值赋予条件是否满足;所述线程的信号量辅助数据结构为记录资源的信号量值;所述线程的栅栏变量数据结构为记录栅栏变量的属性,其属性包括可执行线程、等待线程和所有线程列表;
4.对所述以待于检测的软件线程所对应的所述读写资源中的每个读写处理函数与CPNTools模型中的读写锁变迁相对应地设置,同时构建出所述读写锁处理函数的CPNTools实例;将信号号与CPNTools实例中的一个死锁类型信号量的变迁相对应地配置;
5.将CPNTools实例与待检测软件进程的主体函数库所对应,通过所述待检测进行中的函数调用关系的次序,以及所述函数调用关系内所嵌入的读写锁处理函数、信号量处理函数、条件变量处理函数和栅栏处理函数。
其次步骤S2为对期待检测的CPNTools模型进行冲突检测。具体操作包括:
1.初始化所述待检测CPNTools实例的状态并进行记录,使得所述待检测软件进程中的主体函数获得对应的库所具有令牌,所述读写变量对应库所获得令牌,并配置一个缓存堆栈;
2.初演所述待检测CPNTools实例,从所述待检测软件进程中的主体函数获得对应的库所推演执行;
3.考察CPNTools实例,看是否已经具备可以推演执行的变迁,如果具备则进入b4步骤,否则推演入b6步骤;
4.将所述的具备推演展开的变迁暂存于缓存堆栈内,同时记录下其没有被推演执行的状态;
5.将所述的缓存堆栈中的栈顶要互对应于变迁设置为执行同时将其属性值设计为已经推演执行;所述已经推演执行变迁对应的输入库所的令牌由此移动置于输出库所位置,所述待检测CPNTools实例的状态也进行更新,存储所述新的待检测CPNTools实例状态后,返回步骤b3继续推演执行;
6.考察待检测CPNTools实例中是否还有没有推演执行的变迁,如果存在则表示存在线程冲突,同时提供所已经推演的所有成功执行的变迁,检测停止。
Claims (6)
1.一种基于CPNTools的软件线程冲突检测方法,所述的CPNTools模型的构件由由若干个变迁、库所、令牌和有向弧组成;所述变迁与库所通过所述的有向弧进行连接,根据有向弧的路径方向,将所述库所分析所述变迁输出库所和输入库所;当所述变迁的输入库所具有令牌时,则表示所述变迁具有执行资源,相应变迁就不会产生冲突而被执行;所冲突类型分为信号量、条件变量、读写锁和栅栏;其特征为,根据冲突类型对待待检测线程依据如下步骤进行冲突检测:
a.建立待检测线程的CPNTools模型;
b.对期待检测的CPNTools模型进行充实检测。
2.根据权利要求1所述的一种基于CPNTools的软件线程冲突检测方法,其特征在于,在步骤a中,所述建立待检测线程的CPNTools模型的操作,具体包括:
a1.对所述以待于检测的软件线程所对应的所述条件变量配置资源、所述读写锁配置资源、所述的信号量配置资源和所述栅栏配置资源;所述条件变量配置资源包括条件处理函数、条件变量和互斥锁变量;所述信号量配置资源包括信号量和信号量处理函数;所示栅栏配置资源包括栅栏变量和栅栏处理函数;
a2.对所述以待于检测的软件线程所对应的所述条件变量配置资源、所述读写锁配置资源、所述的信号量配置资源和所述栅栏配置资源,分别提取所述信号量、条件变量、读写锁和栅栏;并构建与所述读写锁变量相对应的库所、与所述互斥锁变量相对应的库所,与存储于资源中的条件变量对应的库所、与存储于资源中的信息量相对应的库所以及与所述栅栏变量所对应的库所;
a3.对所述以待于检测的软件线程所对应的所述读写变量所对应的库所分别构建加读写锁变量的辅助数据结构;所述读写锁变量的数据结构为保存所述读写锁变量的属性,所述读写锁变量的属性包括加锁的线程列表、线程资源数量,以及加锁类型,所述线程的条件变量的辅助数据结构为记录资源中的条件变量值,该属性值赋予条件是否满足;所述线程的信号量辅助数据结构为记录资源的信号量值;所述线程的栅栏变量数据结构为记录栅栏变量的属性,其属性包括可执行线程、等待线程和所有线程列表;
a4.对所述以待于检测的软件线程所对应的所述读写资源中的每个读写处理函数与CPNTools模型中的读写锁变迁相对应地设置,同时构建出所述读写锁处理函数的CPNTools实例;将信号号与CPNTools实例中的一个死锁类型信号量的变迁相对应地配置;
a5.将CPNTools实例与待检测软件进程的主体函数库所对应,通过所述待检测进行中的函数调用关系的次序,以及所述函数调用关系内所嵌入的读写锁处理函数、信号量处理函数、条件变量处理函数和栅栏处理函数。
3.根据权利要求1所述的一种基于CPNTools的软件线程冲突检测方法,其特征在于,在步骤b中,所述对期待检测的CPNTools模型进行充实检测的操作,具体包括:
b1.初始化所述待检测CPNTools实例的状态并进行记录,使得所述待检测软件进程中的主体函数获得对应的库所具有令牌,所述读写变量对应库所获得令牌,并配置一个缓存堆栈;
b2.初演所述待检测CPNTools实例,从所述待检测软件进程中的主体函数获得对应的库所推演执行;
b3.考察CPNTools实例,看是否已经具备可以推演执行的变迁,如果具备则进入b4步骤,否则推演入b6步骤;
b4.将所述的具备推演展开的变迁暂存于缓存堆栈内,同时记录下其没有被推演执行的状态;
b5.将所述的缓存堆栈中的栈顶要互对应于变迁设置为执行同时将其属性值设计为已经推演执行;所述已经推演执行变迁对应的输入库所的令牌由此移动置于输出库所位置,所述待检测CPNTools实例的状态也进行更新,存储所述新的待检测CPNTools实例状态后,返回步骤b3继续推演执行;
b6.考察待检测CPNTools实例中是否还有没有推演执行的变迁,如果存在则表示存在线程冲突,同时提供所已经推演的所有成功执行的变迁,检测停止。
4.根据权利要求1所述的一种基于推荐权值的大数据检索方法,其特征在于,在步骤b中,所述次高概率匹配检索的操作,具体包括:
b1.当在高密度推荐权值信息库中没有检索到目标数据时,自动触发本操作,即本操作为步骤a操作中的检索无果情况的后续;
b2.在次高密度推荐权值信息库中检索到目标数据,如果获取检索结果,则在返给用户的同时,对检索数据的推荐权值进行加1处理。
5.根据权利要求1所述的一种基于推荐权值的大数据检索方法,其特征在于,在步骤c中,所述原生态匹配检索的操作,具体包括:
C1.当在次高密度推荐权值信息库中没有检索到目标数据时,自动触发本操作,即本操作为步骤b操作中的检索无果情况的后续;
c2.在原生态大数据环境下的检索目标数据,如果检索到了目标数据,则将检索结果反馈给用户的同时,构建次高密度推荐权值信息库,同时赋予推荐权值为1,如果没有检索到目标数据,是未检索到目标数据的提示信息反馈给用户。
6.根据权利要求1-5所述任一项所述的,一种基于关联聚合的数据取证推荐方法,其特征在于,所述基于推荐权值的大数据检索方法的操作,具有包括:
通过设定密度推荐权值作为高密度推荐权值信息库信息进入阀值,将高密度检索信息与低密度检索信息适应隔离,以空间换时间的理念,节省了数据检索时间,达到快速检索的目标。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711493912.7A CN108241581A (zh) | 2017-12-31 | 2017-12-31 | 一种基于CPNTools的软件线程冲突检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711493912.7A CN108241581A (zh) | 2017-12-31 | 2017-12-31 | 一种基于CPNTools的软件线程冲突检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108241581A true CN108241581A (zh) | 2018-07-03 |
Family
ID=62698405
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711493912.7A Withdrawn CN108241581A (zh) | 2017-12-31 | 2017-12-31 | 一种基于CPNTools的软件线程冲突检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108241581A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124933A (zh) * | 2019-12-30 | 2020-05-08 | 南京拓界信息技术有限公司 | 一种基于Petri构件的软件线程冲突检测方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140223420A1 (en) * | 2013-02-06 | 2014-08-07 | Nvidia Corporation | Convergence analysis in multithreaded programs |
CN104461871A (zh) * | 2014-11-18 | 2015-03-25 | 合肥康捷信息科技有限公司 | 一种基于petri网的死锁检测方法 |
CN104463332A (zh) * | 2013-09-23 | 2015-03-25 | 苏州工业职业技术学院 | 基于有色Petri网的FMS生产仿真分配方法 |
CN106997411A (zh) * | 2017-03-22 | 2017-08-01 | 中国电子科技集团公司第二十八研究所 | 基于着色Petri网能力使命线程形式描述与验证方法 |
-
2017
- 2017-12-31 CN CN201711493912.7A patent/CN108241581A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140223420A1 (en) * | 2013-02-06 | 2014-08-07 | Nvidia Corporation | Convergence analysis in multithreaded programs |
CN104463332A (zh) * | 2013-09-23 | 2015-03-25 | 苏州工业职业技术学院 | 基于有色Petri网的FMS生产仿真分配方法 |
CN104461871A (zh) * | 2014-11-18 | 2015-03-25 | 合肥康捷信息科技有限公司 | 一种基于petri网的死锁检测方法 |
CN106997411A (zh) * | 2017-03-22 | 2017-08-01 | 中国电子科技集团公司第二十八研究所 | 基于着色Petri网能力使命线程形式描述与验证方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124933A (zh) * | 2019-12-30 | 2020-05-08 | 南京拓界信息技术有限公司 | 一种基于Petri构件的软件线程冲突检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Shang et al. | Democratizing data science through interactive curation of ml pipelines | |
Welbl et al. | Constructing datasets for multi-hop reading comprehension across documents | |
De Ville | Decision trees | |
US10656850B2 (en) | Efficient volume replication in a storage system | |
Layton | Learning data mining with python | |
CN104112284A (zh) | 一种图片的相似度检测方法和设备 | |
WO2017039684A1 (en) | Classifier | |
Birman et al. | Data-directed search for new physics based on symmetries of the SM | |
Wicaksana et al. | Modification of a density-based spatial clustering algorithm for applications with noise for data reduction in intrusion detection systems | |
Ekosputra et al. | Supervised machine learning algorithms to detect instagram fake accounts | |
Rodriguez-Torres et al. | Deterministic oversampling methods based on SMOTE | |
CN108241581A (zh) | 一种基于CPNTools的软件线程冲突检测方法 | |
Doveri et al. | FORQ-based language inclusion formal testing | |
Luengo et al. | Imbalanced data preprocessing for big data | |
Cárdenas-Montes | Depth-based outlier detection algorithm | |
Erfani et al. | Opportunities for clone detection in test case recommendation | |
Stetsenko et al. | Simulation of multithreaded algorithms using Petri-object models | |
Shyr et al. | Automated data analysis | |
Li et al. | Toward Progress Indicators on Steroids for Big Data Systems. | |
CN111026776B (zh) | 关系型数据库中的查询方法及装置 | |
Al-Najdi et al. | Multiple consensuses clustering by iterative merging/splitting of clustering patterns | |
CN110348693B (zh) | 基于多核计算的多机器人快速任务调度方法 | |
Borowska et al. | Granular computing and parameters tuning in imbalanced data preprocessing | |
US11429560B2 (en) | Systems and methods for detection of automatable sheet modification actions | |
Mochurad et al. | A fast parallelized DBSCAN algorithm based on OpenMp for detection of criminals on streaming services |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20180703 |