《计算机操作系统中生产者-消费者问题分析.pdf》由会员分享,可在线阅读,更多相关《计算机操作系统中生产者-消费者问题分析.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机操作系统中生产者二消费者问题分析徐曼1。孙曼曼2(1 河北大学人民武装学院。河北0 5 0 0 6 l;2 河北师范大学附属民族学院,石家庄0 5 0 0 9 1)擒耍:操作系统中引入进程使得计算机系统性能得到很大提升。系统中同时存在多个进程。它们彼此独立。各自按照自己的方式运行,同时共事系统中的资源其中重点问题是进程问的同步。针对进程同步中的经典同步问题生产者一消费者问题进行详细分析并采用信号量机制实现其同步。关键词:进程同步;生产者一消费者问题;信号量;P v 操作0引言操作系统是计算机的核心软件是计算机专业学生的专业必修课。进程同步问题是计算机操作系统中的重点内容而生产者一消费者问
2、题是进程同步问题中的经典它是计算机中相互合作进程关系的一种抽象,该问题具有很大的代表性和使用价值。1进程同步的基本概念在多道程序环境下系统中可能存在许多的进程在这些进程之间必定存在一些制约关系这种制约关系表现为以下两种形式:资源共享关系。进程之间不知道其他进程的存在而这些进程又处在同一个系统中。对系统资源必须共享使用而有些资源不允许进程同时访问。例如打印机。系统只能保证进程间互斥地使用这种临界资源称这种资源共享关系叫做互斥;相互合作关系。在某些进程间还存在一种相互合作的关系。例如在某个系统中存在两个进程,输入进程A 和计算进程B A 负责向B 提供数据当缓冲区空时,B 进程因不能获得所需数据而
3、等待。当A 把数据送入缓冲区后并向B 发送一个信号将B 唤醒,B 才能取走数据。同样当B 没有提取数据。也就是说缓冲区满时进程A 也无法向其中投入数据而等待。这就是一种相互合作关系,称之为进程间的同步关系。2信号量机制实现进程同步本文分析的生产者一消费者问题就是一种相互合作问题的代表,对进程同步问题的解决,早在1 9 6 5年,荷兰科学家D i j k s 仃a 就提出信号量机制是一种卓有成效的进程同步工具。在信号量机制中信号量仅能通过两个标准的原子操作w a i t(8)和8 i I l g r l a l(s)来访问。这两个操作被称为P V 操作。在信号量机制中除了需要一个用于代表资源数目
4、的整型变量v a l u e 外。还应增加一个进程链表L,用于链接上述的所有等待进程。记录型信号量是由于它采用了记录型的数据结构而得名的。它所包含的上述两个数据项可描述为:咖e 眦p h o 婶=r e c o r dv a l u e:i I I t c g e r;k l i 砒0 fp r 哪;E I I d相应地,w a i t(s)和s i n g a l(s)操作可描述为:P r o c e d u 把w a i t(8)v 盯8:m 叩h o 坨;B e g i nS v a l u e:=S V a l u e l:I fS v a l u e q Ot l I e nb l
5、o c k(S L)E n dP I _ o c e d u 聪s i 印a l(8)v a rS:s e m a p h o 陀;B e g i n收稿日期:2 0 0 9 一儿一0 6 修稿日期:2 0 0 9 1 2 0 4作者简介:徐曼(1 9 8 0 一),誊,石家庄人,助教,本科,研究方向为编程、计算机操作系统现代计算机总第三二-期v 万方数据理代计算机总第三一:期vS v a l u e:-s v 批+l;S v a l 眦=0t l l 朗w a l【e u p(S,L);E n d每次的w a i t 操作意味着进程请求一个单位的资源因此描述为S v a l u e:=S v
6、 a l u e-1;当S v a l u e O 时。表示资源已分配完毕。因而进程调用b k k 原语。进行自我阻塞,放弃处理机,并插入到信号量链表S L 中。S v a l u e 的绝对值表示在该信号量链表中已阻塞进程的数目。每次s i 朋a l 操作,表示执行进程释放一个单位资源故S v a l u e:=S v a l u e+1 操作表示资源数目加1。若加l 后仍是S v a l u e 0。则表示在该信号量链表中。仍有等待该资源的进程被阻塞,故还应调用珊k e u p 原语,将S U 链表中的第一个等待进程唤醒。3利用信号量解决生产者一消费者问题3 1 一个蛐,一个生产者,一个消
7、费者(1)规则只有b u 虢r 为空才能生产者才能进行p u t 操作,只有蝴曲有数据消费者才能进行舻t 操作。利用信号量机制实现消费者和生产者的协同工作其中信号量s l 代表的缓冲区这种资源。初值为1 代表有1个b u 脆r。s 2 代表b u 仃e r 是否有数据,初值为0,所以也称这种信号量叫做资源信号量。(2)实现流程p(8 1)”判断b u 晒是否为空”p u t放人数据v(s 2)”设置b u 虢r 有数据的标志,给消费者发一个有数椐的信号”p(B 2)”判断b u 在打是否有数据”g e t取走数据v(s 1)”设置b u r 为空标志”3 2 一个b 硼融,多个生产者,多个消费
8、者(1)规则只有b u 踮r 为空才能p u t;只有b u f 6 e r 中有数据才能g e t;不允许袅个p m 操作同时进行;不允许多个薛t 操作同时进行。这时b u 虢r 变成了临界资源消费者之间需要互斥地使用,生产者之间也需要互斥地使用消费者和生产者之间也需要互斥地使用这时设置两个信号量s l。s 2 实现同步,例外设置S 信号,代表b u r 这种临界资源,用于互斥。称之为互斥信号量。8 2(2)实现流程p(8 1)。判断b u 虢r 是否空”p(8)”是否可进行p u t,是否有其他进程占用b u 艉r f p u tv(s)。释放b u 雎r,让其他进程可以使用”v(8 2)
9、。给消费者进程释放一个b u 胜r 中有数据的信号”p(8 2)p(8)g e tv(8)v(s 1)”判断是否有数据”是否可进行8 e t,是否有其他进程占用”释放b u 虢r 让其他进程可以使用”给生产者释放一个b u 踮r 为空的信号”通过3 个信号量实现了消费者和生产者之间同步关系也保证了在某个时刻只有一个进程使用临界资源b u 船r。3 3 多个生产者,多个消费者,N 个b u 脑(1)规则任一时刻只允许一个进程操作b u 舶r。在生产者和消费者之间的公共缓冲池中,有n 个缓冲区,可利用互斥信号量s p g 使诸进程实现对缓冲池的互斥使用。利用资源信号量s 1,s 2 分别代表缓冲池
10、中的空缓冲区的数量,假定只要缓冲池未满,生产者便可将消息送入缓冲池;只要缓冲区为空,消费者便可从缓冲池中取走一个数据。(2)实现流程V 盯s p g 8 1 s 2 掷m 叩h o r e:l,n 0;p(8 1);p(s p g);p u tV(8 p g);v(s 2);p(8 2);p(s p g);g e tV(s p g);v(s 1);在生产者一消费者问题中应注意:(1)在每个程序中用于实现互斥的w a i t(8 p g)和 万方数据s i g n a l(s p g)必须成对出现。(2)对资源信号量s l 和s 2 的p 和v 操作,同样需要成对地出现,但它们是分别处于不同的程
11、序中。(3)在每个程序中的多个p 操作顺序不能颠倒。应先执行对资源信号量的p 操作。然后在执行对互斥信号量的p 操作,否则可能引起进程死锁。4结语计算机操作系统中引入了进程后极大地改善了系统资源的利用率和提高了系统的吞吐量但是由于多道环境中同时存在多个进程,它们共享系统资源,各自按照各自的方式运行,给系统造成了混乱。所以系统必须提供一种机制管理进程使这些并发执行的进程之间能有条不紊地运行能有效地共享资源和相互合作,使得程序的执行具有可再现性,这就是进程同步的主要任务本文结合信号量机制分析了经典的进程同步的例子生产者一消费者问题。并给出了相应的实现流程。参考文献f 1 l 汤子瀛,哲风屏,汤小丹
12、计算机操作系统西安电子科技大学出版社2 0 0 口【2】刘腾红,颜彬计算机操作系统武汉科技大学出版社,2 0 0 6【3】曾平,郑鹏,金晶操作系统教程清华大学出版社,2 0 0 5A n a I y S i SO fP r O d u C e r C o n s u m e rP r O b I e mi nC O m p u t e rO p e r a t i n gS y S t e mX UM a n l,S U NM a n m 觚2(1 C o l】e g e0 f P 幻脚e,8A 珊e d,H e b e iu l I i 饨r s i t y,H e b e i0 5 0 0
13、 6 l;2 C o u e g eo fN a l i o n a l i t i 髓,H e b e iN 咖a lU I l i V e m 崎,S 蝎i a z l l u a 玛0 5 0 0 9 1)A b s t 陀c t:T h eo p e 眦i n g8 y 8 t e mi 8i H 缸)d u c e di nt l I ep m c e 鹪o fm 丑l【i n gab i gc o m p u t e r8 y 8 t e mp e f f b r-咖c eu p 伊a d es y s t e n bt l l e 陀a r em u l t i p l ep m
14、 c e 8 s e 8 毗t l l e8 锄et i m e,t l l e y 啪i n d e p e n d e n to fonea n o t h e r,e a c ha c c o r d i I 瞩t oi t 8o w nm n,蚰dt l l e ya l s os h a r eB y s t e mr e 8 0 u r c 朗,如dt l l ek e yp r o b l e 咖i 8t I I ei n t e r p r o c e 鲳8 y n c h m n i 粗t i o n A i m i n go nt h ep r o c e s so f8
15、y n c l l l D-l l i 盟t i o no ft l l ec l 舶s i c8 y n c h m n i z 雠i o np m b l e m 一p r o d u c e 惜柚dc o r 氇u m e 聘p b l e m,咖-d u c 侮ad e t a i l e da 1 1 a l y s i 8,肌du$e 8 靶m a p h o mm e c h 8 n i 8 mt oT e a J i z ei t BB y n c h m I I i 朋t i o n K e y w 0 一s:P r o c e 够S”c h m n i z a t i 叩;
16、P I D _ d u c e 卜C o 璐u m e rP r o b l 鲫;s e m 印h o r e;P VO p e 阳止i 叩(上接第8 0 页)A n a l y S i Sa n dD e s i g nO fE V a C u a t i O nS y S t e mB a S e dO nC e f l u I a rA u t O m a t aJ I A N GG m m e i(D e p a 咖e n t0 f h 如砷a i T e c h l o g y,G u a r I g d o I l gW o m 髓,sP o l y e c h n i cC o
17、u e g e,G u 锄铲h 伽5“4 5 0)A b s t 陀d:F 0 rt l l e8 t u d yo ft l I ec m w de v a c u a t i o n,al a r g en u m b e ro f8 i m u l a t i o nm o d e l sa n ds i m u l a t i o ns o f 融a r e sh a v eb e e ne g t a b l i 8 h e d 懿dD u ti n t ou s e I n n D d u c e 8 出eb a s i cc h a m c t e r i s t i c 岳o
18、fv 叫o u 88 i m u l a b o nm o d e l 8,f b c u s e so na l l a l y s i n 异t I I e e t h o d so fe$t a b l i 8 h i n gs i m u l a 矗o nm o d e lo fe v 8 c u 撕o nb a s e do nc e u u】a ra u t 咖a t a。舳dp u sf。灯蒯s o m ec u n tr 龆e 皿hp m b l e m B 锄dp I u p 0 8 a 1 8 K 丑掣唧O r d s:S i m l l l a t i o nM 0 d
19、e l;C e U u l 甜A u 幻m a t a;E v 8 c u 砒i 蚰S i m u 王8 l i 鲍8 3琨代计算机总第三:期v 万方数据计算机操作系统中生产者-消费者问题分析计算机操作系统中生产者-消费者问题分析作者:徐曼,孙曼曼,XU Man,SUN Man-man作者单位:徐曼,XU Man(河北大学人民武装学院,河北,050061),孙曼曼,SUN Man-man(河北师范大学附属民族学院,石家庄,050091)刊名:现代计算机(专业版)英文刊名:MODERN COMPUTER年,卷(期):2009(12)参考文献(3条)参考文献(3条)1.曾平;郑鹏;金晶 操作系统教程 20052.刘腾红;颜彬 计算机操作系统 20063.汤子瀛;哲凤屏;汤小丹 计算机操作系统 2002 本文链接:http:/