第三章 进程管理【操作系统】

发布时间:2024年01月07日
1.有三个进程A、B、C使用一个包含N(N>0)个单元的缓冲区。A每次用produce( )生成一个正整数并用put( )送入缓冲区某一空单元中;B每次用getodd( )从该缓冲区中取出一个奇数并用countodd( )统计奇数个数;C每次用geteven( )从该缓冲区中取出一个偶数并用counteven( )统计偶数个数。请用信号量机制实现这三个进程的同步与互斥活动。

参考答案:

A、B、C之间的临界资源为缓冲区,AB、AC之间同步?

设临界资源缓冲区的公有信号量为mutex,表示可用缓冲区的数量,mutex=1

A的私用信号量为empty,表示缓冲区中空单元的个数,empty=N

B的私用信号量为odd,表示缓冲区中奇数的个数,odd=0

C的私用信号量为even,表示缓冲区中偶数的个数,even=0

2.桌上有个只能盛得下一个水果的空盘子。爸爸可向盘中放苹果或桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定:当盘子空时,一次只能放入一个水果供吃者取用。试用信号量机制实现爸爸、儿子和女儿这三个循环进程之间的同步。

参考答案:

father进程、son进程和daughter进程之间的临界资源为盘子,father和son之间存在同步,father和daughter之间存在同步,由于只有一个father进程,只有盘子里有橘子才能被son拿走,设置father和son之间的私有信号量为orange,初始值=0;只有盘子里有苹果才能被daughter拿走,设置father和daughter之间的私有信号量为apple,初始值=0;只有盘子为空,father进程才能往里放水果,设置father与son和daughter之间的私有信号量为empty,初始值=1.

3.有一类打印进程,有一类计算进程,前者进行计算并将计算结果向一个缓冲区进行写,后者从该缓冲区读取数据,并打印出来。请用信号量机制实现这两类进程的同步关系

参考答案:

4.系统中有5个进程(p1, p2, p3, p4, p5)和3种类型的资源(A, B, C),资源的数量分别为(17, 5, 20),T0时刻系统状态见下表。系统采用银行家算法实施死锁避免策略。
(1)T0时刻是否是安全状态?若是,请给出安全序列。
(2)若在T0时刻进程P2提出请求资源分配(0,3,4),系统能否将资源分配给它,为什么?
(3)若在T0时刻进程P4提出请求资源分配(2,0,1),系统能否将资源分配给它,为什么?

参考答案:

(1)由题可得出T0时刻各进程的资源需求情况:

????????? P1(3? 4? 7),P2(1? 3? 4 ),P3(0? 0? 6),P4(2? 2? 1),P5(1? 1? 0)

剩余资源为(2? 3? 3) 由安全性分析后得到一个安全序列{P5,P4,P3,P2,P1}使得所有进程可执行完毕,故T0时刻是安全的。(注:安全序列不唯一)

{P4,P5,P3,P2,P1}、{P4,P2,P3,P5,P1}、{P4,P3,P2,P5,P1}

{P4,P5,P1,P2,P3}、{P5,P4,P3,P2,P1}

(2)P2请求资源(0? 3? 4)>剩余资源(2? 3? 3),所以不能分配

(3)P4请求资源(2? 0? 1)≤剩余资源(2? 3? 3)

且如果分配后P4的需求为(0? 2? 0),剩余资源(0? 3? 2)

经安全性分析后存在一个安全序列{P4,P5,P3,P2,P1}使得所有进程可执行完毕,故该状态是安全的,所以在T0时刻可以将资源分配给P4,满足该进程的资源请求。(注:安全序列不唯一)

文章来源:https://blog.csdn.net/m0_64986186/article/details/135434352
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。