操作系统很全很详细的进程同步与互斥 问题课件

上传人:我*** 文档编号:141782912 上传时间:2020-08-12 格式:PPT 页数:70 大小:1.76MB
返回 下载 相关 举报
操作系统很全很详细的进程同步与互斥 问题课件_第1页
第1页 / 共70页
操作系统很全很详细的进程同步与互斥 问题课件_第2页
第2页 / 共70页
操作系统很全很详细的进程同步与互斥 问题课件_第3页
第3页 / 共70页
操作系统很全很详细的进程同步与互斥 问题课件_第4页
第4页 / 共70页
操作系统很全很详细的进程同步与互斥 问题课件_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《操作系统很全很详细的进程同步与互斥 问题课件》由会员分享,可在线阅读,更多相关《操作系统很全很详细的进程同步与互斥 问题课件(70页珍藏版)》请在金锄头文库上搜索。

1、进程同步与互斥,例题,进程同步,进程同步: 并发进程之间相互合作,完成一项工作,它们之间有一定的时序关系。 解题步骤: 确定进程的个数及每个进程的工作; 确定关键工作步(需要控制的); 确定信号量表示的含义(开始或结束); 写出伪代码。,例1:请用信号量机制描述下列并发进程的同步关系。,进程的同步,S,F,P1,P2,P3,P4,解法一:信号量表示进程能否开始。 设信号量m1、m2、m3、m4分别表示进程P1、P2、P3、P4能否开始执行,其初值m1为1,其余均为0。 int m1=1,m2=m3=m4=0 ; cobegin p1() / P2() / P3() / P4() coend,进

2、程的同步,思考: 哪个信号量可以省略?,m1,p1() P(m1) ; 执行p1; V(m2) ; V(m3); ,p2() P(m2) ; 执行p2; V(m4) ; ,p3() P(m3) ; 执行p3; V(m4) ; ,p4() P(m4) ; P(m4); 执行p4; ,解法二:信号量表示进程是否结束。 设信号量m1、m2、m3、m4分别表示进程P1、P2、P3、P4是否结束,其初值均为0。 int m1=m2=m3=m4=0 ; cobegin p1() / P2() / P3() / P4() coend,进程的同步,思考: 哪个信号量可以省略?,m4,p1() 执行p1; V(

3、m1) ; V(m1); ,p2() P(m1) ; 执行p2; V(m2) ; ,p3() P(m1) ; 执行p3; V(m3) ; ,p4() P(m2) ; P(m3); 执行p4; V(m4); ,练习:请用信号量机制描述下列并发进程的同步关系。,进程的同步,S,F,P1,P2,P4,P7,P3,P5,P6,解法一:信号量表示进程能否开始。 设信号量m1m7分别表示进程P1P7能否开始执行,其初值m1为1,其余均为0。 int m1=1,m2=m3=m4=m5=m6=m7=0 ; cobegin p1() / p2() / p3() / p4() / p5() / p6() / p7

4、() coend,进程的同步,解法二:信号量表示进程是否结束。 设信号量m1m7分别表示进程P1P7是否结束,其初值均为0。 int m1=m2=m3=m4=m5=m6=m7=0 ; cobegin p1() / p2() / p3() / p4() / p5() / p6() / p7() coend,进程的同步,进程的同步,例2:公共汽车中的司机和售票员。,司机 P1 售票员 P2 while (true) while (true) 启动车辆; 关门; 正常运行; 售票; 到站停车; 开门; ,解法一:信号量表示进程能否开始。 设信号量m1表示司机进程P1能否启动汽车,初值为0,m2表示售

5、票员进程p2能否开门,初值为0。 int m1=0,m20 ; cobegin p1() / p2() coend,进程的同步,p1() while(1) P(m1); 启动汽车; 正常行驶; 到站停车; V(m2); ,p2() while(1) 关门; V(m1); 售票; (m2); 开门; ,解法二:信号量表示进程是否结束。 设信号量m1表示司机进程P1到站停车结束,初值为0,m2表示售票员进程p2关门结束,初值为0。 int m1=0,m20 ; cobegin p1() / p2() coend,进程的同步,p1() while(1) P(m2); 启动汽车; 正常行驶; 到站停车

6、; V(m1); ,p2() while(1) 关门; V(m2); 售票; (m1); 开门; ,进程的同步,例3-1:吃水果。,父亲 P1 儿子 P2 while (true) while (true) 洗水果; 取水果; 放水果; 吃水果; ,0,父亲,儿子,水果,分析:父亲先放水果,儿子再吃水果;儿子取完水果,父亲再放水果,这两个进程是一个同步关系。 解法一:设信号量m1表示父亲能否放水果,m2表示儿子能否取水果。其初值m1=1,m2=0。 int m1=1,m2=0; cobegin p1()/p2() coend,进程的同步,p1() while(1) 洗水果; P(m1) ; 放

7、水果; V(m2) ; ,p2() while(1) P(m2) ; 取水果; V(m1); 吃水果; ,思考: 假设盘子能放n个水果,如何修改同步关系?,int m1=n,m2=0;,分析:父亲先放水果,儿子再吃水果;儿子取完水果,父亲再放水果,这两个进程是一个同步关系。 解法二:设信号量m1表示父亲放完水果,m2表示儿子取完水果。其初值m1=0,m2=1。 int m1=0,m2=1; cobegin p1()/p2() coend,进程的同步,p1() while(1) 洗水果; P(m2) ; 放水果; V(m1) ; ,p2() while(1) P(m1) ; 取水果; V(m2)

8、; 吃水果; ,进程的同步,例3-2:吃水果。,父亲 P1 儿子 P2 女儿 P3 while (true) while (true) while(true) 洗水果; 取桔子; 取苹果; 放水果; 吃桔子; 吃苹果; ,桔子,父亲,儿子,女儿,0,苹果,分析:父亲先放水果,儿子女儿再吃水果;儿子女儿取完水果,父亲再放水果,这三个进程是一个同步关系。 解法一:设信号量m1表示父亲能否放水果,m2表示儿子能否取桔子,m3表示女儿能否取苹果。 int m1=1,m2=0,m3=0; cobegin p1() / p2() / p3() coend,进程的同步,p1() while(1) 洗水果;

9、P(m1) ; 放水果; if (是桔子) V(m2) ; else V(m3); ,p2() while(1) P(m2) ; 取桔子; V(m1); 吃桔子; ,p3() while(1) P(m3) ; 取苹果; V(m1); 吃苹果; ,分析:父亲先放水果,儿子女儿再吃水果;儿子女儿取完水果,父亲再放水果,这三个进程是一个同步关系。 解法二:设信号量m1表示父亲放完桔子,m2表示父亲放完苹果,m3表示儿子女儿取完水果。 int m1=0,m2=0,m3=1; cobegin p1() / p2() / p3() coend,进程的同步,p1() while(1) 洗水果; P(m3)

10、; 放水果; if (是桔子) V(m1) ; else V(m2); ,p2() while(1) P(m1) ; 取桔子; V(m3); 吃桔子; ,p3() while(1) P(m2) ; 取苹果; V(m3); 吃苹果; ,进程的同步,例3-3:吃水果。,父亲 P1 母亲 P2 儿子 P3 while (true) while (true) while(true) 洗桔子; 洗苹果; 取水果; 放桔子; 放苹果; 吃水果; ,0,父亲,儿子,母亲,桔子,苹果,分析:父母亲先放水果,儿子再取水果吃;父亲与儿子,母亲与儿子是一个同步关系,父亲与母亲要竞争空盘子。 解法一:设信号量m1表示

11、是否有空盘子,信号量m2表示儿子能否取水果。 int m1=1,m2=0; cobegin p1() / p2() / p3() coend,进程的同步,p1() while(1) 洗桔子; P(m1) ; 放桔子; V(m2) ; ,p2() while(1) 洗苹果 ; P(m1); 放苹果; V(m2); ,p3() while(1) P(m2) ; 取水果; V(m1); 吃水果; ,分析:父母亲先放水果,儿子再取水果吃;父亲与儿子,母亲与儿子是一个同步关系,父亲与母亲要竞争空盘子。 解法二:设信号量m1表示父亲或母亲放完水果,信号量m2表示儿子取完水果。 int m1=0,m2=1;

12、 cobegin p1() / p2() / p3() coend,进程的同步,p1() while(1) 洗桔子; P(m2) ; 放桔子; V(m1) ; ,p2() while(1) 洗苹果 ; P(m2); 放苹果; V(m1); ,p3() while(1) P(m1) ; 取水果; V(m2); 吃水果; ,0,进程的同步,例3-4:吃水果。,父亲 P1 母亲 P2 儿子 P3 女儿P4 while(true) while (true) while(true) while(true) 洗桔子; 洗苹果; 取苹果; 取桔子; 放桔子; 放苹果; 吃苹果; 吃桔子; ,桔子,父亲,女儿

13、,母亲,苹果,儿子,分析:父母亲先放水果,儿子女儿再取水果;父亲与女儿,母亲与儿子是一个同步关系,父亲与母亲要竞争空盘子。 解法一:设信号量m1表示是否有空盘子,信号量m2表示儿子能否取苹果,m3表示女儿能否取桔子。 int m1=1,m2=0,m3=0; cobegin p1() / p2() / p3() / p4() coend,进程的同步,p1() while(1) 洗桔子; P(m1) ; 放桔子; V(m3) ; ,p2() while(1) 洗苹果 ; P(m1); 放苹果; V(m2); ,p3() while(1) P(m2) ; 取苹果; V(m1); 吃苹果; ,p4()

14、 while(1) P(m3) ; 取桔子; V(m1); 吃桔子; ,分析:父母亲先放水果,儿子再取水果吃;父亲与儿子,母亲与儿子是一个同步关系,父亲与母亲要竞争空盘子。 解法二:设信号量m1表示父亲放完桔子,m2表示母亲放完苹果,信号量m3表示儿子或女儿取完水果。 int m1=0,m2=0,m3=1; cobegin p1() / p2() / p3() / p4() coend,进程的同步,p1() while(1) 洗桔子; P(m3) ; 放桔子; V(m1) ; ,p2() while(1) 洗苹果 ; P(m3); 放苹果; V(m2); ,p3() while(1) P(m2) ; 取苹果; V(m3); 吃苹果; ,p4() while(1) P(m1) ; 取桔子; V

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号