欢迎来到毕设资料网! | 帮助中心 毕设资料交流与分享平台
毕设资料网
全部分类
  • 毕业设计>
  • 毕业论文>
  • 外文翻译>
  • 课程设计>
  • 实习报告>
  • 相关资料>
  • ImageVerifierCode 换一换
    首页 毕设资料网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    操作系统课程设计生产者消费者

    • 资源ID:1417567       资源大小:582KB        全文页数:13页
    • 资源格式: DOC        下载积分:100金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: QQ登录
    下载资源需要100金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

    操作系统课程设计生产者消费者

    1、 1 (操作系统课程设计) 生 产 者 和 消 费 者 学生姓名: 学生学号: 班 级: 2 一、课程题目分析 这个题目是生产者向消费者提供商品,消费者消耗商品,并且两组人共用同 一缓冲区。生产者提供了商品之后消费者才能去取商品,消费者若不取走商品则 当缓冲区用完之后生产者则不能再向缓冲区中添加新的商品。 思考问题: (1)对于生产者进程:每产生一个数据,则需去访问共用缓冲区是否有已 满,未满则可以将该数据存入并通知消费者进程,否则不能。 (2)对于消费者进程:每当想去消费(取出数据)时,则需访问缓冲区是 否为空,为空则不能消费(取出数据) ,否则可以取,并通知生产者。 (3)缓冲区是个临界资

    2、源,所有的进程对于该空间都是共享的,所以,还 有互斥问题存在。 二、课程设计目的 通过实验模拟生产者与消费者之间的关系, 了解并掌握他们之间的关系及原 理。由此增加对进程同步问题的了解: (1)掌握基本的同步互斥算法,理解生产者与消费者模型 (2)了解 windows 中多线程(多进程)的并发执行机制,线程(进程)间 的同步于互斥 (3)学习使用 windows 中基本的同步对象,掌握相应的 API。 三、 课程设计内容 有n个生产者和m个消费者, 连接在具有k个单位缓冲区的有界环转缓冲上, 故又称有界缓冲问题。其中 Pi和 Cj都是并发进程,只要缓冲区未满,生产者进 程 Pi所生产的产品就可

    3、投入缓冲区;类似地,只要缓冲区非空,消费者进程 Cj 就可以从缓冲区取走并消耗产品。 四、开发环境 操作系统:Windows 系统 编写语言:C+语言 五、系统分析设计 (一)算法原理 生产者消费者问题是典型的进程同步问题, 这些进程必须按照一定的生 产率和消费率来访问共享缓冲区,用 P、V 操作解决生产者和消费者共享单缓冲 区的问题,可设置两个信号量 empty 和 full,其初值分别为 1 和 0,empty 指示 能否向缓冲区放入产品,full 指示能否从缓冲区取出产品。为了使其协调工作, 必须使用一个信号量 mutex(初值为 1) ,以限制生产者和消费者互斥地对缓冲区 进行存取,另

    4、用两个信号量 empty1(初值为缓冲区大小)和 full1(初值为 0) , 3 以保证生产者不向已满的缓冲区中放入产品,消费者不从空缓冲区中取产品。 (二)功能描述 生产者功能描述:在同一个进程地址空间内执行两个线程。生产者线程生产 物品,然后将物品放置在一个空缓冲区中供消费者线程消费。当生产者线程生产 物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一 个空缓冲区。 消费者功能描述:消费者线程从缓冲区获得物品,然后释放缓冲区,当消费 者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的 物品被生产出来。 (三)算法流程图 生产者流程图: 消费者流程图

    5、: 总的流程图: 4 开始 Int i=1,n 键盘输入数字, 初始化 n i=0?退出 Y 键盘输入数 字,改变i的值 i=1?i=2? producer(b)consumer(b) i=3? N N YY i=4? showbuf(b) coutV(1); /缓冲区显示 void showbuf(SeqSquare *a) int i=a-getSize(); (3)在实现本程序的生产者消费者模型时, 具体地通过以下同步对象实现互斥: 6 设一个互斥量 Mutex,以实现生产者在查询和保留缓冲区的下一个空位置 时进行互斥。 每一个生产者用一个信号量与消费者同步,通过设置 Full 实现,该

    6、组信 号量用于表示相应产品以生产。同时用一个表示空缓冲区数目的信号量 Empty 进行类似的同步,指示缓冲区中是否存在空位置,以便开始生产下一个产品。 (四)调试过程 为解决生产者、消费者问题,应该设置两个资源信号量,其中一个表示空缓 冲区的数目,用 Full 表示,其初值为用户输入的缓冲区的大小,另一个表示缓 冲区中产品的数目,用 Empty 表示,其初值为 0.另外,由于缓冲区是一个临界 资源,必须互斥使用,所以还需要再设置一个互斥信号量 Mutex,其初值为 1. 在生产者、消费者问题中,信号量实现两种功能。首先,他是生产产品和消 费产品的计数器,计数器的初值是可使用的资源数目(缓冲区的长度) 。其次, 他是确保产品的生产者和消费者之间的动作同步的同步器。 生产者要生产一个产品时,首先对资源信号量 Full 和互斥信号量 Mutex 进 行 P 操作,申请资源。如果可以通过的话,就生产一个产品,并把产品送人缓冲 区。然后对互斥信号量 Mutex 和资源信号量 Empty 进行 V 操作,释放资源


    注意事项

    本文(操作系统课程设计生产者消费者)为本站会员(毕***)主动上传,毕设资料网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请联系网站客服QQ:540560583,我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们
    本站所有资料均属于原创者所有,仅提供参考和学习交流之用,请勿用做其他用途,转载必究!如有侵犯您的权利请联系本站,一经查实我们会立即删除相关内容!
    copyright@ 2008-2025 毕设资料网所有
    联系QQ:540560583