首页 > 试题广场 >

以下关于死锁,描述正确的有()

[不定项选择题]
以下关于死锁,描述正确的有()
  • 有序分配锁资源可以预防死锁
  • 银行家算法是用于检测死锁的
  • 剥夺死锁进程的所有资源可以解除死锁
  • 以上描述都不对
A.有序分配资源按某种规则系统中的所有资源统一编号(例如打印机为1、磁带机为2、磁盘为3、等等),申请时必须以上升的次序。系统要求申请进程:
1、对它所必须使用的而且属于同一类的所有资源,必须一次申请完;
2、在申请不同类资源时,必须按各类设备的编号依次申请。例如:进程PA,使用资源的顺序是R1,R2; 进程PB,使用资源的顺序是R2,R1;若采用动态分配有可能形成环路条件,造成死锁。
采用有序资源分配法:R1的编号为1,R2的编号为2;
PA:申请次序应是:R1,R2
PB:申请次序应是:R1,R2
这样就破坏了环路条件,避免了死锁的发生
B.银行家算法是避免死锁的一种重要方法,防止死锁的机构只能确保上述四个条件之一不出现,则系统就不会发生死锁。通过这个算法可以用来解决生活中的实际问题,如银行贷款等。
发表于 2017-08-18 11:17:29 回复(0)
  1. 互斥条件:一个资源每次只能被一个进程使用。
  2. 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
  3.  不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
  4. 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
  •         死锁的预防
死锁的预防是保证系统不进入死锁状态的一种策略。它的基本思想是要求进程申请资源时遵循某种协议,从而打破产生死锁的四个必要条件中的一个或几个,保证系统不会进入死锁状态。

   〈1〉打破互斥条件。即允许进程同时访问某些资源。但是,有的资源是不允许被同时访问的,像打印机等等,这是由资源本身的属性所决定的。所以,这种办法并无实用价值。

   〈2〉打破不可抢占条件。即允许进程强行从占有者那里夺取某些资源。就是说,当一个进程已占有了某些资源,它又申请新的资源,但不能立即被满足时,它必须释放所占有的全部资源,以后再重新申请。它所释放的资源可以分配给其它进程。这就相当于该进程占有的资源被隐蔽地强占了。这种预防死锁的方法实现起来困难,会降低系统性能。    

    〈3〉打破占有且申请条件。可以实行资源预先分配策略。即进程在运行前一次性地向系统申请它所需要的全部资源。如果某个进程所需的全部资源得不到满足,则不分配任何资源,此进程暂不运行。只有当系统能够满足当前进程的全部资源需求时,才一次性地将所申请的资源全部分配给该进程。由于运行的进程已占有了它所需的全部资源,所以不会发生占有资源又申请资源的现象,因此不会发生死锁。
  • 死锁避免

1.安全序列

  我们首先引入安全序列的定义:所谓系统是安全的,是指系统中的所有进程能够按照某一种次序分配资源,并且依次地运行完毕,这种进程序列{P1,P2,...,Pn}就是安全序列。如果存在这样一个安全序列,则系统是安全的;如果系统不存在这样一个安全序列,则系统是不安全的。

  安全序列{P1,P2,...,Pn}是这样组成的:若对于每一个进程Pi,它需要的附加资源可以被系统中当前可用资源加上所有进程Pj当前占有资源之和所满足,则{P1,P2,...,Pn}为一个安全序列,这时系统处于安全状态,不会进入死锁状态。

  虽然存在安全序列时一定不会有死锁发生,但是系统进入不安全状态(四个死锁的必要条件同时发生)也未必会产生死锁。当然,产生死锁后,系统一定处于不安全状态。 



- 撤销所有的死锁进程 
进程回退(Roll Back)再启动 
按照某种原则逐一撤销死锁的进程直到。。。 
按照某种原则逐一抢占资源(资源被抢占的进程必须回退到之前对应的状态),直到。。。
发表于 2017-08-18 16:43:21 回复(0)
银行家算法就是用来避免死锁的
发表于 2017-09-06 17:27:44 回复(1)
银行家算法避免死锁
发表于 2017-08-29 22:39:25 回复(0)

图片来源)

表2-14 死锁处理策略的比较
-- 资源分配策略 各种可能模式 主要优点 主要缺点
死锁预防 保守,宁可资源闲置 一次请求所有资源,资 源剥夺,资源按序分配 适用于做突发式处理 的进程,不必进行剥夺 效率低,进程初始化时 间延长;剥夺次数过多; 不便灵活申请新资源
死锁避免 是”预防“和”检测“ 的折中(在运行时判断是 否可能死锁) 寻找可能的安全允许 顺序 不必进行剥夺 必须知道将来的资源 需求;进程不能被长时间 阻塞
死锁检测 宽松,只要允许就分配 资源 定期检查死锁是否已 经发生 不延长进程初始化时 间,允许对死锁进行现场 处理 通过剥夺解除死锁,造 成损失
编辑于 2017-08-19 13:07:25 回复(0)
死锁的检测:观察资源分配图
死锁的解除:剥夺资源;进程回退;进程撤销
死锁的避免:银行家算法:根据当前每个进程还需要多少资源、进程中还剩多少资源,判断如果所有进程同时请求资源是否存在合理的调度序列,来确定是否应该满足进程的请求
死锁的预防:进程共用资源;不能持有资源的同时去请求资源
发表于 2020-04-23 22:15:57 回复(0)
银行家算法用来避免死锁而非检测死锁
发表于 2019-04-04 11:13:07 回复(0)
银行家算法是用来避免死锁的
发表于 2019-03-26 12:59:49 回复(0)
银行家算法是用来避免死锁的。
发表于 2017-08-25 11:37:22 回复(0)