首页 > 试题广场 >

选出不正确的叙述。

[不定项选择题]
选出不正确的叙述。
  • 死锁是指因相互竞争资源使得系统中有多个阻塞进程的情况
  • 若系统中并发运行的进程和资源之间满足互斥条件、占有且申请、不可抢占和环路条件,则可判定系统中发生了死锁
  • 在对付死锁的策略中,解除死锁通常都是和检测死锁配套使用
  • 产生死锁的原因可归结为竞争资源和进程推进顺序不当
  • 在死锁的解决方法中,由于预防死锁而采用静态分配资源策略,所以对资源的利用率不高
推荐
产生死锁的原因主要是:
(1) 因为系统资源不足。
(2) 进程运行推进的顺序不合适。
(3) 资源分配不当等。
产生死锁的四个必要条件:
(1)互斥条件:一个资源每次只能被一个进程使用。
(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
避免死锁:
死锁的预防是通过破坏产生条件来阻止死锁的产生,但这种方法破坏了系统的并行性和并发性。
死锁产生的前三个条件是死锁产生的必要条件,也就是说要产生死锁必须具备的条件,而不是存在这3个条件就一定产生死锁,那么只要在逻辑上回避了第四个条件就可以避免死锁。
避免死锁采用的是允许前三个条件存在,但通过合理的资源分配算法来确保永远不会形成环形等待的封闭进程链,从而避免死锁。该方法支持多个进程的并行执行,为了避免死锁,系统动态的确定是否分配一个资源给请求的进程。
常用的避免死锁的方法:
1、有序资源分配法
2、银行家算法
解决死锁问题的策略:
1、条件一:互斥条件
条件一念一否定的,因为资源的互斥性是由其自身的性质决定的。但是可以采用虚拟设备技术能排除非共享设备死锁的可能。
2、条件二:不剥夺条件
很难实现。系统一般让资源占有者自己主动释放资源,而不是采用抢占的方式。
3、条件三:占有并等待
在资源分配策略上可以采取静态的一次性资源分配的方法来保证死锁不可能发生,这是一种很保守的静态预防死锁的方法,但是资源利用率低下。
4、条件四:环路条件
在进行资源分配前检查是否会出现环路,预测是否可能发生死锁,只要有这种可能就不予以分配。即采用动态分配资源的方法。
总结来看解决死锁的策略有以下几个:
1、采用资源静态分配方法预防死锁。
2、采用资源动态分配、有效的控制分配方法来避免死锁。
3、当死锁发生时检测出死锁,并设法修复。


也可查看 以下连接:
https://www.ibm.com/developerworks/cn/java/j-lo-deadlock/
编辑于 2016-11-04 16:40:51 回复(2)
更多回答
根据操作系统中的定义:死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。
死锁的四个必要条件:

1互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。
2请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。
3非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
4循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。

发表于 2016-04-13 21:41:54 回复(5)
对于必要不充分条件这一点,举个栗子给大家看看:
A 占有资源 r1,请求 r2;B 占有 r2,请求 r1;C 占有 r1。
注意,这里的资源并不是唯一的,r1 有两份
此时,A,B 构成循环等待,但是并不一定死锁,因为当 C 释放 r1 时 B 可以不用继续等待 A 的 r1。
发表于 2016-09-05 23:30:27 回复(0)
如果程序中有多个线程竞争多个资源,就可能会产生死锁。当一个线程等待由另一个线程持有的锁,而后者正在等待已被第一个线程持有的锁时,就会发生死锁。 要避免死锁,应该确保在获取多个锁时,在所有的线程中都以相同的顺序获取锁。尽量少用临界资源。
发表于 2014-11-21 17:54:21 回复(0)
AB  不会
发表于 2016-01-08 10:10:27 回复(0)
这道题不正确的叙述还包括E。
因为避免死锁(银行家算法)采用的是动态资源分配策略,而预防死锁破坏死锁产生的四个必要条件是静态资源分配策略。
发表于 2017-01-15 11:55:03 回复(0)
所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。
重点是相互等待。
发表于 2016-04-07 22:18:10 回复(1)
E也错误!资源静态分配属于死锁预防!
发表于 2017-05-24 09:21:34 回复(0)
避免死锁最常用的算法是银行家算法,资源不是动态分配吗?
发表于 2016-07-17 15:57:01 回复(0)
e不应该是预防死锁吗?怎么成了避免死锁?银行家算法才是避免死锁啊
发表于 2016-05-01 15:37:13 回复(1)
求详细解释。。。。
发表于 2016-02-03 19:30:20 回复(0)
AB 网上找的答案。。。a主要是因为推进不当导致的
编辑于 2015-08-21 10:45:09 回复(0)
死锁是指因相互竞争资源并且各进程推进 不当使得系统中有多个阻塞进程相互等待的情况
B 是死锁的必要条件而已
编辑于 2016-01-23 14:53:08 回复(5)
必要不充分
发表于 2024-04-20 07:47:31 回复(0)
产生死锁的原因主要是:
(1) 因为系统资源不足。
(2) 进程运行推进的顺序不合适。
(3) 资源分配不当等。
产生死锁的四个必要条件:
(1)互斥条件:一个资源每次只能被一个进程使用。
(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
避免死锁:
死锁的预防是通过破坏产生条件来阻止死锁的产生,但这种方法破坏了系统的并行性和并发性。
死锁产生的前三个条件是死锁产生的必要条件,也就是说要产生死锁必须具备的条件,而不是存在这3个条件就一定产生死锁,那么只要在逻辑上回避了第四个条件就可以避免死锁。
避免死锁采用的是允许前三个条件存在,但通过合理的资源分配算法来确保永远不会形成环形等待的封闭进程链,从而避免死锁。该方法支持多个进程的并行执行,为了避免死锁,系统动态的确定是否分配一个资源给请求的进程。
常用的避免死锁的方法:
1、有序资源分配法
2、银行家算法
解决死锁问题的策略:
1、条件一:互斥条件
条件一念一否定的,因为资源的互斥性是由其自身的性质决定的。但是可以采用虚拟设备技术能排除非共享设备死锁的可能。
2、条件二:不剥夺条件
很难实现。系统一般让资源占有者自己主动释放资源,而不是采用抢占的方式。
3、条件三:占有并等待
在资源分配策略上可以采取静态的一次性资源分配的方法来保证死锁不可能发生,这是一种很保守的静态预防死锁的方法,但是资源利用率低下。
4、条件四:环路条件
在进行资源分配前检查是否会出现环路,预测是否可能发生死锁,只要有这种可能就不予以分配。即采用动态分配资源的方法。
总结来看解决死锁的策略有以下几个:
1、采用资源静态分配方法预防死锁。
2、采用资源动态分配、有效的控制分配方法来避免死锁。
3、当死锁发生时检测出死锁,并设法修复。


也可查看 以下连接:
发表于 2022-07-02 08:20:47 回复(0)
B:正在发生死锁的路上
发表于 2022-03-01 17:57:40 回复(0)
必要条件全满足不一定会死锁,破坏其中任何至少一个可确信预防死锁。多个阻塞进程很正常,互相等待彼此不释放的资源,才不正常,这才叫阻塞。
发表于 2021-12-23 23:50:01 回复(0)
<p>a,死锁的阻塞进程是不会释放的,a说的阻塞进程可能会释放</p><p>b,写的是避免死锁的条件</p>
发表于 2020-06-28 23:53:57 回复(0)
产生死锁的必要条件:互斥、请求和保持、不可抢占、循环等待 (产生了死锁,一定具备四个必要条件,而具备四个条件,不一定产生死锁。)
发表于 2020-01-05 11:41:39 回复(0)
a:死锁 一定是多个进程竞争资源并形成相互等待。如果只说竞争资源造成阻塞并不一定发生死锁,因为系统是允许阻塞发生的,比如两进程争用打印机。 b:必要条件都满足不一定是死锁,检查死锁可用死锁定理。
发表于 2019-12-09 20:03:43 回复(0)
B不对因为四个条件是死锁的必要条件而不是充分条件
发表于 2019-07-11 11:19:16 回复(0)