进程同步习题全.ppt

进程同步习题全.ppt

ID:49499538

大小:373.00 KB

页数:95页

时间:2020-02-06

进程同步习题全.ppt_第1页
进程同步习题全.ppt_第2页
进程同步习题全.ppt_第3页
进程同步习题全.ppt_第4页
进程同步习题全.ppt_第5页
资源描述:

《进程同步习题全.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、设有n个进程共享一个程序段,对如下两种情况:(1)如果每次只允许一个进程进入该程序段;(2)如果每次最多允许m个进程(M<=n)同时进入该程序段。试问:所采用的信号量初值是否相同?信号量值的变化范围如何?所采用信号量的初值不相同。在情况(1)中,信号量的初值为1,信号量值的变化范围是l,0,-1…-(n-1)。在情况(2)中,信号量的初值为M,信号量值的变化范围是M,m-1,m-2…(m-n)。进程同步习题【例】一个buffer,一个生产者,一个消费者,生产者只生产一个东西,消费者只进行一次消费,即:生产者只进行一次putdata操作,消费者

2、只进行一次getdata操作。【解答】设置信号量full,表示buffer是否有数据,初值为0生产者消费者putdataP(full)V(full)getdata【例】一个buffer,一个生产者,一个消费者,生产者不断进行putdata操作,消费者不断进行getdata操作,即生产者不断生产,消费者不断消费。【解答】buffer为空时,才能进行putdata操作,只有buffer有数据时,才能进行getdata操作信号量full:是否有数据初值为0empty:是否为空,初值为1生产者:repeatP(empty)putdataV(full)

3、消费者:repeatP(full)getdataV(empty)【例】一个buffer,多个生产者,多个消费者,多个生产者和消费者都在不断地存取buffer,即生产者不断地进行putdata操作,消费者不断进行getdata操作。【解答】只有buffer为空时能进行putdata操作,只有buffer有数据时能进行putdata操作。不允许多个进程同时操作buffer,即不允许多个消费者同时进行getdata,不允许多个生产者进行putdata操作信号量full:buffer是否有数据,初值为0empty:buffer是否为空,初值为1mut

4、ex:buffer是否可操作,初值为1生产者irepeatP(empty)P(mutex)putdataV(mutex)V(full)消费者irepeatP(full)P(mutex)getdataV(mutex)V(empty)【例】多个生产者,多个消费者,N个buffer,多次循环存取buffer,即多个生产者不断进行putdata操作,多个消费者不断进行getdata操作【解答】只有buffer有空间时才能进行putdata操作只有buffer有数据时才能进行getdata操作不允许多个消费者和多个生产者同时操作信号量full:表示bu

5、ffer是否有数据,初值为0empty:表示buffer是否为空,初值为nmutex:表示buffer是否可操作,初值为1生产者irepeatP(empty)P(mutex)putdataV(mutex)V(full)消费者jrepeatP(full)P(mutex)putdataV(mutex)V(empty)【改进】putdata和getdata操作都在临界区中,因此多个进程对多个buffer的操作不能并行进行的,进程间并行操作的程度很低。实际上只要保证多个进程同时操作不同buffer就可以实现对整个buffer的并行操作。getEBuf

6、fer()返回空的buffer号getEBuffer()return(pbuffer+1)modngetDBuffer()返回有数据的buffer号getDBuffer()return(pdata+1)modnsemaphoremutex,empty,full=1,n,0integerpbuff,pdata=0,0生产者i消费者jrepeatrepeatP(empty)P(full)P(mutex)P(mutex)in=getEBuffer()out=getDBuffer()V(mutex)V(mutex)putdata(in)getdata

7、(out)V(full)V(empty)【练习】如图,有多个PUT操作同时向Buff1放数据,有一个MOVE操作不断地将Buff1的数据移到Buff2,有多个GET操作不断地从Buff2中将数据取走。Buff1的容量是m,Buff2的容量是n,PUT,MOVE,GET每次操作一个数据,在操作的过程中要保证数据不丢失。试用P,V原语协调PUT,MOVE操作,并说明每个信号量的含义和初值。Buff1Buff2MOVEPUTGET【解答】三类进程:多个PUT类进程,一个MOVE类进程,多个GET类进程操作规则1只有buff1有空间才能进行PUT操作

8、2只有buff1有数据,buff2有空间才能进行MOVE操作3只有buff2有数据才能进行GET操作4不允许多个进程同时操作buff15不允许多个进程同时操作buf

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

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

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