基于信号量机制的生产者消费者问题的

时间:2024-03-28 点赞:52403 浏览:108042 作者原创标记本站原创

本文是一篇生产者论文范文,生产者方面毕业论文提纲,关于基于信号量机制的生产者消费者问题的相关学年毕业论文范文。适合生产者及缓冲区及消费者方面的的大学硕士和本科毕业论文以及生产者相关开题报告范文和职称论文写作参考文献资料下载。

摘 要:本文研究的是操作系统中进程同步和互斥的三大经典问题之一的生产者和消费者问题,通过信号量的机制,对多种办法解决该问题中可能会出现的多种情况.

关 键 词:缓冲区;信号量;Ja

1信号量机制

生产者――消费者问题(Procedure――Consumer)是相互合作的进程关系的一种抽象,既包含了同步又包含了互斥.同步指的是进程之间的一种协调行为,互斥,指的是对于临界区的使用在某个时刻只允许仅被一个进程使用.

为了解决进程的同步和互斥,荷兰学着Dijkstra于1965年提出了一种卓有成效的信号量机制[1].在长期的应用中,信号量机制经历了三个阶段的发展,⒈整型信号量⒉记录型信号量⒊“信号量集”机制.

1.1整型信号量

定义一个整型变量S,表示资源的数目,仅能通过P(Wait(S),申请资源),V(Signal(S),释放资源)操作来访问.具体定义如下:

P(S):①将信号量S的值减1,即S等于S-1;

②如果S<=0,该进程置为等待状态,排入等待队列.

V(S):①将信号量S的值加1,即S等于S+1;

②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程.

1.2记录型信号量

整型信号量存在一个缺点,当S<=0时,就要不断地去测试.进程就会处于“忙等”状态,不符合“让权等待”.记录型信号量解决了多个进行访问同意临界资源的情况.其数据结构如下:

typedefsemaphore等于record

count:等于integer;

queue:listofqueue;

end

其中,count为信号量的个数.queue为阻塞队列的进程数目.

1.3AND信号量

如果出现多个临界资源时,就需要用AND信号量,指的是一个进程一次性地申请运行所需要的所有的资源,使用完后一次性地释放资源.在这里需要设置两个互斥的信号量实现对两个资源的互斥使用,Dmutex,Emutex.

即:Swait(S1,S2,S3,等Sn),Ssignal(S1,S2,S3,等Sn).

1.4信号量集

在该种信号量机制中,是在AND信号量机制的基础上,增加了一个下限,当资源数量低于某一下限时即不予以分配资源.

Swait(S1,t1,d1,等S2,tn,dn)

Ssignal(S1,d1,等,Sn,dn)

其中,S为信号量,d为需求值,t为下限值.

2Procedure――Consumer

生产者――消费者问题涉及到生产者进程和消费者进程.可以把该过程理解为生产者生产产品,消费者消费这些产品.在两者之间设置了存放产品的缓冲池.生产者把产品放入一个缓冲区,消费者从一个缓冲区取走产品去消费.这个问题中,需要注意:⒈生产者和消费者必须是互斥的,即当生产者往缓冲区投放产品时,消费者不能去取,其他生产者也不能往里面放数据.⒉生产者和消费者是同步的,即生产者不能向满缓冲区投放产品,消费者也不能在空缓冲区取数据.Procedure流程图如下:

2.1一个生产者一个消费者,公用一个缓冲区

这个问题中不存在互斥的问题,因此只需定义两个同步信号量,empty与full.Empty表示缓冲区是否为空,初值为1,full表示缓冲区是否为满,初值为0.

2.2一个生产者,一个消费者,公用n个环形缓冲区

这种情况下,生产者可以把产品放入其中一个缓冲区当中,只用当缓冲区放入产品,消费者才可以去消费,但是,这些缓冲区是可以循环使用,为了实现循环使用,我们采用了指针,要求生产者是按照一定的顺序把生产的产品放入到缓冲区链中.

定义两个同步信号量empty和full,Empty表示缓冲区是否为空,初值为n,full表示的是缓冲区是否为满,初值为0.定义两个指针生产者和消费者使用的指针,为input和iget,指向下一个能够使用的缓冲区.

2.3n个生产者,n个消费者,公用n个环形缓冲

生产者和消费者之间的是同步的,各个生产者之间,各个消费者之间是互斥的,对缓冲区的访问应该是互斥的,为了解决这个问题,需要利记录型信号量.定义三个变量,S为互斥信号量,初始化为1,n为资源信号量,表示已经存放产品的的缓冲区,初始化为0,e为资源信号量,表示空缓冲区的个数.


3总结

⑴进程在申请资源的时候,如果资源信号量和互斥信号量同时存在,应该先申请资源信号量,后申请互斥信号量(表示查看下该缓冲区是否其他进程在使用).

⑵同一进程中的P、V操作必须配对出现,同一个信号量的P、V操作可以不同时出现,但是可以在同一进程中嵌套使用.

⑶申请资源必须在释放资源之前,即先需要Wait,再Signal.

[参考文献]

[1]严兵.生产者消费者问题的分析和实现[J].西华大学学报(自然科学版),2006,25(2):13-15.

[2]汤晓丹,梁红兵,哲凤屏,汤子瀛.计算机操作系统[M].西安电子科技大学出版社,2007.

[3]彭学军,霸桂芳.生产者――消费者问题图示分析两则.许昌师专学报[J],2006-3-30.

[4]李金忠,曾劲涛.生产者/消费者经典同步问题的深入探究.电脑编程技巧与维护[J].2008-01-03.

[5]张秀娟.生产者-消费者系统的建模与行为分析方法研究.微电子学与计算机,2004-06-20.

基金项目:2013年福建省教育厅科技研究项目(JB13280).

作者简介:李盼盼(1984-),女,硕士,助教;赵浩(1982-),男,硕士,助教.

相关论文

金融消费者权利的保护机制设计

这是一篇金融市场类毕业论文题目范文,与金融消费者权利的保护机制设计相关函授毕业论文。是金融证券专业与金融市场及消费者及金融服务方面。

金融消费者权利的保护机制设计

本论文为关于金融市场类金融分析论文,关于金融消费者权利的保护机制设计相关学年毕业论文,可用于金融市场论文写作研究的大学硕士与本科毕。

金融消费者权利救济机制

关于金融及消费者及纠纷方面的免费优秀学术论文范文,金融有关金融专业论文发表,关于金融消费者权利救济机制相关论文范文集,对写作金融论。