死锁
2016-04-24 20:38
190 查看
大部分的死锁都和资源相关。
资源:这类需要排他性使用的对象。可以是硬件设备(如磁带机)或是一组信息(如数据库中一个加锁的记录)。
资源可分为两类:可抢占的和不可抢占的。
可抢占资源可以从拥有它的进程中抢占而不会产生任何副作用,存储器就是一类可抢占的资源。
不可抢占资源:是指在不引起相关计算失败的情况下,无法把它从占有它的进程处抢占过来。
总之,死锁与不可抢占资源有关,有关可抢占资源的潜在死锁通常可以通过在进程之间重新分配资源而化解。
死锁的规范定义:如果一个进程集合中的每个进程都在等待只能由该进程集合中的其他进程才能引发的事件,那么该进程集合就是死锁的。
资源死锁
在死锁进程集合中的每个进程都在等待另一个死锁的进程已经占有的资源。但是由于所有进程都不能运行,它们中的任何一个都无法释放资源,所以没有一个进程可以被唤醒。这种死锁称为“资源死锁”。
(资源)死锁的4个条件:
1)互斥条件。每个资源要么已经分配给了一个进程,要么就是可用的。
2)占有和等待条件。已经得到了某个资源的进程可以仔请求新的资源。
3)不可抢占条件。已经分配给一个进程中的资源不能强制性地被抢占,它只能被占有它的进程显示地释放。
4)环路等待条件。死锁发生时,一定有两个或两个以上的进程组成的一条环路,该环路中的每一个进程都在等待着下一个进程所占有的资源。
死锁避免:
死锁预防:
1)破坏互斥条件:
避免分配那些不是绝对必需的资源,尽量做到尽可能少的进程可以真正请求资源。
2)破坏占有和等待条件:
3)破坏不可抢占的条件
4)破坏环路等待条件
资源:这类需要排他性使用的对象。可以是硬件设备(如磁带机)或是一组信息(如数据库中一个加锁的记录)。
资源可分为两类:可抢占的和不可抢占的。
可抢占资源可以从拥有它的进程中抢占而不会产生任何副作用,存储器就是一类可抢占的资源。
不可抢占资源:是指在不引起相关计算失败的情况下,无法把它从占有它的进程处抢占过来。
总之,死锁与不可抢占资源有关,有关可抢占资源的潜在死锁通常可以通过在进程之间重新分配资源而化解。
死锁的规范定义:如果一个进程集合中的每个进程都在等待只能由该进程集合中的其他进程才能引发的事件,那么该进程集合就是死锁的。
资源死锁
在死锁进程集合中的每个进程都在等待另一个死锁的进程已经占有的资源。但是由于所有进程都不能运行,它们中的任何一个都无法释放资源,所以没有一个进程可以被唤醒。这种死锁称为“资源死锁”。
(资源)死锁的4个条件:
1)互斥条件。每个资源要么已经分配给了一个进程,要么就是可用的。
2)占有和等待条件。已经得到了某个资源的进程可以仔请求新的资源。
3)不可抢占条件。已经分配给一个进程中的资源不能强制性地被抢占,它只能被占有它的进程显示地释放。
4)环路等待条件。死锁发生时,一定有两个或两个以上的进程组成的一条环路,该环路中的每一个进程都在等待着下一个进程所占有的资源。
死锁避免:
死锁预防:
1)破坏互斥条件:
避免分配那些不是绝对必需的资源,尽量做到尽可能少的进程可以真正请求资源。
2)破坏占有和等待条件:
3)破坏不可抢占的条件
4)破坏环路等待条件
相关文章推荐
- Tomcat端口被占用解决方法(不用重启)
- “传奇”图象数据存储方式
- 超大数据量存储常用数据库分表分库算法总结
- SQL Server误区30日谈 第18天 有关FileStream的存储,垃圾回收以及其它
- C++实现图的邻接表存储和广度优先遍历实例分析
- 详解Android文件存储
- C#调用sql2000存储过程方法小结
- PHP 存储文本换行实现方法
- 注册表中存储数据库链接字符串的方法
- Mysql中存储UUID去除横线的方法
- MySQLMerge存储引擎
- 深入PHP变量存储的详解
- MySQL存储毫秒数据的方法
- MySQL存储过程中使用动态行转列
- Android App将数据写入内部存储和外部存储的示例
- 简介Android应用中sharedPreferences类存储数据的用法
- Android App中各种数据保存方式的使用实例总结
- 详解Android四种存储方式
- Android编程中的5种数据存储方式
- Android在不使用数据库的情况下存储数据的方法