写给学生看的系统分析与验证笔记(八)——线性时间属性之公平性


公平性(Fairness)

系统的一个重要方面是公平性,公平性排除了被认为是不现实(unrealistic)的无限行为,并且这一步通常是建立活性属性所必需的。

我们通过在并发系统中经常遇到的一个问题来说明公平的概念:

现有一个并发系统N,有进程 P 1 , P 2 . . . P N P_{1},P_{2}...P_{N} P1,P2...PN,它们在有需要时就会请求服务,但是现在只有一个服务进程名叫Server会为这些进程提供服务,现在Server采用如下策略:从P1开始检查,如果P1请求了服务,那么就为P1提供服务,如果P1没有请求,那么就检查下一个进程P2,直到检查完毕,然后从头开始检查。我们可以想见,如果P1一直请求服务,那么Server会为P1无限次提供服务,而剩下的进程都会陷入无限等待的过程,这对除P1外的进程来说是是不公平(unfair)的,这种行为就属于不现实的无限行为。

为了获得由TS建模的并行系统的行为的真实描述,我们需要一种另一种形式的LT属性,来解决TS中不确定性决策的问题。

于是,为了排除上述不现实的行为,我们需要添加公平性约束(Fairness Constraints),而公平的执行或者轨迹(execute or trace)就是满足了某些公平性约束。


基于动作的公平性约束

如何表述这类公平性约束?这里采用基于动作(action)的观点(还有基于状态的公平,不在这里讨论)

对于一个没有终止状态的 T S = ( S , A c t , → , S 0 , A P , L ) TS=(S, Act,→,S_{0}, AP, L) TS=(S,Act,,S0,AP,L),A⊆ Act,TS上的无限执行片段 ρ = s 0 → α 0 s 1 → α 1 . . . ρ =s_{0}\xrightarrow{α_{0}} s_{1}\xrightarrow{α_{1}}... ρ=s0α0 s1α1 ...,公平约束具有三风格:

  • 如果ρ是unconditionally A-fair,那么无论何时
    if  ∃ ∞ j ≥ 0 , a j ∈ A . \text{if }\overset{∞}\exist j\ge 0,a_{j}∈A. if j0,ajA.

无条件A-fair的含义是,无论在什么情况下,A中的动作总能无限经常次执行。

  • 如果ρ是strongly A-fair,那么无论何时
    ( ∃ ∞ j . A c t ( s j ∩ A ≠ ∅ ) ⇒ ( if  ∃ ∞ j ≥ 0 , a j ∈ A ) (\overset{∞}\exist j.Act(s_{j}\cap A\ne ∅)\Rightarrow(\text{if }\overset{∞}\exist j\ge 0,a_{j}∈A) (j.Act(sjA=)(if j0,ajA)

strongly A-fair的含义是,存在无限经常次A为enabled时,A中动作将会无限经常次执行。

  • 如果ρ是weakly A-fair,那么无论何时
    ( ∀ ∞ j . A c t ( s j ∩ A ≠ ∅ ) ⇒ ( if  ∃ ∞ j ≥ 0 , a j ∈ A ) (\overset{∞}\forall j.Act(s_{j}\cap A\ne ∅)\Rightarrow(\text{if }\overset{∞}\exist j\ge 0,a_{j}∈A) (j.Act(sjA=)(if j0,ajA)

weakly A-fair的含义是,从某个时刻起,A将会为enabled,从而A中动作将会无限经常次执行。

在这里插入图片描述
定义什么的太难懂了,来点直白点的解释,无条件就是任何时候都是无限经常次执行的

strong和weak这俩引入了enabled这个概念,strongly A-fair要求在enable的片段中动作能够无限经常次执行,而在not enabled的片段中没有规定

weakly A-fair则是,不管之前如何,如果在某一个时间点之后,动作持续一直enabled,那么在这片段中动作要求能够无限经常次执行

从上面的定义中我们可以容易得到
unconditionally A-fair ⇒ strongly A-fair ⇒ weakly A-fair \text{unconditionally A-fair}\Rightarrow \text{strongly A-fair}\Rightarrow \text{weakly A-fair} unconditionally A-fairstrongly A-fairweakly A-fair

在这里插入图片描述

例题

在这里插入图片描述
看看这张两个进程互斥进入临界区的图

设A={enter1}

对于上面这条红色路径来说,它是哪种A-fair?

unconditionally A-fair。因为动作只有enter1,我们只需考虑这一个动作,enter1就是进程1进入临界区,我们看到红色路径中无限经常次执行enter1,没有任何条件(当然你也可以说这是strongly A-fair和weakly A-fair,因为这几个是包含关系)

设A={enter2}

对于上面这条红色路径来说,它是哪种A-fair?

weakly A-fair。首先它肯定不是无条件的,其次在考虑一下strong,观察状态<w1.w2.y=1>这个时候,进程2属于enabled状态,因为它能够执行该动作,但是它执行(即进入临界区)了吗?没有,所以在enabled的时候它没有无限经常次执行动作,所以它不是strong,最后是weak,它压根就没有在某一个时间点后能够持续的enabled,因为进入<c1,w2,y=0>这个状态对进程2来说就是not enabled,所以它属于weakly A-fair


在这里插入图片描述
设A={enter1}

对于上面这条红色路径来说,它是哪种A-fair?

strongly A-fair。可以看到,这个执行序列是进程2一直在进入临界区,进程1一直在等待,所以肯定不是无条件的,但是满足strongly的定义,因为strongly要求在endabled时能够无限经常次进入,进程1根本现在没有enabled的状态,所以是strongly A-fair,当然也是weakly。

设A={enter1,enter2}

对于上面这条红色路径来说,它是哪种A-fair?

unconditionally A-fair

让我们来看看定义
if  ∃ ∞ j ≥ 0 , a j ∈ A . \text{if }\overset{∞}\exist j\ge 0,a_{j}∈A. if j0,ajA.

只要存在一个动作满足无限经常次执行就可以了,所以enter2在无限经常次执行,它就是无条件的。

公平性假设(fairness assumption)

有时候我们定义公平性可能要用到不止一种风格的公平性约束,一般要考虑到三种风格,这就有了公平性假设这个概念

我们定义公平性假设为一个三元组
F = ( F u c o n d , F s t r o n g , F w e a k ) F=(F_{ucond},F_{strong},F_{weak}) F=(Fucond,Fstrong,Fweak)

F u c o n d , F s t r o n g , F w e a k ⊆ 2 A c t F_{ucond},F_{strong},F_{weak}\subseteq 2^{Act} Fucond,Fstrong,Fweak2Act,这表示这三个F是集合的集合,类似于 F u c o n d = { A 1 , A 2 } , A 1 = { e n t e r 1 } , A 2 = { e n t e r 1 , e n t e r 2 } F_{ucond}=\{A_{1},A_{2}\},A_{1}=\{enter1\},A_{2}=\{enter1,enter2\} Fucond={A1,A2},A1={enter1},A2={enter1,enter2}

如果 ρ ρ ρ被称为F-fair,那么:

  • 对所有 A ∈ F u c o n d A∈F_{ucond} AFucond,ρ是unconditionally A-fair
  • 对所有 A ∈ F s t r o n g A∈F_{strong} AFstrong,ρ是strongly A-fair
  • 对所有 A ∈ F w e a k A∈F_{weak} AFweak,ρ是weakly A-fair

公平轨迹定义为:
F a i r T r a c e s F ( T S ) = { t r a c e ( ρ ) : ρ 是 T S 上 的 F − f a i r 执 行 } FairTraces_{F}(TS)=\{trace(ρ):ρ是TS上的F-fair执行\} FairTracesF(TS)={trace(ρ):ρTSFfair}

例:

考虑到两进程互斥模型有如下的公平性需求:

each waiting process eventually enters its critical section
每个等待的进程最终会进入临界区

首先我们考虑不加约束的情况下,它能够满足嘛?显然是不行的

现在我们为其加入公平性假设
F s t r o n g = F u c o n d = ∅ F w e a k = { { e n t e r 1 } , { e n t e r 2 } } F_{strong}=F_{ucond}=∅ \\ F_{weak}=\{\{enter1\},\{enter2\}\} Fstrong=Fucond=Fweak={{enter1},{enter2}}

加入了这个约束之后,能够满足公平性了嘛?

还是不行,这个在上面的例子中有讲到,搬出这张图

在这里插入图片描述

这个路径是满足weakly的公平性约束的,但是进程2还是不能进入临界区

接着再考虑一下strongly的约束,现在约束改为:
F w e a k = F u c o n d = ∅ F s t r o n g = { { e n t e r 1 } , { e n t e r 2 } } F_{weak}=F_{ucond}=∅ \\ F_{strong}=\{\{enter1\},\{enter2\}\} Fweak=Fucond=Fstrong={{enter1},{enter2}}

现在,嗯,将约束放到strong下后,我们可以发现现在是满足这个公平性的了。

好,回顾一下刚刚那个过程,我们从构建公平性假设的时候,先看看需不需要加入公平性约束,如果需要,应该从weakly A-fair开始,因为我们要做的是排除那些不符合要求的路径,要做到排除的路径尽可能的少,又要满足相应的要求,所以先从一般性情况出发,先考虑weakly再考虑strongly最后再考虑unconditionally。

现在我们有新的公平性需求了,在原有的基础上加入每个进程无限经常次进入临界区的要求

each waiting process eventually enters its critical section
每个等待的进程最终会进入临界区
each process enter to critical section infinitely often
每个进程将会无限经常次进入临界区

来看看这个现在的情况满不满足要求呢?NO

同样回到上面的例子
在这里插入图片描述

这种情况虽然满足strong的约束,但是不符合公平性要求

现在仍然从weakly开始考虑,将约束改为

F u c o n d = ∅ F w e a k = { { r e q 1 } , { r e q 2 } } F s t r o n g = { { e n t e r 1 } , { e n t e r 2 } } F_{ucond}=∅ \\ F_{weak}=\{\{req1\}, \{req2\}\} \\ F_{strong}=\{\{enter1\},\{enter2\}\} Fucond=Fweak={{req1},{req2}}Fstrong={{enter1},{enter2}}

req表示进程进入等待区的过程,为什么加入了这个weak约束,它就能满足无限次进入临界区的公平性了呢?也就是说,我们加了这个约束之后,它排除了如上图的循环,如何排除的?

我们以上图为例仔细看看, < n 1. n 2 , y = 1 > → < n 1 , w 2 , y = 1 > → < n 1. c 2. y = 0 > <n1.n2,y=1>\rightarrow<n1,w2,y=1>\rightarrow<n1.c2.y=0> <n1.n2,y=1><n1,w2,y=1><n1.c2.y=0>,在这三个状态时,我们都可以走图中左边的那条路吧,而这三个状态走另一条要执行的动作均为req1,也就是说进程1一直处于一种enabled状态,但却又没有执行req1,这就违反了了weakly约束在一个持续的enabled序列中要求无限经常次执行动作req1的约束,所以这条路就这么被排除了。

所以,这样的一个公平性假设满足了我们提出的公平性要求。

公平性的满足

回想一下,如果一个TS满足线性时间属性P,那么可以表示为
T S ⊨ P  当且仅当 T r a c e s ( T S ) ⊆ P TS \vDash P\text{ 当且仅当}Traces(TS) ⊆ P TSP 当且仅当Traces(TS)P

类似的,我们将TS在公平假设F下,满足线性时间属性P表示为
T S ⊨ F P 当 且 仅 当 F a i r T r a c e s F ( T S ) ⊆ P TS \vDash_{F}P当且仅当FairTraces_{F}(TS)⊆P TSFPFairTracesF(TS)P

可实现的公平性与安全性

如果公平性假设F对一个TS来说是可实现的(realizable),那么对于TS上的每一个可达状态s,均存在从s开始的F-fair路径

可实现的公平性与安全性之间的关系有这么一个结论:

可实现的公平性假设和安全性是不相关的

想象一下之前那个线性时间属性的分类图,可实现的公平性和其他部分(非安全性)是相关的,但是和安全性是不相关的。

这里的不相关可能有些难理解,假如我们有一个TS,它满足一个安全性,现在加入一个公平性假设F,这个TS系统在这个公平性假设F的约束下,仍然满足安全性

也就是说
T S ⊨ P s a f e 当 且 仅 当 T S ⊨ F P s a f e TS\vDash P_{safe} 当且仅当 TS\vDash_{F} P_{safe} TSPsafeTSFPsafe

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值