最近读了 《操作系统》(第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 受伤等待法 |
总结一下,在该方法中,可以通过杀死较新事务而立刻处理比较老的事务的请求。这意味着比较老的事务不需要等待较年轻的事务(这不同于前面的方法)。
分享到:
相关推荐
分布式死锁的识别和诊断通常比传统的单系统死锁更为复杂,因为它涉及到多个系统间的交互。SQL Server本身不能单独形成分布式死锁,它需要与客户端应用程序共同作用才会出现。在上述代码示例中,问题出在使用`...
6. **死锁和优先级反转**:RTOS需要预防和解决这些可能导致系统停滞的问题。 7. **实时编程模型**:如实时任务、周期任务和一次性任务,以及硬实时和软实时的概念。 结合这两个主题,分布式实时操作系统是在分布式...
如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式系统设计在操作系统、文件系统、共享存储器系统、数据库系统和异型处理中的应用。
如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式系统设计在操作系统、文件系统、共享存储器系统、数据库系统和异型处理中的应用。...
如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式系统设计在操作系统、文件系统、共享存储器系统、数据库系统和异型处理中的应用。...
如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式系统设计在操作系统、文件系统、共享存储器系统、数据库系统和异型处理中的应用。...
操作系统中的死锁问题是一个复杂而重要的议题,尤其在多任务并发执行的环境下。死锁是指一组进程中的每个进程都在等待该组中其他进程所持有的资源,导致所有进程都无法继续执行,形成一种僵局。这种现象在汽车竞争...
如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式系统设计在操作系统、文件系统、共享存储器系统、数据库系统和异型处理中的应用。...
《操作系统——并发与分布式软件设计》是一本由英国学者Jean Bacon和Tim Harris共同编著的专业书籍,它深入探讨了操作系统中的关键概念,特别是并发和分布式系统的设计原理。这本书旨在为读者提供一个全面的理解,...
1.3 分布式系统的定义 1.4 我们的模型 1.5 互连网络 1.6 应用与标准 1.7 范围 1.8 参考资料来源 参考文献 习题 第2章 分布式程序设计语言 2.1 分布式程序设计支持的需求 2.2 并行/分布式程序设计语言概述 ...
如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式系统设计在操作系统、文件系统、共享存储器系统、数据库系统和异型处理中的应用。...
如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式系统设计在操作系统、文件系统、共享存储器系统、数据库系统和异型处理中的应用。...
操作系统中的进程死锁是计算机系统中一个非常重要的概念,它涉及到多任务环境下资源分配和调度的问题。当两个或多个进程互相等待对方持有的资源而无法继续执行时,就形成了死锁状态。这种状态使得系统资源得不到有效...
操作系统是计算机科学中的核心课程,尤其在高级操作系统领域,它涵盖了多进程管理、内存管理、文件系统、设备管理、调度算法、并发控制等关键概念。本课件专注于分布式操作系统,这意味着它将深入探讨如何在多台...
学习分布式系统不仅需要理解这些基本概念,还需要对网络、操作系统和数据结构有扎实的基础,以应对各种复杂场景下的问题。在实际应用中,如云计算、大数据处理、物联网等领域,分布式系统都发挥着至关重要的作用。
- **死锁预防**:破坏死锁产生的四个必要条件之一。 - **死锁避免**:通过安全算法(如银行家算法)确保系统不会进入不安全状态。 - **死锁检测和解除**:周期性地检测系统是否存在死锁,并采取措施解除。 #### 三...
分布式系统中的事务处理是确保数据一致性和正确性的核心机制,尤其在第七章中,我们深入探讨了分布式事务处理的各个方面。首先,事务处理的基本模型强调了原子性、一致性、隔离性和持久性这四个关键特性,通常简称为...
《计算机操作系统》试题主要涵盖了操作系统的基本概念、类型、特点以及操作系统中的进程管理、资源分配...这些内容展示了操作系统课程中涉及的基础理论和实际应用问题,对于理解操作系统的运行机制和优化策略至关重要。
1.3 分布式系统的定义 1.4 我们的模型 1.5 互连网络 1.6 应用与标准 1.7 范围 1.8 参考资料来源 参考文献 习题 第2章 分布式程序设计语言 2.1 分布式程序设计支持的需求 2.2 并行/分布式程序设计语言概述 ...
课后答案会详细解析如何理解和应用这些概念,比如银行家算法的实现,死锁的预防和避免策略,以及信号量机制在解决哲学家就餐问题中的应用。 2. **内存管理**:内存管理涉及虚拟内存、页式存储、段式存储、页替换...