计算机操作系统中生产者-消费者问题分析.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:4 大小:197KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

计算机操作系统中生产者-消费者问题分析.pdf

计算机操作系统中生产者-消费者问题分析.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

万方数据计算机操作系统中生产者二消费者问题分析进程同步的基本概念咖e∞眦pho婶=record算第徐曼1孙曼曼2引言约关系表现为以下两种形式:①资源共享关系。进程做互斥;②相互合作关系。在某些进程间还存在一种信号量机制实现进程同步pr∞哪;现代计机总期(1.河北大学人民武装学院。河北05006l;2.河北师范大学附属民族学院,石家庄050091)问的同步。针对进程同步中的经典同步问题——生产者一消费者问题进行详细分析.并0操作系统是计算机的核心软件.是计算机专业学生的专业必修课。进程同步问题是计算机操作系统中的重点内容.而生产者一消费者问题是进程同步问题中的经典.它是计算机中相互合作进程关系的一种抽象,该问题具有很大的代表性和使用价值。1在多道程序环境下.系统中可能存在许多的进程.在这些进程之间必定存在一些制约关系.这种制之间不知道其他进程的存在.而这些进程又处在同一个系统中。对系统资源必须共享使用.而有些资源不允许进程同时访问。例如打印机。系统只能保证进程间互斥地使用这种临界资源.称这种资源共享关系叫相互合作的关系。例如在某个系统中存在两个进程,输入进程A和计算进程B.A负责向B提供数据.当缓冲区空时,B进程因不能获得所需数据而等待。当A把数据送入缓冲区后.并向B发送一个信号将B唤醒,B才能取走数据。同样.当B没有提取数据。也就是说缓冲区满时.进程A也无法向其中投入数据而等待。这就是一种相互合作关系,称之为进程间的同步关系。2本文分析的生产者一消费者问题就是一种相互合作问题的代表,对进程同步问题的解决,早在1965年,荷兰科学家Dijks仃a就提出信号量机制是一种卓有成效的进程同步工具。在信号量机制中.信号量仅能通过两个标准的原子操作wait(8)和8iIlgrlal(s)来访问。这两个操作被称为P'V操作。在信号量机制中.除了需要一个用于代表资源数目的整型变量value外。还应增加一个进程链表L,用于链接上述的所有等待进程。记录型信号量是由于它采用了记录型的数据结构而得名的。它所包含的上述两个数据项可描述为:相应地,wait(s)和singal(s)操作可描述为:v盯8:∞m叩ho坨;作者简介:徐曼(1980一),誊,石家庄人,助教,本科,研究方向为编程、计算机操作系统三擒耍:操作系统中引入进程使得计算机系统性能得到很大提升。系统中同时存在多个进程。它们彼此独立。各自按照自己的方式运行,同时共事系统中的资源.其中重点问题是进程采用信号量机制实现其同步。关键词:进程同步;生产者一消费者问题;信号量;Pv操作Beginblock(S.L)PI_ocedu聪si印al(8)收稿日期:2009一儿一06修稿日期:2009—12—04二value:iIItcger;kli砒0fEIIdProcedu把wait(8)S.value:=S.Value—l:S.valueqOtlIenEndS:semapho陀;If^v。var-●万方数据3.1一个蛐,一个生产者,一个消费者只有蝴曲有数据消费者才能进行舻t操作。利用S.value:-s.v批+l;3.3多个生产者,多个消费者,N个bu脑”判断bu晒是否为空”算第:期示资源已分配完毕。因而进程调用bkk原语。进行珊keup原语,将S.U链表中的第一个等待进程唤醒。利用信号量解决生产者一消费者问题理代计机总只有bu虢r为空才能生产者才能进行put操作,个bu脆r。s2代表bu仃er是否有数据,初值为0,所以3.2一个b硼融,多个生产者,多个消费者只有bu踮r为空才能put;只有buf6er中有数据才能get;不允许袅个pm操作同时进行;不允许多个这时bu虢r变成了临界资源.消费者之间需要互sl。s2实现同步,例外设置S信号,代表bu&r这种临资源bu船r。三每次的wait操作.意味着进程请求一个单位的资源.因此描述为S.value:=S.value-1;当S.value<O时。表自我阻塞,放弃处理机,并插入到信号量链表S.L中。S.value的绝对值表示在该信号量链表中已阻塞进程的数目。每次si朋al操作,表示执行进程释放一个单位资源.故S.value:=S.value+1操作表示资源数目加1。若加l后仍是S.value≤0。则表示在该信号量链表中。仍有等待该资源的进程被阻塞,故还应调用3(1)规则信号量机制实现消费者和生产者的协同工作.其中信号量sl代表的缓冲区这种资源。初值为1.代表有1也称这种信号量叫做资源信号量。(2)实现流程v(s2)”设置bu虢r有数据的标志,给消费者发一个”设置bu‰r为空标志”薛t操作同时进行。斥地使用,生产者之间也需要互斥地使用.消费者和生产者之间也需要互斥地使用.这时设置两个信号量界资源,用于互斥。称之为互斥信号量。82。’判断bu虢r是否空”