`

《操作系统》分布式系统中的死锁问题之 预防死锁

 
阅读更多

最近读了 《操作系统》(第2版)     狄东宁 战晓苏 侯彩虹译 中的第十一章 分布式系统,觉得里面的一些理论非常好,故在此记录下。

原文  转载自: http://book.51cto.com/art/200907/133346.htm

 

 

分布式系统中的死锁问题

        同分布式系统中的多数其他内容一样,死锁提出了一种好的设计挑战。即使在非分布式环境中解决死锁问题也并不容易,当遇到多进程/节点/操作系统的挑战时,这个任务将变得更棘手。

这里讨论分布式环境中与死锁相关的三种策略:预防死锁、避免死锁和检测死锁。这里用术语"事务"替代消息,因为前者在分布式系统相关文献中较为通用(在死锁环境中)。

 

11.14.1  预防死锁

该方法使用了时间戳技术。每个事务都有自己的时间戳。考虑一下,有两个事务T1和T2,以及一个T1和T2都感兴趣的资源S。在给定时刻,T1占用 R,而之后很快T2也想占用R。显然,必须赶快决定如何解决这个问题。否则,最终将会导致死锁。有两种可能的解决方法,它们分别是:等待死亡法和受伤等待 法。

 

1. 等待死亡法

如同前面提到过的一样,开始是T1占用R,T2也试图占用R。假定T1的时间戳是TS1,T2的是TS2。该方法避免死锁的解决方式如图11-35所示。

 
图11-35  等待死亡法

 

       诚如所见,如果事务T2在事务T1之前开始(按照时间戳值),那么T2等待T1结束。否则,分布式操作系统就会杀死T2,并在一段时间后重新启动它(具有相同的时间戳TS2),同时假设T1目前已经释放了资源R。

总结一下,如同期望的一样,事务发生越早,优先级越高。同样可以看到,被杀死的进程重新启动时,它的时间戳值是最初的时间戳值。那样该进程就可以保持它以前的优先级(在重新启动该进程时,它的优先级将比大部分其他事务的优先级高)。

 

 

2. 受伤等待法

       相比于前面的方法,该方法采用了不同的技术。这里,开始也是先进行类似的比较。比较T1和T2的时间戳(也就是TS1和TS2)。如果TS2小于 TS1(意味着T2在T1之前先运行),现在杀死T1。注意:在前面的例子中,这种情况下将阻塞T2。然后,如果T1开始得比较早,那么就停止T2,过程 如图11-36所示。

 
图11-36  受伤等待法

 

        总结一下,在该方法中,可以通过杀死较新事务而立刻处理比较老的事务的请求。这意味着比较老的事务不需要等待较年轻的事务(这不同于前面的方法)。

 

分享到:
评论

相关推荐

    分布式系统中负载、死锁互斥、共享存储的设计

    如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式系统设计在操作系统、文件系统、共享存储器系统、数据库系统和异型处理中的应用。

    分布式系统设计(PDF)

    如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式系统设计在操作系统、文件系统、共享存储器系统、数据库系统和异型处理中的应用。...

    分布式系统设计

    如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式系统设计在操作系统、文件系统、共享存储器系统、数据库系统和异型处理中的应用。...

    分布式系统设计很好的资料哦

    如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式系统设计在操作系统、文件系统、共享存储器系统、数据库系统和异型处理中的应用。...

    分布式系统设计(经典书籍)

    如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式系统设计在操作系统、文件系统、共享存储器系统、数据库系统和异型处理中的应用。...

    分布式系统领域教程pdf

    1.3 分布式系统的定义 1.4 我们的模型 1.5 互连网络 1.6 应用与标准 1.7 范围 1.8 参考资料来源 参考文献 习题 第2章 分布式程序设计语言 2.1 分布式程序设计支持的需求 2.2 并行/分布式程序设计语言概述 ...

    分布式系统设计 书籍

    如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式系统设计在操作系统、文件系统、共享存储器系统、数据库系统和异型处理中的应用。...

    分布式系统设计.rar

    如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式系统设计在操作系统、文件系统、共享存储器系统、数据库系统和异型处理中的应用。...

    分布式系统设计 [美]jie wu著 高传善 译

    1.3 分布式系统的定义 1.4 我们的模型 1.5 互连网络 1.6 应用与标准 1.7 范围 1.8 参考资料来源 参考文献 习题 第2章 分布式程序设计语言 2.1 分布式程序设计支持的需求 2.2 并行/分布式程序设计语言概述 ...

    分布式数据库系统-复习.doc

    通信费用和响应时间最短 在分布式系统中,查询代价QC= 。 I/O代价+CPU代价+通信代价 在分布式环境下,查询可分为 、 和 三种类型。 局部查询 远程查询 全局查询 分布式查询处理可以分为 、 、 和 四层。 查询分解 ...

    《计算机操作系统》期末复习指导

    操作系统的五大类型是批处理操作系统、分时操作系统、实时操作系统、网络操作系统、分布式操作系统。 多道程序设计:即在系统内(内存)同时存放并运行几道相互独立的程序。 多道程序设计的基础:是将...

    操作系统复习题(包含习题讲解)

    本章的目的是使学生了解分布式操作系统的基本概念和近期发展动态,了解常见的一些分布式系统及其相关的支持技术和实现方案。 第十一章 安全性与保护机制 本章学习的目的是使学生能初步建立起系统安全性的概念。要求...

    数据库系统实现

    书中对数据库系统实现原理进行了深入阐述,并具体讨论了数据库管理系统的三个主要成分—存储管理器、查询处理器和事务管理器的实现技术。书中还对信息集成的最新技术,例如数据仓库、OLAP、数据挖掘、Mediator、数据...

    java 面试题 总结

    Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来...

    超级有影响力霸气的Java面试题大全文档

     Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常...

Global site tag (gtag.js) - Google Analytics