进程同步问题分析——生产者和消费者问题

进程同步问题分析——生产者和消费者问题

ID:6347742

大小:48.62 KB

页数:8页

时间:2018-01-11

进程同步问题分析——生产者和消费者问题_第1页
进程同步问题分析——生产者和消费者问题_第2页
进程同步问题分析——生产者和消费者问题_第3页
进程同步问题分析——生产者和消费者问题_第4页
进程同步问题分析——生产者和消费者问题_第5页
资源描述:

《进程同步问题分析——生产者和消费者问题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、操作系统进程同步与互斥问题讨论报告Operatingsystemprocesssynchronizationandmutualexclusionproblemdiscussionreport学院:信息科学与工程学院班级:12级信息安全(1)班姓名:颜世宏120104070019刘文军120104070020张兆乾120104070023冯星伟120104070017郝爱斌120104070013指导老师:何海涛教务处2014年10月8讨论课名称:计算机操作系统中进程同步与互斥问题分析一、讨论课目的:1.熟悉临界资源、信号量及PV操作的定

2、义与物理意义;2.掌握进程互斥与进程同步的相关知识;3.掌握用信号量机制解决进程之间的同步与互斥问题;4.实现生产者-消费者问题,深刻理解进程同步问题。三、讨论课内容:1.进程同步的基本概念在多道程序环境下,系统中可能存在许多的进程,在这些进程之间必定存在一些制约关系,这种制约关系表现为以下两种形式:①资源共享关系。进程之间不知道其他进程的存在,而这些进程又处在同一个系统中,对系统资源必须共享使用,而有些资源不允许进程同时访问,例如打印机。系统只能保证进程间互斥地使用这种临界资源,称这种资源共享关系叫做互斥;②相互合作关系。在某些进程间

3、还存在一种相互合作的关系。例如在某个系统中存在两个进程,输入进程A和计算进程B,A负责向B提供数据,当缓冲区空时,B进程因不能获得所需数据而等待。当A把数据送入缓冲区后,并向B发送一个信号将B唤醒,B才能取走数据。同样,当B没有提取数据,也就是说缓冲区满时,进程A也无法向其中投入数据而等待。这就是一种相互合作关系,称之为进程间的同步关系。82.信号量机制实现进程同步本文分析的生产者-消费者问题就是一种相互合作问题的代表,对进程同步问题的解决,早在1965年,荷兰科学家Dijkstra就提出信号量机制是一种卓有成效的进程同步工具。在信号量

4、机制中,信号量仅能通过两个标准的原子操作wait(s)和singnal(s)来访问。这两个操作被称为P,V操作。在信号量机制中,除了需要一个用于代表资源数目的整型变量value外,还应增加一个进程链表L,用于链接上述的所有等待进程。记录型信号量是由于它采用了记录型的数据结构而得名的。它所包含的上述两个数据项可描述为:typesemaphore=recordvalue:integer;L:listofprocess;End相应地,wait(s)和singal(s)操作可描述为:Procedurewait(s)vars:semaphore;

5、BeginS.value:=S.value-1;IfS.value<0thenblock(S,L)EndProceduresignal(s)8varS:semaphore;BeginS.value:=S.value+1;IfS.value<=0thenwakeup(S,L);End每次的wait操作,意味着进程请求一个单位的资源,因此描述为S.value:=S.value-1;当S.value<0时,表示资源已分配完毕,因而进程调用block原语,进行自我阻塞,放弃处理机,并插入到信号量链表S.L中。S.value的绝对值表示在该信号量

6、链表中已阻塞进程的数目。每次signal操作,表示执行进程释放一个单位资源,故S.value:=S.value+1操作表示资源数目加1。若加1后仍是S.value≤0,则表示在该信号量链表中,仍有等待该资源的进程被阻塞,故还应调用wakeup原语,将S.Ll链表中的第一个等待进程唤醒。3.利用信号量解决生产者—消费者问题3.1一个buffer,一个生产者,一个消费者(1)规则只有buffer为空才能生产者才能进行put操作,只有buffer有数据消费者才能进行get操作。利用信号量机制实现消费者和生产者的协同工作,其中信号量s1代表的缓

7、冲区这种资源,初值为1,代表有1个buffer。s2代表buffer是否有数据,初值为0,所以也称这种信号量叫做资源信号量。(2)实现流程<生产者>8p(s1)"判断buffer是否为空"put放入数据v(s2)"设置buffer有数据的标志,给消费者发一个有数据的信号"<消费者>p(s2)"判断buffer是否有数据"get取走数据v(s1)"设置buffer为空标志"3.2一个buffer,多个生产者,多个消费者(1)规则只有buffer为空才能put;只有buffer中有数据才能get;不允许多个put操作同时进行;不允许多个ge

8、t操作同时进行。这时buffer变成了临界资源,消费者之间需要互斥地使用,生产者之间也需要互斥地使用,消费者和生产者之间也需要互斥地使用,这时设置两个信号量s1,s2实现同步,例外设置S信号,代表buffe

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

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

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