多进程同步方法演示“生产者-消费者”问题.docVIP

  • 13
  • 0
  • 约8.27千字
  • 约 14页
  • 2019-09-04 发布于安徽
  • 举报

多进程同步方法演示“生产者-消费者”问题.doc

实用标准文档 文案大全 青岛理工大学 操作系统课程设计报告 院(系): 计算机工程学院 专业: 计算机科学与技术专业 学生姓名: __ 班级:_______ 学号:      题目:用多进程同步方法演示“生产者-消费者”问题 起迄日期:    设计地点: 指 导 教 师: 年度 第 学期 完成日期: 年 月 日 课程设计目的 本次进行操作系统课程设计的主要任务是设计一个模拟生产者消费者工作的系统。这个问题中有一种生产者和一种消费者,生产者和消费者对同一个缓冲区进行操作,互斥的访问缓冲区。本次课程设计的目的就是加深对多进程如何正确访问资源的认识,同时掌握信号量在互斥访问时应该如何正确有效地使用。掌握生产者消费者问题的解决流程和方法,提高编程能力、解决问题的能力和查阅文档的能力。 课程设计内容与要求 1、设计目的:通过研究Linux的进程同步机制和信号量,实现生产者消费者问题的并发控制。 2、说明:有界缓冲区内设有20个存储单元,放入取出的产品设定为20个100以内的随机整数。 3、设计要求: 生产者与消费者均有二个以上 生产者和消费者进程的数目在程序界面上可调,在运行时可随时单个增加与减少生产者与消费者 生产者的生产速度与消费者的消费速度均可在程序界面调节,在运行中,该值调整后立即生效 生产者生产的产品由随机函数决定 多个生产者或多个消费者之间必须有共享对缓冲区进行操作的函数代码 每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、当前生产者与消费者的指针位置,以及生产者和消费者线程标识符 采用可视化界面,可在运行过程中随时暂停,查看当前生产者、消费者以及有界缓冲区的状态 系统分析与设计 系统分析 系统分析 1.此次课程设计的任务是生产者消费者问题的模拟演示,需要处理的数据有:生产者进程数目,消费者进程数目,生产者生产速度,消费者消费速度,缓冲区中产品的个数,以及生产、消费产品的指针。 2.程序中需要缓冲区中的信息可以动态演示,生产者、消费者的个数以及生产、消费时的速度可以随时调节,同时为了使程序更加友好,应该具有开始、暂停、停止等相关可操作按钮。 3.系统对外的界面如下: 1)对进程个数的修改:点击生产者、消费者进程数据文本框下的增加、减少按钮 2)对速度的修改:速度值默认为2000ms/个,如需修改,则在速度文本框中输入所修改的值,点击修改按钮即可进行修改。 3)需要开始模拟时,点击右上方的开始按钮。如需暂停模拟过程,可点击暂停按钮。当需要运行完毕时,点击停止按钮,进程工作停止。 4.此次使用java平台实现,保证了程序在各种机器的运行,只需要事前建立java的运行环境即可,便于程序的移植 5.系统界面如下: 开始、暂停、停止按钮区进程工作情况动态显示区 开始、暂停、停止按钮区 进程工作情况动态显示区 进程数目调节区 进程数目调节区 程序速度控制调节区 程序速度控制调节区 2、系统设计: 主界面2.1、模块设计: 主界面 系统主模块 系统主模块 消费者速度调节生产者速度调节消费者数目调节生产者数目调节 消费者速度调节 生产者速度调节 消费者数目调节 生产者数目调节 有界缓冲区控制消费者控制生产者控制主界面 有界缓冲区控制 消费者控制 生产者控制 主界面 2.2、数据结构说明: 产品指针pointcp缓冲区 产品指针 pointcp 缓冲区 同步信号量 empty full 消费Consume生产 消费 Consume 生产 Produce 缓冲区状态E_F 缓冲区状态 E_F 互斥信号量 mutex 2.3、算法流程图: 生产者流程图: 申请空缓冲区 申请空缓冲区 信号量 信号量enmpty0 NO仓库已满,线程阻塞 NO 仓库已满,线程阻塞 YES YES pointcp = pointcp+1 pointcp = pointcp+1 E_F[pointcp]=true E_F[pointcp]=true 打印缓冲区状态 打印缓冲区状态 chanpin = chanpin+1 chanpin = chanpin+1 full = full+1 释放缓冲区 释放缓冲区 消费者流程图: 申请空缓冲区 申请空缓冲区 full = full+1 信号量full0 信号量full0 仓库已满,线程阻塞 NO NO YES YES pointcp = pointcp-1 pointcp = pointcp-1 释放缓冲区E_F[pointcp]=false

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档