ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:20.21KB ,
资源ID:16780949      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16780949.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(进程通讯Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

进程通讯Word文档格式.docx

1、 x=1; y=0; if x1 y=y+1; z=y;Process P2() int t,u; x=0; t=0; if x1 t=t+2; u=t;3. 设Pa, Pb, Pc为一组合作进程,其进程流程图如下所示。试用信号灯的P、V操作实现这三个进程的同步。例1:某游艺场设置了一个自动计数系统,用计数器count表示在场的人数。若有一个人进入游艺场,进程Pin对count加1,当退出一个人时,进程Pout对count减1。由于进出游艺场的人是随机的,所以进程Pin 和Pout的执行是并发的。试用P,V操作来实现游艺场在场人数的正确管理。 int count=0; /计数器初始化 int

2、S=1; /对计数器count的修改权限 Pin(); /进入游艺场进程 Pout(); /退出游艺场进程Process Pin() int R1=0; P(S); R1=count; R1=R1+1; Count=R1; V(S);Process Pout() int R2=0; R2=count; R2=R2-1; Count=R2;例2:在一个只允许单向行使的十字路口,分别有若干由东到西、由南到北的车辆在等待通过。为了安全,每次只允许一辆车通过,当有车辆通过时其他车辆必须等候。请用信号量的P,V操作设计一个十字路口安全行使的自动管理系统。 /可否通过十字路口 Pew(); /由东到西的车

3、辆通行进程Psn(); /由南到北的车辆通行进程Process Pew() 由东到西通过十字路口;Process Psn() 由南到北通过十字路口;例3:设有一个机票订购系统有n个售票处,每个售票处通过网络终端访问系统的公共数据区,假定公共数据区中的一些单元Aj(j=1,2,.)分别存放各次航班的余票数。售票时,若某次航班还有余票,则售给乘客;否则,拒绝售票。请用P,V操作实现各售票进程的并发执行。 /可否修改公共数据区 Pi (i=1,2,.,n); / 各售票处的售票处理进程Process Pi(i=1,.,n) int Ri=0; /各进程执行时所用的工作单元 Ri=Aj; if( Ri

4、1) Ri=Ri-1; Aj=Ri; 输出一张票; elseV(S);输出“票已售完”信息例4:有三个进程PA,PB,PC,合作解决文件打印问题:PA将文件记录从磁盘读入内存的缓冲区1,每执行一次读一个记录;PB将缓冲区1的记录复制到缓冲区2,每执行一次复制一个记录;PC打印缓冲区2中的记录,每执行一次打印一个记录。每个缓冲区只能存放一个记录。请用P,V操作实现文件的正确打印。int empty1=1; /缓冲区1的空闲空间数int empty2=1; /缓冲区2的空闲空间数int full1=0; /缓冲区1的满空间数int full2=0; /缓冲区2的满空间数PA();PB();PC()

5、;Process PA() While(打印工作还没有结束)P(empty1);将一个记录存入缓冲区1;V(full1);Process PB()P(full1);从缓冲区1取出一个记录;V(empty1);P(empty2);将记录存入缓冲区2;V(full2);Process PC()P(full2);从缓冲区2取出一个记录;V(empty2);将记录打印输出;例5:桌上有一个空盘子,只允许放一只水果。爸爸向盘中放苹果,妈妈向盘中放橘子,规定儿子只能吃橘子,女儿只能吃苹果。试用P,V 操作实现他们能同步的程序。int Sp=1; /盘中的空闲空间数int So=0; /盘中的橘子数int

6、Sa=0; /盘中的苹果数Pf();Pm();Ps();Pd();Process Pf() P(Sp); 将苹果放入盘中; V(Sa);Process Pm() 将橘子放入盘中; V(So);Process Ps() P(So); 吃盘中的橘子; V(Sp);Process Pd() P(Sa); 吃盘中的苹果;例6:有一个阅览室,共有200个座位,读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名等,读者离开时要消掉登记的信息,试问: (1)为描述读者的动作,应编写几个程序,设置几个进程? (2)试用PV操作描述读者进程之间的同步关系。 (1)应编写登记程序、消掉

7、登记程序,设置登记进程和消掉进程。(2)设三个信号量 Mutex 互斥信号量 初值 1 Empty 空座的个数 同步信号量 初值 200 Full 满座的个数 同步信号量 初值 0 int Mutex=1; /可否修改座位数的权限int Empty=200; /空座的个数int Full=0; /满座的个数Pin(); /登记进程Pout(); /消掉进程 P(Empty) P(Mutex) 在登记表上登记 V(mutex) V(full)P(full) P(mutex)在登记表上消掉登记V(mutex)V(empty)例7:医生为病人看病,需要化验,于是医生开出化验单,病人到化验室化验,化验

8、结果送回医生处供医生诊断。医生看病为一个进程,化验室化验为一个进程,二者并发执行且需要交换信息。 请回答下列问题:(1)用PV操作管理这些并发进程时,应怎样定义信号量,写出信号量的初值及含义。(2)根据所定义的信号量,把应执行的PV操作过程写出来,以保证进程能够正确地并发执行。.(1)因为医生看病诊断进程和化验室化验进程之间为同步关系。所以定义两个信号量S1和S2,S1表示有无化验单,S2表示有无化验结果。初始值均为0。 (2)应执行的PV操作过程如下:main( ) int S1=0; /表示有无化验单int S2=0; /表示有无化验结果Labora( ); /化验进程Diagnosis(

9、 ); /诊断进程 Labora( ) while(化验工作未结束) P(S1); /询问有无化验单,若无则等待 化验工作 /送出化验结果Diagnosis( ) while (看病工作未结束) 看病 /送出化验单 /等化验结果 Diagnosis /诊断例8:在一个盒子里,混装了数量相等的围棋白子和黑子,现在要用自动分拣系统把白子和黑子分开。该系统设有两个进程P1和P2,其中P1拣白子,P2拣黑子。规定每个进程每次只拣一子,当一进程正在拣子时,不允许另一个进程去拣,当一进程拣了一子时,必须让另一进程去拣,试写出两个并发进程能正确执行的算法。main() int S1=1; /进程P1的私有信

10、号量,初始值为1 /进程P1的私有信号量,初始值为0 int n=1000;/围棋所有黑子和白子总数 while(n!=0) P1(); /拣白子进程P2(); /拣黑子进程P1( ) p(S1); 拣白子; n=n-1 )P2() p(S2); 拣黑子; n=n-1;9、桌上有一只盘子,最多可容纳两个水果。每次只能放入一个或取出一个水果。爸爸专向盘中放苹果,妈妈专向盘中放橘子,两个女儿专等吃盘中的苹果,两个儿子专等吃盘中的橘子。试用P、V操作写出他们能同步与互斥的程序。(南京大学) Int S=1; / 是否可以更改盘子内的空间数 Int empty=2; / 盘子内的初始空间数 Int S

11、a=0; / 盘中是否有苹果Int So=0; / 盘中是否有橘子Pf( );Pm( );Pd_i( );Ps_j( );Pf( ) P(empty);P(S); 向盘中放苹果;Pm( ) 向盘中放橘子;Pd_i( ) 取盘中的苹果; V(empty);Ps_j( ) 取盘中的橘子;10、某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚提水入缸,老和尚从缸中取水饮用。水缸可容纳10桶水,水取自同一水井中,水井径窄,每次只能容一个水桶取水。水桶总数为3个,每次入、取缸水仅为1桶,且不可同时进行。试给出取水、入水的算法描述。(北京邮电大学)Main( ) Int mutex1=1; /是否可以使用

12、水井 Int mutex2=1; /是否可以使用水缸 Int mutex3=1; /是否可以修改水桶个数 Int empty=10; /水缸初始空间数 Int full=0; /水缸满否 Int count=3; /水桶初始个数 Pin_i( ); /入水进程 Pout_j( ); /取水进程Pin_i( ) /水缸满否?满则阻塞入水进程 P(count); /申请打水的桶 P(mutex3); 拿水桶; V(mutex3);P(mutex1); /互斥使用水井从井中取水V(mutex1);P(mutex2); /互斥使用水缸向缸中入水V(mutex2);V(full); /水缸多了一桶水V(

13、count); /归还水桶Pout_j( ) P(full); 水缸是否有水?无则阻塞取水进程 /申请取水的桶 P(mutex2); 从缸中取水 V(mutex2); /水缸少了一桶水 V(count);11、有一个理发师,有n张可供顾客等待理发的椅子,如果没有顾客,则理发师睡觉;如果有一顾客进入理发店发现理发师在睡觉,则把他叫醒进行理发,如果理发师正在理发时又有顾客来到,若有空椅子,就在空椅子上等待,若没有空椅子就离开理发店。写一个算法描述理发师和顾客之间的关系。要求不能带有竞争条件。(西安电子科技大学) Int mutex=1; /可否修改顾客数 Int wakeup=0; /理发师等唤醒的信号 Int wait=0; /顾客是否可以等待 Int rc=0; /初始顾客数 P1( ); /顾客进程 P2( ); /理发师进程P1( ) P(mutex); rc=rc+1; if (rc=1) /如果是第一个顾客就唤醒理发师V(wakeup); else if (rcn和mn,每个进程最多可申请多少个这类资源而使系统一定不会发生死锁?

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1