首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
一个主修动物行为学、辅修计算机科学的学生参加了一个课题,调查花果山的猴子是否能被教会理解死锁。他找到一处峡谷,横跨峡谷拉了一根绳索(假设为南北方向),这样猴子就可以攀着绳索越过峡谷。只要它们朝着相同的方向,同一时刻可以有多只猴子通过。但是如果在相反的方向上
一个主修动物行为学、辅修计算机科学的学生参加了一个课题,调查花果山的猴子是否能被教会理解死锁。他找到一处峡谷,横跨峡谷拉了一根绳索(假设为南北方向),这样猴子就可以攀着绳索越过峡谷。只要它们朝着相同的方向,同一时刻可以有多只猴子通过。但是如果在相反的方向上
admin
2018-07-17
72
问题
一个主修动物行为学、辅修计算机科学的学生参加了一个课题,调查花果山的猴子是否能被教会理解死锁。他找到一处峡谷,横跨峡谷拉了一根绳索(假设为南北方向),这样猴子就可以攀着绳索越过峡谷。只要它们朝着相同的方向,同一时刻可以有多只猴子通过。但是如果在相反的方向上同时有猴子通过则会发生死锁(这些猴子将被卡在绳索中间,假设这些猴子无法在绳索上从另一只猴子身上翻过去)。如果一只猴子想越过峡谷,它必须看当前是否有别的猴子在逆向通过。请用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
学硕统考专业
相关试题推荐
以下内容不属于中国共产党为解决中西部落后问题,巩固发展国防事业而采取的三线建设的是()。
美国黑人民权运动在1963年达到高潮,25万黑人和白人在华盛顿林肯纪念堂集会,()发表《我有一个梦想》的演说,这次和平集会和示威标志着争取民权的运动日趋壮大。
关于斯巴达的论述错误的是()。
1946年5月,中共中央发布的实现“耕者有其田”政策的重要文件是()。
1891年标志着电机发展新阶段开始的是在电能实际应用中首次采用()。
开皇五年,文帝规定每年正月五日县令出查,令百姓五党三党为一团,根据标准定户等上下,从轻制定税额,并将各户应纳税额写成定簿,是为()。
秦始皇征服居住在今温州一带的东瓯和福建境内的闽越后,建置()郡。
“二战”后,联合国的成立反映了世界人民和平的愿望,下列叙述正确的是()。
解放军渡江战役中横渡长江的东西两个攻击点是()。
1984年,《中共中央关于经济体制改革的决定》中强调,商品经济的充分发展是社会经济发展不可逾越的阶段,市场调节的辅助性作用不可缺少,并指出要有步骤地逐步缩小指令性计划的范围。这表明当时我国()
随机试题
在D盘下新建一个Excel工作簿,完成以下操作:(1)在Sheet1工作表的A1:H6区域中建立和编辑如表所示的数据表。(2)设置“班级学习成绩表”为居中、加粗、字号20,“高一”、“高二”和“高三”为居中、加粗、字号16,各班级标题居中、加粗,其余
静脉回流的影响因素,包括
类风湿关节炎最早侵犯的关节是
某城市小学投资700万元建设教学楼,组织工程施工公开招标,招标文件规定投标人应具备的资格条件中,正确合理的是()。
根据《测绘法》,省、自治区、直辖市和自治州、县、自治县、市行政区域界线的标准画法图,由()拟订,报国务院批准后公布。
在下列给出的投资方案评价方法中,可用于计算期不同的互斥型方案评价的动态方法是()。
Whatdoesthefutureholdfortheproblemofhousing?Agood(1)_____depends,ofcourse,onthemeaningof"future".Ifoneis
现代计算机中采用二进制码,下列选项中不是它的优点是
Thecurrentadministration,beingworriedoversomeforeigntradebarriersbeingremovedandourexportsfailingtoincreaseas
NicholasChauvin,aFrenchsoldier,airedhisvenerationofNapoleonBonaparteso______andunceasinglythathebecamethelaug
最新回复
(
0
)