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

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(操作系统生产与消费者问题.docx)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

操作系统生产与消费者问题.docx

1、一、 生产者和消费者问题 1、有n个缓冲区,一个生产者和一个消费者情况: main () { int S=1; //可否进入缓冲区 int full=0; //产品数目 int empty=n //可用缓冲区数 int buffer[n]; int in=0; //指向下一个可放产品的缓冲区 int out=0; //指向下一个可取产品的缓冲区 producer(); consumer(); } producer() { While(生产未结束) { produce a product P(e

2、mpty); P(S); Buffer[in]= product; in=(in+1)mod n; V(S); V(full); } } consumer() { While(消费未结束) { P(full); P(S); Take a product from Buffer[out] Out=(out+1)mod n; V(S); V(empty); } Consume the product } 2、 m个生产者和k个消费者共享n个缓冲

3、区的情况: main() { int B[n]; //缓冲区 int p=r=0; //p表示生产者指针, r表示消费者指针 int S=1; //可否进入缓冲区 int full=0; //产品数目 int empty=n; //可用缓冲区数 producer-i(i=1,2,…,m); consumer-j(j=1,2,…,k); } Producer-i(i=1,2,…,m) { while (producing does not end ) { produce a product

4、 P(empty); P(S); B[p]=product; p=(p+1)mod n; //每放入一个产品,位置指针后移一位 V(S); V(full); } } Consumer-j(j=1,2,…,k) { while (continue to consume) { P(full); P(S); Take a product from B[r] r=(r+1)mod n; // 从第一个开始,消费一个后,指向下一个 V(S);

5、 V(empty); Consume } } 二、 读者与写者问题 1、 读者与写者有相同的优先级的情况: main() { int S=1; //读者与写者,写者与写者间的互斥,即可否修改文件 int Sr=1; //可否修改读者个数 int rc=0; //读者个数 reader(); writer(); } reader() { While(读过程未结束) { P(Sr); if( rc==0) { P(S); rc=rc+1;

6、 V(Sr); read file F } else { rc=rc+1; V(Sr); read file F } P(Sr); rc=rc-1; if(rc==0) V(S); V(Sr); } } writer() { While(写过程未结束) { P(S); Write file F V(S); } } 2、写者优先问题: main() { int S=1; //读者与写者,写者与写者间的互斥,即可否修改

7、文件 int Sn=n; //最多有n个进程可以同时进行读操作 reader(); writer() } reader(i) { P(S); P(Sn); V(S); Read file F V(Sn); } writer(j) { P(S) Write file F V(S); } 例题 1、 有一个阅览室,读者进入时必须先在一张登记表上进行登记。该表为每一座位列出一个表目,包括座号、姓名。读者离开时要撤消登记信息。阅览室有100个座位,试问: (1) 为描述读者的动作,应编写几个程序?,应该设置几个进程?

8、进程和程序之间的关系如何? (2) 试用P、V操作描述这些进程之间的同步算法。 2、 若系统有某类资源m*n+1个,允许作业执行过程中动态申请该类资源,但在该系统上运行的每一个作业对该类资源的占有量在任一时刻都不会超过m+1个。当作业申请资源时,只要资源尚未分配完,则总能满足它的要求。但用限制系统中可同时执行的作业个数来防止死锁。你认为作业调度允许同时执行的最大作业数应为多少?证明之。 3、若系统有同类资源m个,被n个进程共享,试问:当m>n和m

9、c为一组合作进程,其进程流程图如下所示。试用信号灯的P、V操作实现这三个进程的同步。 5、医生给病人看病,需要化验,于是医生开出化验单,病人到化验室化验,化验结果送回医生处供医生诊断。医生看病为一个进程,化验室化验为一个进程,二者需要交换信息,试用信号灯的P、V操作实现这两个进程的同步关系。 6、设有两个优先级相同的进程P1、P2如下:令信号量S1, S2的初值为0,试问P1、P2并发运行结束后X=? y=? z=? 进程P1 进程P2 y=1; x=1; y=y+2;

10、 x=x+1; V(S1); P(S1); Z=y+1; x=x+y; P(S2); V(S2); Y=z+y; z=x+z; 7、在一个盒子里,混装了数量相等的围棋白子和黑子。现在要用自动分拣系统把白子和黑子分开。该系统设有两个进程P1、P2,其中P1将拣白子,P2将拣黑子。规定每个进程每次只拣一子。当一进程正在拣子时,不允许另一进程去拣,当一进程拣了一子时,必须让另一进程去拣。试

11、写出两个并发进程能正确执行的程序。 8、桌上有一只盘子,每次只能放入一个水果。爸爸专向盘中放苹果,妈妈专向盘中放橘子,一个女儿专等吃盘中的苹果,一个儿子专等吃盘中的橘子。试用P、V操作写出他们能同步的程序。 Main() { Int Sp=1; // 是否有空盘子 Int Sa=0; // 盘中是否有苹果 Int So=0; // 盘中是否有橘子 Pf( ); Pm( ); Pd( ); Ps( ); } Pf( ) { P(Sp); 向盘中放苹果; V(Sa); } Pm( ) { P(Sp); 向盘中

12、放橘子; V(So); } Pd( ) { P(Sa); 取盘中的苹果; V(Sp); } Ps( ) { P(So); 取盘中的橘子; V(Sp); } 9、桌上有一只盘子,最多可容纳两个水果。每次只能放入一个或取出一个水果。爸爸专向盘中放苹果,妈妈专向盘中放橘子,两个女儿专等吃盘中的苹果,两个儿子专等吃盘中的橘子。试用P、V操作写出他们能同步与互斥的程序。(南京大学) Main() { Int S=1; // 是否可以更改盘子内的空间数 Int empty=2; // 盘子内的初始空间数

13、 Int Sa=0; // 盘中是否有苹果 Int So=0; // 盘中是否有橘子 Pf( ); Pm( ); Pd_i( ); Ps_j( ); } Pf( ) { P(empty); P(S); 向盘中放苹果; V(S); V(Sa); } Pm( ) { P(empty); P(S); 向盘中放橘子; V(S); V(So); } Pd_i( ) { P(Sa); P(S); 取盘中的苹果; V(S); V(empty); } Ps_j( ) {

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

15、/水缸满否 Int count=3; //水桶初始个数 Pin_i( ); //入水进程 Pout_j( ); //取水进程 } Pin_i( ) { P(empty); //水缸满否?满则阻塞入水进程 P(count); //申请打水的桶 P(mutex1); //互斥使用水井 从井中取水 V(mutex1); P(mutex2); //互斥使用水缸 向缸中入水 V(mutex2); V(full); //水缸多了一桶水 V(count); //归还水桶 } Pout_j( ) { P(full);

16、水缸是否有水?无则阻塞取水进程 P(count); //申请取水的桶 P(mutex2); //互斥使用水缸 从缸中取水 V(mutex2); V(empty); //水缸少了一桶水 V(count); //归还水桶 } 11、有一个理发师,有n张可供顾客等待理发的椅子,如果没有顾客,则理发师睡觉;如果有一顾客进入理发店发现理发师在睡觉,则把他叫醒进行理发,如果理发师正在理发时又有顾客来到,若有空椅子,就在空椅子上等待,若没有空椅子就离开理发店。写一个算法描述理发师和顾客之间的关系。要求不能带有竞争条件。(西安电子科技大学) Main( )

17、 { 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 (rc<=n) //当顾客人数少于n时,在椅子上等待 P(wait)

18、 else { rc=rc-1; 该顾客离开理发店 } } V(mutex); } P2( ) { P(wakeup); //理发师睡觉,等待被唤醒 While(rc!=0) { 理发 P(mutex); rc=rc-1; if(rc!=0) V(wait); //让等待中的一个顾客理发 V(mutex); } } 12、如何让五个哲学家吃通心面问题满足同步机制。 解: 改变5个哲学家申请叉子的顺序。规定奇数号的哲学家先拿起他左边的叉子,然后再去拿右边的叉子;偶数号的哲学家则正好相反。即:拿到一个叉子的哲学家才有权拿另一个叉子,而没有拿到叉子的哲学家则退出竞争。 Pi(i=0,1,2,3,4) ( ) { Think for a while if(odd(i)) //若为奇数号 { P(fork(i+1)MOD5); P(fork(i)); } else { P(fork(i)); P(fork(i+1)MOD5); } Eat for a while V (fork(i)); V(fork(i+1)MOD5); }

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服