OS-并发:死锁和饥饿

操作系统作业-并发:死锁和饥饿

 

1. 分别举例说明什么是可重用资源和可消耗资源?

可重用资源包括处理器、I/O通道、内存和外设、设备,以及诸如文件,数据库和信号量之类的数据结构。诸如此类资源,一次仅供一个进程安全使用且不因使用而耗尽,进程得到资源单元并使用后,会释放这些单元供其他进程再次使用。

可消耗资源的例子有中断、信号、消息和I/O缓冲区中的信息。这类资源是可被创建(生产)和销毁(消耗)的资源。某种类型可消耗资源的数量通常没有限制,无阻塞生产进程可以创建任意数量的这类资源。消费进程得到一个资源时,该资源就不再存在。

 

2. 请论述产生死锁的充分必要条件

产生死锁的充分条件而非必要条件有三个:

  1. 互斥。一次只有一个进程可以使用一个资源;
  2. 占有且等待。当一个进程等待其他进程时,继续占有已分配的资源;
  3. 不可抢占。不能强行抢占进程已占有的资源。

上面三个条件可能产生的最终结果是:

  1. 循环等待。存在一个闭合的进程链 ,每个进程至少占有此链中下一个进程所需的一个资源。

因为前三条导致了第四条的情况,因此这四个条件一起构成了死锁的充分必要条件。

 

3. 如何防止占有且等待条件

防止占有且等待的条件,可以要求进程一次性地请求所有需要的资源,并阻塞这个进程直到所有请求都满足。

但此种方法有两个低效性:

  1. 一个进程可能被阻塞很长时间,以等待满足所有请求都同时满足,而实际上,只要有一部分资源,它就可以继续执行;
  2. 分配给一个进程的资源可能会在相当长的一段时间不会被该进程使用,且不能被其他进程使用。

此外,一个进程可能事先并不知道它所需要的所有资源。

 

4. 如何防止循环等待条件

防止循环等待可通过定义资源类型的线性顺序来预防。若一个进程已分配了R类型的资源,则其接下来请求的资源只能是那些排在R类型之后的资源。

 

5. 死锁避免、检测和预防之间的区别是什么

死锁预防分为间接死锁预防方法和直接死锁预防方法。间接死锁预防方法即防止互斥、不可抢占和占有且等待这三个必要条件中的任何一个条件的发生,直接死锁预防方法是防止循环等待的发生。但都具有低效性。

死锁避免允许三个死锁产生的必要条件发生,但通过明智地选择,可确保永远不会到达死锁点,与死锁预防相比,可允许更多的并发。使用死锁避免须事先声明每个进程请求的最大资源,进程的执行顺序是没有任何同步要求的限制的,分配的资源数量须是固定的,最后就是在占有资源时,进程不能退出,这样所产生的代价也较大。

死锁检测只要有可能,就会给进程分配其所请求的资源,操作系统周期性地执行一个算法来检测循环等待条件,若检测到了就采取恢复策略。其优点是可以尽早地检测死锁情况,且因为它基于系统状态的逐渐变化情况,算法较简单。但频繁的检测会耗费相当多的处理器时间。

      

6. 什么是安全序列、安全状态

安全序列是指一个进程序列{P1,…,Pn}是安全的,即对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj(ji)当前占有资源量之和。

       安全状态是指至少有一个资源分配序列不会导致死锁(即所有进程都能运行直到结束)。

 

7. 请简要论述银行家算法

在进程并发运行时,进程申请的资源数量是有限的,每个进程在第一次申请资源时要声明完成该进程所需的所有资源,在满足所有资源要求并使用后,进程应及时归还资源。操作系统在进程申请的资源数量不超过空闲资源的最大值时,都应尽量满足进程的申请需求。

 

8. 请简要论述死锁检测流程

每一次都查找一个进程,使得可用资源能满足该进程的资源请求,然后假设统一这些资源,让该进程运行直到结束,再释放它的所有资源,并进行标记。然后,算法再寻找另一个还未被标记的可以满足资源请求的进程。当且仅当这个算法的最终结果有未标记的进程时,才存在死锁,且每个未标记的进程都是死锁的。

 

9. 假定系统中有5个进程P1、P2、P3、P4和P5;3类资源A、B和C,其资源数量分别为17,5和20. T0时刻的资源分配情况如下:

       系统采用银行家算法实施死锁避免策略,试问

       1T0时刻是否为安全状态?若是,请给出安全序列

       2T0时刻若进程P2请求资源(0,3,4),是否能实施资源分配?为什么?

       3T0时刻若进程P4请求资源(2,0,1),是否能实施资源分配?为什么?

(1)

T0时刻是安全状态,安全序列可为:{P5,P4,P3,P2,P1}

 

(2)

如图所示,在给P2尽可能地分配资源后,剩下的资源为(2,0,0),不能满足黄色框中任意一个进程的需要(即使其能够得到资源完成运行),所以不能实施资源分配

 

(3)

       如图所示,在给P4尽力地分配资源后,剩下的资源为(0,3,2)同时运行P4.

在P4运行完后归还资源(4,0,5)。可以满足实施资源分配,安全序列可以为{P4,P5,P3,P2,P1}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值