计算机操作系统原理 ch3 进程同步.ppt
《计算机操作系统原理 ch3 进程同步.ppt》由会员分享,可在线阅读,更多相关《计算机操作系统原理 ch3 进程同步.ppt(125页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章进程的同步与通信n进程互斥n信号量和、操作n进程同步n经典的进程同步问题n进程通信1进程互斥n基本概念n利用软件方法解决进程互斥问题n利用硬件方法解决进程互斥问题n用上锁开锁原语实现进程互斥2 基本概念n与时间有关的错误:一飞机订票系统,两个终端,运行T1、T2进程T1:T2:.Read(x);Read(x);if x=1 then if x=1 then x:=x-1;x:=x-1;write(x);write(x);.3并发环境下程序间的制约关系并发环境下程序间的制约关系4 n同同步步:对于进程操作的时间顺序所加的某种限制,如操作应在之前执行。n互互斥斥:同步的特例,多个操作决不能同
2、时执行,如:操作和操作不能在同时执行。(注意:理解不能同时执行的准确含义)5n临临界界资资源源(criticalresource):一次仅允许一个进程访问的资源。如:进程共享一台打印机,若让它们交替使用则得到的结果肯定不是我们希望的。临界资源可能是硬件,也可能是软件:变量,数据,表格,队列等。并发进程对临界资源的访问必须作某种限制,否则就可能出与时间有关的错误与时间有关的错误,如:联网售票。6n临临界界区区(criticalsection):临界段,在每个程序中,访问临界资源的那段程序。注注意意:临界区是对某一临界资源而言的,对于不同临界资源的临界区,它们之间不存在互斥。如有程序段A、B是关于
3、变量X的临界区,而C、D是关于变量Y的临界区,那么,A、B之间需要互斥执行,C、D之间也要互斥执行,而A与C、B与D之间不用互斥执行。7解决互斥的准则为了禁止两个进程同时进入临界区内,可以采用软件办法或系统提供的同步机构来协调它们的关系。但是,不论用什么办法都要遵循下述准则:1、当有若干进程欲进入它的临界区时,应在有有限限时时间间内内使使进进程程进进入入临临界界区区。换言之,它们不应相互阻塞而致使彼此都不能进入临界区2、每次至多有一个进程至多有一个进程处于临界区。3、进程在临界区内仅逗留有限的时间逗留有限的时间。8软件方法解决进程互斥n现在很少用软件方法解决互斥,但通过学习软件解法能使读者了解
4、到,在早期进程互斥问题的解决并不是一件很简单的事。假如有两个进程Pi和Pj,它们共享一个临界资源R。如何用软件方法使进程Pi和Pj能互斥地访问R。下面介绍四个算法。9算法1n设整型变量turn,用于指示被允许进入临界区的进程的编号,即若turn=i,表示进程Pi可进入。turn=j表示进程Pj可进入。10进程Pi:RepeatWhileturnidono_op;Criticalsectionturn:=j;OthercodeUntilfalse;11算法1的问题该算法可确保每次只允许一个进程进该算法可确保每次只允许一个进程进入临界区。但它强制两个进程轮流进入。入临界区。但它强制两个进程轮流进入
5、。如当如当Pi退出时将退出时将turn置为置为j,以便,以便Pj能进能进入,但入,但Pj暂不需要进入,而这时暂不需要进入,而这时Pi又需又需要进入时,它无法进入。这不能保证准要进入时,它无法进入。这不能保证准则则1。12算法2设varflag:array0.1ofboolean,若flagi=true,表示进程Pi正在临界区内。flagi=false表示进程Pi不在临界区内。若flagj=true,表示进程Pj正在临界区内。flagj=false表示进程Pj不在临界区内。13Pi进程:RepeatWhileflagjdono_op;flagi:=true;Criticalsectionflag
6、i:=false;OthercodeUntilfalse;14算法2的问题该算法可确保准则1。但又出现新问题。当pi和pj都未进入时,它们各自的访问标志都为false。如果pi和pj几乎同时要求进入,它们都发现对方的标志为false,于是都进入了。这不能保证准则2。15算法3n算法2的问题在于:当进程Pi观察到进程Pj的标志为false后,便将自己的标志由false改为true,而正是在这两步之间,可能发生进程切换。当Pj运行时,它会观察到Pi的标志为false,从而可以将自己的标志设为true,并进入临界区。若在临界区的执行过程中发生了进程切换,Pi可能获得处理机而进入临界区。16n在算法3
7、中,设varFlag:array0.1ofboolean,若flagi=true,表示进程Pi希望进入临界区内。若flagj=true,表示进程Pj希望进入临界区。17Pi进程:Repeatflagi:=true;Whileflagjdono_op;Criticalsectionflagi:=false;OthercodeUntilfalse;18算法3的问题该算法可确保准则2。但又出现新问题。它可能造成谁也不能进入。如,当pi和pj几乎同时都要进入,分别把自己的标志置为true,都立即检查对方的标志,发现对方为true.最终谁也不能进入。这不能保证准则1。19课本上的解法4Pi进程:Repe
8、atflagi:=true;Whileflagjdono_op;beginflagi:=false;flagi:=true;endCriticalsectionflagi:=false;OthercodeUntilfalse;20算法4(正确算法)n组合算法1、3,为每一进程设标志位flagi,当flagi=true时,表示进程pi要求进入,或正在临界区中执行。此外再设一个变量turn,用于指示允许进入的进程编号。21n进程为了进入先置flagi=true,并置turn为j,表示应轮到pj进入。接着再判断flagjandturn=j的条件是否满足。若不满足则可进入。或者说,当flagj=fal
9、se或者turn=i时,进程可以进入。前者表示pj未要求进入,后者表示仅允许pi进入。22算法4(正确算法)Repeatflagi:=true;turn:=j;While(flagjandturn=j)dono_op;Criticalsectionflagi:=false;OthercodeUntilfalse23软件解法的缺点1.忙等待忙等待2.2.实现过于复杂,需要较高的编程技实现过于复杂,需要较高的编程技巧巧24硬件方法解决进程互斥用软件解决很难,现代计算机大多提用软件解决很难,现代计算机大多提供一些硬件指令。供一些硬件指令。n利用Test-and-Set指令实现互斥n利用swap指令实
10、现进程互斥25Test-and-Set指令实现互斥1、Test-and-Set指令functionTS(varlock:boolean):boolean;beginiflock=0thenbeginlock:=1;TS:=true;endelseTS:=falseend;其中,有lock有两种状态:当lock=false时,表示该资源空闲;当lock=true时,表示该资源正在被使用。262、利用TS指令实现进程互斥为每个临界资源设置一个全局布尔变量lock,并赋初值false,表示资源空闲。repeatwhileTS(lock)doskip;criticalsectionlock:=fals
11、e;OthercodeUntilfalse;27swap指令实现进程互斥1、swap指令又称交换指令,X86中称为XCHG指令。Procedureswap(vara,b:boolean);Vartemp:boolean;BeginTemp:=a;A:=b;B:=temp;End;282、利用swap实现进程互斥为每一临界资源设置一个全局布尔变量lock,其初值为false,在每个进程中有局部布尔变量key。Repeatkey:=true;RepeatSwap(lock,key);Untilkey=false;Criticalsectionlock:=false;OthercodeUntilfa
12、lse;29用原语实现进程互斥锁即操作系统中的一标志位,表示资源可用,表示资源已被占用。用户程序不能对锁直接操作,必须通过操作系统提供的上锁和开锁原语来操作。通常锁用w表示,上锁开锁原语分别用lock(w)、unlock(w)来表示。30上锁和开锁原语上锁原语lock(w)可描述为:L:if(w=1)gotoLelsew=1;开锁原语unlock(w)可描述为:w=0;31用原语实现进程互斥32改进的上锁原语上述上锁原语中存在忙等待。上述上锁原语中存在忙等待。33改进的开锁原语34n1965年,由荷兰学者Dijkstra提出(所以P、V分别是荷兰语的test(proberen)和increme
13、nt(verhogen))n一种卓有成效的进程同步机制n最初提出的是二元信号量(互斥)推广到一般信号量(多值)(同步)nP、V操作是原语信号量及P、V操作35信号量:semaphore是一个数据结构是一个数据结构定义如下:定义如下:struct semaphore int value;pointer_PCB queue;信号量说明:信号量说明:semaphore s;36P操作P(s)s.value=s.value-1;if(s.value 0)该进程状态置为等待状态 将该进程的PCB插入相应的等待队列末尾s.queue;37V操作V(s)s.value=s.value+1;if(s.valu
14、e 0表示有S个资源可用S=0表示无资源可用S=1&S2=1&Sn=1)/满足资源要求时的处理;满足资源要求时的处理;for(i=1;i=n;+i)-Si;else /某些资源不够时的处理;某些资源不够时的处理;调用进程进入第一个小于调用进程进入第一个小于1信号量的等待队列信号量的等待队列Sj.queue;阻塞调用进程阻塞调用进程;Swait原语47Ssignal(S1,S2,Sn)for(i=1;i=ti;即当资源数量低于ti时,便不予分配)占用值为di(表示资源的申请量,即Si=Si-di)对应的P、V原语格式为:nSwait(S1,t1,d1;.;Sn,tn,dn);nSsignal(S
15、1,d1;.;Sn,dn);50一般“信号量集”可以用于各种情况的资源分配和释放,几种特殊情况:nSwait(S,d,d)表示每次申请d个资源,当少于d个时,便不分配nSwait(S,1,1)表示互斥信号量nSwait(S,1,0)可作为一个可控开关(当S1时,允许多个进程进入特定区域;当S=0时,禁止任何进程进入该特定区域)n一般信号量集未必成对使用Swait和Ssignal:如:一起申请,但不一起释放51进程同步同步问题可分为两类:n保证一组合作进程按确定的次序执行n保证共享缓冲区的合作进程的同步。52合作进程的执行次序n若干个进程为了完成一个共同任务而并发执行,在这些进程中,有些进程之间
16、有次序的要求,有些进程之间没有次序的要求,为了描述方便,可以用一个图来表示进程集合的执行次序。如图53例如图,试用信号量实现这三个进程的同步。设有两个信号量SB、SC,初值均为Pa:Pb:Pc:P(SB);P(SC)V(SB);V(SC);54【思考题1】如图,试用信号量实现这三个进程的同步。如图,试用信号量实现这三个进程的同步。55解设有两个信号量S1、S2,初值均为P1:P2:P3:P(S1)V(S1);V(S2);P(S2)56【思考题2】如图,试用信号量实现这6个进程的同步57解设有5个信号量S2、S3、S4、S5、S6,初值均为P1:P2:P3:P(S2);P(S3)V(S2);V(
17、S3);V(S4);V(S6);V(S5)P4:P5:P6:P(S4);P(S5);P(S6);P(S5);P(S6);V(S5);V(S6);58【思考题3】司机进程:司机进程:while(1)while(1)启动车辆启动车辆正常驾驶正常驾驶到站停车到站停车售票员进程:售票员进程:while(1)while(1)关门关门售票售票开门开门用用P.VP.V操作解决司机与售票员的问题操作解决司机与售票员的问题59解n设有两个信号量S1,S2,初值均为0。司机进程:司机进程:while(1)while(1)P(S1)P(S1)启动车辆启动车辆正常驾驶正常驾驶 到站停车到站停车 V(S2)V(S2)售
18、票员进程:售票员进程:while(1)while(1)关门关门 V(S1)V(S1)售票售票 P(S2)P(S2)开门开门60共享缓冲区的进程的同步n设某计算进程和打印进程共用一个单缓冲区,进程负责不断地计算数据并送入缓冲区中,进程负责不断地从缓冲区中取出数据去打印。61分析通过分析可知,、必须遵守以下同步规则:n当进程把计算结果送入缓冲区时,IOP进程才能从缓冲区中取出结果去打印;n当IOP进程把缓冲区中的数据取出打印后,进程才能把下一个计算结果送入缓冲区62解n为此设有两个信号量Sa=0,Sb=1,Sa表示缓冲区中有无数据,Sb表示缓冲区中有无空位置。n两个进程的同步可以描述如下:63【思
19、考题】1.用P.V操作解决下图之同步问题提示:分别考虑对缓冲区S和T的同步,再合并考虑getcopyput64解n设置四个信号量Sin=1,Sout=0,Tin=1,Tout=0;get:while(1)P(Sin);将数放入将数放入S;V(Sout);copy:while(1)P(Sout);P(Tin);将数从将数从S取出放入取出放入T;V(Tout);V(Sin);put:while(1)P(Tout);将数从将数从T取走取走;V(Tin);65【思考题】n桌上有一空盘,最多允许存放一只水果。爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果。试用P、V操作实现爸爸
20、、儿子、女儿三个并发进程的同步。提示:设置一个信号量表示可否向盘中放水果,一个信号量表示可否取桔子,一个信号量表示可否取苹果。66解设置三个信号量S,So,Sa,初值分别为1,0,0。分别表示可否向盘中放水果,可否取桔子,可否取苹果。67Father()while(1)p(S);将水果放入盘中;if(是桔子)v(So);elsev(Sa);Son()while(1)p(So)取桔子v(S);吃桔子;Daughter()while(1)p(Sa)取苹果v(S);吃苹果;68经典的进程同步问题n生产者/消费者问题n读者/写者问题n哲学家进餐问题69生产者/消费者问题n生产者消费者问题是一种同步问题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机操作系统原理 ch3 进程同步 计算机 操作系统 原理 进程 同步
限制150内