- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
进程同步与互斥-不再因为别人过得好而焦虑
思路3:另一个简单的解法是为资源(这里是餐叉)分配一个偏序或者分级的关系,并约定所有资源都按照这种顺序获取,按相反顺序释放,而且保证不会有两个无关资源同时被同一项工作所需要。 解法:规定奇数号哲学家先拿起其左边的筷子,然后再去拿右边的筷子;而偶数号哲学家则相反。按此规定,1,2号哲学家竞争1号筷子,3,4号哲学家竞争3号筷子,即五个哲学家都先竞争奇数号筷子,获得后,再去竞争偶数号筷子,最后总有某一个哲学家能获得两支筷子而进餐。semaphore chopstick[5]={1}; 进程的互斥 pi() //i=0-4 { while(1) { P(chopstick[(i+(i+1) mod 2) mod 5]); P(chopstick[(i+(i mod 2)) mod 5]); 进餐; V(chopstick[(i+(i+1) mod 2) mod 5]); V(chopstick[(i+(i mod 2)) mod 5]); 讨论问题; } } 问题: 该思路的一些变种:任意一位哲学 家与其他哲学家反方向申请筷子.先 拿筷子的三位哲学家与后面两位哲 学家反方向申请筷子。有何缺点? Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 例4:连续过独木桥。在USTC和AHU之间有一条弯曲的小路,其中从S到T有一段路每次只允许一辆自行车通过。但是,其中有一个小的安全岛M(同时允许两辆自行车停留),可以供两辆自行车错车时使用,如图所示。试设计一个算法以确保来往自行车的顺利通过。 进程的互斥 toAHU { 通过TL; 上安全岛M; 通过KS; } toUSTC { 通过KS; 上安全岛M; 通过TL; } Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 小结 进程互斥:进程之间要竞争临界资源。 信号量表示临界资源是否可用,或临界资源的数量。 信号量的个数与临界资源的个数一致。 对同一个信号量的PV操作要在同一个进程中完成。 P操作:进入临界区前 V操作:离开临界区后 进程的互斥 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 进程的同步与互斥 解题步骤: 确定各个进程的工作步; 确定进程的哪些工作是同步关系,哪些工作是互斥关系; 同步:有时序关系的 互斥:竞争临界资源的 确定信号量含义及初值; 写出伪代码。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 例1:生产消费问题。设有一个具有N个信息元素的环形缓冲区(如图所示),A进程顺序地把信息写进缓冲区,B进程依次从缓冲区中读出信息,请用PV操作描述A、B进程的同步。(生产者-消费者问题) 进程的同步与互斥 进程A { 写数据; } 进程B { 读数据; } Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 分析:这是一个具有多个缓冲空间的生产者消费者问题,也是一个同步加互斥的问题。A、B 两个进程对缓冲区的访问必须互斥。并且当缓冲区满时,A进程不能写入,必须等待;当缓冲区空时,B进程不能读,必须等待,读写进程之间又是同步问题。 设:3个信号量:互斥信号量S = 1(表示对缓冲区的互斥使用);同步信号量Sw(代表缓冲区是否有空闲,即写进程能否写)、Sr(代表缓冲区是否有数据,即读进程能否读),假设初始时缓冲区没有任何数据,则Sw = N,Sr = 0。设一个数组array表示缓冲区,两个
原创力文档


文档评论(0)