CN108459963A - 一种基于中断控制流图的中断验证方法 - Google Patents

一种基于中断控制流图的中断验证方法 Download PDF

Info

Publication number
CN108459963A
CN108459963A CN201810160219.6A CN201810160219A CN108459963A CN 108459963 A CN108459963 A CN 108459963A CN 201810160219 A CN201810160219 A CN 201810160219A CN 108459963 A CN108459963 A CN 108459963A
Authority
CN
China
Prior art keywords
node
controlling stream
interrupt
stream graph
interruption
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
Application number
CN201810160219.6A
Other languages
English (en)
Other versions
CN108459963B (zh
Inventor
史建琦
佘庆
黄滟鸿
郭欣
熊家文
毛侠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHANGHAI HUAYUAN CHUANGXIN SOFTWARE Co Ltd
East China Normal University
Original Assignee
SHANGHAI HUAYUAN CHUANGXIN SOFTWARE Co Ltd
East China Normal University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SHANGHAI HUAYUAN CHUANGXIN SOFTWARE Co Ltd, East China Normal University filed Critical SHANGHAI HUAYUAN CHUANGXIN SOFTWARE Co Ltd
Priority to CN201810160219.6A priority Critical patent/CN108459963B/zh
Publication of CN108459963A publication Critical patent/CN108459963A/zh
Application granted granted Critical
Publication of CN108459963B publication Critical patent/CN108459963B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (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

本发明公开了一种基于中断控制流图的中断验证方法,包括:对中断驱动程序的目标代码进行反汇编操作,获取汇编代码;根据所述汇编代码构建中断控制流图;对所述中断控制流图切片处理;根据所述中断控制流图切片,验证所述中断驱动程序的时间安全与内存安全。本发明采用中断控制流图来描述中断驱动程序的控制流信息,并利用程序切片的技术思想,对中断控制流图进行切片,进而分析验证所述目标代码的时间安全与内存安全。本发明的优点是,提出了中断驱动程序控制流结构的模型—中断控制流图,实现了在同一模型中验证中断驱动程序最常出现的两类问题,提高了中断驱动程序验证的可靠性与安全性。

Description

一种基于中断控制流图的中断验证方法
技术领域
本发明涉及计算机代码静态分析领域,特别是涉及一种基于中断控制流图的中断验证方法,用于验证中断驱动程序的时间安全与内存安全。
背景技术
当今,信息技术与移动互联网的发展日新月异,嵌入式实时系统的发展也取得了令人瞩目的进步,并且广泛应用于计算机相关产业,如:制造、医疗、交通以及通信等各个行业。除此之外,包括能源、航天、军事等关键领域都大量应用了嵌入式实时系统,因此一旦这些系统发生错误,将会造成不可估量的损失,那么实时系统工作的正确性与可靠性就显得尤为重要。实际上,实时系统工作的正确性与可靠性不仅取决于系统运行所产生的结果,同时也依赖于产生结果所需的时间,即本发明领域中熟知的deadline(死亡时限)。然而在实践中,有关实时系统的正确性验证是非常困难的,特别时间性质是否满足要求的验证,因为通常系统的运行环境具有相对随机性和复杂性,这也就使得系统运行的相关命令的执行时间是不可预测的。因此,时间性质的正确验证至关重要。
通过引入中断处理程序可以有效的解决上述问题,当一个暂停指令(由中断导致的)执行时,CPU会暂停当前正在执行的程序并转去执行中断处理ISR(Interrupt ServiceRoutine),当指令执行完毕后,CPU会继续执行之前被暂停的程序。但是,通常一个中断驱动程序中具有大量的并且不同的中断源(发出中断请求信号的来源),甚至大多数实时系统都支持中断处理程序中嵌套中断,通过一个中断可以被具有更高优先级的中断打断而实现,这些情况导致了中断处理程序同样具有随机性和复杂性。此外,由于中断机制的引入,使得中断驱动程序会产生另外一个可能影响安全的问题数据竞争——即两个线程同时访问同一个共享变量,且这两个访问中至少有一个访问是向变量中写值。因此在嵌入式领域中,仍然经常会发生由于中断引发的软件错误,然而目前有关中断数据竞争与时间性质的检测技术与方法还相对缺乏。
发明内容
针对上述问题,本发明通过公布了一种基于中断控制流图的中断验证方法,包括:
对中断驱动程序的目标代码进行反汇编操作,获取汇编代码;
根据所述汇编代码构建中断控制流图;
对所述中断控制流图切片处理;
根据所述中断控制流图切片,验证所述中断驱动程序的时间安全与内存安全。
进一步的,所述中断驱动程序包括:主控程序与中断处理程序。
更进一步的,所述主控程序能够被中断处理程序中断,所述中断处理程序用于处理中断任务,具有优先级,具有低优先级的中断处理程序可以被具有更高优先级的中断处理程序中断。
更进一步的,所述根据汇编代码构建中断控制流图,包括:根据汇编代码获得中断信息;根据所述汇编代码获得主控控制流图与中断处理控制流图。
更进一步的,所述中断信息包括:节点、所述节点中的中断处理程序、所述节点中的中断处理程序的优先级。
更进一步的,所述中断控制流图通过所述中断信息将所述主控控制流图与所述中断处理控制流图相结合而获得。
更进一步的,所述主控控制流图与所述中断处理控制流图均为有向图,用数学模型进行表示,该数学模型包括:节点集合与有向边集合。
更进一步的,所述有向边集合中的有向边由一对有向节点对表示,所述有向节点对中的节点包含于所述节点集合中。
进一步的,所述验证中断驱动程序的时间安全,包括:
(1)通过所述中断控制流图切片,将中断控制流图转换为整数线性规划;
(2)通过对所述整数线性规划进行求解,获得所述目标代码的最坏执行路径;
(3)通过计算所述最坏执行路径的长度,验证中断驱动程序的时间安全。
进一步的,所述验证中断驱动程序的内存验证方法包括:
a)遍历节点,判断遍历节点是否为中断处理程序的入口,如果是,则将中断处理程序标记为真,并将上一节点的状态列表变量压入栈中;
b)判断遍历节点是否为中断处理程序的返回节点:如果既是返回节点并且上一节点的状态列表变量为空,则将中断驱动程序标记设为假,并将上一节点的状态列表变量弹出栈;如果是返回节点但上一节点的状态列表变量不为空,则只进行将上一节点的状态列表变量弹出栈的操作;若不是中断处理程序的返回节点,则继续判断下一个节点;
c)判断中断驱动程序标记是否为真,在标记为真的节点中找出存在数据竞争的节点,若在当前节点中存在有两个或两个以上的子程序同时访问当前节点中的同一个共享变量,并且访问的形式中最少有一个是写操作,则表示存在数据竞争,将当前节点加入到冲突节点集合中。
本发明的优点是,与传统中断验证方法相比,针对中断驱动程序,扩展了传统的主控控制流图,提出了一个新的用以表示中断驱动程序控制流结构的模型—中断控制流图,并给出削减中断控制流图规模(切片)的方法,可有效减少15%~25%的中断控制流图的规模;根据中断控制流图切片,对中断驱动程序进行最坏执行路径分析用以验证时间安全;根据中断控制流图切片,对数据竞争进行检测用以验证内存安全,本发明实现了在同一模型中验证中断驱动程序最常出现的两类问题,提高了中断驱动程序验证的可靠性与安全性。
附图说明
通过阅读下文具体实施方式的详细描述,各种其他的优点和益处对于本领域主控技术人员将变得清楚明了。附图仅用于示出具体实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明的验证方法框架图。
图2为本发明的验证方法流程图。
图3为本发明的一个可选实施例的主控控制流图结构图。
图4为本发明的一个可选实施例的中断处理控制流图结构图。
具体实施方式
本发明公开了一种基于中断控制流图的中断验证方法,所述验证方法通过构建中断控制流图数学模型,利用中断控制流图数学模型来描述中断驱动程序的控制流信息,同时利用了程序切片的技术思想,将中断控制流图进行切片,通过对中断控制流图切片的分析来验证中断驱动程序的时间安全与内存安全。下面将结合附图详细的介绍本发明的验证过程。
如图1所示,公开了本发明的验证方法的框架结构,包括:汇编代码的转换,控制流图的构建,中断信息的获取,中断控制流图的构造,中断控制流图的切片,对数据竞争分析(验证内存安全)以及对最坏路径分析(验证时间安全),其中,控制流图包括主控控制流图与中断处理控制流图。图中1中CFGs为控制流图,CFGscp为主控控制流图,CFGsISR为中断处理控制流图。
具体的,对中断驱动程序目标代码进行反汇编,获得汇编代码;通过汇编代码获得控制流图,所述控制流图包括主控控制流图和中断处理控制流图;通过所述主控控制流图与所述中断处理控制流图与中断信息获得中断控制流图;根据依赖变量集合对中断控制流图进行切片;最后通过中断控制流图切片进行最坏路径分析,从而验证时间安全,通过中断控制流图切片进行数据竞争分析,从而验证内存安全。其中所述主控控制流图用于描述主控程序控制流,中断处理控制流图用于描述中断处理程序控制流,中断控制流图用于描述中断驱动程序控制流。下面将具体介绍所述时间安全与所述内存安全的验证过程以及验证方法。
如图2所示,为本发明的中断验证方法流程图,公开了本发明中断验证方法的验证过程与验证方法,
所述验证过程为,通过中断驱动程序目标代码获得汇编代码,根据汇编代码获得控制流图与中断信息,通过算法利用控制流图与中断信息获得中断控制流图,对中断控制流图用切片分析方法进行切片,得到中断控制流图切片,通过对中断控制流图切片进行最坏执行路径分析判断是否满足时间安全性质要求,通过对中断控制流图切片进行数据竞争检测判断是否满足内存安全性质要求,满足的话输出验证程序正确,不满足的话举出反例路径。
所述验证方法包括:S1、对中断驱动程序的目标代码进行反汇编操作,获取汇编代码;S2、构建中断控制流图;S2.1、根据汇编代码获得中断信息;S2.2、根据所述汇编代码获得主控控制流图与中断处理控制流图;S3、对中断控制流图切片处理;S4、根据中断控制流图切片,验证中断驱动程序的时间安全与内存安全。
上述步骤方法具体说明或过程如下:
S1、对中断驱动程序的目标代码进行反汇编操作,获取汇编代码:
汇编语言的优点是,可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等且易于读写和调试,步骤S1优选的采用计算机进行。
S2、构建中断控制流图:
由于无法直接通过所述汇编代码获得中断控制流图,所以本发明中,首先根据所述汇编代码获得主控控制流图与中断处理控制流图,然后利用中断信息将主控控制流图与中断处理控制流图相结合,从而构建中断控制流图。其中所述主控程序是指中断驱动程序中除了中断处理程序以外的其它子程序,所述中断处理程序是指专门用来处理中断请求的特殊程序,其中,每个中断处理程序由一系列的指令组成,具有相应的优先级,这些指令执行着特殊的有关中断处理的操作。需说明的是,中断驱动程序中包括有中断处理程序与主控程序。
S2.1、根据汇编代码获得中断信息:
由汇编代码的结构决定,中断信息可通过汇编代码直接获得。所述中断信息由中断信息列表Ln进行统计,Ln中的元素是一个二元组为(i,ISRen),其表示ISRen是节点n中优先级为i的使能中断处理程序,列表中的中断信息将按照中断处理程序的优先级进行升序排列。
S2.2、根据所述汇编代码获得主控控制流图与中断处理控制流图:
根据所述汇编代码获得主控控制流图与中断处理控制流图,其中,所述主控控制流图与所述中断处理控制流图均为有向图,为了方便描述,将二者统称为控制流图。所述控制流图通过数学模型表示为G=(N,E),包括:节点集合N(N={n1,n2,…,nk})与有向边集合E,节点集合中每一个节点代表所述控制流图中的一个基础块,有向边集合中每一条有向边可由一个有序节点对(ni,nj)表示,表示从节点ni到节点nj的有向边,需说明的是ni、nj均属于节点集合,此外,所述节点集合中还包括两个特殊的节点,一个是表示控制流进入到控制流图的路入口节点,另一个是表示所有控制流结束的出口节点。
进一步的,由于中断流图为利用中断信息,通过主控控制流图与中断处理控制流图而获得,所以中断控制流图同样为有向图,可用数学模型表示为G*=(N*,E*)。其中,N*=N∪NLoc×I,其中,N表示主控控制流图中的节点集合,NLoc×I表示中断驱动程序中所有使能的中断处理程序的中断处理控制流图中的节点,其中,Loc表示中断的节点位置,并且NLoc∈N*,I表示在节点NLoc中所有使能的中断处理程序。E*=(Ni*,Nj*)表示有向边的集合,Ni*,Nj*均属于N*,进一步的,所述有向边集合中包括了三种类型的边,一是主控程序与中断处理程序之间的有向边,该类有向边是一条从N中的节点流向NLoc×I中节点或者是从NLoc×I中的节点流向N中节点的有向边,该类有向边表示了中断处理程序的执行或是中断执行完成后的返回;二是中断处理程序到中断处理程序的有向边,它是一条从NLoc×I中的节点流向Nloc×I中的节点的边,该条有向边表示中断处理程序中嵌套了中断,即去执行一个更高优先级的中断处理程序或从一个更高优先级的中断处理程序中的返回。三是过程有向边,它表示了主控程序或到中断处理程序中节点间的连接。
中断控制流图的构建:
在介绍中断控制流图算法前,设主控控制流图为GZ,在算法的开始,令G*=GZ,将GZ赋值给G*,G*即为所要构建的中断控制流图的数学模型,令N*=NZ,将主控程序控制流图节点集合NZ赋值给中断控制流图节点集合N*Z,令E*=EZ,将主控控制流图有向边集合EZ赋值给中断控制流图有向边集合E*,上述过程即先将中断控制流图通过主控控制流图表示,之后调用结构函数construct(N*)。在函数constrcut中,本发明对NZ中的所有节点进行以下操作:
①如果nz的中断信息不为空,则移除nz的出口边,并获取nz中最低优先级的中断处理程序,如果nz的中断信息为空,则继续处理下一个节点;
②将nz中最低优先级的中断处理程序赋值给I,对I中的所有节点nz'计算其中断信息Lnz,其中,nz'表示中断处理程序中的节点;(一个程序的优先级越低那么其中包含的中断就越多)。
③计算完I中的中断信息之后,将Nnz×I并入N*Z集合中,其中,Nnz表示所有经步骤①与步骤②处理过的nz主控节点的集合。
④然后将边E={(nz-1,EntryI),(ExitI,nz)}并入到E*中,其中E={(nz-1,EntryI),(ExitI,nz)}表示位于主控节点nz-1与主控节点nz间的中断处理程序中的所有有向边,其中EntryI为中断入口ExitI为中断出口,由于上述过程中已经将nz的出口边移除,则接下来所述的循环即为针对入口节点nz-1与出口节点nz间中断处理程序中的节点。
⑤将Nnz×I作为新的参数继续调用construct函数,直至所有的节点信息为空,即不会发生中断为止,其中,Nnz×I表示主控节点集合和与其对应的具有最低优先级的中断处理程序。
⑥继续判断主控程序中下一个节点,重复上述步骤①、步骤②、步骤③、步骤④与步骤⑤,直到遍历主控控制流图的节点集合Nz=[n1、n2、n3……nz]。
上述操作过程中,骤②、步骤③、步骤④与步骤⑤即为将主控控制流图通过中断信息与中断处理控制流图相结合的过程,接下来即可对中断控制程序进行切片处理。
本发明中断控制流图切片的方法如下:
给定一个程序的中断控制流图G*=(N*,E*),其中N*=N∪NLoc×I,本发明经过以下步骤来降低它的规模进行切片:
对于如果满足:(ni∈Nz∧条件1∧条件2∧条件3)∨(ni∈NLoc×I∧条件4∧条件5∧条件),其意义为将主控控制流图节点集合Nz与中断处理程序的控制流图中的节点集合NLoc(nloc是被节点ni中断的节点)分别通过不同的条件,将其中的节点替换为一个只含有指令周期信息的节点,其中符号“∧”表示“且”的关系,“∨”表示“并集”的关系,其中所述条件分别是:
条件1:lni为空,即节点ni不会被中断打断;
条件2:节点ni中的变量不会影响它的依赖变量集合;
条件3:节点ni有且仅有一个后继节点。
条件4:节点ni不能影响节点nloc中的依赖全局变量集合;
条件5:其中Ien表示节点ni中所有可以使能的中断,nk不能影响节点ni中的全局依赖变量集合;
条件6:节点ni有且仅有一个后继节点。
上述过程即为中断控制流图的切片过程,其中所述条件给出过程为,通过计算中断控制流图中每个节点的依赖变量,获得依赖变量集合,根据依赖变量集合分析得出上述条件。接下来即可通过对中断控制流图切片的分析从而验证时间安全与内存安全。
本发明验证时间安全(根据中断控制流图切片分析最坏执行路径)的过程如下:
合并所有只具有周期信息的节点(标记节点):
1)将主控程序中同一个分支中的标记节点合并成一个节点;
2)将对应上诉主控程序分支中同一个中断处理程序中处于同一个分支的所有标记节点合并成一个节点。
所述最坏执行路径分析方法是将中断控制流图转换为一个整数线性规划,通过对整数线性规划的求解获取程序的最坏执行路径并计算最坏执行路径长度(周期)。所述执行路径长度的定义为:其中ci表示基础块i中的指令周期,ki表示该基础块执行的次数。最坏路径即为执行路径周期最长的一连串程序,若最坏执行路径仍满足时间安全性质要求,则可以判定目标代码时间安全。若不满足时间安全性质要求,则将路径举出,方便针对路径进行改进。
本发明验证内存安全(查找数据竞争)的过程如下:
该算法的输入为程序P的中断控制流图G*P={N*P,E*P}s,输出是所有存在数据竞争的节点冲突集合RACE。在算法的开始,首先进行初始化操作,将中断驱动程序标记is_isr设为false,可通过此变量判断算法目前执行的位置是否是在中断驱动程序中;将状态列表变量isr_state置为空,原来该变量中存储了程序的读变量,写变量;初始化访问标记InitVisited(),通过该函数将所有节点的访问标记visited设为变量false,其中访问标记的作用是判断该节点是否已被遍历;对中断控制流图的入口节点Entry*P进行入队操作EnQueue(),表示遍历是从中断控制流图的入口节点开始的。在完成初始化操作后,本发明对中断控制流图进行遍历,对于遍历的节点,本发明主要进行以下操作:
a)判断遍历节点是否为中断处理程序的入口,如果是,则将中断处理程序标记标记设为true,并将上一节点的状态列表变量压入栈中;
b)判断遍历节点是否为中断处理程序的返回节点,如果既是返回节点并且上一节点的状态列表变量为空,则将中断驱动程序标记设为false,并将上一节点的状态列表变量弹出栈,如果是返回节点但上一节点的状态列表变量不为空,则只进行将上一节点的状态列表变量弹出栈的操作,若不是中断处理程序的返回节点,则继续判断下一个节点;
c)判断中断驱动程序标记是否为真,在标记为真的节点中找出存在数据竞争的节点,若在当前节点中存在有两个或两个以上的子程序同时访问本节点中的同一个共享变量,并且访问的形式中最少有一个是写操作,则表示存在数据竞争,将此节点加入到节点冲突集合RACE中。
实施例
如图3、图4所示,图3中显示了一种主控控制流图的结构方式,包括主控节点、分支1、分支2、分支3与各节点间的有向边,图4中显示了一种中断处理控制流图的结构方式,包括中断节点、分支1、分支2、分支3与各节点间的有向边,设图4中显示的中断处理控制流图为图3中主控控制流图中断的中断处理程序,且每个节点只执行一次,则最坏路径分析过程为:
1)将主控程序中同一个分支中的标记节点合并成一个节点;
2)将对应上诉主控程序分支中同一个中断处理程序中处于同一个分支的所有标记节点合并成一个节点。
其中ci表示基础块i中的指令周期,ni表示该基础块执行的次数,如此,路径1=主控节点1+主控节点2+中断节点1+中断节点2+中断节点3+中断节点6+中断节点8主控节点6;路径2=主控节点1+主控节点2+中断节点1+中断节点2+中断节点4+中断节点7+主控节点6;路径3=主控节点1+主控节点2+中断节点1+中断节点2+中断节点5+主控节点6,当每个主控节点与中断节点的周期相同时,路径1即为最坏执行路径。
上述过程为了直观描述采用了对每个路径进行分析,实际过程中所述最坏执行路径的分析方法是将中断控制流图转换为整数线性规划,并通过对整数线性规划的求解获取程序的最坏执行路径以及最坏执行路径长度(周期)。最后将在本文最后附上本发明生成中断控制流图的方法逻辑以及检测读写冲突的方法逻辑。
以上,仅为本发明示例性的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
本发明生成控制流图的方法逻辑如下所示:
本发明检测读写冲突的方法逻辑如下所示:

Claims (10)

1.一种基于中断控制流图的中断验证方法,其特征在于,包括:
对中断驱动程序的目标代码进行反汇编操作,获取汇编代码;
根据所述汇编代码构建中断控制流图;
对所述中断控制流图切片处理;
根据所述中断控制流图切片,验证所述中断驱动程序的时间安全与内存安全。
2.根据权利要求1所述的方法,其特征在于,所述中断驱动程序包括:主控程序与中断处理程序。
3.根据权利要求2所述的方法,其特征在于,所述主控程序能够被中断处理程序中断,所述中断处理程序用于处理中断任务,具有优先级,具有低优先级的中断处理程序可以被具有更高优先级的中断处理程序中断。
4.根据权利要求1所述的方法,其特征在于,所述根据汇编代码构建中断控制流图,包括:
根据汇编代码获得中断信息;
根据所述汇编代码获得主控控制流图与中断处理控制流图。
5.根据权利要求4所述的方法,其特征在于,所述中断信息包括:节点、所述节点中的中断处理程序、所述节点中的中断处理程序的优先级。
6.根据权利要求4所述的方法,其特征在于,所述中断控制流图通过所述中断信息将所述主控控制流图与所述中断处理控制流图相结合获得。
7.根据权利要求6所述的方法,其特征在于,所述主控控制流图与所述中断处理控制流图均为有向图,用数学模型进行表示,该数学模型包括:节点集合与有向边集合。
8.根据权利要求7所述的方法,其特征在于,所述有向边集合中的有向边由一对有向节点对表示,所述有向节点对中的节点包含于所述节点集合中。
9.根据权利要求1所述的方法,其特征在于,所述验证中断驱动程序的时间安全,包括:
(1)通过所述中断控制流图切片,将中断控制流图转换为整数线性规划;
(2)通过对所述整数线性规划进行求解,获得所述目标代码的最坏执行路径;
(3)通过计算所述最坏执行路径的长度,验证中断驱动程序的时间安全。
10.根据权利要求2所述的方法,其特征在于,所述验证中断驱动程序的内存验证方法包括:
a)遍历节点,判断遍历节点是否为中断处理程序的入口,如果是,则将中断处理程序标记设为真,并将上一节点的状态列表变量压入栈中;
b)判断遍历节点是否为中断处理程序的返回节点:如果既是返回节点并且上一节点的状态列表变量为空,则将中断驱动程序标记设为假,并将上一节点的状态列表变量弹出栈;如果是返回节点但上一节点的状态列表变量不为空,则只进行将上一节点的状态列表变量弹出栈的操作;若不是中断处理程序的返回节点,则继续判断下一个节点;
c)判断中断驱动程序标记是否为真,在标记为真的节点中找出存在数据竞争的节点,若在当前节点中存在有两个或两个以上的子程序同时访问当前节点中的同一个共享变量,并且访问的形式中最少有一个是写操作,则表示存在数据竞争,将当前节点加入到冲突节点集合中。
CN201810160219.6A 2018-02-26 2018-02-26 一种基于中断控制流图的中断验证方法 Active CN108459963B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810160219.6A CN108459963B (zh) 2018-02-26 2018-02-26 一种基于中断控制流图的中断验证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810160219.6A CN108459963B (zh) 2018-02-26 2018-02-26 一种基于中断控制流图的中断验证方法

Publications (2)

Publication Number Publication Date
CN108459963A true CN108459963A (zh) 2018-08-28
CN108459963B CN108459963B (zh) 2021-04-02

Family

ID=63216478

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810160219.6A Active CN108459963B (zh) 2018-02-26 2018-02-26 一种基于中断控制流图的中断验证方法

Country Status (1)

Country Link
CN (1) CN108459963B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110175019A (zh) * 2019-06-04 2019-08-27 南京大学 一种基于中断序列图的中断驱动系统验证方法
CN112162932A (zh) * 2020-10-30 2021-01-01 中国人民解放军国防科技大学 一种基于线性规划预测的符号执行优化方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063328A (zh) * 2010-12-17 2011-05-18 北京控制工程研究所 一种用于检测中断驱动型程序数据竞争的系统
CN104090798A (zh) * 2014-07-08 2014-10-08 南京大学 动静态结合的中断驱动程序数据竞争检测方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063328A (zh) * 2010-12-17 2011-05-18 北京控制工程研究所 一种用于检测中断驱动型程序数据竞争的系统
CN104090798A (zh) * 2014-07-08 2014-10-08 南京大学 动静态结合的中断驱动程序数据竞争检测方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
左艳洁: "安全关键软件中断缺陷分析工具的设计与实现", 《中国优秀硕士学位论文全文数据库》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110175019A (zh) * 2019-06-04 2019-08-27 南京大学 一种基于中断序列图的中断驱动系统验证方法
CN110175019B (zh) * 2019-06-04 2021-11-16 南京大学 一种基于中断序列图的中断驱动系统验证方法
CN112162932A (zh) * 2020-10-30 2021-01-01 中国人民解放军国防科技大学 一种基于线性规划预测的符号执行优化方法及装置
CN112162932B (zh) * 2020-10-30 2022-07-19 中国人民解放军国防科技大学 一种基于线性规划预测的符号执行优化方法及装置

Also Published As

Publication number Publication date
CN108459963B (zh) 2021-04-02

Similar Documents

Publication Publication Date Title
US9798648B2 (en) Transitive source code violation matching and attribution
Finkbeiner et al. EAHyper: Satisfiability, implication, and equivalence checking of hyperproperties
Bouajjani et al. Verifying concurrent programs against sequential specifications
CN107844415B (zh) 一种基于插值的模型检测路径缩减方法、计算机
US10740211B2 (en) Methods and systems to tag tokens in log messages
CN104750459B (zh) 带有事务功能以及报告事务操作的日志记录电路的处理器
CN105074656B (zh) 管理并发谓词表达式的方法和装置
US10445169B2 (en) Temporal relationship extension of state machine observer
CN110648124B (zh) 在区块链中并发执行交易的方法和装置
US20150293796A1 (en) Programmable logic controller and event-driven programming method thereof
CN108459963A (zh) 一种基于中断控制流图的中断验证方法
JP2021533487A (ja) 障害保護のための並列実行および関連プロセスの比較のためのシステムおよび方法
CN103778062B (zh) 基于抽象解释的多中断程序数据访问冲突检测方法
CN102306098A (zh) 一种隐式污点传播系统及其方案
CN112817787A (zh) 中断驱动嵌入式系统数据竞争的自动检测方法
CN108469987A (zh) 一种基于中断控制流图的中断验证系统
Katz et al. Theory-aided model checking of concurrent transition systems
Wu et al. A heuristic speculative execution strategy in heterogeneous distributed environments
CN102508766A (zh) 一种航天嵌入式c语言软件运行时错误的静态分析方法
CN111694966B (zh) 面向化工领域的多层次知识图谱构建方法及系统
Li et al. Precise and efficient atomicity violation detection for interrupt-driven programs via staged path pruning
Barnat et al. On-the-fly parallel model checking algorithm that is optimal for verification of weak LTL properties
Albert et al. Actor-and task-selection strategies for pruning redundant state-exploration in testing
CN116361153A (zh) 固件代码的测试方法、装置、电子设备、存储介质
US20150142709A1 (en) Automatic learning of bayesian networks

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