2010-03-21 181 views

回答

18

你可以把它看成:

避免:当accsessing共享资源,使用信号:不要跨进程/线程多张

防止共享资源。如果锁定了多个信号量,请确保以相反的锁定顺序解锁。始终确保处理关键部分内的错误,以便在所有条件下释放信号量。

3

避免死锁:手段,每当请求某一特定资源由特定工艺制成,你看看可用的资源,如果未来资源的进程的需要已经在使用的资源,确定在资源被授予的情况下发生死锁的可能性。如果可能的话,不要授予资源,如果不可能,则授予资源。

死锁预防:确保至少有一个发生死锁的条件在任何时候都不满足。这可以通过在系统中请求和授予资源的方式来实现。

20

僵局:

死锁是一种情况,两个或两个以上相互竞争的行动都在等待对方来完成,因而没有过一样。它也可以定义为一组被阻塞的进程,每个进程拥有一个资源并等待获取集合中另一个进程拥有的资源。

例如,如果有一个系统有两个磁盘驱动器。如果有两个进程P1和P2分别保存一个磁盘驱动器并且每个都需要另一个,则发生死锁情况。

•互斥: 以下条件将同时在僵局的情况下举行只有一个进程时可以使用资源

•保持和等待:一个进程保持至少一个资源正在等待获取其他进程

•无抢占举行额外资源:资源只能自愿公布由过程拿着它,这个过程完成后,其任务

•循环等待:存在一组{P0, P1,...,Pn}等待进程成功h P0正在等待P1保存的资源,P1正在等待P2保存的资源...... Pn-1正在等待Pn保存的资源,并且Pn正在等待一个资源由P0持有。是

死锁预防,避免和检测之间的区别如下:

预防

•我们的目标是确保死锁的必要条件不能认为至少一个。

•死锁预防通常无法实施。

•系统不需要额外的关于每个过程的每种资源潜在用途的附加信息。

•为了让系统防止死锁状态,它不需要知道存在,可用和请求的所有资源的所有细节。

•死锁预防技术包括非阻塞的同步算法,序列化令牌,Dijkstras算法等

•死锁的预防资源分配策略是保守的,它在提交的资源。

•一次请求所有资源。

•在某些情况下,抢先超过常规需要。

回避:

•为避免死锁的目标是到系统不能进入不安全状态。

•避免死锁通常无法实现。

•系统需要有关每个过程的每种资源总体潜在用途的附加先验信息。

•为了让系统能够确定下一个状态是安全还是不安全,它必须提前知道存在,可用和请求的所有资源的数量和类型。

•死锁避免技术包括银行家算法,等待/模具,伤口/等待等

•资源分配策略避免死锁选择该检测和预防的中间。

•需要操纵,直到找到至少一条安全路径。

•没有先占。

检测:

•我们的目标是发生或者发生之前之后检测到死锁。

•在发生死锁之前检测死锁的可能性要困难得多,而且实际上通常是不可判定的。但是,在特定环境中,使用锁定资源的特定手段,死锁检测可能是可判定的。

•在所有情况下,系统不需要额外的关于每个过程的每种资源潜在用途的附加先验信息。

•为了让系统检测到死锁情况,它不需要知道存在,可用和请求的所有资源的所有细节。

•死锁检测技术包括但不限于模型检查。该方法构建了一个有限状态模型,在该模型上执行进度分析并查找模型中的所有可能的终端集。

•死锁检测的资源分配策略非常宽松。资源按要求授予。

•需要定期调用以测试死锁。

•可以看到抢占。

0

死锁预防和死锁避免

死锁预防之间的区别:
通过约束如何对资源的请求,可以在系统中进行,它们是如何被处理(系统设计)防止死锁。 目标是确保至少有一个死锁的必要条件永远不会成立。

死锁避免:
系统动态地考虑每一个请求,并决定它是否是安全的在这一点上授予它, 系统需要关于每个进程的总体潜在用途每个资源的附加先验信息。 允许更多的并发性。 类似于交通灯 和指挥交通的警务人员之间的区别。