作业4-参考解答

上传人:子 文档编号:43438649 上传时间:2018-06-06 格式:DOC 页数:5 大小:41KB
返回 下载 相关 举报
作业4-参考解答_第1页
第1页 / 共5页
作业4-参考解答_第2页
第2页 / 共5页
作业4-参考解答_第3页
第3页 / 共5页
作业4-参考解答_第4页
第4页 / 共5页
作业4-参考解答_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《作业4-参考解答》由会员分享,可在线阅读,更多相关《作业4-参考解答(5页珍藏版)》请在金锄头文库上搜索。

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

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

3、量,表示盘中已经有桔子了可以取桔子了;int main(void) int mutex=1,appneed=0,appavail=0,orgneed=0,orgavail=0; cobegin papa(); 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(or

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

5、n busdriver(); service(); coend busdriverstart() P(start); 启动车辆 正常行驶 到站停车 V(closedoor); conductor() 关车门 V(start); 售票 P(closedoor); 开车门 上下客 4.某处有一东、西向单行道,其上交通并不繁忙。试用 P、V 操作正确实现该东、西向行道的管理:当有车由东向西(或由西向东)行驶时,另一方向的车需要等待;同一 方向的车可连续通过;当某一方向已无车辆在行道行驶时,则另一方向的车可以驶入单行 道。用 PV 原语描述该过程。 int main(void) mutex:=1 ;

6、/* 两个方向车辆的互斥信号灯 */ count:=0 ; /* 计数变量 */ mutexr:=1 ; /* 对计数变量操作的互斥信号灯 */ cobegin fromeasttowest(); fromwesttoeast(); coend 由东向西行驶的车辆: 由西向东行驶的车辆: fromeasttowest() P(mutexr); count:=count+1; if(count=1) then P(mutex); V(mutexr); driving from east to west. P(mutexr); count:=count1-1; if(count=1) then P(mutex); V(mutexr); fromwesttoease() P(mutext); count=count+1; if(count=1) then P(mutex); V(mutex); driving from west to east P(mutex); count = count 1 if(count=1) then P(mutex); V(mutex); Pi () 表示有多个由东向西行驶的车; Pj () 表示有多个由西向东行驶的车。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号