自考操作系统原理第七章进程同步与进程通信.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《自考操作系统原理第七章进程同步与进程通信.ppt》由会员分享,可在线阅读,更多相关《自考操作系统原理第七章进程同步与进程通信.ppt(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、进程同步与进程通信进程同步与进程通信进程的顺序性进程的顺序性n进程的进程的顺序性顺序性是指进程在顺序处理器上的执行是是指进程在顺序处理器上的执行是严格按序的,即按照程序规定的操作顺序,只有严格按序的,即按照程序规定的操作顺序,只有在前一个操作结束后才能开始后继操作。在前一个操作结束后才能开始后继操作。n当一个进程当一个进程独占独占处理器时,它具有两个特性:处理器时,它具有两个特性:q封闭性封闭性q可再现性可再现性进程的并发性进程的并发性n每一个进程具有顺序性,但是在多道程序设计系每一个进程具有顺序性,但是在多道程序设计系统中,多个进程要统中,多个进程要竞争竞争,轮流占用轮流占用处理器。处理器。
2、n有两个进程有两个进程A和和B,它们各自顺序执行时的操作序,它们各自顺序执行时的操作序列如下:列如下:q进程进程A:a1,a2,a3,amq进程进程B:b1,b2,b3,bmn在多道程序设计系统中,处理器可能执行的操作在多道程序设计系统中,处理器可能执行的操作序列序列qa1,b1,a2,b2,a3,b3 qa1,a2,b1,a3,b2,b3 进程的并发性进程的并发性n在一个进程的工作没有完成之前,另一个进程在一个进程的工作没有完成之前,另一个进程就可以开始工作,这些进程就称为就可以开始工作,这些进程就称为可同时执行可同时执行的的。或者称它们。或者称它们具有并发性具有并发性,并且把可同时执,并且
3、把可同时执行的进程称为行的进程称为并发进程并发进程。进程的并发性进程的并发性n如果一个进程的执行不影响另一个进程的执行结如果一个进程的执行不影响另一个进程的执行结果,也不依赖一个进程的进展情况,即它们是各果,也不依赖一个进程的进展情况,即它们是各自独立的,则称这些进程相互之间是自独立的,则称这些进程相互之间是无关无关的。的。n如果一个进程的执行要依赖其他进程的进展状况,如果一个进程的执行要依赖其他进程的进展状况,或者可能会影响其他进程的执行结果,则说这些或者可能会影响其他进程的执行结果,则说这些进程是进程是有交互有交互的。的。与时间有关的错误与时间有关的错误n对于有交互的并发进程来说,并发会破
4、坏对于有交互的并发进程来说,并发会破坏“封封闭性闭性”和和“可再现性可再现性”例例1:车辆自动计数系统:车辆自动计数系统 process Observer begin L1:observe a lorry;count:=count+1;goto L1;end;process Reporter begin print count;count:=0;end;系统功能:系统功能:统计每小时的卡车流量统计每小时的卡车流量观察者进程观察者进程(Observer):观察到一辆卡车,计数器:观察到一辆卡车,计数器+1报告者进程报告者进程(Reporter):每隔:每隔1小时,将计数值输出,计数器清零小时,将
5、计数值输出,计数器清零例例2:航班售票系统:航班售票系统 process Pi(i=1,2,)begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;Ak代表某天某次航班的代表某天某次航班的剩余票数;剩余票数;Pi代表售票处理进程;代表售票处理进程;Ri是每个售票进程的私是每个售票进程的私有变量;有变量;各个售票处进程的工作各个售票处进程的工作如左边代码所示:如左边代码所示:process P2 begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;A
6、k=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;process P3 begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;Ri=5假设某时刻Ak为5,A、B两个人同时在2号3号窗口买票 process P2 begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;process P3 begin Ri:=Ak;if Ri=
7、1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;Ri=5假设某时刻Ak为5,A、B两个人同时在2号3号窗口买票 process P3 begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;process P2 begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;Ri=5假设某
8、时刻Ak为5,A、B两个人同时在2号3号窗口买票 process P2 begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;process P3 begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;Ri=5假设某时刻Ak为5,A、B两个人同时在2号3号窗口买票 process P3 begin Ri:=Ak;if Ri=1 then begin Ri:=Ri
9、-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;process P2 begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;Ri=4假设某时刻Ak为5,A、B两个人同时在2号3号窗口买票 process P2 begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;process P3 begin Ri:=Ak;if
10、 Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;Ak=4假设某时刻Ak为5,A、B两个人同时在2号3号窗口买票 process P2 begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;process P3 begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;Ri=
11、4假设某时刻Ak为5,A、B两个人同时在2号3号窗口买票 process P3 begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;process P2 begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;Ak=4假设某时刻Ak为5,A、B两个人同时在2号3号窗口买票 process P3 begin Ri:=Ak;if Ri=1 then begin Ri
12、:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;process P2 begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;假设某时刻Ak为1,两个窗口同时卖票,可能出现什么情况?与时间有关的错误与时间有关的错误n由于进程交替修改了由于进程交替修改了共享变量共享变量造成结果可能不造成结果可能不正确。正确。n造成不正确的因素与进程占据处理器的时间、造成不正确的因素与进程占据处理器的时间、执行速度以及外界的影响(卡车),这些因
13、素执行速度以及外界的影响(卡车),这些因素都与时间有关,所以称为与时间有关的错误。都与时间有关,所以称为与时间有关的错误。临界区临界区n有交互的并发进程执行时出现与时间有关的错有交互的并发进程执行时出现与时间有关的错误,误,其根本原因是对共享资源(变量)的使用其根本原因是对共享资源(变量)的使用不受限不受限,为了使并发进程能正确地执行,必须,为了使并发进程能正确地执行,必须对对共享变量的使用加以限制共享变量的使用加以限制。process Observer begin L1:observe a lorry;count:=count+1;goto L1;end;临界区临界区 process Rep
14、orter begin print count;count:=0;end;把并发进程中与共享变量有关的程序段称为把并发进程中与共享变量有关的程序段称为临界区临界区。涉及相同共享变量的临界区称为涉及相同共享变量的临界区称为相关临界区相关临界区。临界区临界区 process Pi(i=1,2)begin Ri:=Ak;if Ri=1 then begin Ri:=Ri-1;Ak=Ri 输出一张票;输出一张票;end;else 输出输出”票已售完票已售完“end;如果能保证一个进程在临界区执行时,不让另一个进程进入相关的临界区执行,即各进程对共享变量的访问是互斥的,就不会造成与时间有关的错误。临界区
15、临界区(1)当无进程在临界区时,若有进程要进入,则当无进程在临界区时,若有进程要进入,则允许一个进程进入临界区允许一个进程进入临界区(2)当有进程在临界区执行时,其他试图进入临当有进程在临界区执行时,其他试图进入临界区的进程必须等待界区的进程必须等待(3)当有一个进程离开临界区,若有等待进入临当有一个进程离开临界区,若有等待进入临界区的进程,则允许一个进程进入它的临界界区的进程,则允许一个进程进入它的临界区区信号量机制(信号量机制(Semaphores)n1965年,荷兰的年,荷兰的 E.W.Dijkstra(狄克斯特拉狄克斯特拉)提出了信号量同步机制。提出了信号量同步机制。n用于进程同步用于
16、进程同步n广泛应用于存在临界资源和临界区控制的场合广泛应用于存在临界资源和临界区控制的场合信号量的概念信号量的概念n信号量信号量S是一个整数是一个整数S0 可供并发进程使用的资源实体数0 绝对值表示等待使用资源的进程数PV操作操作n对信号量的操作只能由对信号量的操作只能由P、V操作来进行,即:操作来进行,即:信号量数值的改变只能由信号量数值的改变只能由P、V操作完成操作完成nPV操作由操作由P操作操作和和V操作操作组成,也称组成,也称P操作原语操作原语和和V操操作原语作原语。P操作操作nP(S):将信号量将信号量S减减1,若结果小于,若结果小于0,则把调用,则把调用P(S)的进程设置成等待信号
17、量的进程设置成等待信号量S的状态的状态 Procedure P(Var S:Semaphore);begin S:=S-1;if S0 then W(s)end;P W(s)表示把调用表示把调用P(S)的进程设置成等待信号量的进程设置成等待信号量S的状态的状态nV(S):将信号量将信号量S加加1,若不大于,若不大于0(小于等于小于等于0),则释放一个等待信号量则释放一个等待信号量S的进程。的进程。Procedure V(Var S:Semaphore);begin S:=S+1;if S=1 then begin Ri:=Ri-1;Ak=Ri V(S);输出一张票;输出一张票;end;else
18、 begin V(S);输出输出”票已售完票已售完“end;coend:end;读者读者/写者问题写者问题n计算机中,把可供多个进程使用的文件称为计算机中,把可供多个进程使用的文件称为共共享文件享文件。n想读文件的进程称为想读文件的进程称为读进程读进程,写文件的进程称,写文件的进程称为为写进程写进程。不允许多个进程同时使用共享文件不允许多个进程同时使用共享文件begin S:semaphore;S:=1;cobegin process Readeri(i=1,2,3)begin P(S);read file F;V(S);end;process Writerj(j=1,2,3)begin P(
19、S);write file F;V(S);end;coend:end;P226 12n有有4个并发执行的进程个并发执行的进程A,B,C,D,它们在执它们在执行时都要读共享文件行时都要读共享文件F。限定:。限定:不允许不允许进程进程A和进程和进程B同时读文件同时读文件F,不允许不允许进程进程C和进程和进程D同时读文件同时读文件F。写出用。写出用PV操作管理时四个进程操作管理时四个进程的程序。的程序。begin S1,S2:semaphore;S1:=1;S2:=1;cobegin process A begin P(S1);read file F;V(S1);end;process B begi
20、n P(S1);read file F;V(S1);end;coend:end;process Dbegin P(S2);read file F;V(S2);end;process C begin P(S2);read file F;V(S2);end;某系统允许某系统允许最多最多10个个进程同时读文件进程同时读文件F,当同时,当同时读文件读文件F的进程不满的进程不满10个时,欲读该文件的其他个时,欲读该文件的其他进程可立即读,当已有进程可立即读,当已有10个进程在读文件个进程在读文件F时其时其他欲读文件他欲读文件F的进程必须等待,直至有进程读完的进程必须等待,直至有进程读完后退出方可去读后退
21、出方可去读,写出进程并发执行时的程序。写出进程并发执行时的程序。begin S:semaphore;S:=10;cobegin process Readeri(i=1,2,3)begin P(S);read file F;V(s);end;coend:end;允许多个进程同时使用共享文件允许多个进程同时使用共享文件要求:要求:(1)多个进程可以同时读文件多个进程可以同时读文件F (2)任何一个进程在对文件任何一个进程在对文件F进行写时,不允许其他进程读或写进行写时,不允许其他进程读或写 (3)有进程在读文件有进程在读文件F时,不允许任何进程去写时,不允许任何进程去写PV操作的实现思路:操作的实
22、现思路:process Writeri(i=1,2,3)begin P(S);write file F;V(S);end;process Readeri(i=1,2,3.)begin if 是第一个读进程是第一个读进程 then P(S);read file F;if 是最后一个完成的读进程是最后一个完成的读进程 then V(S);end;begin S:semaphore;S=1;rc:integer;rc=0;cobegin:process Readeri(i=1,2,3)begin rc:=rc+1;if rc=1 then P(S);read file F;rc:=rc-1;if r
23、c=0 then V(S)end;coend:end;process writerj(j=1,2)begin P(S);write file F;V(S);end;begin S,mutex:semaphore;S:=1;mutex:=1;rc:integer;rc:=0;cobegin:process Readeri(i=1,2,3)begin P(mutex);rc:=rc+1;if rc=1 then P(S);V(mutex);read file F;P(mutex);rc:=rc-1;if rc=0 then V(S)V(mutex);end;coend:End;process wr
24、iterj(j=1,2,3)begin P(S);write file F;V(S);end;进程的同步进程的同步记录记录进程进程B B进程进程A A缓冲区缓冲区存存取取加工加工假设缓冲区容量为假设缓冲区容量为1一个生产者进程,将数据存在缓冲区中;一个消费一个生产者进程,将数据存在缓冲区中;一个消费者进程,从缓冲区中取数据,要求两者同步(即缓者进程,从缓冲区中取数据,要求两者同步(即缓冲区空才可以存,缓冲区满才可以取)冲区空才可以存,缓冲区满才可以取)用用PV操作实现进程的同步操作实现进程的同步begin SP,SG:semaphore;SP:=1;SG:=0;Buffer:integer;c
25、obegin:process producer begin L1:produce a product P(SP);buffer:=product;V(SG);goto L1;end;coend:End;process consumerbegin L2:P(SG);take a product;V(SP);Consume;goto L2;end;n桌上只有一个盘子,一个盘子一次只能放一个桌上只有一个盘子,一个盘子一次只能放一个苹果,爸爸向盘子里放苹果,儿子从盘子里拿苹果,爸爸向盘子里放苹果,儿子从盘子里拿苹果,用苹果,用PV操作实现同步。操作实现同步。begin S1,S2:semaphore;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自考 操作系统 原理 第七 进程 同步 通信
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内