《Principles of Model Checking》 2.2 Parallelism and Communication (并行性和通信)

在2.1中简单的顺序软硬件建模成的转换系统,然而在现实中绝大多数硬件和软件系统在本质上是不连续的,而是并行的,本节描述了几种通过转换模型为并行系统建模的几种机制。这些机制包括简单的机制,其中参与的转换系统之间不发生通信,以及更高级方案,其中消息可以同步(即通过“握手”)或**异步传输。请添加图片描述

2.2.1 Concurrency and Interleaving (并行与交错)

并行实际上是不同程序的交错执行,一个系统由一组独立的组件组成,全局变量在组件的通信中起关键作用,组件的动作与其他组件的合并称为交错,例如两个独立进程PQ:PQPQPQPQ交错执行。

​ 并发的交错表示遵循这样的思想,即存在一个调度器,该调度器根据先验未知策略联锁并发执行进程的步骤。这类表示完全从参与进程的速度中抽象出来,从而对单处理器机器或具有任意速度的多个处理器的任何可能实现进行建模
请添加图片描述
​ 上图中,α和β是两个独立动作,并发执行的独立动作α和β的效果与α和β以任意顺序连续执行时的效果相同。

​ ps:其中运算符分号 ;表示顺序执行, + 表示非确定性选择,| | |表示独立活动的并发执行

Definition 2.18. Interleaving of Transition Systems (转换系统的交错)

请添加图片描述

Example 两个独立的交通信号灯

请添加图片描述

2.2.2 Communication via Shared Variables (通过共享变量进行通信)

如下图所示,两个程序间出现共享变量。 TS(PG1 ||| PG2)出现了明显的错误,即x不可能同时拥有两个赋值(本例中的问题是动作α和β访问共享变量x,因此相互竞争)。显然,交错运算符|||可用于建模异步并发,其中子进程的行为完全相互独立,即没有任何形式的消息传递或共享变量上的争用,一旦出现共享变量就不行了。请添加图片描述

Definition 2.21. Interleaving of Program Graphs (程序图的交错)

请添加图片描述
请添加图片描述请添加图片描述
PG1 ||| PG2 = PG —> TS(PG) 与 TS(PG1 ||| PG2)是不一样的。

请添加图片描述
请添加图片描述

Example 2.24. Mutual Exclusion with Semaphores (通过信号量解决互斥)

进程P1和P2分别由程序图PG1和PG2表示,它们共享二进制信号量y。y=0表示用于访问关键部分的锁的信号量当前由其中一个进程拥有。当y=1时,信号量是自由的。程序图PG1和PG2如下图所示。请添加图片描述
TS(PG1 ||| PG2) 如下图所示.
请添加图片描述

Example 2.25. Peterson’s Mutual Exclusion Algorithm (彼得森互斥算法)

用了两个布尔变量b1,b2。 bi为true时表明进程Pi申请进入临界区。
x取值i={1,2}表明将临界区分配给进程Pi,发出该值的进程Pj谦让给Pi。
当进程Pi ,bj = false, x = i 时,可以进入临界区
请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述

请添加图片描述

2.2.3 Handshaking(握手)

在本小节中,我们考虑并发进程通过握手进行交互的机制。术语“握手”意味着想要交互的并发进程必须以同步方式进行交互。也就是说,只有当过程双方同时“握手”参与这种互动时,它们才能进行互动。如果所有参与进程都准备好执行相同的握手动作,则可以进行消息传递。

Definition 2.26. Handshaking (Synchronous Message Passing) (握手(同步消息传递))

请添加图片描述
H是握手动作集合,
请添加图片描述
当握手动作集H为空时,参与过程的所有动作都可以自主进行,即在这种特殊情况下,握手减少为交错.
请添加图片描述
操作||H定义了两个过渡系统之间的握手。握手是交换的,但通常不具有关联性。也就是说,总的来说.请添加图片描述
然而,对于所有进程同步的固定握手动作集。操作H是关联的。允许请添加图片描述
表示过渡系统TS1到TSn的并行组成,其中H⊆ Act1∩ . . . ∩ Actn是所有过渡系统动作集Acti的子集。这种形式的多路握手适用于模拟广播,广播是一种通信形式,在这种形式中,一个进程可以同时向其他几个进程传输数据。

Example 2.28. Mutual Exclusion by Means of an Arbiter (通过仲裁器解决互斥问题)

进程P1和P2之间互斥问题的另一种解决方案是建模二进制信号量,该信号量通过单独的并行进程来调节对关键部分的访问,该进程通过握手与P1和P2交互
TSArb = (TS1 ||| TS2) || Arbiter 就是下图:请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

Example 2.29 Booking System (收银台预订系统)

考虑一下超市收银台的(高度简化的)预订系统。该系统由三个过程组成:条形码阅读器BCR、实际预订程序BP和打印机。条形码阅读器读取条形码,并将刚刚扫描的产品的数据传送给预订程序。收到此类数据后,预订程序将物品的价格传输到打印机,打印机打印物品Id和收据上的价格。条形码阅读器和预订程序之间以及预订程序和打印机之间的交互是通过握手进行的。每个进程仅由两个状态组成,分别命名为0和1。

完整系统如下所示:
请添加图片描述
请添加图片描述
非确定性表示扫描条形码的同时执行操作,并将价格同步传输到打印机。请添加图片描述
请添加图片描述
请添加图片描述

Example 2.30. Railroad Crossing (铁路交叉口)

对于铁路道口,需要开发一个控制系统,该系统在接收到指示列车正在接近的信号时关闭闸门,并且仅在列车发送指示其穿过道路的信号后打开这些闸门。控制系统应满足的要求是,当列车通过道路时,闸门始终关闭。整个系统由三个组件组成:列车、闸门、和控制器:请添加图片描述
图2.15描述了这些组件从左侧(列车建模)到右侧(闸门建模)的过渡系统。为简单起见,假设所有列车从左到右以相同方向通过相关轨道段。列车过渡系统的状态具有以下直观含义:在远状态下,列车不靠近道口;在近状态下,列车正在接近道口,并且刚刚发送了通知信号;在远状态下,列车位于道口。闸门的状态有明显的解释。控制器的状态变化表示与列车(通过接近和退出动作)和闸门(通过控制器分别使闸门关闭或打开的降低和升高动作)握手。请添加图片描述
请添加图片描述
图2.16(上图)说明了整个系统的过渡系统。对该过渡系统的仔细检查表明,该系统存在设计缺陷。这可以从以下初始执行片段中看出:请添加图片描述
当火车(已经)在十字路口时,大门即将关闭。全局状态中的不确定性 <near , 1, up>表示并发:列车接近十字路口,而大门正在关闭。事实上,当且仅当关闭闸门所需的时间不超过列车发出信号“我正在接近”后到达十字路口所需的时间时,设计的基本概念才是正确的。这种实时约束不能用目前介绍的概念来表述。并行系统的交错表示是完全时间抽象的。在第9章中,将介绍一些概念和技术来指定和验证这些实时方面。请添加图片描述
请添加图片描述

2.2.4 Channel Systems (信道系统)

​ 本节介绍通道系统,即进程通过所谓的通道进行通信的并行系统,即可能包含消息的先进先出缓冲区。我们考虑封闭的通道系统。也就是说,进程可以与系统中的其他进程(通过通道)通信,但不能与系统外的进程通信。信道系统通常用于描述通信协议,并构成Promela(自旋模型检测器的输入语言)的基础。

​ 这些程序图的转换要么像以前一样是常见的条件转换(标有防护和动作),要么是具有各自直观含义的通信动作之一:

  • c!v 沿通道c传输v值
  • c?x 通过通道c接收消息并将其分配给变量x请添加图片描述
    其中,Chan是有限通道集合,通道c属于Chan。通道c具有(有限或无限)容量,指示其可以存储的最大消息数,以及指定可以通过c传输的消息类型的类型(或域),即cap©和dom©。

​ 通道容量定义了相应缓冲区的大小,即缓冲区中可存储的尚未读取的消息数。**当cap(c)∈ IN,c是具有有限容量的信道;cap(c)=∞ 表示c具有无限容量。注意,允许特殊情况上限(c)=0。在这种情况下,通道c没有缓冲器。**经由这样的信道c的通信对应于握手(同时传输和接收,即同步消息传递)加上一些数据的交换。当cap(c)>0时,消息的传输和接收之间存在“延迟”,即,相同消息的发送和读取在不同时刻发生。这称为异步消息传递。从非零容量的通道发送和读取消息永远不会同时出现。因此,通过信道系统,可以对同步和异步消息传递进行建模。请添加图片描述

Definition 2.31. Channel System (信道系统)请添加图片描述

过渡关系→ 通过(Var,Chan)上的程序图由两种类型的条件转换组成。请添加图片描述
信道系统通常用于建模通信协议。最基本和最广为人知的协议之一是交替位协议。

Example 2.32. Alternating Bit Protocol (ABP)交替比特协议

请添加图片描述
考虑一个基本上由发送器S和接收器R组成的系统,它们通过信道c和d相互通信,见图2.17。假设两个信道都有无限缓冲区,即cap(c)=cap(d)=∞. 信道c是不可靠的,因为当数据从发送方S传输到信道c时可能会丢失。一旦消息存储在通道c的缓冲区中,它们既不会损坏也不会丢失。假设信道d是完美的。目标是设计一种通信协议,确保S向R发送任何不同的传输数据。为了确保这一点,在可能出现消息丢失的情况下,发送方S采用重新传输。消息一个接一个地传输,即,一旦前一个消息的传输成功,S开始发送新消息。这是一个简单的流量控制原理,称为“发送和等待”。请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

我们从S和R的实际活动中抽象出来,转而专注于系统通信结构的简化表示。S发送连续消息m0、m1…。连同控制位b0、b1…。通过信道c到R。因此,传输的消息是成对的:请添加图片描述

收到<m0,0> R须立马送回ack :x=0;

请添加图片描述
请添加图片描述
因此,控制比特b(也称为交替比特)用于区分m的重传与后续(和先前)消息的传输。由于新数据的传输仅在正确接收最后一个数据(且已确认)时启动,因此单位足以实现此目的,不需要序列号等概念。

​ S的超时机制由定时器过程建模。S在发送消息时激活该计时器(沿c),并在收到ack时停止计时器。当引发超时时,计时器向S发出信号,指示应开始重新传输。(注意,由于这种建模方式,可能会发生所谓的过早超时,即,当ack仍在前往S的途中时,可能会发生超时。)通过握手,即通过容量为0的信道,对计时器和S之间的通信进行建模。请添加图片描述

Definition 2.33. Transition System Semantics of a Channel System (通道系统的转换系统语义 )请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

2.2.5 NanoPromela — Spin 软件的输入语言

​ 前几节讨论的概念(程序图、并行合成、通道系统)为反应性系统建模提供了数学基础。然而,为了构建用于验证反应式系统的自动化工具,我们的目标是使用更简单的形式来指定要分析的系统的行为。一方面,此类规范语言应该简单易懂,以便非专家也能够使用它们。另一方面,它们应该具有足够的表达能力,以形式化过程及其交互的逐步行为。此外,它们必须配备形式语义,以明确的方式呈现语言命令的直观含义。在我们的例子中,**形式语义的目的是为规范语言的每个程序分配一个转换系统,该系统可以作为自动分析的基础,**例如,根据时序逻辑规范进行模拟或模型检查

**nanoPromela的语法:**我们现在解释Promela片段(称为nanoPromela)的语法和语义,该片段集中于Promela的基本元素,但从变量声明等细节中进行抽象,并跳过几个“高级”概念,如抽象数据类型(数组、列表等)或动态进程创建。nanoPromela程序由表示过程P1、…、的逐步行为的语句组成,Pn以及程序变量初始值的布尔条件。我们将nanoPromela程序编写为:
请添加图片描述
形式化过程Pi的逐步行为的语句的主要成分是原子命令skip、变量赋值x:=expr、通信动作c?x(从通道c读取变量x的值)和c!expr(通过通道c发送表达式的当前值)、条件命令(if-then-else)和(while)循环。与标准的if-then-else构造或while loops不同,nanoPromela支持非确定性选择,并允许在条件和重复命令中指定有限数量的保护命令。请添加图片描述
请添加图片描述
请添加图片描述

Example 2.36. Peterson’s Mutual Exclusion Algorithm
Example 2.37. Vending Machine

请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值