解答:
解法1:父亲先放水果,儿子女儿再吃水果;儿子女儿取完水果,父亲再放水果,这三个进程是一个同步关系。
设信号量m1表示父亲能否放水果,m2表示儿子能否取桔子,m3表示女儿能否取苹果。 初值:m1=1,m2=0,m3=0
父亲 P1 While(true) { 洗水果; P(m1); 放水果; If(是桔子)V(m2); Else V(m3); } 儿子 P2 While(true) { P(m2); 取桔子; V(m1); 吃桔子; } 女儿 P3 While(true) { P(m3); 取苹果; V(m1); 吃苹果; }
解法2:父亲先放水果,儿子女儿再吃水果;儿子女儿取完水果,父亲再放水果,这三个进程是一个同步关系。
设信号量m1表示父亲放完桔子,m2表示父亲放完苹果,m3表示儿子女儿取完苹果。 初值:m1=1,m2=0,m3=1
父亲 P1 While(true) { 洗水果; P(m3); 放水果; If(是桔子)V(m1); Else V(m2); } 儿子 P2 While(true) { P(m1); 取桔子; V(m3); 吃桔子; } 女儿 P3 While(true) { P(m2); 取苹果; V(m3); 吃苹果; }
(3)
父亲 P1 While(true) { 洗桔子; 放桔子; } 母亲 P2 While(true) { 洗苹果; 放苹果; } 儿子 P3 While(true) { 取水果; 吃水果; }
解答:父母亲先放水果,儿子再取水果吃;父亲与儿子,母亲与儿子是一个同步关系,父亲与母亲要竞争空盘子。
解法1:设信号量m1表示是否有空盘子,信号量m2表示儿子能否取水果。 Int m1=1,m2=0
父亲 P1 While(true) { 洗桔子; P(m1); 放桔子; V(m2); } 母亲 P2 While(true) { 洗苹果; P(m1); 放苹果; V(m2); } 儿子 P3 While(true) { P(m2); 取水果; V(m1); 吃水果; }
父母亲先放水果,儿子再取水果吃;父亲与儿子,母亲与儿子是一个同步关系,父亲与母亲要竞争空盘子。
解法2:设信号量m1表示父亲或母亲放完水果,信号量m2表示儿子取完水果。 Int m1=0,m2=1
父亲 P1 While(true) { 洗桔子; P(m2); 放桔子; V(m1); } (4)
母亲 P2 While(true) { 洗苹果; P(m2); 放苹果; V(m1); } 儿子 P3 While(true) { P(m1); 取水果; V(m2); 吃水果; }
父亲 P1 While(true) { 洗桔子; 放桔子; } 母亲 P2 While(true) { 洗苹果; 放苹果; } 儿子 P3 While(true) { 取苹果; 吃苹果; } 女儿 P4 While(true) { 取桔子; 吃桔子; }
分析:父母亲先放水果,儿子女儿再取水果;父亲与女儿,母亲与儿子是一个同步关系,父亲与母亲要竞争空盘子。
解法1:设信号量m1表示是否有空盘子,信号量m2表示儿子能否取苹果,m3表示女儿能否取桔子。
M1=1,m2=0,m3=0;
父亲 P1 While(true) { 洗桔子; P(m1); 放桔子; V(m3) } 母亲 P2 While(true) { 洗苹果; P(m1); 放苹果; V(m2); } 儿子 P3 While(true) { P(m2); 取苹果; V(m1); 吃苹果; } 女儿 P4 While(true) { P(m3); 取桔子; V(m1); 吃桔子; }
解法2:设信号量m1表示父亲放完桔子,信号量m2表示母亲放完苹果,m3表示儿子或女儿取完水果。
M1=0,m2=0,m3=1;
父亲 P1 While(true) { 洗桔子; P(m3); 放桔子; V(m1) } 母亲 P2 While(true) { 洗苹果; P(m3); 放苹果; V(m2); } 儿子 P3 While(true) { P(m2); 取苹果; V(m3); 吃苹果; } 女儿 P4 While(true) { P(m1); 取桔子; V(m3); 吃桔子; }
3.打印文件,试用PV操作来实现进程通信。
P1 While(true) { 从磁盘取文件; 放入缓冲1; } P2 While(true) { 从缓冲1取文件; 放入缓冲2; } P3 While(true) { 从缓冲2取文件; 打印文件; }
分析:P1做完,P2才能做,P3才能做。这三个进程是一个同步关系。 解法1:设信号量m1表示P1能否把文件放进缓冲1,m2表示P2能否从缓冲1取文件,m3表示P2能否把文件放入缓冲2,m4表示p3能否从缓冲2取文件。
M1=n, m2=0, m3=m, m4=0
P1 While(true) { 从磁盘取文件; P(m1); 放入缓冲1; V(m2); } P2 While(true) { P(m2); P(m3); 从缓冲1取文件; 放入缓冲2; V(m1); V(m4); } P3 While(true) { P(m4); 从缓冲2取文件; V(m3); 打印文件;
解法2:设信号量m1表示P1能否把文件放入缓冲1,m2表示P2能否从缓冲1取完文
件,m3表示P2能否把文件放入缓冲2,m4表示p3能否从缓冲2取完文件。
P1 While(true) { 从磁盘取文件; P(m2); 放入缓冲1; V(m1); } P2 While(true) { P(m1); 从缓冲1取文件; V(m2); P(m4); 放入缓冲2; V(m3); } P3 While(true) { P(m3); 从缓冲2取文件; V(m4); 打印文件; }
4.过独木桥,试用PV操作来实现进程通信。
P1 {
由西向东过独木桥; } P2 {
由东向西过独木桥;
}
解答:进程P1、P2因竞争独木桥这个资源而成为互斥关系。设:信号量m表示独木桥资源,初值为1表示资源可用。
P1 {
P(m);
通过独木桥; V(m); } P2 {
P(m);
通过独木桥; V(m);
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作系统试题(1)(2)在线全文阅读。
相关推荐: