《操作系统》liux

《操作系统》liux

ID:41064368

大小:418.50 KB

页数:15页

时间:2019-08-15

《操作系统》liux_第1页
《操作系统》liux_第2页
《操作系统》liux_第3页
《操作系统》liux_第4页
《操作系统》liux_第5页
资源描述:

《《操作系统》liux》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、2010—2011第2学期实时操作系统期末大作业题目:多线程同步方法解决生产者-消费者问题专业:08电子信息工程班级:2班学号:120081003260姓名:燕永忠成绩:设计内容:多线程同步方法解决生产者-消费者问题:有一群生产者线程在生产产品,并将这些产品提供给消费者线程去消费。为使生产者线程与消费者线程能并发执行,在两者之间设置了一个具有N个缓冲区的缓冲池,生产者线程不断地将它所生产的产品放入一个缓冲区中;消费者线程不断地从缓冲区中取走产品去消费。尽管所有的生产者线程和消费者线程都是以异步方式运行,但它们之间必须保持同步,即不允许消费者线程到一个空的缓冲区取产品,也不允许生产者线程向一个已

2、装满产品且尚未取走的缓冲区投放产品。一、设计要求:1)为每个生产者/消费者产生一个线程,设计正确的同步算法。2)每个生产者和消费者对有界缓冲区进行操作后,及时显示当前缓冲区的全部内容、指针位置以及生产者/消费者线程的ID标识符。3)生产者和消费者各有三个以上。4)多个生产者或多个消费者之间须共享对缓冲区进行操作的函数代码。5)比较并讨论各个线程不同的延时,以及缓冲池N的不同取值,对系统运行结果有什么影响?三,设计思想:在本问题中,共需要一个Mutex和两个Semaphore.其中,Mutex是用来锁定临界区的,以解决对共享数据buffer的互斥访问问题(无论是对生成者还是对消费者);我们共需要

3、两个Semaphore,这是因为在本问题中共有两个稀缺资源.第一种是"非空"这种资源,是在消费者之间进行竞争的.第二种是"非满"这种资源,是在生产者之间进行竞争的.所以,一般来说,需要锁定临界区,就需要Mutex;有几种稀缺资源就需要几个Semaphore.对稀缺资源的分析不能想当然.稀缺资源不一定是指被共享的资源,很多时候是指线程会被阻塞的条件(除了要进临界区被阻塞外).在生产者消费者问题中,消费者会在缓冲区为空时被阻塞,所以"非空"是一种稀缺资源;需要设置一个信号量consumer_semaphore,初值设为0;生产者会在缓冲区为满时被阻塞,所以"非满"也是一种稀缺资源.需要设置一个信号

4、量producer_semaphore,初值设为buffer的大小MAX_BUFFER四、功能模块说明(含数据结构):1、voidproduce(structsem_info*);这个函数是生产者进行的生产过程,为所有的生产者所共享。结构体指针用来接收生产者线程创建时传来的生产者的个人信息。2、voidconsumer(structsem_info*);这个函数是消费者进行的生产过程,为所有的消费者所共享。结构体指针用来接收消费者线程创建时传来的消费者的个人信息。3、voidsetproduce(void);这个函数是用来设置生产者的个数和他们的名字。4、voidsetconsumer(voi

5、d);这个函数是用来设置消费者的个数和他们的名字。5、voidactivepthread(int);这个函数是用来创建生产者线程,int型参数为生产者的个数。6、voidactivecthread(int);这个函数是用来创建生产者线程,int型参数为生产者的个数。7、intgettime(void);这个函数返回来一个整数,作为线程的sleep()函数的参数。8、voidmyscanf(void);这个函数用来获取设置生产者和消费者的个数时的整数,确保这个数字在0到MAX_BUFFER之间。五系统流程图:生产者或者消费者一、程序源码:源程序清单如下:#include#inc

6、lude#include#include#include#include#include#include#include#include#defineNUM_THREADS_P5/*definethenumberofproducer*/#defineNUM_THREADS_C5/*definethenumberofconsumer*/#defineMAX_BUFFER20/*definethenumberof

7、buffer*/#defineRUN_TIME20/*definetheruntime*/intbuffer[MAX_BUFFER];/*difinethebuffer*/intproduce_pointer=0,consume_pointer=0;sem_tproducer_semaphore,consumer_semaphore,buffer_mutex;pthread_tthreads_p[

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

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

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