操作系统课程设计生产者消费者.doc
《操作系统课程设计生产者消费者.doc》由会员分享,可在线阅读,更多相关《操作系统课程设计生产者消费者.doc(12页珍藏版)》请在咨信网上搜索。
1、(操作系统课程设计)生产者与消费者学生姓名: 学生学号: 班 级: 01140、02、03、04班制 二一三年十二月一、 课程题目分析这个题目就是生产者向消费者提供商品,消费者消耗商品,并且两组人共用同一缓冲区。生产者提供了商品之后消费者才能去取商品,消费者若不取走商品则当缓冲区用完之后生产者则不能再向缓冲区中添加新得商品。思考问题:(1) 对于生产者进程:每产生一个数据,则需去访问共用缓冲区就是否有已满,未满则可以将该数据存入并通知消费者进程,否则不能。(2) 对于消费者进程:每当想去消费(取出数据)时,则需访问缓冲区就是否为空,为空则不能消费(取出数据),否则可以取,并通知生产者。(3)
2、缓冲区就是个临界资源,所有得进程对于该空间都就是共享得,所以,还有互斥问题存在。二、 课程设计目得通过实验模拟生产者与消费者之间得关系,了解并掌握她们之间得关系及原理。由此增加对进程同步问题得了解:(1) 掌握基本得同步互斥算法,理解生产者与消费者模型(2) 了解indos中多线程(多进程)得并发执行机制,线程(进程)间得同步于互斥(3) 学习使用windows中基本得同步对象,掌握相应得API。三、 课程设计内容有n个生产者与m个消费者,连接在具有k个单位缓冲区得有界环转缓冲上,故又称有界缓冲问题。其中Pi与j都就是并发进程,只要缓冲区未满,生产者进程Pi所生产得产品就可投入缓冲区;类似地,
3、只要缓冲区非空,消费者进程Cj就可以从缓冲区取走并消耗产品。四、 开发环境操作系统:Widows系统编写语言:+语言五、 系统分析设计(一) 算法原理生产者消费者问题就是典型得进程同步问题,这些进程必须按照一定得生产率与消费率来访问共享缓冲区,用P、V操作解决生产者与消费者共享单缓冲区得问题,可设置两个信号量emp与ful,其初值分别为与0,empty指示能否向缓冲区放入产品,fll指示能否从缓冲区取出产品。为了使其协调工作,必须使用一个信号量muex(初值为1),以限制生产者与消费者互斥地对缓冲区进行存取,另用两个信号量mt(初值为缓冲区大小)与full(初值为),以保证生产者不向已满得缓冲
4、区中放入产品,消费者不从空缓冲区中取产品。(二) 功能描述生产者功能描述:在同一个进程地址空间内执行两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。消费者功能描述:消费者线程从缓冲区获得物品,然后释放缓冲区,当消费者线程消费物品时,如果没有满得缓冲区,那么消费者线程将被阻塞,直到新得物品被生产出来。(三) 算法流程图生产者流程图: 消费者流程图:总得流程图:(四) 数据结构及部分函数描述(1)类SeqSuae:对类qSquae得声明及其中一些函数class SqSua
5、republic:Squar(n );Seqare();voidP(i); /p操作vidV(int x); /操作l Empty(); /判断就是否为空o IsF(); /判断就是否已满voi dea();void db();int getSe();nt aSie();in gettop();int geta();intgetb();protecte:private:int*elemens;int top,b,maSie;说明:用动态整型数组emes来代表缓冲区,不管就是生产产品还就是对已有产品得消费都需要访问该缓冲区。函数IsFull()用于判断缓冲区就是否已满,生产者能否使用缓冲区.函数
6、IsEmpty()用于判断缓冲区就是否为空,消费者能否使用缓冲区。(2) 生产者与消费者操作及显示函数howbuf:voidproducer(SSquae *a) /生产者操作a-P(1);vod onsumer(SSqure *a) /消费者操作 aV(1); /缓冲区显示vid shobuf(SqSqur a)int i=getize();(3) 在实现本程序得生产者消费者模型时,具体地通过以下同步对象实现互斥:设一个互斥量te,以实现生产者在查询与保留缓冲区得下一个空位置时进行互斥。每一个生产者用一个信号量与消费者同步,通过设置ul实现,该组信号量用于表示相应产品以生产。同时用一个表示空
7、缓冲区数目得信号量Empt进行类似得同步,指示缓冲区中就是否存在空位置,以便开始生产下一个产品。(四) 调试过程为解决生产者、消费者问题,应该设置两个资源信号量,其中一个表示空缓冲区得数目,用Fll表示,其初值为用户输入得缓冲区得大小,另一个表示缓冲区中产品得数目,用pty表示,其初值为0、另外,由于缓冲区就是一个临界资源,必须互斥使用,所以还需要再设置一个互斥信号量Mutex,其初值为1、在生产者、消费者问题中,信号量实现两种功能。首先,她就是生产产品与消费产品得计数器,计数器得初值就是可使用得资源数目(缓冲区得长度)。其次,她就是确保产品得生产者与消费者之间得动作同步得同步器。生产者要生产
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 生产者 消费者
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。