首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
一个主修动物行为学、辅修计算机科学的学生参加了一个课题,调查花果山的猴子是否能被教会理解死锁。他找到一处峡谷,横跨峡谷拉了一根绳索(假设为南北方向),这样猴子就可以攀着绳索越过峡谷。只要它们朝着相同的方向,同一时刻可以有多只猴子通过。但是如果在相反的方向上
一个主修动物行为学、辅修计算机科学的学生参加了一个课题,调查花果山的猴子是否能被教会理解死锁。他找到一处峡谷,横跨峡谷拉了一根绳索(假设为南北方向),这样猴子就可以攀着绳索越过峡谷。只要它们朝着相同的方向,同一时刻可以有多只猴子通过。但是如果在相反的方向上
admin
2018-07-17
94
问题
一个主修动物行为学、辅修计算机科学的学生参加了一个课题,调查花果山的猴子是否能被教会理解死锁。他找到一处峡谷,横跨峡谷拉了一根绳索(假设为南北方向),这样猴子就可以攀着绳索越过峡谷。只要它们朝着相同的方向,同一时刻可以有多只猴子通过。但是如果在相反的方向上同时有猴子通过则会发生死锁(这些猴子将被卡在绳索中间,假设这些猴子无法在绳索上从另一只猴子身上翻过去)。如果一只猴子想越过峡谷,它必须看当前是否有别的猴子在逆向通过。请用P、V操作来解决该问题。
选项
答案
由于不允许两个方向的猴子同时跨越绳索,所以对绳索应该互斥使用。但同一个方向可以允许多只猴子通过,所以临界区可允许多个实例访问。本题的难点在于位于南北方向的猴子具有相同的行为,当一方有猴子在绳索上时,同方向的猴子可继续通过,但此时要防止另一方的猴子跨越绳索。类比经典的读者/写者问题。 信号量设置:对绳索应互斥使用,设置互斥信号量mutex,初值为1。但同一个方向可以允许多只猴子通过,所以定义变量NmonkeyCount和SmonkeyCount分别表示从北向南和从南向北的猴子数量。因为涉及到更新NmonkeyCount和SmonkeyCount,所以需要对其进行保护。更新NmonkeyCount和SmonkeyCount时需要用信号量来保护,所以设置信号量Nmutex和Smutex来保护’NmonkeyCount和SmonkeyCount,初始值都为1。 int SmonkeyCount=0; //从南向北攀越绳索的猴子数量 int NmonkeyCount=0; //从北向南攀越绳索的猴子数量 semaphore mutex=1; //绳索互斥信号量 semaphore Smutex=1; //南方向猴子间的互斥信号量 semaphore Nmutex=1; //北方向猴子间的互斥信号量 cobegin{ process South_i(i=1,2,3,…){ while(TRUE){ p(Smutex); //瓦斥访问smonkeycount if(smonkeyCount=0) //本方第一个猴子需发出绳索使用请求 p(mutex); SmonkeyCount=SmonkeyCount+1; //后续猴子可以进来 v(SmutexH); Pass the cordage; p(Smutex); //猴子爬过去后需要更新SmonkeyCount,互斥 Smonkeycount=Smonkeycount—1; //更新SmonkeyCount。 if(SmonkeyCount==0) //若此时后方已无要通过的猴子,最后一只猴子通过后放开绳索 v(mutex), v(Smutex), } process North_j(j=1,2,3,…) while(TRUE){ P(Nmutex), //互斥访问NmonkeyCounn if(NmonkeyCount==0) //本方第一个猴子需发出绳索使用请求 p(mutex); Nmonkeycount=Nmonkeycount+1, //后续猴子可以进来 v(Nmutex); Pass the cordage; P(Nmutex); //猴子爬过去后需要更新NmonkeyCount,互斥 NmonkeyCount=NmonkeyCount—1; //更新NmonkeyCount if(NmonkeyCount==0) //若此时后方已无要通过的猴子,最后一只猴子通过后放开绳索 v(mutex), v(Nmutex), } } } coend 注意:有的同学注意到了这种算法会导致饥饿,但是题目中只要求实现互斥,并没有对饥饿控制有要求,而且如果还要考虑饥饿,那么必然会导致复杂性大大增加,一般考试是不会出到那么难的。如果实在要考虑可以设一个固定的数值代表一次单项的最大通过量,当一个方向通过那么多猴子以后,看看对方是否要通过,如果有,就让出铁锁,如果没有,就继续让这个方向的猴子通过。
解析
转载请注明原文地址:https://kaotiyun.com/show/WyRi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
关于斯巴达的论述错误的是()。
詹天佑自主设计修建了中国第一条铁路是在()。
1962年1、2月间,中共中央召开的统一思想、总结经验教训、明确工作方向的会议是()。
在巴黎和会上获利最大的两个国家是()。
“瓜步之战”发生在下列哪两个政权之间?()
提出“勾三股四玄五”的勾股定理的著作是()。
《道威斯计划》的实施所产生的直接结果是()。
在20世纪60年代末,日本发展成为资本主义世界第二号经济强国的诸多因素中,不包括()。
在1919年巴黎和会上,美国总统威尔逊因博学多才、工于辞令而享有“百灵鸟”之称,但其美好的幻想一旦碰到“老虎”和“狐狸”,顿时变成又聋又哑的堂吉诃德。此处的“老虎”和“狐狸”分别是指()。
公元843年,查理曼的三个孙子签订《凡尔登条约》三分查理曼帝国,奠定的三个国家的形是()。①德意志②法兰西③西班牙④意大利
随机试题
消防水泵接合器分类中,按消防水泵接合器公称压力可分为1.6MPa、2.4MPa和5.0MPa。()
白细胞减少最常见于
在国民经济评价中,国民经济净现值的正确计算式为()。
在地势比较复杂而建筑物密集分布的工业广场,常采用的平面控制网形式是建筑()。
(一)某农村供销社地处边远山区,每日现金零星支付需要量为2000元。经开户银行审查批准,该企业可以从自己的收入中坐支现金,坐支的限额是2万元。以下是该企业2008年6月的库存现金日记账。以下说法中正确的有()
定额本票面额有()。
劳动教养人员在劳动教养期间进行违法活动,尚不够追究刑事责任的,可以延长劳动教养期限,但累计( )。
有一些生物拥有非凡的修复本领:被切断的蚯蚓可以重新长出一半身体,而蝾螈可以重建受损的四肢……相比而言,人类的再生本领似乎就差了一点。没有人可以重新长出手指,骨头的使用也是从一而终。稍可令人安慰的是肝脏。被部分切除的肝脏可以恢复到原来的状态。科学家发现,那些
根据以下资料。回答下列问题。2013年,全国夏粮播种面积2758.8万公顷,与2012年基本持平;全国冬小麦播种面积2244万公顷,比上年减少0.2%。11个夏粮主产省(区)夏粮播种面积增加4.1万公顷,其中,江苏、安徽、山东、河南、湖北、新疆
东汉末年军阀混战的导火线是()。
最新回复
(
0
)