CN108228410A - 一种基于Event-B的多核并发系统验证方法 - Google Patents

一种基于Event-B的多核并发系统验证方法 Download PDF

Info

Publication number
CN108228410A
CN108228410A CN201810067441.1A CN201810067441A CN108228410A CN 108228410 A CN108228410 A CN 108228410A CN 201810067441 A CN201810067441 A CN 201810067441A CN 108228410 A CN108228410 A CN 108228410A
Authority
CN
China
Prior art keywords
demand
atom
services
model
invariant
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
CN201810067441.1A
Other languages
English (en)
Other versions
CN108228410B (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.)
Beihang University
Original Assignee
Beihang 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 Beihang University filed Critical Beihang University
Priority to CN201810067441.1A priority Critical patent/CN108228410B/zh
Publication of CN108228410A publication Critical patent/CN108228410A/zh
Application granted granted Critical
Publication of CN108228410B publication Critical patent/CN108228410B/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/28Error detection; Error correction; Monitoring by checking the correct order of processing

Abstract

本发明提供一种基于Event‑B的多核并发系统验证方法,本发明根据程序的原子性定义,分析多核系统服务需求,将完整的非原子服务需求划分成多个原子需求;找出原子需求中核心的需求,进行抽象建模;通过抽象模块进行求精,精化核心原子需求的同时,不断加入其他新的原子需求,构建服务需求精化模型;多个原子需求根据在服务需求中的描述顺序,依次组合成完整的服务需求,构建完整的服务需求模型;根据预设的专用公理集,对服务需求模型构造不变式;根据不变式,验证服务需求是否存在正确性和安全性问题;若不满足不变式的一致性,确定服务需求存在安全性问题。

Description

一种基于Event-B的多核并发系统验证方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于Event-B的多核并发系统验证方法。
背景技术
如今,多核处理器已成为市场的主流。多核处理器的应用范围覆盖了嵌入式设备、多媒体计算机、个人计算机、商用服务器和高性能计算机等众多领域。多核处理器可以并行地读取程序指令,也可以并行地执行程序指令,这样就比传统的单核处理器有更快的处理速度,大大提升了计算机的处理能力。为了更好地利用这些平台的并行优势,计算机软件就需要具备更好的的并行性,以充分利用多个处理器的性能。并发程序逐渐成为软件开发的主流,但也给软件开发者带来了很大的挑战。在设计和开发并发程序的过程中,最基本的一条就是并发程序需要在多处理器中被正确的执行。无论是系统本身的设计错误(bug)还是并发程序的设计错误(bug)都会导致程序的执行出错,甚至系统崩溃。
并发程序的自动验证是一项具有挑战性的任务。因为程序的穿插执行,并发程序的状态空间可能呈指数增长,使得直接推断全局状态空间是不可行的。解决状态爆炸问题的有效方式是组合推理,其目的是将全局验证问题分解为小的局部问题。在并发程序的执行中,程序的顺序一致性也可能无法保证。这些都对系统的安全带来极大的挑战。并发软件系统的正确性及可靠性的验证已经成为现代计算机领域中极具挑战的问题。
因此,为保证多核并发系统的安全性,亟需一种有效地验证多核并发系统服务需求,及时且准确发现系统需求错误的方法。
发明内容
本发明通过提供一种基于Event-B的多核并发系统验证方法,包括:根据程序的原子性定义,分析多核系统服务需求,将完整的非原子服务需求划分成多个原子需求;找出原子需求中核心的需求,进行抽象建模;通过抽象模块进行求精,精化核心原子需求的同时,不断加入其他新的原子需求,构建服务需求精化模型;多个原子需求根据在服务需求中的描述顺序,依次组合成完整的服务需求,构建完整的服务需求模型;根据预设的专用公理集,对服务需求模型构造不变式;根据不变式,验证服务需求是否存在正确性和安全性问题;若不满足不变式的一致性,确定服务需求存在安全性问题。通过形式化方法,将多核并发系统需求使用形式化语义描述,并进行自动化验证,从而保证多核并发系统的安全性。
附图说明
图1为一示例性实施例示出的一种基于Event-B的多核并发系统验证方法的流程示意图;
图2为一示例性实施例示出的一种基于Event-B的多核并发系统需求的划分示意图;
图3为一示例性实施例示出的一种基于Event-B的多核并发系统需求的组合示意图;
图4为一示例性实施例示出的一种基于Event-B的多核并发系统验证的建模流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为一示例性实施例示出的一种基于Event-B的多核并发系统的验证方法的流程示意图,包括:
步骤101、根据程序的原子性定义,分析多核系统服务需求,将完整的非原子服务需求划分成多个原子需求。
其中,对原子需求的划分依据是根据其在服务需求中的原子性,同时将原子需求根据需求的功能范围分成自定义原子需求和服务原子需求,将服务需求之外的原子需求看作自定义原子需求,将服务需求中划分的需求看作是服务原子需求。
图2所示为一示例性实施例示出的一种基于Event-B的多核并发系统需求的划分示意图。一个完整的多核系统服务需求Service,根据划分原则,分成步骤202的n+2个原子需求;其中,原子需求Si和原子需求Sr为自定义原子需求,原子需求S1...n为系统服务中划分出的服务原子需求。
步骤102、找出原子需求中核心的需求,进行抽象建模。
其中,上述编程语言只限制在Event-B,对此本发明只限制在Event-B语言中。
其中,抽象模型没有自定义原子需求,仅对于服务需求中的核心需求进行抽象建模。
步骤103、通过抽象模块进行求精,精化核心原子需求的同时,不断加入其他新的原子需求,构建服务需求精化模型。
其中,构建的服务需求精化模型为精化原子需求和新添原子需求;精化原子需求是从上层模型通过Refines关键字精化而来,而新添原子需求是在本模型中添加新的原子需求,从而构建更加完整的服务需求模型。
图4为基于Event-B的多核并发系统验证的建模流程图,步骤102为服务完整模型中的抽象模型,抽象出服务需求中核心的原子需求S;之后步骤103对抽象模型进行精化,原子需求S1 1是对抽象模型中原子需求S的精化,使用Refines关键字,将原子需求S描述更具体化,同时将自定义原子需求加入第一个精化模型中,构建第一层精化模型;此后构建出更加精确的精化模型,添加更多的服务原子需求,从而构建完整的服务需求模型,组合成步骤4中的完整服务需求。
步骤104、多个原子需求根据在服务需求中的描述顺序,依次组合成完整的服务需求,构建完整的服务需求模型。
其中,自定义原子需求的顺序处于服务原子需求的首尾两端,服务原子需求的顺序为服务需求中的描述顺序,从而根据位置变量locx将原子需求组合成完整的服务需求。
图3为基于Event-B的多核并发系统需求的组合示意图。步骤301为自定义原子需求Si和其相应的执行位置loci,位于服务需求的起始部分,步骤305为自定义需求Sr和其相应的执行位置locr,位于服务需求的结束部分;而步骤302到步骤304为相应的服务原子需求及其对应的执行位置loc。从而组合成完整的服务需求。
步骤105、根据预设的专用公理集,对服务需求模型构造不变式。
其中,不变式根据Event-B的语法规则,定义对服务需求模型的不变式和对服务需求安全性的不变式。
步骤106、根据不变式,验证服务需求是否存在正确性和安全性问题。
其中,使用自动定理证明器、SMT求解器等,通过定义的不变式验证原子需求是否满足不变式的一致性,从而验证服务需求的正确性和安全性。
步骤107、若不满足不变式的一致性,确定服务需求存在安全性问题。
从上述实施例可知,本发明通过根据程序的原子性定义,分析多核系统服务需求,将完整的非原子服务需求划分成多个原子需求;找出原子需求中核心的需求,进行抽象建模;通过抽象模块进行求精,精化核心原子需求的同时,不断加入其他新的原子需求,构建服务需求精化模型;多个原子需求根据在服务需求中的描述顺序,依次组合成完整的服务需求,构建完整的服务需求模型;根据预设的专用公理集,对服务需求模型构造不变式;根据不变式,验证服务需求是否存在正确性和安全性问题;若不满足不变式的一致性,确定服务需求存在安全性问题。
为了更好的理解本发明的方法和装置,通过并发队列对提出的方法和装置进行建模与验证的实例分析。
本发明一实施例示出并发队列中入队列和出队列方法。
所述并发队列的主要操作是入队列和出队列,由于入队列和出队列分别在队列的两端进行操作,所以只要队列没有满或不为空,原则上来讲,入队列和出队列都可以无干扰地进行。但并发的入队列和出队列可能相互干扰。所以在并发队列中,经常会使用锁机制来控制操作的相互干扰。
在Event-B中,为了简化队列的结构,使用队列的结构为: 即队列用数组表示。其中,Head代表头结点,Tail代表尾节点,两者均指向队列的下标。为了满足队列的结构,数组队列的Head指向队列最小下标的前一个下标值,Tail指向队列的最大下标,初始化阶段将Head和Tail赋值为0。这样的简化可以很清楚的了解到,队列为空时,Head和Tail指向的是同一个下标,而队列不为空时,Tail的下标始终不小于Head。
队列可以通过入队和出队两个操作进行队列值的修改。入队列操作将Tail指针向后移动,并在队列的末尾添加一个节点,如果队列满的情况下,该节点将进入等待状态等待出队列操作释放;出队列操作将最先进入队列的值移除,Head指针向后移动,在队列为空的情况下,该操作会进入等待状态等待入队列操作释放。
针对上述队列的两个操作,进行了建模与精化。根据对并发队列的分析和模型的设计,将模型划分为2层。
其中,第一层模型Mac_0,其描述并发队列的入队列操作和出队列操作。入队列和出队列操作都采用锁机制,转换成抽象模型的enqueue和dequeue事件。所述enqueue事件正常执行的条件为新入的节点是未使用过的数值,队列长度不超过最大长度;dequeue事件正常执行的条件是确保出队列的节点为已经存在的节点,队列不为空。
第二层模型Mac_1,其引入了多核模型将并发队列具体化。入队列和出队列操作分解为相应的Event-B事件,然后进行建模,将抽象模型中的队列操作精化成完整的并发队列操作。出队列和入队列的精化模型类似,此处仅介绍入队列的精化模型,出队列不再重复介绍。
本发明将入队列操作分为6个Event-B事件,所述6个Event-B事件包括初始化事件,满队列判断事件,精化事件,唤醒事件,不唤醒事件,重置事件。
初始化事件触发对入队列的初始化,对服务参数进行初始化,并设置当前位置loc_0,同时为了不让其他方法中断其执行,设置finished_core(core)=FALSE,从而可以完整的执行入队列方法。
将条件判断转换成满队列判断事件和精化事件,并设置当前位置均为loc_1。所述成满队列判断事件对队列进行是否为满的判断,如果队列为满,则事件将跳过精化事件执行下一个事件,否则队列未满,则进行入队列操作。所述精化事件对第一层中enqueue事件精化,所述精化事件需要满足队列未满的条件才能执行,同时也将服务参数中值赋给相应变量。
不唤醒事件判断队列中是否为空,如果队列不空,则会唤醒等待的出队列操作,即isawake=TRUE,执行唤醒事件并唤醒其中一个出队列操作,否则isawake=FALSE,仅执行不唤醒事件而不唤醒等待的出队列操作。
重置事件将重置该方法的参数,释放该处理器以供其他服务的执行。
根据上述Event-B下的模型,可以得出表1中的不变式。
表1并发队列的不变式
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (7)

1.一种基于Event-B的多核并发系统验证方法,其特征在于,包括:
步骤1,根据程序的原子性定义,分析多核系统服务需求,将完整的非原子服务需求划分成多个原子需求;
步骤2,找出原子需求中核心的需求,进行抽象建模;
步骤3,通过抽象模块进行求精,精化核心原子需求的同时,不断加入其他新的原子需求,构建服务需求精化模型;
步骤4,多个原子需求根据在服务需求中的描述顺序,依次组合成完整的服务需求,构建完整的服务需求模型;
步骤5,根据预设的专用公理集,对服务需求模型构造不变式;
步骤6,根据不变式验证原子需求是否满足不变式的一致性;
步骤7,通过检查原子需求是否满足不变式的一致性,判断服务需求存在的问题。
2.根据权利要求1所述的方法,其特征在于,所述原子需求包括自定义原子需求和服务原子需求;若所述原子需求为自定义原子需求,则所述原子需求组合成完整的服务需求,包括:基于所述服务需求的初始化原子需求组成所述服务需求的开始部分,基于所述服务需求的结束原子需求组成所述服务需求的结束部分;若所述原子需求为服务原子需求,则所述原子需求为服务需求所划分的服务需求部分。
3.根据权利要求1所述的方法,其特征在于,所述构建服务需求精化模型为精化原子需求和新添原子需求;若所述原子需求为精化原子需求,所述原子需求满足所述抽象模型的原子需求;若所述原子需求为新添原子需求,所述原子需求满足所述服务需求的原子需求。
4.根据权利要求1所述的方法,其特征在于,所述不变式包括服务需求模型不变式和服务需求安全性不变式;若所述不变式为服务需求模型不变式,则基于自动定理证明器、SMT求解器,验证所述服务需求模型是否存在正确性问题;若所述不变式为服务需求安全性不变式,则基于自动定理证明器、SMT求解器验证所述服务需求安全性是否存在安全性问题。
5.根据权利要求1所述的方法,其特征在于,还包括:当确定所述服务需求存在安全性问题之后,查找并记录错误问题。
6.根据权利要求1所述的方法,其特征在于,将并发队列模型划分为2层;第一层模型,其描述并发队列的入队列操作和出队列操作,入队列和出队列操作都采用锁机制,转换成抽象模型的enqueue和dequeue事件。所述enqueue事件正常执行的条件为新入的节点是未使用过的数值,队列长度不超过最大长度;dequeue事件正常执行的条件是确保出队列的节点为已经存在的节点,队列不为空;第二层模型,其引入了多核模型将并发队列具体化,入队列和出队列操作分解为相应的Event-B事件,然后进行建模,将抽象模型中的队列操作精化成完整的并发队列操作。
7.根据权利要求6所述的方法,其特征在于,所述入队列操作分为6个所述Event-B事件,所述6个Event-B事件包括初始化事件,满队列判断事件,精化事件,唤醒事件,不唤醒事件,重置事件。
CN201810067441.1A 2018-01-24 2018-01-24 一种基于Event-B的多核并发系统验证方法 Active CN108228410B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810067441.1A CN108228410B (zh) 2018-01-24 2018-01-24 一种基于Event-B的多核并发系统验证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810067441.1A CN108228410B (zh) 2018-01-24 2018-01-24 一种基于Event-B的多核并发系统验证方法

Publications (2)

Publication Number Publication Date
CN108228410A true CN108228410A (zh) 2018-06-29
CN108228410B CN108228410B (zh) 2020-09-25

Family

ID=62668782

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810067441.1A Active CN108228410B (zh) 2018-01-24 2018-01-24 一种基于Event-B的多核并发系统验证方法

Country Status (1)

Country Link
CN (1) CN108228410B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109783380A (zh) * 2019-01-04 2019-05-21 北京航空航天大学 一种并发系统组合验证装置
CN109918049A (zh) * 2019-01-12 2019-06-21 西北工业大学 基于形式化验证的软件开发模型的验证方法
CN110968436A (zh) * 2019-10-31 2020-04-07 华东师范大学 基于Event-B方法的微内核操作系统进程间通信机制的形式化建模和验证方法
CN111338966A (zh) * 2020-03-05 2020-06-26 中国银行股份有限公司 数据源表的大数据加工检测方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150264A (zh) * 2013-01-18 2013-06-12 浪潮电子信息产业股份有限公司 一种基于扩展型Cache Coherence协议的多级一致性域仿真验证和测试方法
CN103559238A (zh) * 2013-10-25 2014-02-05 华东师范大学 一种多复用智能卡形式化建模与验证方法
CN103853559A (zh) * 2014-03-12 2014-06-11 福建工程学院 语义Web服务组合的自动验证方法及其系统
US20140288911A1 (en) * 2013-03-25 2014-09-25 Nvidia Corporation System and method for simulating integrated circuit performance on a many-core processor
CN106095654A (zh) * 2015-04-28 2016-11-09 瑞萨电子株式会社 性能验证装置、具有性能验证装置的系统以及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150264A (zh) * 2013-01-18 2013-06-12 浪潮电子信息产业股份有限公司 一种基于扩展型Cache Coherence协议的多级一致性域仿真验证和测试方法
US20140288911A1 (en) * 2013-03-25 2014-09-25 Nvidia Corporation System and method for simulating integrated circuit performance on a many-core processor
CN103559238A (zh) * 2013-10-25 2014-02-05 华东师范大学 一种多复用智能卡形式化建模与验证方法
CN103853559A (zh) * 2014-03-12 2014-06-11 福建工程学院 语义Web服务组合的自动验证方法及其系统
CN106095654A (zh) * 2015-04-28 2016-11-09 瑞萨电子株式会社 性能验证装置、具有性能验证装置的系统以及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
周育逵等: "《基于event-b的中断管理需求和涉及形式化建模与验证方法》", 《空间控制技术与应用》 *
谭彦亮: "《基于Event-B的SpaceOS2操作系统任务管理需求形式化建模与验证》", 《空间控制技术与应用》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109783380A (zh) * 2019-01-04 2019-05-21 北京航空航天大学 一种并发系统组合验证装置
CN109918049A (zh) * 2019-01-12 2019-06-21 西北工业大学 基于形式化验证的软件开发模型的验证方法
CN110968436A (zh) * 2019-10-31 2020-04-07 华东师范大学 基于Event-B方法的微内核操作系统进程间通信机制的形式化建模和验证方法
CN110968436B (zh) * 2019-10-31 2023-07-14 华东师范大学 基于Event-B方法的微内核操作系统进程间通信机制的形式化建模和验证方法
CN111338966A (zh) * 2020-03-05 2020-06-26 中国银行股份有限公司 数据源表的大数据加工检测方法及装置
CN111338966B (zh) * 2020-03-05 2023-09-19 中国银行股份有限公司 数据源表的大数据加工检测方法及装置

Also Published As

Publication number Publication date
CN108228410B (zh) 2020-09-25

Similar Documents

Publication Publication Date Title
CN108228410A (zh) 一种基于Event-B的多核并发系统验证方法
Saha et al. Apache tez: A unifying framework for modeling and building data processing applications
CN108376221B (zh) 一种基于aadl模型扩展的软件系统安全性验证与评估方法
JP5379711B2 (ja) データ構造に対し並列に実行される複数の動作を含む、実行履歴の正しさを検証するためのコンピュータ実装方法、システム及びコンピュータ・プログラム
Holzmann The SPIN model checker: Primer and reference manual
US10943041B2 (en) Electronic system level parallel simulation method with detection of conflicts of access to a shared memory
US10387605B2 (en) System and method for managing and composing verification engines
US10871918B2 (en) Writing composite objects to a data store
CN105308578B (zh) 状态转变的诊断
WO2020221097A1 (zh) 一种基于有限状态机的操作系统需求层形式化建模方法及装置
WO2021258831A1 (zh) 数据处理方法及系统
US20190340057A1 (en) Methods and systems to compound alerts in a distributed computing system
Verhoef Modeling and validating distributed embedded real-time control systems
CN103309676B (zh) 用于海洋数值模拟ROMS的Web服务封装方法以及系统
Fecher et al. UML 2.0 state machines: Complete formal semantics via core state machine
CN106933727B (zh) 处理器中断机制的验证方法及验证装置
Rochange et al. Time-predictable architectures
WO2007049284A1 (en) Memory access control
CN112988884A (zh) 大数据平台数据存储方法及装置
CN107943632A (zh) 一种实现多nvme盘配置服务器中各盘性能均衡的方法及系统
Jia et al. VeriLin: A Linearizability Checker for Large-Scale Concurrent Objects
Karau et al. Scaling Python with Ray
CN110991041B (zh) 一种基于高性能计算系统的自动化多专业协同仿真方法
Suresh et al. Synthesizing cluster management code for distributed systems
CN113791889B (zh) 一种基于多级轮询队列控制器部署学习模型的方法

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