作业4-参考解答.doc

作业4-参考解答.doc

ID:59559898

大小:23.50 KB

页数:5页

时间:2020-11-11

作业4-参考解答.doc_第1页
作业4-参考解答.doc_第2页
作业4-参考解答.doc_第3页
作业4-参考解答.doc_第4页
作业4-参考解答.doc_第5页
资源描述:

《作业4-参考解答.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、作业4提示:作业任选三题完成.下周一前完成.2011年3月16日星期三姓名:班级:学号:1.图书馆有100个座位,有一张登记表,要求:l阅读者进入时登记,先取得座位;l出来时,注销;登记表同时只能由一个人使用;用P、V原语描述一个读者的使用过程。参考解答:intmain(void){intmutex=1,avail=100;/*mutex用于登记表互斥使用的信号量,初值为1,表示登记表可用,没有被阅读者占用;*/P(avail);P(mutex);登记…V(mutex);Reading…P(mutex);注销登记…V(mutex);V(avail);}2.桌上有一个空盘,

2、盘内只允许放一个水果。爸爸专向盘内放苹果,妈妈专向盘内放桔子。儿子等吃盘中的苹果,女儿专等吃盘中的桔子。若盘内已有水果,放者必须等待,若盘内没有水果,吃者必需等待。用PV操作来协调四人的关系。定义信号量:mutex用于放水果用的盘子互斥使用的信号量,初值为1,表示盘子中没有水果appneed是父亲使用的私用信号量,表示盘中没有苹果,可以向其中放苹果了,appavail是儿子所使用的私用信号量,表示盘中已经有苹果了可以取苹果了,orgneed是妈妈使用的私用信号量,表示盘中没有桔子,可以向其中放桔子了,orgavail是女儿所使用的私用信号量,表示盘中已经有桔子了可以取桔子

3、了;intmain(void){intmutex=1,appneed=0,appavail=0,orgneed=0,orgavail=0;cobeginpapa();mama();son();daughter();coend}papa(){P(mutex);放苹果…V(appavail);V(mutex);}mama(){P(mutex);放桔子…V(orgavail);V(mutex);}son(){P(appavail)P(mutex);取苹果 ….V(mutex);吃苹果…V(appneed);}daughter(){P(orgavail)P(mutex);取桔子 

4、….V(mutex);吃桔子…V(orgneed);}1.设公共汽车上,司机和售票员的活动分别是:司机:启动车辆售票员:上乘客关车门正常行车售票到站停车下乘客开车门在汽车不断地到站,停车,行使过程中,这两个活动有什么同步关系?并用PV原语描述司机和售票员操作。参考解答:定义信号量:start用于司机使用的私用信号量,表示是否可以启动车辆,初值为1。stop用于售票员的私用信号量,表示是否可以关闭车门,初值为0。intstartcar=0,closedoor=0;intmain(void){cobeginbusdriver();service();coend}busdriv

5、erstart(){P(start);启动车辆…正常行驶到站停车V(closedoor);}conductor(){关车门V(start));售票P(closedoor);开车门上下客}1.某处有一东、西向单行道,其上交通并不繁忙。试用P、V操作正确实现该东、西向行道的管理:当有车由东向西(或由西向东)行驶时,另一方向的车需要等待;同一方向的车可连续通过;当某一方向已无车辆在行道行驶时,则另一方向的车可以驶入单行道。用PV原语描述该过程。intmain(void){mutex:=1;/*两个方向车辆的互斥信号灯*/count:=0;/*计数变量*/mutexr:=1;/*

6、对计数变量操作的互斥信号灯*/cobeginfromeasttowest();fromwesttoeast();coend}由东向西行驶的车辆:由西向东行驶的车辆:fromeasttowest(){P(mutexr);count:=count+1;if(count==1)thenP(mutex);V(mutexr);drivingfromeasttowest…..P(mutexr);count:=count1-1;if(count==1)thenP(mutex);V(mutexr);}fromwesttoease(){P(mutext);count=count+1;if(

7、count==1)thenP(mutex);V(mutex);drivingfromwesttoeast…P(mutex);count=count–1if(count==1)thenP(mutex);V(mutex);}Pi()表示有多个由东向西行驶的车;Pj()表示有多个由西向东行驶的车。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。