互斥同步与通讯.ppt

第四章 互斥、同步与通讯 并发进程(concurrent processes) 进程互斥(mutual exclusion) 进程同步(synchronization) 进程高级通讯(communication) 4.1并发进程 4.1.1前驱图的定义 前驱图(precedence graph)是一个有向无环图,图中的每个结点表示一条语句、一个计算步骤或一个进程。结点间的有向边表示偏序或前驱关系(precedence relation)“→”,→={(pi,pj)∣ pi必须在pj启动之前完成}。 (pi,pj)∈ →可记为pi → pj,称pi是pj的前驱, pj是pi的后继。 4.1并发进程 在前驱图中没有前驱的结点称为初始结点,没有后继的结点称为终止结点。每个结点可以有一个权重(weight),它表示该结点所包含的程序量或计算时间。 前驱关系满足传递性,即若p1 → p2,p2 → p3,则必有p1 → p3。 4.1 并发进程 4.1.2 顺序程序及其特性 顺序性 内部顺序性:对于一个进程来说,它的所有指令是按顺序执行的。P1: a1,a2,a3; P2: b1,b2,b3 外部顺序性:对于多个进程来说,所有进程的活动是依次执行的。a1,a2,a3,b1,b2,b3; b1,b2,b3,a1,a2,a3 顺序程序特性: (1)顺序性: 指令逐条执行 (2)封闭性: 不受其它程序及外界因素影响 (3)可再现性: 结果与推进速度无关 4.1 并发进程 4.1.3 并发程序及其特性 并发性 内部并发性:指程序内部的并发性。例如: S1:a:=x+2; S2: b:=y+4; S3: c:=a+b; S4: d:=c-6; S5: e:=c+6; S6: f:=c-e; 经分析知道S3必须在S1和S2之后执行,S4和S5必须在S3之后执行,S6必须在S3和S5之后执行;而S1和S2可以并发执行,S4和S5可以并发执行,S4和S6可以并发执行。 4.1并发进程 外部并发性:外部并发性是指多个程序的并发性。例如P1: a1,a2,a3; P2: b1,b2,b3 执行次序可以是如下情况:a1,b1,b2,a2,a3,b3; b1,b2,a1,b3,a2,a3 并发程序特性: (1)间断性:多个程序是交叉执行的,处理器在执行一个程序的过程中有可能被中断,并转而执行另一个程序,有些交叉可能导致错误结果 (2)非封闭性:一个进程的运行环境受其他程序影响 (3)不可再现性:由于交叉的随机性,并发程序的多次执行可能对应不同的交叉,从而使得两次运行结果可能不同即不能期望从新运行的程序能够再现上次运行时产生的结果。 4.1并发进程 4.1.4程序并发执行的条件 并发是人们所期望的,但并发带来一个明显的问题就是程序执行的非封闭性,而人们却要求在非封闭性的条件下保持可再现性,因为只有可再现的结果才是正确的。 令: R(pi)={a1,a2,…am}表示程序pi在执行期间所读取的所有变量的集合,称为“读集”。 W(pi)={b1,b2,…bn}表示程序pi在执行期间所修改的所有变量的集合,称为“写集”。 Bernstein条件(1966年由Bernstein提出): 若两个程序p1、p2满足以下条件,则能够保持可再现性,可以并发执行,条件是: R(p1) ∩W(p2) ∪ R(p2) ∩W(p1) ∪ W(p1) ∩ W(p2) =Φ 4.1并发进程 并发程序的表示 并发程序常用并发语cobegin(concurrent begin)…coend(concurrent end)来表示,令S1、S2、…、Sn为n条语句,它们可以并发执行,则用并发语句表示为: cobegin S1;S2;…; Sn coend; 有时也用并行语parallelbegin(parallel begin)…parallelend(parallel end)来表示 当遇到并发或并行语句时,同时n创建个进程(线程),分别执行S1、S2、…、Sn 。当它们都结束时,并发和并行语句结束。 4.2 进程互斥(mutual exclusion) 4.2.1 共享变量与临界区 4.2.2 临界区域与进程互斥 4.2.3 进程互斥的实现 4.2.4 多处理机环境下的互斥 4.2.1 共享变量与临界区域 共享变量(shared variable)或公共变量 多个进程都需要访问的变量。 临界区域(critical region)或临界段(critical section) 访问共享变量的程序段。 4.2.1 共享变量与临界区域 临界区是于1965年首先提

文档评论(0)

1亿VIP精品文档

相关文档