消费者生产者问题.doc

消费者生产者问题.doc

ID:29179074

大小:75.50 KB

页数:19页

时间:2018-12-17

消费者生产者问题.doc_第1页
消费者生产者问题.doc_第2页
消费者生产者问题.doc_第3页
消费者生产者问题.doc_第4页
消费者生产者问题.doc_第5页
资源描述:

《消费者生产者问题.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、北方民族大学课程设计报告  系(部、中心)计算机科学与工程学院姓名杨和平学号20060309专业计算机科学与工程学院班级1同组人员 课程名称计算机操作系统课程设计设计题目多进程同步方法解决生产者-消费者问题起止时间2008年12月15日—2008年12月26日成绩 指导教师签名韩强 北方民族大学教务处制多进程同步方法解决生产者-消费者问题摘要本文论述了多进程同步方法解决生产者-消费者问题的过程。该程序使学生对操作系统的工作机制有了初步的了解,其主要目的是使学生了解和撑握在Linux系统平台下的C语言

2、编程,用来解决实现生活中遇到的问题。并以Linux系统开发平台,以及虚拟机来实现。关键字:生产者-消费者问题,Linux系统平台,虚拟机,信号量,线程(thread)目录一、课程设计所需设备4二、课程设计预期目的4三、课程设计任务4四、课程设计基本思想4五.详细设计55.1.调试工具简介VI(visualeditor)55.2、调试问题分析55.3、程序流程图75.4、程序自定义函数85.5、系统函数调用8六.源程序清单106.1、/*源程序pv.c*/106.2、编译及运行结果15七.课程设计总结

3、19符录:参考文献19多进程同步方法解决生产者-消费者问题一、课程设计所需设备计算机一台,RedHatlinux9.03系统一套。二、课程设计预期目的通过研究Linux的进程机制和信号量实现生产者消费者问题的并发控制。三、课程设计任务1、每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容,当前指针位置和生产者/消费者县城的标识符;2、生产者和消费者各有两个以上;3、多个生产者或多个消费者之间须有共享对缓冲区进行操作的函数码。4、有界缓冲区内设有20个存储单元,放入/取出的数据项设

4、定为1-20这20个整型数。四、课程设计基本思想多进程是一种非常简洁的多任务操作方式。在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种烦琐的多任务工作方式。生产者-消费者方案是多进程应用程序开发中最常用的构造之一。因此困难也在于此。因为在一个应用程序中可以多次重复生产者-消费者行为,其代码也可以如此。设计中创建了Consumer类,该类通过在一些多进程应用程序中促进代码重用以及简化代码调试和维护来解决这个问题。多进程应用程序通

5、常利用生产者-消费者编程方案,其中由生产者进程创建重复性作业,将其传递给作业队列,然后由消费者进程处理作业。多进程是一种使应用程序能同时处理多个操作的编程技术。通常有两种不同类型的多进程操作使用多个进程:适时事件,当作业必须在特定的时间或在特定的间隔内调度执行时;后台处理,当后台事件必须与当前执行流并行处理或执行时;适时事件的示例包括程序提醒、超时事件以及诸如轮询和刷新之类的重复性操作。后台处理的示例包括等待发送的包或等待处理的已接收的消息。生产者-消费者方案很适合于后台处理类别的情况。这些情况通常

6、围绕一个作业“生产者”方和一个作业“消费者”方。当然,关于作业并行执行还有其它考虑事项。在大多数情况下,对于使用同一资源的作业,应以FCFS的方式按顺序处理,这可以通过使用单进程的消费者轻松实现。通过使用这种方法,使用单个进程来访问单个资源,而不是用多个进程来访问单个资源。要启用标准消费者,当作业到来时创建一个作业队列来存储所有作业。生产者进程通过将新对象添加到消费者队列来交付这个要处理的新对象。然后消费者进程从队列取出每个对象,并依次处理。当队列为空时,消费者进入休眠。当新的对象添加到空队列时,消

7、费者会醒来并处理该对象。五.详细设计5.1.调试工具简介VI(visualeditor)进入vi,直接执行vi文件名,即可:此刻屏幕上会出现vi的编辑窗口,同时vi会将文件复制一份至记忆体中的缓冲区(buffer)。vi会保留在磁盘中的文件不变,而先对缓冲区的档案作编辑,编辑完成后,我们可以决定是否要取代原来旧有的文件。编译命令:gcc-o 目标文件名  源文件名执行命令:./目标文件名5.2、调试问题分析因为生产者-消费者方案很常用,所以在构建应用程序时它可能会出现几次,这导致了代码重复。在设计过

8、程期间多次使用了生产者-消费者方案的问题。我的解决方案就是创建Consumer类,其目的是:在应用程序中,消除这种代码重复—为每个生产者-消费者实例编写一个新作业队列和消费者进程来解决这个问题。按照要求,生产者生产item,并放置在缓冲区里,消费者从缓冲区中得到item,并进行处理。如果缓冲区满,则生产者不能再生产,直到缓冲区有空位,如果缓冲区空时,消费者也不能从缓冲区中得到item,直到缓冲区不空。进程:Buffer,Producer,ConsumerProduce

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。