本论文是一篇生产者方面本科毕业论文,关于基于信号量机制的生产者消费者问题的相关学年毕业论文范文。免费优秀的关于生产者及缓冲区及消费者方面论文范文资料,适合生产者论文写作的大学硕士及本科毕业论文开题报告范文和学术职称论文参考文献下载。
摘 要:本文研究的是操作系统中进程同步和互斥的三大经典问题之一的生产者和消费者问题,通过信号量的机制,对多种办法解决该问题中可能会出现的多种情况.
关 键 词:缓冲区;信号量;Java
1信号量机制
生产者――消费者问题(Procedure――Consumer)是相互合作的进程关系的一种抽象,既包含了同步又包含了互斥.同步指的是进程之间的一种协调行为,互斥,指的是对于临界区的使用在某个时刻只允许仅被一个进程使用.
有关论文范文主题研究: | 关于生产者的论文范文数据库 | 大学生适用: | 学校学生论文、学院论文 |
---|---|---|---|
相关参考文献下载数量: | 17 | 写作解决问题: | 怎么写 |
毕业论文开题报告: | 标准论文格式、论文前言 | 职称论文适用: | 刊物发表、中级职称 |
所属大学生专业类别: | 怎么写 | 论文题目推荐度: | 优秀选题 |
为了解决进程的同步和互斥,荷兰学着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流程图如下:
写生产者论文的注意事项
播放:32135次 评论:6626人
2.1一个生产者一个消费者,公用一个缓冲区
这个问题中不存在互斥的问题,因此只需定义两个同步信号量,empty与full.Empty表示缓冲区是否为空,初值为1,full表