同步例子

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

同步互斥通信例子1.有一个文件F,允许一个写者和一个读者对文件进行操作,试用P、V操作解决写者和读者的互斥问题。①设置互斥信号量S;②S的初值为1。③算法:BeginS:semphoneS=1CobeginProcessReaderProcessWriterBeginBeginP(S)P(S)ReadfileFWritefileFV(S)V(S)EndEndCoendEnd补充作业22.桌上有一空盘,允许存放一只水果。爸爸可向盘中放苹果,也可向盘中放桔子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步•分析:在本题中爸爸、儿子、女儿共用一个盘子,且盘子中一次只能放一个水果。当盘子为空时,爸爸可向盘中放一个水果。若放入盘中的是桔子,则允许儿儿吃,女儿必须等待;若放入盘中的是苹果,则允许女儿吃,儿子必须等待;本例实际上是生产者-消费者问题的一种变形。这里,生产者有两类,消费者也有两类,每类消费者只消费其中的一类产品。解:在本题中,设应三个信号量S,Sa,So,信号量S表示盘子是否为空,其初值为1;信号量So表示盘中是否有桔子,初值为0;信号量Sa表示盘子是否有苹果,初值为0;同步描述如下:•爸爸进程•P(S);•将水果放入盘中•If(放入的是桔子)V(So);•ELSEV(Sa)•儿子进程•P(So);•从盘中取桔子•V(S);•吃桔子•女儿进程•P(Sa);•从盘中取苹果•V(S);•吃苹果具体算法描述BeginS,So,Sa:semphoneS=1So=0Sa=0CobeginProcessFatherProcessSonBeginBeginP(S)P(So)放水果入盘中从盘中取桔子If是桔子thenV(So)V(S)ElseV(Sa)吃桔子EndEndProcessDaughterBeginP(Sa)从盘中取苹果V(S)吃苹果EndCoendend补充作业33.有三个进程PA、PB、PC合作解决文件打印问题:PA将文件记录从磁盘读入主存有缓冲区1,每执行一次读一个记录;PB将缓冲区1的内容复制到缓冲区2,每执行一次复制一个记录;PC将缓冲区2的内容打印出来,每执行一次打印一个记录。缓冲区的大小等于一个记录大小。请用P、V操作来保证文件的正确打印解:在本题中,进程PA、PB、PC之间的关系为:PA、PB共用一个单缓冲区,而PB、PC共用一个单缓冲区,其合作关系可用图1表示。当缓冲区1为空时,进程PA可将一个记录读入其中;若缓冲区1中有数据且缓冲区2为空,则进程PB可将记录从缓冲区1复制到缓冲区2中;若缓冲区2中有数据,则进程PC可以打印记录。要其他条件下,相应进程必须等待。事实上,这是一个生产者-消费者问题。从磁盘读入缓冲区1PA缓冲区2PB复制PC打印应设置四个信号量empty1,empty2,full1,full2,信号量empty1及empty2分别表示缓冲区1及缓冲区2是否为空,其初值为1;信号量full1及full2分别表示缓冲区1及缓冲区2是否有记录可供处理,其初值为0。PA进程:从磁盘读一个记录;P(empty1);将记录存入缓冲区1V(full1)PB进程:P(full1);从缓冲区1中取出记录;V(empty1);P(empty2);将记录存入缓冲区2V(full2)PC进程:P(full2);从缓冲区2中取出记录;V(empty2)打印记录1.同步关系。2.设置四个信号量:①empty1表示缓冲区1有空,empty1的初值为1。②empty2表示缓冲区2有空,empty2的初值为1。③full1表示缓冲区1是否有数可取,full1的初值为0。④full2表示缓冲区2是否有数可取,full2的初值为0。3.算法描述:具体算法描述Beginempty1,empty2,full1,full2,:semphoneempty1=1empty2=1full1=0full2=0CobeginProcessPaBegin从磁盘读一个记录P(empty1)将记录放入缓冲区1V(full1)EndProcessPbBeginP(full1)从缓冲区取记录V(empty1)P(empty2)将记录放入缓冲区2V(full2)endProcessPcBeginP(full2)从缓冲区2中取数V(empty2)打印记录EndcoendEnd

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功