UNIX编程练习

2018-12-24 00:01

第二章 习题

8、如图2-58所示,设有一个可以存放m个数据的有界缓冲区,现有一组进程不断将数据放入该缓冲区,另有一组进程bu断从缓冲区取出数据使用。请定义信号量并利用P、V操作画出逻辑框图,实现进程对该有界缓冲区共享使用的方案。若取出速度远远大于放入速度,则应该如何修改框图,为什么? 有界缓冲区

图2-58

解:(1)设置信号量:互斥使用有界缓冲区的信号量s,初值为1;

同步信号量:有界缓冲区的大小,即可以存放产品的最大数m,初值为m; 有界缓冲区中已经存放的产品个数n,初值为0;

逻辑框图如下:

放入数据 取出数据

P(m) P(n) P(s) P(s) 放入数据到缓冲区 从缓冲区取出数据 V(s) V(s) V(n)

V(m)

(2)若取出数据远远大于放入速度,只需去掉P(m)、V(m),因为取出速度>放入速度,不需要限定缓冲区的大小,即可以存放产品的最大数m。

9、如图2-59所示,进程A、B、C公用两个有界缓冲区1、2,其长度分别可以存放m与n个数据。进程A不断把数据放入有界缓冲区1中,进程B从有界缓冲区1中取出数据,加工后,送入有界缓冲区2中,进程C从有界缓冲区2取出数据打印。请用P、V操作实现三 个进程同步,并画出逻辑图。

有界缓冲区1 有界缓冲区2 B A C 图2-59 习题9用图

解:设置信号量:

有界缓冲区1:互斥使用有界缓冲区的信号量s1,初值为1;

有界缓冲区的大小,即可以存放产品的最大数m1,初值为m; 有界缓冲区中已经存放的产品个数为n1,初值为0;

有界缓冲区2:互斥使用有界缓冲区的信号量s2,初值为1;

有界缓冲区的大小,即可以存放产品的最大数m2,初值为n; 有界缓冲区中已经存放的产品个数为n2,初值为0;

逻辑框图如下:

A P(m1) B P(n1) C P(n2)

P(s1) P(s1) P(s2) 放入数据 取出数据 取出数据 V(s1) V(s1) V(s2) V(n1) P(m2) V(m2) P(s2) 加工后放入数据 V(s2) V(n2)

11、一条东西方向的河上有一座桥,桥宽仅能允许一辆汽车通过。桥上同一方向的汽车可以鱼贯而行,但若桥两边的汽车同时上桥向对面行驶就会发生阻塞。试用信号量机制设计一个避免死锁的算法,并画出流程图。

若甲车想往南过桥时,乙车正在向北过桥,则甲车只能等待;如果此时不断有车向北过桥,则甲车将处于“饿死”状态请设计一个避免“饿死”的算法,并画出流程图。

避免死锁的流程图如下:

向北方向 P(N) C1= = 0? Y N P(S) C1++ V(N) 过桥 P(N) C1-- C1= =0? Y N V(S) V(N)

向南方向 P(S) C2= = 0? Y N P(N) C2++ V(S) 过桥 P(S) C2-- C2= =0? Y N V(N) V(S)

18、一位银行家向若干客户承诺一定的贷款额度。现有四个客户,需要贷款的最大额度之和为22个单位的资金。银行家知道不可能所有客户同时都需要最大贷款额,所以只保留10个单位的资金为客户服务。在某一时刻,资金分配如下: 客户 Zhang Wang Li Zhao 最大需求 6 5 4 7 已分配 1 1 2 4 请问: (1) 当Zhao在申请一个单位资金时,银行家能否给他,为什么?

(2) 若申请一个单位资金的要求分别来自Zhang、Wang、Li时,情况如何,为什么? 解:(1)按题意,这一时刻银行家所剩资金还有2个单位,若分给Zhao一个单位资金,客户需求与分配情况如下: 客户 Zhang Wang Li Zhao 最大需求 6 5 4 7 已分配 1 1 2 5 当前可用资金 1 此时还剩下1个单位的可用资金,此时,无论将1个单位的资金分给Zhang、Wang、Li还是Zhao自己都不能满足各自的需求,所以4个客户都无法满足,即找不到安全序列。在某一时刻,银行家是可以满足的客户的需求的,但是由于Zhao申请一个单位资金的请求,使得银行家无法满足4个客户的需求,因此Zhao在申请一个单位资金时,银行家是不能给他的。

(2)若Li申请1个单位的资金时,银行家所剩资金还有2个单位,客户需求与分配情况如下:

客户 Zhang Wang Li Zhao 最大需求 6 5 4 7 已分配 1 1 3 4 当前可用资金 1 当前所剩可用资金只能满足Li的需求 ①若给Li分1个单位资金,客户需求与分配情况如下: 客户 Zhang Wang Li Zhao 最大需求 6 5 4 7 已分配 1 1 4 4 当前可用资金 0 此时,Li可以满足,可以归还4个单位的资金,当前可用资金为4个单位,可以满足Zhao或Wang的要求。

②若给Zhao分3个单位的资金,客户需求与分配情况如下:

客户 Zhang Wang Zhao 最大需求 6 5 7 已分配 1 1 7 当前可用资金 1 此时Zhao可以满足,可以归还7个单位的资金,当前可用资金为8个单位,能够满足Wang或zhang的贷款要求。

③若给Wang分4个单位的资金,客户需求与分配情况如下: 客户 Zhang Wang 最大需求 6 5 已分配 1 5 当前可用资金 4 此时Wang可以满足,可以归还5个单位的资金,当前可用资金为9个单位,能够满足Zhang的贷款要求。

④若给Zhang 分5个单位的资金,客户需求与分配情况如下: 客户 Zhang 最大需求 6 已分配 6 当前可用资金 4 则Zhang可以满足,归还10个单位的资金,此时,银行家将10个单位的资金全部收回。 假如按照Li、Zhao、Wang、Zhang序列分配资金,所有的贷款都可以完成,不会发生死锁。所以Li申请一个单位的请求可以满足。

而Wang、Zhang的请求如Zhao的情况一样,不能满足,银行家是不可以给他。


UNIX编程练习.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:二年级数学第五单元练习卷 姓名: 班别:

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: