词条 | Bernstein条件 |
释义 | Bernstein条件就是讲两个过程如果有数据冲突(Data hazard),那么就没法并行执行。比如过程A生成数据d,而过程B需要输入数据d,那么B就需要A的输入,他们就没法并行执行(写后读问题,RAW)。如果二者会影响后续过程需要的数据,尤其是该数据和他们执行的顺序很有关系,那么他们同样也不能并行执行(写后写问题, WAW)。 例如:p1:y=z+y;p2: z=x+z,假设x=1,y=2,z=3 如果先运行p1,则最后的结果是x=1,y=5,z=4;如果先运行p2,则x=1,y=6,z=4。两次的结果不一样,即程序不可再现,所以p1,p2不能并行的执行。 借用上面的例子,p1:y=z+y,那么p1的读集为 R(p1)={z,y},p1的写集为 W(p1)={y}。 对进程S1、S2,Bernstein条件要求R(S1)∩W(S2)∪W(S1)∩R(S2)∪W(S1)∩W(S2)={}。 则,Bernstein条件的一般形式为: 定义R(pi)={a1,a2,a3,...an}; W(pi)={b1,b2,b3,...bn}; 在以上两个集合元素间满足以下3条关系: (1) R(p1) ∩ W(p2) = ∅ (2) R(p2) ∩ W(p1) = ∅ (3) W(p1) ∩ W(p2) = ∅ 就称p1,p2这两个语句(或程序段)满足Bernstein条件。 需要注意的是,虽然满足了Bernstein条件后就可以保证程序运行的结果可再现性,但是在实际程序设计中,Bernstein条件是无法实现的。所以,解决多道程序并发中的资源互斥问题,不是通过程序本身来检验,而是通过另一种操作系统层面的设计思路来保证,这就是进程。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。