王清[1](2021)在《基于模式提取及表征学习的多线程程序抄袭检测方法研究》文中研究指明软件抄袭已成为软件生态环境健康发展的严重威胁之一。目前,胎记技术是实现软件抄袭检测的一种最为有效的手段。然而,随着多线程程序成为主流,传统动态胎记技术无法对抗多线程程序中线程交织的干扰,导致检测性能过于随机甚至发生误判。现有的针对多线程程序的线程感知胎记方法,均针对程序单条轨迹进行分析,方法本身存在诸多局限性。此外,现有方法的胎记构建方式在很大程度上依赖于人工提取和经验观测值,未经过任何真实训练。因而难以推广到未知的数据集,泛化能力不强。对此,本文通过模式提取和表征学习,提出了三种新颖的针对多线程程序的抄袭检测方法,主要贡献如下:(1)提出了一种基于行为motifs的多线程程序抄袭检测方法,该方法基于多线程程序的动态执行轨迹集,通过轨迹修剪、gram匹配和扩展抽象,提取能够表征程序语义信息的行为motifs,在此基础上构建出线程感知的motifs胎记。实验结果表明,motifs胎记是一种可靠的线程感知胎记,可有效对抗当下主流的代码混淆手段,集成该胎记的检测系统在各种评估指标下,与现有方法相比均表现出更优秀的检测性能。(2)提出了一种基于频繁模式挖掘的多线程程序抄袭检测方法,通过监控多线程程序的动态运行过程捕捉程序执行轨迹集,利用数据挖掘技术从轨迹集中挖掘出频繁模式,约减后构建出动态线程感知胎记FPBirth。实验结果表明,FPBirth胎记具有较好的线程感知能力和抗混淆能力,集成了FPBirth的抄袭检测系统能够更好地处理多线程程序的抄袭检测。(3)提出了一种基于孪生神经网络的多线程程序抄袭检测方法,该方法设计深度神经网络模型实现程序高层语义特征向量的表征学习,借助孪生网络结构对原被告程序的语义特征向量进行融合,将融合后的特征向量送入多层感知机进行相似性度量学习,最后对多输入下的相似性值进行bagging集成得到原被告程序的相似性。基于提出的方法设计实现了多线程程序抄袭检测系统NeurMPD。实验结果表明,NeurMPD的检测准确率达到99%以上,且具备较好的弹性和可信性。
罗尧[2](2020)在《基于ARM的指针式仪表自动读数系统设计与实现》文中指出随着现代工业的快速发展,工业仪表的应用越来越广泛,指针式仪表具有成本低、结构简单、抗干扰能力强等优点,因此在工业领域中被大量的使用,目前主要还是依靠人工对仪表进行读数与监测,人工读数存在效率低、出错率高等缺点,然而工业生产正朝着自动化、智能化的方向发展,仅仅依靠人工读数已经不能满足工业快速发展的需求。因此如何运用便捷化设备和相关的处理技术对指针式仪表进行自动读数成为了工业生产中迫切需要解决的难题。本系统结合嵌入式技术与图像处理技术实现指针式仪表的自动读数,选取符合系统性能需求的嵌入式ARM硬件平台,并在嵌入式平台上移植Linux操作系统,深入研究了指针式仪表图像预处理算法和示数判断算法,将仪表读数算法程序移植到嵌入式平台运行。本文主要对系统总体设计方案、指针式仪表自动读数算法、嵌入式读数终端和服务器端进行了研究,具体内容如下:1、分析工业领域中指针式仪表的实际使用环境,将系统分为嵌入式读数终端和服务器端。嵌入式读数终端采集现场仪表图像,利用图像处理算法对仪表图像进行处理,以实现指针式仪表的自动读数,并将仪表读数结果和现场视频图像传输至服务器端,服务器端实现视频监控、仪表异常读数报警、数据存储和命令控制等功能。2、首先将采集到的仪表图像进行增强降噪等预处理操作,使用自适应阈值法对仪表图像进行二值化处理,提取仪表图像前景像素区域,结合Hough圆变换和刻度线质心点拟合圆两种方式计算仪表特征区域圆心和半径,该算法具有更强的鲁棒性,其次利用二值图像轮廓法提取主刻度单个字符,并通过K最近邻(k NN,k-Nearest Neighbor)分类算法识别字符,获取字符的数值,根据字符的位置关系确定主刻度示数值和主刻度字符区域中心点坐标,完成最小值刻度线和最大值刻度线的数值匹配,使用累计概率霍夫变换定位仪表指针,最后通过角度法计算指针式仪表示数。3、嵌入式系统平台搭建,首先需要搭建嵌入式系统开发所需的交叉编译环境,移植引导程序u-boot,配置Linux内核主要的设备驱动,交叉编译Linux内核源码,制作根文件系统。为增强该读数系统的实用性,在系统中增加视频监控的功能,当嵌入式终端读数错误或仪表出现故障时能够实现远程监控,移植嵌入式系统下所需的Open CV视觉算法库和视频传输jrtplib库,生成在ARM平台所需的动态链接库,为读数终端应用程序提供运行环境,视频数据压缩采用硬件编码方式,需加载MFC硬件编码API函数源文件。4、服务器端是基于Qt界面程序设计,在Ubuntu16.04系统中编译jrtplib和FFmpeg源码库,搭建接收解码H.264视频流的开发环境,jrtplib库用于接收并解析RTP协议荷载的H.264视频流,通过FFmpeg解码H.264码流,在Qt界面显示解码之后的视频图像,服务器端使用TCP协议收发读数结果和配置命令等重要数据,同时也实现数据存储和仪表读数异常报警功能。通过本系统设计,可以实现指针式工业仪表远程自动读数、视频监控和数据存储等功能,在工业生产领域中意义重大。
田振洲,王宁宁,王清,高聪,刘烃,郑庆华[3](2020)在《基于行为motifs的多线程程序抄袭检测方法》文中研究表明软件动态胎记技术是实现混淆对抗的软件抄袭检测的有效手段之一.然而,多线程程序中线程交织的不确定性对其造成了不可忽视的影响;极端情况下,传统动态胎记技术甚至会判定同一个程序与其自身不存在抄袭关系.对此,提出从多线程程序在同一输入下的多条执行轨迹中进行相似部分的识别,并从中抽象出不易受线程交织影响的行为motifs来实现多线程程序的抄袭检测.该方法捕捉程序的动态执行轨迹,经过轨迹修剪、gram匹配以及扩展和抽象,从中提取motifs胎记建模多线程程序的行为;最终,通过衡量motifs胎记的相似性实现程序间潜在抄袭的判定.在一个包含234个不同版本多线程程序的公共数据集上开展的实验表明,motifs胎记是一种可靠的线程感知胎记方法,不仅可有效对抗当下主流的代码混淆技术,相比现有的2种多线程程序抄袭检测方法TreSB(thread-related system call birthmark)和TOB(thread-oblivious birthmark),也体现出更优秀的检测能力.
胡桃[4](2019)在《一种基于SMT和BP的多线程程序验证方法》文中研究指明多线程程序是计算机软件设计的核心,如何高效验证多线程程序的安全性问题已成为国内外研究人员的主要研究内容。现有研究表明:多线程程序的安全性问题可简化为良拟序迁移系统(Well-Quasi-Ordered Transition System,WQOTS)的可覆盖性问题。针对良拟序迁移系统的可覆盖性问题,已存在大量的解决方案,它们主要是以显示状态搜索思想设计的。多线程程序的状态空间随程序的规模和线程数目的增加呈指数级增长,导致这些算法都存在低效性或不完备性的问题。如何在验证过程中尽量避免状态空间搜索或降低状态空间的规模是提高多线程程序安全性验证效率的关键。本文主要的研究对象是被无穷个线程并发执行的有限状态布尔程序(Boolean Program,BP),可以通过对多线程程序进行谓词抽象得到。本文根据目前多线程程序验证方法的优势和不足,考虑到基于SMT求解器的符号分析方法能避免对状态空间搜索从而加快验证,以及直接使用布尔程序作为抽象模型能降低状态空间的规模,提出了一种新的多线程程序安全性验证方法。首先研究了基于SMT求解器的符号分析模块,详细分析了如何利用计数抽象从线程迁移系统中构造可覆盖性问题的线程状态等式,该线程状态等式使用SMT求解器处理后,可根据求解器的输出结果判断多线程程序的安全性;由于线程状态等式是对可覆盖性问题的过近似(over-approximate),无法验证不安全程序,因此提出了一种基于BP的高效且完备的KM算法。其次进一步研究了BP与线程迁移系统之间的关联,通过分析线程迁移系统中的全局状态和BP中的程序状态之间的转换规则,研究了如何将作用在线程迁移系统上的KM算法直接作用在BP上,并分析了KM算法中最大覆盖后继的计算方法。由于正向搜索中,可覆盖性问题与初始线程数目有关,为了降低搜索过程中内存使用,借助SMT求解器处理线程状态等式能输出一个可覆盖性的解模型,对KM算法进行了改进;使用SMT求解器输出的初始线程数目作为KM算法的初始线程数目,在搜索过程中,如果不满足则再进行一次完整的KM算法,从而得到一个高效的不安全程序验证模块。最后对本文提出的结合基于SMT的符号分析模块和基于BP的显示状态搜索模块工具进行设计和实现。实验结果显示:本文提出的方法不仅能减少多线程程序验证的时间,还能降低验证过程中内存的使用。
王开宇[5](2018)在《基于LIRS缓存优化的多线程弱确定性技术研究》文中进行了进一步梳理并行程序近些年来的兴起在提升性能的同时,也给程序的编写,开发和维护提出了新的问题,多线程程序在执行过程中,线程之间围绕共享资源广泛存在着数据,同步操作之间的竞争和相互干扰,由此引发的多线程程序的不确定性成为了国内外学术界的研究重点。由于不确定性的出现,使得多线程程序在开发、维护、容错和安全方面出现了困难。为了解决这些困难,确定性技术应运而生,本文采用确定性技术中的弱确定性技术,从线程同步竞争的方面进行研究,通过划分线程运行阶段,将线程的运行过程分为并行与串行两部分,在并行阶段线程之间互不干扰,并行执行;串行阶段线程按照获取令牌的顺序依次进入,向内存提交运行结果,避免了线程在同步点顺序不同而导致的不确定性。同时将线程间内存相互隔离,避免了线程之间的数据竞争。首先,本文采用了弱确定性思想,针对线程之间的同步竞争进行研究,为线程执行设置事务的概念,在同步点设置栅栏并设立令牌队列,让线程在到达同步点之后按照令牌的顺序进入串行提交阶段,避免因为同步竞争而出现的不确定性。为解决产生不确定性的另一个因素数据竞争,将线程之间原本共享的内存资源进行隔离,避免线程之间相互传递数据,所有的提交操作都必须在获取令牌的前提下进行。避免出现因数据竞争而产生的不确定性。其次,由于为解决数据竞争,缓存成为最末一级共享资源,原本采用的LRU缓存替换算法在单线程程序中,由于数据访问具有局部性而被广泛采用,但在多线程程序中效果不甚理想。本文借鉴了在多线程程序中表现较优的LIRS算法思想,通过比较访问同一缓存块之间读取其他块的数量,动态的调整在缓存中驻留的数据块,来提升系统性能。为了验证提出的方法,本文采用国内外学术界广泛采用的轨迹追踪模拟的方式进行验证,使用Gem5硬件模拟器中的trace-CPU模式采集程序运行的轨迹,然后按照轨迹模拟驱动方式测算四种算法的缓存命中率,并且通过调整缓存大小观察命中率变化趋势。实验结果表明本文提出的方法能够保证多线程程序的确定性,并且采用LIRS缓存算法优化后系统性能有提升。
姬壮伟[6](2018)在《多核系统的确定性重演记录技术研究》文中指出在处理器的发展中,处理器性能的快速提高依赖于单个处理器核主频的快速增大,但如今由于各种原因,主频的提升遇到瓶颈,因此片上多核处理器兴起,在生活中随处可见,但要充分发挥片上多核处理器的计算效率,仍有许多难题需要去解决。其中多核环境下,并行程序执行的不确定性是阻碍片上多核处理器发展的主要因素,即同一并行程序,即使在相同输入的前提下,从同一还原点执行,执行结果仍有可能会有差异,其中多线程竞争共享内存是造成不确定性的最主要因素,这给并行程序的调试造成了极大的困难。确定性重演是解决并行程序执行不确定问题行之有效的方法,包括两个阶段:记录阶段和重演阶段,其中记录阶段的内存竞争记录日志的资源消耗决定了确定性重演方法的性能。因此本文从竞争记录日志的空间消耗出发,研究低消耗的内存竞争记录方式。本文从两方面研究提出了四种减小内存竞争记录日志大小的方法,并设计了基于分段的交叉式内存竞争记录方式。首先采用当前指令计数值记录内存竞争依赖关系,当内存竞争发生时,用线程运行当前指令代替竞争双方的指令计数值,来表示内存竞争依赖关系;其次采用对访存指令分段的方法实现内存竞争记录的传递性约减,通过指令段号比较约减能够由已经存在的内存竞争推导而得的冗余内存竞争,很大程度上减少了内存竞争记录的次数;接下来对相邻且同向的内存竞争记录进行交叉记录,即记录日志中每条记录与所有相邻记录的冲突方向皆不相同,进一步减少内存竞争记录的次数;最后采用分段指令计数方法记录内存竞争,对指令计数进行分段,降低指令计数最大值,减少硬件消耗。本文从减少内存竞争记录次数和单条内存竞争记录占用空间两方面有效了减少了内存竞争记录日志的大小,减少了硬件资源的消耗。为验证以上方法内存竞争记录的性能,本文通过gem5多核处理器模拟平台搭建相应硬件体系结构环境,使用经典多核测试程序SPLASH2对本文所提出方法进行实验验证与分析,并在相同的环境中,从同一还原点运行传统的内存竞争记录方法RTR和FDR,对比结果表明,本文所提出方法在添加很少硬件资源的基础上,有效的减少了内存竞争记录日志的大小。
郑雅洁,张冬雯,张杨,郭松,梁亚楠,魏萌萌,于欣[7](2017)在《并行环境下Java哈希机制的对比及重构》文中提出针对并行环境下出现的非线程安全问题,以哈希机制的Hashtable和ConcurrentHashMap的线程安全问题为切入点,设计了可改变线程总数和读写线程数的测试程序,分析了线程安全的ConcurrentHashMap和Hashtable的性能差异。根据性能差异,设计了从Hashtable到ConcurrentHashMap的程序自动重构插件,进而在Hashtable封装数据的情况下,通过对比传统多线程处理方式和Java8中的并行流处理方式的性能差异,分析了流处理方式相对普通多线程处理方式的高效性。对比结果显示,ConcurrentHashMap在并行程序中的性能要优于Hashtable。研究结果为多线程程序开发提出了解决非线程安全提供了较为可行的新思路,对于并行编程具有借鉴意义。
朱亮[8](2016)在《基于NUMA架构的多线程程序性能和能耗研究》文中进行了进一步梳理在云计算环境下,非一致性内存访问NUMA(Non-Uniform Memory Access)架构运用的越来越广泛。当单线程多任务的程序运行在NUMA系统上时,会遇到数据本地性和共享资源冲突两个问题。而当多线程程序运行在NUMA系统上时,会使上述的两个问题变得更加复杂:1)多线程程序的共享数据会导致不同节点之间产生远端访问,破坏NUMA系统本地性;2)当多个线程同时读取同一个NUMA节点上的内存数据时,会竞争该节点上的共享资源,导致严重的缓存以及互联总线冲突。另外,多线程程序还会带来关键线程的问题。具有更多远端内存访问的线程成为系统中的关键线程,这些关键线程会影响整个程序的性能并增加程序运行期间的能量消耗。以往的研究主要关注提升NUMA系统的性能,很少考虑节省NUMA系统的能耗。围绕上述若干问题,针对“基于NUMA架构的多线程程序性能和能耗研究”课题,开展了以下四个方面的研究:针对NUMA系统中出现的内存访问延迟过高的现象,提供给程序员一个工具检测并分析NUMA系统中的性能瓶颈。通过分析系统中的延迟信息,该工具能做出三种判断:1)如果共享数据的访问延迟要高于私有数据的访问延迟,那么系统中的共享数据会导致较大数目的远端访问;2)如果系统中存在异常高的内存访问延迟,那么系统中很有可能发生共享资源冲突;3)如果各线程之间的远端内存访问数目差异较大,那么远端内存访问数目最多的线程会成为影响整个程序性能的关键线程。在检测并分析出这些性能瓶颈之后,采用简便和通用的NUMA系统优化技术能够提升多线程程序的性能。针对关键线程导致NUMA系统性能下降的现象,提出一种对称式调度机制来均衡多线程之间的远端内存访问数目。在NUMA环境中,程序数据对于某些线程来说是本地数据,对于其他线程来说则是远端数据。具有远端内存访问较多的线程会比其他线程运行地更慢,成为影响整个多线程程序性能的关键线程。通过对称式线程调度机制,将线程对称地匹配到所有的处理器节点上,可以平衡所有线程的远端内存访问次数,使每个线程具有相似的本地和远端数据访问数目。这样,所有的线程几乎会同时达到线程同步点,避免关键线程拖累性能的情况发生。针对多线程程序在NUMA系统上运行时性能和能耗的关系,提出一个性能提升和能耗增长的线性负相关性模型。在模型中分别考虑以下两种假设:实际加速比趋近于常量,以及实际加速比趋近于线性加速比。基于性能和能耗之间关系,可以指导NUMA系统进行动态调优:根据多线程程序性能可扩展性的好坏,增加/减少该程序所使用的节点数,可以在满足能耗预算/性能要求前提下提升性能或者节省能耗。进一步研究发现,影响性能和能耗之间关系的因素包括:远端内存访问开销、线程间同步开销和负载非均衡开销。其中,由关键和非关键线程完成时间不一致引起的同步开销是导致程序性能/能耗可扩展性变差的主要原因之一。针对NUMA系统上关键线程和非关键线程的完成时间不同,提出一种动态频率调整策略来降低整个系统的能耗。在NUMA系统中,关键线程需要访问更多的远端内存,运行时间比非关键线程更长。因此,程序的执行时间是由关键线程决定的。在不延长程序整体执行时间的前提下,通过降低非关键线程所在的CPU核心频率,使关键线程和非关键线程同时达到多线程程序的同步点,可以节省非关键线程的能量消耗。通过使用基于关键线程的预测机制,进而能够有效地实施动态频率调整策略,从而节省更多的能耗。
沙晗,应欢,唐博文,乔扬[9](2016)在《基于并串结合机制的数据竞争消除系统设计与实现》文中认为数据竞争是多线程程序最为常见的问题之一,数据竞争的出现会导致程序的原子性遭到破坏,从而使得推理程序的行为和改进程序的性能更加困难.为解决数据竞争带来的问题,提出了一种运行时的数据竞争消除系统DRFS(Data-Race-Free-System).DRFS将多线程程序的执行分为并行执行和串行执行两种模式,采用合理有效的模式切换机制将两种模式结合执行,为并行程序提供一个无数据竞争的运行环境.实验结果表明,DRFS在保证并行程序不会出现数据竞争的同时,并未引入很大的性能开销.
郑龙[10](2016)在《多线程锁同步运行时特征分析与调优机制研究》文中研究表明随着多核/众核处理器的出现,计算机的处理能力得到大幅增强。为了充分地发挥多核/众核处理器强大的计算能力,多线程编程技术应运而生,但同时也引入了线程间通信问题,因此,设计出了锁同步机制来协调线程间的通信。在多线程编程语言中,锁同步机制的核心理念是保证不同线程对同一共享资源的冲突访问以互斥的方式进行。尽管锁同步机制保证了线程间通信的正确性,但由于多线程程序运行时调度的随机性与复杂性,在程序动态执行的过程中,现有的锁同步机制也同时带来了大量的非冲突型互斥执行,即不当锁同步。不当锁同步指由同一锁保护的多个临界区并未同时访问同一共享资源。程序运行时形成的不当锁同步带来了诸多负面影响:1)在程序性能影响方面,由于不当锁同步保护的多个临界区没有对同一共享资源进行冲突访问,因此这些临界区原本可并行执行,然而锁同步机制的互斥保护使得它们以串行的方式执行,因此影响了多线程程序的性能。特别地,在锁密集型的多线程程序中存在着大量的不当锁同步,这对多线程程序的性能造成了严重的影响。2)在数据竞争检测方面,现阶段主流的动态数据竞争检测方法大都基于Happens-Before (HB)关系实现。该检测方法通常对不同线程间的解锁和加锁事件形成偏序时序关系,但凡两个程序事件没有偏序关系同时又冲突访问了同一共享资源,那么它们便构成一个数据竞争。然而,由于不当锁同步可并行化的特征,HB模型的强边界时序关系通常会漏掉大量的数据竞争。此外,不当锁同步在程序动态执行过程中有指数量级变化的可能性,因此高效地识别不当锁同步并非一件易事。围绕上述若干锁同步相关问题,开展了“多线程锁同步运行时特征分析与调优机制研究”的课题,主要包括以下三方面:在特征研究方面,首次对多线程锁同步运行时特征进行了系统的分析,特别是不当锁同步运行时的特征分析。具体来说,以若干真实的(real-world)多线程程序(例如OpenLDAP、mysq1、pbzip2、transmissionBT、handbrake)为基准程序,对它们中的锁同步进行测试、跟踪、收集,通过观察进一步对锁同步运行时特征进行总结,具体包括:锁同步特征分类及其表现形式、产生原因、系统影响、防范策略和可能的修复措施等。特征研究同时揭示了11个锁同步运行时特征相关的新观察,基于收集到的观察结果探讨了其所折射的研究蕴意。通过对多线程锁同步运行时特征研究,加强了对不当锁同步的认识与理解,对解决不当锁同步的程序影响有着重要的指导意义。在性能调试方面,针对不当锁同步所造成的性能影响问题,提出了基于记录/重放技术的性能调试方法-PerfPlay。该方法的核心思想如下:首先,记录下含有不当锁同步性能问题的原始程序执行轨迹文件:其次,利用拓扑图分析技术消除其中的不当锁同步执行序列,使之变为不含有不当锁同步性能问题的程序执行轨迹文件;接着,对原始和修改后的程序执行轨迹文件重放;最后,对比分析两次重放结果进而定量分析出不当锁同步所造成的净性能损耗。实验结果表明,PerfPlay方法:1)有着很高的性能稳定性与性能精确性,进而保证了重放分析的性能保真度;2)以低(<4.3%)运行时锁集开销,推荐的不当锁同步代码段有很高的优化价值;3)案例分析的结果也进一步逆向证明了PerfPlay在发掘不当锁同步方面的有效性。在数据竞争检测方面,提出了面向不当锁同步的弱时序边界Happens-Before关系-ULCP-HB, ULCP-HB关系改善了传统HB关系的强时序边界特点,其能穿透不当锁同步交错解锁和加锁事件之间形成的偏序关系并使之并行化。为了实现ULCP-HB关系,结合不当锁同步运行时特征,进一步提出了在线启发式分析与离线重排序分析相结合的轻量级数据竞争检测方法,该方法在几乎不引入额外运行时开销的情况下能够发掘出因不当锁同步而隐藏的数据竞争。实验表明,相比于HB检测方法,ULCP-HB能发掘出额外19.8%的数据竞争;且在几乎不引入(<4.45%)运行时分析开销的情况下,能够节约51.0%重排序开销和52.3%执行轨迹文件大小。综上所述,围绕多线程程序动态运行过程中产生的不当锁同步现象,从基础研究(即多线程锁同步运行时特征研究)和扩展研究(包括面向不当锁同步的性能调试技术和数据竞争检测两方面的研究)两个方面对不当锁同步进行了全面又深入的系统分析,这些研究加强了程序设计人员对不当锁同步的运行时行为及程序影响的理解,进而帮助程序设计人员有效地修复不当锁同步相关的程序影响。
首先简单简介论文所研究问题的基本概念和背景,再而简单明了地指出论文所要研究解决的具体问题,并提出你的论文准备的观点或解决方法。
本文主要提出一款精简64位RISC处理器存储管理单元结构并详细分析其设计过程。在该MMU结构中,TLB采用叁个分离的TLB,TLB采用基于内容查找的相联存储器并行查找,支持粗粒度为64KB和细粒度为4KB两种页面大小,采用多级分层页表结构映射地址空间,并详细论述了四级页表转换过程,TLB结构组织等。该MMU结构将作为该处理器存储系统实现的一个重要组成部分。
调查法:该方法是有目的、有系统的搜集有关研究对象的具体信息。
观察法:用自己的感官和辅助工具直接观察研究对象从而得到有关信息。
实验法:通过主支变革、控制研究对象来发现与确认事物间的因果关系。
文献研究法:通过调查文献来获得资料,从而全面的、正确的了解掌握研究方法。
实证研究法:依据现有的科学理论和实践的需要提出设计。
定性分析法:对研究对象进行“质”的方面的研究,这个方法需要计算的数据较少。
定量分析法:通过具体的数字,使人们对研究对象的认识进一步精确化。
跨学科研究法:运用多学科的理论、方法和成果从整体上对某一课题进行研究。
功能分析法:这是社会科学用来分析社会现象的一种方法,从某一功能出发研究多个方面的影响。
模拟法:通过创设一个与原型相似的模型来间接研究原型某种特性的一种形容方法。
| 摘要 |
| ABSTRACT |
| 第1章 绪论 |
| 1.1 研究背景和意义 |
| 1.2 国内外研究现状 |
| 1.2.1 基于静态胎记的软件抄袭检测 |
| 1.2.2 基于动态胎记的软件抄袭检测 |
| 1.3 研究内容 |
| 1.4 论文结构安排 |
| 第2章 软件抄袭检测关键概念及相关知识 |
| 2.1 软件抄袭检测概述 |
| 2.2 软件胎记 |
| 2.3 基于软件胎记的抄袭检测 |
| 2.4 本章小结 |
| 第3章 基于行为MOTIFS的多线程程序抄袭检测方法 |
| 3.1 基本思想 |
| 3.2 Motifs提取算法 |
| 3.2.1 执行轨迹修剪 |
| 3.2.2 gram匹配 |
| 3.2.3 扩展与抽象 |
| 3.3 基于Motifs的软件抄袭检测 |
| 3.3.1 motifs胎记 |
| 3.3.2 motifs胎记相似性计算 |
| 3.3.3 抄袭判定 |
| 3.3.4 系统实现 |
| 3.4 实验结果与分析 |
| 3.4.1 实验数据集及实验设置 |
| 3.4.2 胎记的弹性和可信性评估 |
| 3.4.3 与其他胎记技术的对比分析 |
| 3.4.4 k值的影响分析 |
| 3.5 本章小结 |
| 第4章 基于频繁模式挖掘的多线程程序抄袭检测方法 |
| 4.1 基本思想 |
| 4.2 FPBirth胎记 |
| 4.2.1 模式候选集产生 |
| 4.2.2 频繁模式挖掘 |
| 4.2.3 频繁模式约减 |
| 4.3 基于FPBirth的软件抄袭检测 |
| 4.3.1 相似性计算和抄袭判定 |
| 4.3.2 系统实现 |
| 4.4 实验结果与分析 |
| 4.4.1 实验数据集及实验设置 |
| 4.4.2 胎记的弹性和可信性评估 |
| 4.4.3 与其他胎记技术的对比分析 |
| 4.4.4 模式长度影响分析 |
| 4.5 本章小结 |
| 第5章 基于孪生神经网络的多线程程序抄袭检测方法 |
| 5.1 基本思想 |
| 5.2 NeurMPD系统 |
| 5.2.1 执行轨迹修剪 |
| 5.2.2 线程感知胎记提取 |
| 5.2.3 基于Siamese架构的神经网络训练 |
| 5.2.4 抄袭判定 |
| 5.3 实验结果与分析 |
| 5.3.1 实验数据集及实验设置 |
| 5.3.2 样本划分 |
| 5.3.3 系统评估 |
| 5.3.4 与其他胎记技术的对比分析 |
| 5.4 小结 |
| 第6章 结论与展望 |
| 6.1 本文总结 |
| 6.2 工作展望 |
| 参考文献 |
| 攻读学位期间取得的研究成果 |
| 致谢 |
| 摘要 |
| Abstract |
| 第1章 引言 |
| 1.1 研究背景和意义 |
| 1.2 国内外发展现状 |
| 1.2.1 国外发展现状 |
| 1.2.2 国内发展现状 |
| 1.3 研究内容 |
| 1.4 论文组织结构 |
| 1.5 本章小结 |
| 第2章 系统总体设计方案 |
| 2.1 系统需求分析 |
| 2.1.1 系统功能需求 |
| 2.1.2 系统性能需求 |
| 2.2 系统总体设计 |
| 2.2.1 系统架构设计 |
| 2.2.2 系统功能框架设计 |
| 2.3 系统硬件选型 |
| 2.3.1 嵌入式硬件开发平台介绍 |
| 2.3.2 图像采集模块介绍 |
| 2.4 本章小结 |
| 第3章 指针式仪表读数算法处理流程 |
| 3.1 指针式仪表图像预处理 |
| 3.1.1 图像尺寸调整 |
| 3.1.2 彩色图像灰度化 |
| 3.1.3 分段线性变换 |
| 3.1.4 图像滤波 |
| 3.1.5 边缘检测 |
| 3.1.6 阈值分割 |
| 3.2 指针式仪表表盘圆拟合 |
| 3.2.1 Hough变换圆检测 |
| 3.2.2 二值图像连通域 |
| 3.2.3 仪表刻度线质心提取 |
| 3.2.4 刻度线质心点拟合圆 |
| 3.3 主刻度线示数识别 |
| 3.3.1 主刻度单个字符提取与识别 |
| 3.3.2 计算主刻度示数 |
| 3.4 指针提取 |
| 3.4.1 图像细化 |
| 3.4.2 累计概率霍夫变换检测直线 |
| 3.5 仪表示数的判定 |
| 3.6 本章小结 |
| 第4章 嵌入式系统平台搭建 |
| 4.1 嵌入式系统硬件设计 |
| 4.1.1 电源模块 |
| 4.1.2 调试串口 |
| 4.1.3 OTG接口 |
| 4.1.4 USB接口 |
| 4.1.5 以太网卡 |
| 4.1.6 触摸屏 |
| 4.2 嵌入式开发环境的建立 |
| 4.2.1 搭建交叉编译环境 |
| 4.2.2 安装TFTP服务器 |
| 4.3 嵌入式Linux系统移植 |
| 4.3.1 u-boot移植 |
| 4.3.2 Linux内核配置及移植 |
| 4.3.3 嵌入式文件系统移植 |
| 4.4 QtE应用程序的开发环境 |
| 4.5 OpenCV移植 |
| 4.6 本章小结 |
| 第5章 系统软件设计 |
| 5.1 读数终端软件设计 |
| 5.1.1 多线程程序设计 |
| 5.1.2 视频采集 |
| 5.1.3 H.264压缩编码 |
| 5.1.4 数据传输 |
| 5.2 服务器端软件设计 |
| 5.2.1 数据收发 |
| 5.2.2 FFmpeg解码 |
| 5.2.3 服务器界面设计 |
| 5.3 本章小结 |
| 第6章 系统测试与分析 |
| 6.1 读数终端测试 |
| 6.1.1 图像处理算法测试 |
| 6.1.2 读数结果测试 |
| 6.2 服务器端测试 |
| 6.3 测试结果分析 |
| 6.4 本章小结 |
| 结论 |
| 致谢 |
| 参考文献 |
| 1 相关工作 |
| 2 motifs提取 |
| 2.1 轨迹修剪 |
| 2.2 gram匹配 |
| 2.3 扩展和抽象 |
| 3 基于motifs的软件抄袭检测 |
| 3.1 motifs胎记 |
| 3.2 胎记相似性计算 |
| 3.3 抄袭判定 |
| 3.4 系统实现 |
| 4 实验分析 |
| 4.1 实验对象及参数设置 |
| 4.2 胎记的弹性和可信性评估 |
| 4.3 与其他胎记技术的对比分析 |
| 4.3.1 检测效果的对比分析 |
| 4.3.2 时间开销的对比分析 |
| 4.4 k值的影响分析 |
| 5 方法的局限性讨论 |
| 6 总 结 |
| 摘要 |
| ABSTRACT |
| 符号对照表 |
| 缩略语对照表 |
| 第一章 绪论 |
| 1.1 研究背景和意义 |
| 1.2 国内外研究进展 |
| 1.3 研究内容及论文章节安排 |
| 1.3.1 主要研究内容 |
| 1.3.2 组织结构 |
| 第二章 相关基础理论 |
| 2.1 模型检测 |
| 2.2 抽象技术 |
| 2.2.1 谓词抽象技术 |
| 2.2.2 常见的谓词抽象工具 |
| 2.3 布尔程序 |
| 2.3.1 顺序布尔程序 |
| 2.3.2 并发布尔程序和无限状态迁移系统 |
| 2.4 良拟序迁移系统 |
| 2.4.1 Petri网系统 |
| 2.4.2 线程迁移系统 |
| 2.5 可达性问题和可覆盖性问题的关联 |
| 2.6 本章小结 |
| 第三章 基于SMT和BP的多线程程序的可覆盖性分析 |
| 3.1 TTS上的基于SMT求解器的可覆盖性分析 |
| 3.1.1 基于SMT求解器的符号分析模块思想 |
| 3.1.2 局部状态约束 |
| 3.1.3 共享状态约束 |
| 3.2 基于BP的KM算法模块 |
| 3.2.1 经典的基于TTS的KM算法分析 |
| 3.2.2 布尔程序上的可覆盖性问题 |
| 3.2.3 布尔程序上的KM算法 |
| 3.3 基于SMT和BP的可覆盖性分析过程设计与实现 |
| 3.3.1 工具的设计与实现 |
| 3.3.2 使用改进的KM算法的可覆盖性分析 |
| 3.4 本章小结 |
| 第四章 实验结果分析 |
| 4.1 实验环境及测试集 |
| 4.2 实验结果分析 |
| 4.3 本章小结 |
| 第五章 总结与展望 |
| 5.1 工作总结 |
| 5.2 未来展望 |
| 参考文献 |
| 致谢 |
| 作者简介 |
| 摘要 |
| Abstract |
| 第1章 绪论 |
| 1.1 课题来源 |
| 1.2 课题的研究目的和意义 |
| 1.3 国内外研究现状与分析 |
| 1.3.1 确定性技术研究现状 |
| 1.3.2 缓存分配调度策略研究现状 |
| 1.3.3 确定性技术国内外研究现状分析 |
| 1.3.4 缓存替换策略国内外研究现状分析 |
| 1.4 论文研究内容和结构安排 |
| 1.4.1 论文主要研究内容 |
| 1.4.2 论文结构安排 |
| 第2章 多线程弱确定性方法研究 |
| 2.1 多线程非确定性原因分析 |
| 2.2 多线程弱确定性方法研究 |
| 2.2.1 线程弱确定性结构 |
| 2.2.2 多线程通信隔离 |
| 2.2.3 原子事务阶段划分 |
| 2.2.4 线程同步策略研究 |
| 2.3 多线程弱确定性方法设计 |
| 2.4 本章小结 |
| 第3章 LIRS缓存替换策略研究 |
| 3.1 LIRS缓存替换策略研究 |
| 3.1.1 提升缓存算法性能的方法 |
| 3.1.2 LIRS缓存替换算法分析 |
| 3.1.3 LIRS缓存替换算法设计与实现 |
| 3.2 多线程缓存替换算法特征研究 |
| 3.3 LIRS与其他算法结构对比分析 |
| 3.4 LIRS与其他缓存算法性能分析与验证 |
| 3.5 本章小结 |
| 第4章 基于LIRS缓存优化多线程弱确定性技术验证 |
| 4.1 LIRS缓存优化多线程弱确定性技术总体结构 |
| 4.2 多线程弱确定性技术验证 |
| 4.2.1 多线程弱确定性技术确定性验证 |
| 4.2.2 多线程弱确定性技术性能验证 |
| 4.3 LIRS缓存优化多线程弱确定性技术性能验证 |
| 4.4 本章小结 |
| 结论 |
| 参考文献 |
| 攻读硕士学位期间发表的其他论文和及研究成果 |
| 致谢 |
| 摘要 |
| Abatract |
| 第1章 绪论 |
| 1.1 课题来源 |
| 1.2 课题研究的目的和意义 |
| 1.3 国内外研究现状 |
| 1.3.1 硬件实现并行程序的确定性重演 |
| 1.3.2 软件实现并行程序的确定性重演 |
| 1.4 论文研究内容及结构安排 |
| 1.4.1 本文的主要研究内容 |
| 1.4.2 本文的结构安排 |
| 第2章 并行程序确定性执行相关技术研究 |
| 2.1 单芯片多核技术 |
| 2.2 并行程序访存竞争 |
| 2.3 确定执行的一致性模型支持 |
| 2.3.1 一致性存储模型 |
| 2.3.2 一致性缓存协议 |
| 2.4 并行程序执行不确定性分析和解决方式 |
| 2.4.1 并行程序的不确定性 |
| 2.4.2 并行程序不确定性的解决方式 |
| 2.4.3 点对点访存竞争记录方式 |
| 2.5 gem5 计算机系统模拟平台 |
| 2.5.1 gem5 多核模拟器 |
| 2.5.2 Ruby存储系统和cache一致性协议 |
| 2.6 本章小结 |
| 第3章 基于分段的交叉式内存竞争记录方法 |
| 3.1 分段交叉式内存竞争记录方式总体设计 |
| 3.2 分段交叉式内存竞争记录方式详细设计 |
| 3.2.1 当前指令计数值表示内存竞争 |
| 3.2.2 约减可推导内存竞争记录的分段实现 |
| 3.2.3 交叉优化内存竞争记录 |
| 3.2.4 指令分段计数 |
| 3.3 分段交叉式内存竞争记录硬件体系结构 |
| 3.4 内存竞争检测与记录方法实现 |
| 3.4.1 方法的可行性分析 |
| 3.4.2 内存竞争检测与记录实现思路 |
| 3.4.3 内存竞争记录算法描述 |
| 3.4.4 一致性消息结构修改 |
| 3.4.5 一致性协议的修改 |
| 3.5 本章小结 |
| 第4章 多核平台仿真系统实现与实验验证分析 |
| 4.1 搭建多核模拟平台 |
| 4.1.1 gem5 安装测试 |
| 4.1.2 建立全系统仿真模式 |
| 4.2 编写配置文件 |
| 4.3 标准测试集 |
| 4.4 仿真结果性能分析 |
| 4.4.1 硬件参数测试统计 |
| 4.4.2 分段式指令计数性能分析 |
| 4.4.3 内存竞争记录约减方法性能分析 |
| 4.5 本章小结 |
| 结论 |
| 参考文献 |
| 攻读硕士学位期间发表的论文及其他成果 |
| 致谢 |
| 1 问题的提出 |
| 2 性能比较框架 |
| 2.1 Hashtable和ConcurrentHashMap的对比 |
| 2.2 基于Java哈希表的并行流的程序设计 |
| 3 实验 |
| 3.1 Hashtable与ConcurrentHashMap多线程读写性能对比 |
| 3.2 面向哈希表的重构 |
| 3.3 基于哈希表的并行流性能对比 |
| 4 结语 |
| 摘要 |
| ABSTRACT |
| 1 绪论 |
| 1.1 NUMA系统 |
| 1.2 NUMA系统的性能优化研究现状 |
| 1.3 NUMA系统的能耗优化研究现状 |
| 1.4 本文的研究工作 |
| 1.5 论文的组织结构 |
| 2 基于NUMA架构的多线程程序性能瓶颈检测与分析 |
| 2.1 问题的提出 |
| 2.2 多线程程序的性能瓶颈分析及优化 |
| 2.3 检测分析工具的实现机制 |
| 2.4 功能测试与分析 |
| 2.5 本章小结 |
| 3 基于NUMA架构提升多线程程序性能的对称式调度机制 |
| 3.1 问题的提出 |
| 3.2 线程远端访问分布不均衡分析 |
| 3.3 对称式匹配调度机制 |
| 3.4 性能测试与分析 |
| 3.5 本章小结 |
| 4 基于NUMA架构多线程程序性能和能耗相关性分析 |
| 4.1 问题的提出 |
| 4.2 多线程程序性能与能耗关系分析 |
| 4.3 性能与能耗的理论分析模型 |
| 4.4 实验模拟与结果分析 |
| 4.5 性能与能耗优化 |
| 4.6 本章小结 |
| 5 基于NUMA架构节省多线程程序能耗的频率调整机制 |
| 5.1 问题的提出 |
| 5.2 动态频率调整对多线程程序能耗的影响 |
| 5.3 多线程程序的能耗优化模型 |
| 5.4 实验模拟与结果分析 |
| 5.5 本章小结 |
| 6 全文总结与工作展望 |
| 6.1 本文工作总结 |
| 6.2 下一步工作展望 |
| 致谢 |
| 参考文献 |
| 附录1 缩略词简表 |
| 附录2 攻读博士学位期间发表的主要论文及发明专利 |
| 附录3 博士生期间参与的课题研究情况 |
| 附录4 个人简历 |
| 1 引言 |
| 2 数据竞争消除背景 |
| 3 DRFS设计 |
| 3.1 引入串行模式的原因 |
| 3.2 串并模式切换机制 |
| 4 DRFS实现 |
| 4.1 串行模式的执行 |
| 4.2 运行模式切换 |
| 4.2.1 并行模式切换串行模式的时机 |
| 4.2.2 串行模式切换并行模式的时机 |
| 5 实验数据 |
| 5.1 测试环境 |
| 5.2 性能开销 |
| 5.2.1 DRFS并串结合的性能开销. |
| 5.2.2 各个测试程序串行执行时间占总执行时间的百分比 |
| 6 结束语 |
| 摘要 |
| ABSTRACT |
| 1 绪论 |
| 1.1 研究背景 |
| 1.2 国内外研究现状 |
| 1.3 研究的目的与意义 |
| 1.4 论文组织结构 |
| 2 多线程锁同步运行时特征分析 |
| 2.1 特征分析实验方法 |
| 2.2 锁同步交错分类与识别 |
| 2.3 观察与蕴含 |
| 2.4 不当锁同步的避免措施 |
| 2.5 本章小结 |
| 3 面向不当锁同步的性能调试技术 |
| 3.1 研究背景 |
| 3.2 问题提出 |
| 3.3 面向不当锁同步的性能调试技术设计 |
| 3.4 面向不当锁同步的性能调试关键技术实现 |
| 3.5 系统评估 |
| 3.6 本章小结 |
| 4 面向不当锁同步的数据竞争检测技术 |
| 4.1 研究背景与研究动机 |
| 4.2 不当锁同步感知的Happens-Before(ULCP-HB)关系 |
| 4.3 ULCP-HB关系的关键技术实现 |
| 4.4 系统评测 |
| 4.5 本章小结 |
| 5 总结与展望 |
| 致谢 |
| 参考文献 |
| 附录1 缩略词简表 |
| 附录2 攻读博士学位期间发表的主要论文 |
| 附录3 攻读博士学位期间参与的主要科研项目 |
| 附录4 个人简历 |