大学男女洗澡问题讨论课件_第1页
大学男女洗澡问题讨论课件_第2页
大学男女洗澡问题讨论课件_第3页
大学男女洗澡问题讨论课件_第4页
大学男女洗澡问题讨论课件_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大学男女洗澡问题第四小组问题描述

假设一个大学为了卖弄其政治上的正确性,准备把美国最高法院的信条“平等但隔离其本身就是不平等”运用在种族上也运用在性别上,从而结束校园内长期使用的浴室按性别隔离的做法。但是,为了迁就传统习惯,学校颁布法令:当有一个女生在浴室里,那么其他女生可以进入,但是男生不行。反之亦然。在每个浴室的门上有一个滑动指示符,表示当前处于以下的三种可能状态之一:

有女生

有男生

用你偏好的编写伪代码(女生进入,男生进入,女生离开,男生离开)请用P.V操作PV操作PV操作及信号量的概念都是由荷兰科学家E.W.Dijkstra提出的。信号量S是一个整数,S大于等于零时代表可供并发进程使用的资源实体数,但S小于零时则表示正在等待使用共享资源的进程数。P操作申请资源:(1)S减1;(2)若S减1后仍大于等于零,则进程继续执行;(3)若S减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转入进程调度。V操作释放资源:(1)S加1;(2)若相加结果大于零,则进程继续执行;(3)若相加结果小于等于零,则从该信号的等待队列中唤醒一个等待进程,然后再返回原进程继续执行或转入进程调度。设计思路(以男生为例)一、当一个男生想进入澡堂的时候,他要判断:①澡堂是不是满了P(empty)②澡堂里有没有女生P(g)

如果满了,或者有女生,那么P操作就会调用阻塞原语来阻塞男生进程,其结果表现为男生必须等待其中,g是根据女生人数生成的一个信号量。二、如果男生可以进入澡堂,即P(empty)和P(g)均未阻塞

//男生进入澡堂

boynum++;三、进入澡堂之后,调用V(mutex)释放资源,来允许其他人进入四、//洗澡,离开boynum--;

五、如果最后一个男生洗完澡之后,就通知正在等待的女生进入(如果有的话)(进程通信)

if(boynum==0)V(b);六、释放澡堂资源设计要点和关键技术线程的同步与互斥信号量上的P、V操作算法使用JAVA开发平台伪代码intboynum=0;//表示澡堂中男生人数,初始值为0intgirlnum=0;//表示澡堂中女生人数,初始值为0booleanb=1;//表示澡堂中是否有男生,b=1表示没有男生,b=0表示有男生booleang=1;//表示澡堂中是否有女生,g=1表示没有女生,g=0表示有女生intempty=n;//表示澡堂的容量,最多能容纳多少人,表示空位置的个数booleanmutex=1;//互斥信号量

boy(){//男生进程

P(mutex);//控制男女生不能同时进入澡堂

p(empty);//进入条件一:澡堂满时不能进入

g=have(girlnum);//当girlnum>0时(有女生),返回0;当girlnum=0时(没女生),返回1P(g);//进入条件二:有女生时不能进入

//男生进入澡堂

boynum++;V(mutex);//放在这个位置是为了避免澡堂只被一个人占用的情况

//洗澡,离开

boynum--;if(boynum==0)V(b);//最后一个男生离开澡堂后,即boynum=0,就通知女生进入(唤醒正在等待的女生进程)

V(empty);}girl(){//女生进程

P(mutex);P(empty);b=have(boynum);P(b);注意事项1、P(mutex)是为了满足忙则等待的原则,避免男女生同时进入(进程互斥)2、empty表示澡堂的容量,或者说

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论