《互斥同步与通信》PPT课件.ppt
《《互斥同步与通信》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《互斥同步与通信》PPT课件.ppt(116页珍藏版)》请在三一办公上搜索。
1、1,第四章 互斥、同步与通讯,并发进程(concurrent processes)进程互斥(mutual exclusion)进程同步(synchronization)进程高级通讯(communication),2,4.1 并发进程,4.1.1 顺序程序及其特性程序的顺序性-内部顺序性:P1:a1,a2,a3;P2:b1,b2,b3-外部顺序性:情形1:a1,a2,a3,b1,b2,b3;情形2:b1,b2,b3,a1,a2,a3顺序程序设计的特性:-顺序性:处理机严格按指令依次执行;-封闭型:执行过程独占资源;-可再现性:程序执行的结果与执行速度无关。,多个进程依次执行,进程内所有指令按顺序
2、执行,3,4.1 并发进程,4.1.2 并发程序及其特性程序的并发性内部并发性:P2:b1,b2,b3;P2:b1,b3,b2外部并发性:情形1:a1,b1,b2,a2,a3,b3;情形2:b1,b2,a1,b3,a2,a3并发程序的特性(带来好处也引发问题):-交叉性:不同的交叉可能导致不同的结果;-非封闭性:进程的运行环境可被其他进程所改变;-不可再现性:不可再现上次运行的结果。,指令可以按顺序也可以不按顺序执行,进程交叉执行,并发特性将引发一系列问题如互斥、死锁、饿死等,4,4.1.2 与时间有关的错误,例:图书借阅系统(x:某种书册数,设当前x=1.)终端1(进程p1):终端2(进程p
3、2):do do 等待借书者;等待借书者;IF(x=1)IF(x=1)x=x-1;x=x-1;借书 借书 Else 无书 Else 无书 while(1)while(1),1,2,3,4,5,4.1.2 与时间有关的错误(Cont.),错误原因之1:进程执行交叉(进程推进速度不同);错误原因之2:涉及公共变量(x)。Remarks:某些交叉导致结果不正确;必须去掉导致不正确结果的交叉。,6,4.2 进程互斥(mutual exclusion),进程间发生的一种间接性相互作用。4.2.1 共享变量与临界区4.2.2 临界区域与进程互斥4.2.3 进程互斥的实现4.2.4 多处理机环境下的互斥,7
4、,4.2.1 共享变量与临界区域,共享变量(shared variable)多个进程都需要访问的变量。临界区(critical region)访问共享变量的程序段。,一组共享变量,CR1,CR2,CRn,.,程序段1,程序段2,程序段n,8,共享变量与临界区表示,共享变量:shared 临界区域:region do 语句例子:shared x1,x2;shared y1,y2;region x1,x2 do region y1,y2 do,临界区可以嵌套,9,4.2.2 临界区域与进程互斥,定义:两个或两个以上进程不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,这种现象
5、称为进程互斥。二层涵义:(1)不容许多个进程同时进入关于同一组共享变量的相同的临界区域;(2)不容许多个进程同时进入关于同一组共享变量的不同的临界区域。Remarks:互斥是相对于公共变量而言的。,10,嵌套临界区域,shared x;shared y;region x do region y do.region y do region x do.,临界区可以嵌套:,已进入临界区域可能引发死锁!,11,4.2.3 进程互斥的实现,Framework,Repeat critical section remainder sectionUntil false,entry section,exit s
6、ection,12,4.2.3 进程互斥的实现,实现临界区管理的三个原则:正确性原则:任意时刻至多只能有一个进程处于同一组共享变量的临界区域中;公平性原则:一个请求进入临界区的进程应当在有限等待时间内获得进入临界区的机会;进展性原则:当临界区空闲时,竞争进入临界区的多个进程在有限的时间内确定下一个进入临界区的进程。临界区调度原则:!临界区空闲,想进入的应能进入;!临界区不空闲,进程应等待;!进程离开临界区时,应能唤醒等待进入的进程。,13,4.2.3.1 进程互斥的软件实现,完全用程序实现,不需特殊硬件指令支持。可用于单CPU和多CPU环境中。有忙式等待问题。,Busy waiting“运行”
7、或“就绪”,14,Lamport面包店算法,算法思想:设置一个发号者,按0,1,2,发号。想进入临界区的进程抓号,抓到号之后按由小到大的次序依次进入。Problem:两个进程可能抓到相同的号。Why?为保证抓到不同的号,需要互斥机制。Resolution:若抓到相同的号,按进程编号依次进入。Definition:(a,b)(c,d)if(ac)or(a=c and bd),15,Lamport面包店算法,int choosing n;表示进程是否在抓号int number n;记录进程所抓到的号码Pi 进入:do choosingi=1;numberi=maxnumber0,numbern-1
8、+1;choosingi=0;for(j=0;j0),正在抓号,抓到号码,抓号完毕,比较号码决定谁进入,忙等待,16,Lamport面包店算法(Cont.),临界区(CS)其余部分while(1);变量choosing的作用:P1:抓到1;P2:抓到1;正确次序:P1,P2,P3P3:抓到2;,可能按P2,P3,P1次序进入!,numberi=0;,进入临界区,出临界区,号码清零,17,Eisenberg/Mcguire算法(令牌法),enum flag n;(取值:idle,want_in,in_cs);int turn;(取值:0.n-1,初始任意),flagi=idle:进程Pi不想进入
9、临界区flagi=want_in:进程Pi想进入临界区flagi=in_cs:进程Pi想进入或已进入临界区,18,Eisenberg/Mcguire算法,Pi进入:Do do flagi=want_in;我要进入 j=turn;取令牌 While(j!=i)令牌是我的?If(flagj!=idle)j=turn;不是,有令牌的要进?Else j=(j+1)%n;有令牌的不进,看下一个 flagi=in_cs;j=i令牌轮到我,设置标志表示要进 j=0;While(jn)确实没有,进临界区,忙等待,19,Eisenberg/Mcguire算法,Pi离开:从临界区离开 j=(turn+1)%n;向
10、下传令牌 While(flagj=idle)j=(j+1)%n;turn=j;flagi=idle;清自己的标示为空 其余部分while(1);,CS,20,4.2.3.2 进程互斥的硬件实现,1.硬件提供“测试并建立”指令 int test_and_set(int,一条指令,21,进程互斥的硬件实现,2.硬件提供“交换”指令(swap)void swap(int,一条指令,22,进程互斥的硬件实现,Remarks:(1)test_and_set指令和swap指令是原子的,不可中断的。(2)test_and_set实际上是:将内存中一个单元的内容取出,再送一个新值。(3)swap实际上是:交换
11、内存两个单元的内容。,23,进程互斥的硬件实现,3.硬件提供“开关中断”指令 关中断 临界区(Critical Region)开中断Remarks:(1)开关中断只在单CPU系统中有效;(why?)(2)影响并发性。,24,4.2.4 多处理机环境下互斥,内存,单元 1000初值:0,CPU1,CPU2,Bus,1.Read 0,3.Write 1,2.Read 0,4.Write 1,CPU1、CPU2对单元1000同时读,同时写,25,多处理机环境下互斥,TS指令,Swap指令:硬件支持“锁总线”功能,保证指令执行的原子性。bus request protocol(总线请求协议):使用前:
12、锁定总线 使用后:开放总线,26,多处理机环境下互斥,Do b=1;while(b)lock(bus);b=test_and_set(,CR,27,4.3 进程同步,4.3.1 进程同步的概念例:司机-售票员问题 司机活动:售票员活动:p1:do p2:do 启动车辆 关车门 正常行驶 售 票 到站停车 开车门 while(1);while(1);,28,4.3.1 进程同步的概念,定义:一组进程,为协调其推进速度,在某些关键点处需要相互等待与相互唤醒,进程之间这种相互制约的关系称为进程同步。,P1:,P2:,synchronize,后,先,29,4.3.1 进程同步的概念,定义:一组进程,如
13、果它们单独不能正常进行,但并发可以正常进行,称这种现象为进程的合作(cooperation)。参与合作的进程称为合作进程(cooperating process)如:司机与售票员是合作进程。,30,4.3.2 进程同步机制,定义:用于实现进程同步的工具称为同步机制(synchronization mechanism)同步机制要求:描述能力够用:能描述各种同步问题;可实现;高效;使用方便.,31,典型同步机制,信号灯与PV操作(semaphore and PV operations)管程(monitor)会合(rendezvous)条件临界区(conditional critical regio
14、n)路径表达式(path expression)事件(traditional UNIX),32,4.3.3 信号灯与PV操作,1965.4.3.3.1 信号灯与PV操作的定义 typedef semaphore struct int value;pointer_to_ PCB queue;信号灯变量 semaphore s;Remarks:(1)信号量是一个预定义的数据类型,(2)信号量s可根据要求定义。,33,信号灯变量,S.valueS.queue,信号灯变量和进程队列:,FIFO,34,P操作原语,P操作原语:void P(semaphore*s)s-value-;if(s-valueq
15、ueue);asleep(s-queue):(1)执行此操作进程的PCB入s-queue尾(状态改为等待);(2)转处理机调度程序。,原语:一段不可间断执行的程序,35,V操作原语,V操作原语:void V(semaphore*s)s-value+;if(s-valuequeue);wakeup(s-queue)S-queue链头PCB出等待队列,进入就绪队列(状态改为就绪)。,36,规定和结论,对于信号灯变量的规定:必须置一次初值,只能置一次初值,初值=0;只能执行P操作和V操作,所有其它操作非法。几个有用的结论:当s-value=0时,s-queue为空;当s-valuevalue|为队列
16、s-queue的长度;当s-value初=1时,可以实现进程互斥;当s-value初=0时,可以实现进程同步;当s-value初=正整数,可以用来管理同类资源。,37,用信号灯实现进程同步,一般形式:Semaphore s;(initial value 0),P(S)后动作,先动作 V(S),P1:,P2:,38,用信号灯实现进程同步,例子:司机-售票员问题:semaphore s1,s2;(initial value 0)司机活动:售票员活动:Repeat Repeat P(S1)关车门 启动车辆 V(S1)正常行驶 售 票 到站停车 P(S2)V(S2)开车门 Until false Un
17、til false,39,例1.生产者/消费者问题,0 1 k-1,箱子,容量k,缓冲区 B:Array0.k-1Of item,生产者,消费者,生产物品放入B中,B中取物品消费之,40,环形缓冲区,1,0,K-1,in,(in+1)%k,out,(out+1)%k,41,问题分析,生产者活动:消费者活动:do do 加工一件物品;箱中取一物品;物品放入箱中;消耗这件物品;while(1);while(1);,资源:箱子(同种组合)资源:物品(同种组合)Semaphore S1;semaphore S2;S1.value=k;S2.value=0;放前:P(S1)取前:P(S2)放后:V(S2
18、)取后:V(S1),42,同步,生产者活动:消费者活动:Repeat Repeat 加工一件物品 P(S2)P(S1)箱中取一物品 物品放入箱中 V(S1)V(S2)消耗这件物品 Until false Until false对B(缓冲区)和in,out(指针)的互斥:semaphore mutex;(mutex.value=1),43,互斥,生产者活动:消费者活动:Repeat Repeat 加工一件物品 P(S2)P(S1)P(mutex)P(mutex)箱中取一物品 物品放入箱中 V(mutex)V(mutex)V(S1)V(S2)消耗这件物品 Until false Until fal
19、se,44,程序清单,Program producers_consumers;itemType bufferk;semaphore S1=k;semaphore S2=0;int in=0;int out=0;semaphore mutex=1;,void producer()while(1)produceItem(V(S2),void consumer()itemType temp;while(1)P(s2);P(mutex);temp=bufferout;out=(out+1)%k;V(mutex);V(S1);,45,程序(续前),Fork(producer,0);fork(produc
20、er,m-1);Fork(consumer,0);fork(consumer,n-1);,46,例2.读者/写者问题,P.T.Courtois 1971Communication of the ACM,Vol.14,667-669.ACM:Association for Computing Machinery解法1:写者可能饿死(允许写者饿死)解法2:写者优先(写者优先于读者),生产者/消费者问题:多个进程协作,各有各的箱子;读者/写者问题:多个进程协作,共享同一箱子。,47,例2.读者/写者问题,问题描述:一组公共数据DB R1 Rm W1.Wn要求:(1)R-R可以同时(2)R-W不可同时
21、(3)W-W不可同时,accessing,48,正确解法(可能产生写者饥饿),Int readCount=0;semaphore r_w_w=1;semaphore mutex=1;Reader()while(1)P(,读者加计数,互斥,有写者,读者等待于此信号灯多个读者不互斥,读者减计数,互斥,若无读者,唤醒等待的写者,只有一个读者进入计数其他要进入的读者等待,49,程序续前,Writer()While(1)P(,写者操作临界区域,如有读者,写者等待于此信号灯如已有写者,其他写者等待于此,写结束,唤醒其他写者或读者,50,分析:,问题:读者源源不断,read_count不归0,写者会被饿死。
22、策略:一旦有写者等待,新到达读者等待,正在读的读者都结束后,写者进入。,51,4.3.4 条件临界区Conditional Critical Region,背景PV操作低级,容易用错条件临界区形式region r when b do sR:共享变量;b:布尔表达式;s:语句进入条件临界区执行S的条件没有其它进程处于与r相关的条件临界区中进入s时b为真(true),忘记P不能实现互斥忘记V可能导致死锁,52,条件临界区,实现互斥region v when true do sCCR与PV操作的等价性(证明从略)用CCR可以实现PV操作用PV操作可以实现CCR缺点:效率低可能产生忙等待,53,4.3
23、.5 管程(Monitor),PV操作:分散式同步机制:共享变量操作,PV操作,分散在整个系统中或各个进程中。缺点:可读性差;正确性不易保证;不易修改。优点:高效,灵活。,管程:集中式同步工具:共享变量及其所有相关操作集中在一个摸块中。优点:可读性好;正确性易于保证;易于修改。缺点:不甚灵活,效率略低。,54,4.3.5.1 管程的提出,70年代初,By,C.A.R.Hoare,P.B.Hansen.背景:结构化程序设计(Structured programming)基于管程作为同步机制的高级语言Concurrent Pascal(Hansen)Modula(With)MesaMod*Conc
24、urrent EuclidXCY,55,管程的提出(Cont.),构造操作系统的PCM方法P:processC:classM:monitorExample systemsolo,56,4.3.5.2 管程形式(pascal语言描述),Type monitor_name=MONITOR 共享变量说明 define 本管程内定义,本管程外可调用的过程(函数)名表;use 本管程外定义,本管程内可调用的过程(函数)名表;Procedure 过程名(形参表);过程局部变量说明 Begin 语句序列 End;,57,管程形式(Cont.),Function 函数名(形参表):值类型;函数局部变量说明 B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 互斥同步与通信 同步 通信 PPT 课件
链接地址:https://www.31ppt.com/p-5457929.html