进程死锁
来源:互联网 发布:晨曦预算软件破解版 编辑:程序博客网 时间:2024/05/29 06:46
进程死锁
目录
如果多个进程同时占有对方需要的资源而同时请求对方的资源,而它们在得到请求之前不会释放所占有的资源,那么就会导致死锁的发生,也就是进程不能实现同步。
1产生死锁的原因
产生死锁的原因可归结为如下两点:
(1)竞争资源。当系统中供多个进程共享的资源如打印机、公用队列等,其数目不足以满足进程的需要时,会引起诸进程的竞争而产生死锁。
(2)进程间推进顺序非法。进程在运行过程中,请求和释放资源的顺序不当,也同样会导致产生进程死锁。[1]
2产生死锁的四个必要条件
1.互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。
2.请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。
3.非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
4.循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。
3预防死锁的产生
1、采用资源静态分配策略,破坏"部分分配"条件;
2、允许进程剥夺使用其他进程占有的资源,从而破坏"不可剥夺"条件;
3、采用资源有序分配法,破坏"环路"条件。
死锁的避免不严格地限制死锁的必要条件的存在,而是系统在系统运行过程中小心地避免死锁的最终发生。最著名的死锁避免算法是银行家算法。死锁避免算法需要很大的系统开销。
0 0
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程 进程通信 死锁
- Sql 死锁 杀死死锁进程
- Oracle数据文件迁移
- NSString NSData 转换与常见的 NSString 和 NSMutableString 方法
- HTTP性能测试工具 Apache ab
- Unity零碎知识点记录1
- Vertica数据库sql操作备忘
- 进程死锁
- Netty 学习(4)
- 让你做世界上最好的邻居教程
- Opencv 例程讲解 2 ----如何实现与opencv1.0的兼容混合编程
- 2014台州学院ACM集训队寒假练习赛2
- 如何选择最佳私有PaaS产品
- Oracle更改数据文件位置
- Activiti工作流操作类
- 零基础学习JAVA.第四天:Java编程基础