资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,LOGO,进程间的相互作用,进程间的联系,进程的同步机制 信号量及P.V操作(解决进程同步互斥问题),进程间的相互作用进程间的联系,1,进程间的联系,相交进程与无关进程,相交进程:指多个并发进程在逻辑上有某种联系,无关进程(不相交进程):在逻辑上无任何联系的进程,进程间的联系相交进程与无关进程,2,直接作用和间接作用,直接作用:,进程间的相互联系是有意识的安排的,直接作用只发生在相交进程间,间接作用:,进程间要通过某种中介发生联系,是无意识安排的,可发生在相交进程之间,也可发生在无关进程之间,直接作用和间接作用直接作用:,3,相互感知程度,交互关系,一个进程对其他进程的影响,相互不感知(完全不了解其它进程的存在),竞争(competition),一个进程的操作对其他进程的结果无影响,间接感知(双方都与第三方交互,如共享资源),通过共享进行协作,一个进程的结果依赖于从其他进程获得的信息,直接感知(双方直接交互,如通信),通过通信进行协作,一个进程的结果依赖于从其他进程获得的信息,相互感知程度 交互关系 一个进程对其他进程的影响 相互不感知,4,进程的同步(直接作用),进程的同步:指系统中多个进程中发生的事件存在某种时序关系,需要相互合作,共同完成一项任务。,具体说,一个进程运行到某一点时要求另一伙伴进程为它提供消息,在未获得消息之前,该进程处于等待状态,获得消息后被唤醒进入就绪态,进程的同步(直接作用)进程的同步:指系统中多个进程,5,例:,司机,P1,售票员,P2,while(true)while(true),启动车辆;关门;正常运行;售票;到站停车;开门;,例:司机 P1 售票员 P,6,由于各进程要求共享资源,而有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥。,临界资源:,系统中某些资源一次只允许一个进程使用,称这样的资源为,临界资源,或,互斥资源,或,共享变量,。,进程的互斥(间接作用),进程的互斥(间接作用),7,临界区(互斥区),一个程序片段的集合,这些程序片段分散在不同的进程中,对某个共享的数据结构(共享资源)进行操作,在进程中涉及到临界资源的程序段叫,临界区,多个进程的临界区称为,相关临界区,临界区(互斥区)一个程序片段的集合,这些程序片段分散在不同的,8,临界区(互斥区)原理,临界区(互斥区)原理,9,a=a-1,print(a),a=a+1,print(a),P,1,互斥,P,2,互斥,If a 0,then,a=a+1,else,a=a-1,P,3,互斥,进程的互斥,(间接作用),临界区(互斥区)举例,a=a-1 a=a+1 P1互斥P2互斥If a,10,使用互斥区的原则:,有空让进:,当无进程在互斥区时,任何有权使用互 斥区的进程可进入,无空等待:,不允许两个以上的进程同时进入互斥区,多中择一:,当没有进程在临界区,而同时有多个进 程要求进入临界区,只能让其中之一进 入临界区,其他进程必须等待,有限等待:,任何进入互斥区的要求应在有限的时间 内得到满足,让权等待:,处于等待状态的进程应放弃占用CPU,以使其他进程有机会得到CPU的使用权,使用互斥区的原则:有空让进:当无进程在互斥区时,任何有权使用,11,使用互斥区的原则,前提:任何进程无权停止其它进程的运行,进程之间相对运行速度无硬性规定,进程互斥的解决有两种做法:,由竞争各方平等协商,引入进程管理者,由管理者来协调竞争各方对互斥资源的使用,具体方法:,硬件(当一个进程进入临界区,就屏蔽所有中 断,但成本高),软件(用编程解决,但常常忙等待),使用互斥区的原则前提:任何进程无权停止其它进程的运行,12,进程互斥的软件方法,通过平等协商方式实现进程互斥的最初方法是软件方法,其基本思路是在进入区检查和设置一些标志,如果已有进程在临界区,则在进入区通过循环检查进行等待;在退出区修改标志,其中的主要问题是设置什么标志和如何检查标志,进程互斥的软件方法通过平等协商方式实现进程互斥的最初方法是软,13,free:表示临界区标志 true:有进程在临界区 false:无进程在临界区(初值).,while(free);free=true;,临界区,free=false;,软件解法(1),free:表示临界区标志 true:有,14,turn:,true,P进入临界区,false,Q进入临界区,.,P:while(not turn);,Q:while(turn);,临界区 临界区,turn=false;turn=true;,软件解法(2),turn:true P进入临界区软件解法(2),15,pturn,qturn:初值为false,P进入临界区的条件:pturn not qturn,Q进入临界区的条件:not pturn qturn,P .Q .,pturn=true;qturn=true;,while(qturn);while(pturn);,临界区 临界区,pturn=false;qturn=false;.,软件解法(3),pturn,qturn:初值为false软件解法(3),16,软件解法(4):Dekker算法,P71-P74,软件解法(4):Dekker算法P71-P74,17,软件解法的缺点:,1.忙等待,2.实现过于复杂,需要高的编程技巧,软件解法的缺点:,18,硬件解法(1),“测试并设置”指令,boolean TS(boolean*lock),boolean old;,old=*lock;,*lock=true;,while TS(,临界区,lock=false;,硬件解法(1)“测试并设置”指令,19,key=true;,do,SWAP(,while(key);,临界区,lock:=false;,硬件解法(2),“交换”指令,void SWAP(int*a,int*b),int temp;,temp=*a;,*a=*b;,*b=temp;,key=true;硬件解法(2)“交换”指令,20,硬件解法(3),“开关中断”指令,进入临界区前执行:,执行“关中断”指令,离开临界区后执行:,执行“开中断”指令,硬件解法(3)“开关中断”指令,21,
展开阅读全文