首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
一个主修动物行为学、辅修计算机科学的学生参加了一个课题,调查花果山的猴子是否能被教会理解死锁。他找到一处峡谷,横跨峡谷拉了一根绳索(假设为南北方向),这样猴子就可以攀着绳索越过峡谷。只要它们朝着相同的方向,同一时刻可以有多只猴子通过。但是如果在相反的方向上
一个主修动物行为学、辅修计算机科学的学生参加了一个课题,调查花果山的猴子是否能被教会理解死锁。他找到一处峡谷,横跨峡谷拉了一根绳索(假设为南北方向),这样猴子就可以攀着绳索越过峡谷。只要它们朝着相同的方向,同一时刻可以有多只猴子通过。但是如果在相反的方向上
admin
2018-07-17
90
问题
一个主修动物行为学、辅修计算机科学的学生参加了一个课题,调查花果山的猴子是否能被教会理解死锁。他找到一处峡谷,横跨峡谷拉了一根绳索(假设为南北方向),这样猴子就可以攀着绳索越过峡谷。只要它们朝着相同的方向,同一时刻可以有多只猴子通过。但是如果在相反的方向上同时有猴子通过则会发生死锁(这些猴子将被卡在绳索中间,假设这些猴子无法在绳索上从另一只猴子身上翻过去)。如果一只猴子想越过峡谷,它必须看当前是否有别的猴子在逆向通过。请用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://www.kaotiyun.com/show/WyRi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
隋唐文化的繁荣主要继承了魏晋南北朝时期的()。
法西斯党在意大利、纳粹党在德国得以上台执政的共同因素不包括()。
春秋时期的鲁国初税亩和战国时期以商鞅变法为代表的各国变法,在历史上产生了深刻的影响。这些变法的最大作用和产生的最主要的社会后果是()。
19世纪80年代,国际工人运动中影响最大的是()。
洋务派创办军事工业的方式是()。
“我不想变成上帝,或居住在永恒之中,或者把天地抱在怀里,属于人的那种光荣对我就够了。我自己是凡人,我只要求凡人的幸福。”这句话体现的思想是()
罗马帝国疆域扩张到顶点是在()统治时期。
在一个HDLC帧的数据中,如果出现了000111111011这样的流,请问发送到信道上它将会变成()。
在二叉树的顺序存储中,每个结点的存储位置与其父结点、左右子树结点的位置都存在一个简单的映射关系,因此可与三叉链表对应。若某二叉树共有n个结点,采用三叉链表存储时,每个结点的数据域需要d个字节,每个指针域占用4个字节,若采用顺序存储,最后一个结点下标为k(起
随机试题
背景某市政服中心办公大楼工程,基础为人工挖孔桩,地下3层为设备用房和车库,地上20层。裙房4层,檐高27m,报告厅混凝土结构局部层高8m,演艺厅钢结构层高8m。主楼为框架—剪力墙结构,基础埋深12m,地下水位在底板以上2m。裙房采用落地式钢管脚手架。某施
设y=sin(1+2x2),则y′=_________.
下列哪项不为心理评估所常用
女,30岁,发现上前牙变色2年,无疼痛。检查,右上中切牙色暗黄。无光泽。无缺损,叩诊(一),电活力测试(一),X线片上根尖周未见异常。患牙有外伤史。右上中切牙可能的诊断为
已出让的国有土地,若变更原出让合同约定提高宗地建筑容积率,应向国家补交土地出让金差价。从土地估价的角度分析,符合()原则。
债权人领取提存物的权利,自提存之日起5年内不行使而消灭,提存物扣除提存费用后归债务人所有。()
马来西亚的国教是()。
李秉德教授按照教学方法的外部形态,把中小学教学活动中常用的方法分为五类,其中属于以欣赏活动为主的教学方法是()
2008年末全国就业人员77480万人,比上年末增加490万人。其中,第一产业就业人员30654万人,占全国就业人员的39.6%;第二产业21109万人,占27.2%;第三产业25717万人人,占33.2%。年末城镇就业人员30210万人,比上年末净增加8
“历史不过是追求着自己目的的人的活动而已。”这句话表明__________。
最新回复
(
0
)