- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
作业4-参考解答
作业4
提示:作业任选三题完成.下周一前完成.
2011年3
姓名: 班级: 学号:
图书馆有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(avail);
}
桌上有一个空盘,盘内只允许放一个水果。爸爸专向盘内放苹果,妈妈专向盘内放桔子。儿子等吃盘中的苹果,女儿专等吃盘中的桔子。 若盘内已有水果,放者必须等待,若盘内没有水果,吃者必需等待。用PV操作来协调四人的关系。
定义信号量:
mutex用于放水果用的盘子互斥使用的信号量,初值为1,表示盘子中没有水果
appneed是父亲使用的私用信号量,表示盘中没有苹果,可以向其中放苹果了,
appavail是儿子所使用的私用信号量,表示盘中已经有苹果了可以取苹果了,
orgneed是妈妈使用的私用信号量,表示盘中没有桔子,可以向其中放桔子了,
orgavail是女儿所使用的私用信号量,表示盘中已经有桔子了可以取桔子了;
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(orgavail)
P(mutex);
取桔子?….
V(mutex);
吃桔子…
V(orgneed);
}
设公共汽车上,司机和售票员的活动分别是:
司机: 启动车辆 售票员: 上乘客 关车门
正常行车 售 票
到站停车
下乘客 开车门
在汽车不断地到站,停车,行使过程中,这两个活动有什么同步关系?并用PV原语描述司机和售票员操作。
参考解答:
定义信号量:
start用于司机使用的私用信号量, 表示是否可以启动车辆,初值为1。
stop用于售票员的私用信号量, 表示是否可以关闭车门,初值为0。
int startcar=0,closedoor=0;
int main(void)
{
cobegin
busdriver();
service();
coend
}
busdriverstart()
{
P(start);
启动车辆…
正常行驶
到站停车
V(closedoor);
}
conductor()
{
关车门
V(start));
售票
P(closedoor);
开车门
上下客
}
某处有一东、西向单行道,其上交通并不繁忙。试用P、V操作正确实现该东、西向行道的管理:当有车由东向西(或由西向东)行驶时,另一方向的车需要等待;同一方向的车可连续通过;当某一方向已无车辆在行道行驶时,则另一方向的车可以驶入单行道。用PV原语描述该过程。
int main(void)
{
mutex:=1 ; /* 两个方向车辆的互斥信号灯 */
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;
您可能关注的文档
- 采掘工人安全培训.ppt
- c语言第一二章.ppt
- C语言上机界面操作.ppt
- 第三章(上)财务观念.ppt
- 第1章c语言.ppt
- 税控机常见问题判断及处理2008-9-18.doc
- 北大青鸟2003系统管理PPT_CHAP8-组策略.ppt
- 第10章 C语言程序设计初步.ppt
- 工程造价管理复习题及答案3.doc
- 日期控件使用方法.doc
- 热量表项目风险评估报告.docx
- 人教部编三年级上册语文精品教学课件 第三单元 童话世界 11 一块奶酪 (2).ppt
- 江苏省扬州中学2024-2025学年高一下学期2月月考数学试题(含答案).pdf
- 江苏省扬州中学2024-2025学年高一下学期2月月考英语试题(含答案,无听力音频及听力原文).pdf
- 汽车燃油泵生产建设项目节能评估报告(节能专用).docx
- 江西省抚州市2024-2025学年高一上学期期末语文试题(含答案).pdf
- 江西省抚州市2024-2025学年高一上学期期末考试英语试题(含答案,无听力原文及音频).pdf
- 格特呼吸泰项目节能评估报告(节能专用).docx
- 企业价值评估报告【范本模板】.docx
- 江苏省徐州市2024-2025学年九年级上学期1月期末化学试题(含答案).pdf
文档评论(0)