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

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

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

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

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

    1、题 目:题 目:生产者生产者- -消费者问题消费者问题的模拟实现的模拟实现 一、一、设计目的设计目的 本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练, 通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理 论和重要算法的理解,加强学生的动手能力。 二、二、设计内容设计内容 (1 1)概述)概述 设计目的:通过研究 Linux 的进程机制和信号量实现生产者消费者问题的 并发控制。 说明:有界缓冲区内设有 20 个存储单元,放入/取出的数据项设定为 1-20 这 20 个整型数。 设计要求:(1)每个生产者和消费者对有界缓冲区进行操作后,即时显示有界 缓冲区的全

    2、部内容,当前指针位置和生产者/消费者县城的标识符。(2)生产者和 消费者各有两个以上。(3)多个生产者或多个消费者之间须有共享对缓冲区进行 操作的函数代码。 (2 2)设计原理)设计原理 通过一个有界缓冲区把生产者和消费者联系起来。假定生产者和消费者的优先级是 相同的,只要缓冲区未满,生产者就可以生产产品并将产品送入缓冲区。类似地,只要 缓冲区未空,消费者就可以从缓冲区中取走产品。应该禁止生产者向满的缓冲区送入产 品,同时也应该禁止消费者从空的缓冲区中取出产品,这一机制有生产者线程和消费者 线程之间的互斥关系来实现。与计算打印两进程同步关系相同,生产者和消费者两进程 P 和 C 之间应满足下列

    3、两个同步条件: 只有在缓冲池中至少有一个缓冲区已存入消息后,消费者才能从中提取信息, 否则消费者必须等待。 只有缓冲池中至少有一个缓冲区是空时,生产者才能把消息放入缓冲区,否则 生产者必须等待。 为了满足第一个同步条件,设置一个同步信号量 full,它代表的资源是缓冲区满, 它的初始值为 0,它的值为 n 时整个缓冲池满。这个资源是消费者类进程 C 所有,C 进 1 程可以申请该资源,对它施加 P 操作,而 C 进程的合作进程生产者进程 P 对它施加 V 操 作。同样为了满足第二个同步条件,设置另一个同步信号量 empty,它代表的资源是缓 冲空区,它的初始值为 n,表示缓冲池中所有缓冲区空。

    4、信号量 full 表示可用缓冲区数 量,信号量 empty 表示缓冲区数量,设置整型变量:存入指针 in 和取出指针 out。 为解决生产者/消费者问题,应该设置两个资源信号量,其中一个表示空缓冲区的 数目,用 g_hFullSemaphore 表示,其初始值为有界缓冲区的大小 SIZE_OF_BUFFER;另 一个表示缓冲区中产品的数目,用 g_hEmptySemaphore 表示,其初始值为 0.另外,由于 有界缓冲区是一个临界资源,必须互斥使用,所以还需要在设置一个互斥信号量 g_hMutex,初始值为 1. P 原语的主要动作是: sem 减 1; 若 sem 减一后仍大于或等于零,则

    5、进程继续执行; 若 sem 减一后小于零,则该进程被阻塞后入与该信号相对应的队列 中,然后转进程调度。 V 原语的操作主要动作是: sem 加 1; 若相加结果大于零,进程继续执行; 若相加结果小于或等于零, 则从该信号的等待队列中唤醒一等待进程 然后再返回原进程继续执行或转进程调度。 采用的同步方法: 1)利用函数CreateMutex(NULL,FALSE,NULL)创建互斥信号量g_hMutex,表 示缓冲区当前的状态,若为true时,则表示缓冲区正被别的进程使用。三个参 数表示的意义分别为:指向安全属性的指针,初始化互斥对象的所有者,指向互 斥对象名的指针。 2) 利用函数Create

    6、Semaphore(NULL,SIZE_OF_BUFFER-1,SIZE_OF_BUFFER-1, NULL)创建缓冲区满的信号量g_hFullSemaphore, 值为true时表示缓冲区已满。 四 个参数分别为:表示是否允许继承、设置信号机的初始计数、设置信号机的最 大计数、指定信号机对象的名称(-1是因为计数从开始)。 2 3)利用函数 CreateSemaphore(NULL,0,SIZE_OF_BUFFER-1,NULL)创建缓冲 区空的信号量 g_hEmptySemaphore,该值为 true 时表示缓冲区为空。 5、数据定义及其详细解释 const unsigned short SIZE_OF_BUFFER = 20; /缓冲区长度 unsigned short ProductID = 0; /产品号 unsigned short ConsumeID = 0; /将被消耗的产品号 unsigned short in = 0; /产品进缓冲区时的缓冲区下标


    注意事项

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




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