📜  分布式系统中资源和通信死锁的区别

📅  最后修改于: 2021-09-12 11:35:44             🧑  作者: Mango

当一组进程请求已经被组中其他进程占用的资源时,就会发生死锁。因为每个进程都拥有一个资源并等待另一个进程持有的另一个资源,所以两个或多个进程的执行被阻塞。

发生死锁必须满足四个条件:

  1. 互斥——
    系统中至少一种资源必须一次只能被一个进程使用。
  2. 保持并等待 –
    必须有一个进程在等待其他进程获取另一个资源时保留资源。
  3. 无抢占 –
    这意味着不能强行从一个进程中获取资源并移交给另一个进程。
  4. 循环等待 –
    所有进程必须以循环方式等待资源,最后一个进程等待第一个进程的资源。

分布式系统死锁与集中式系统死锁非常相似。在集中式系统中,我们有一个单一的操作系统,可以管理资源分配并确定是否存在任何死锁。当进程和资源分布时,更难检测、避免和防止死锁。可以通过多种方式处理死锁:

  • (一种)。忽略 –
    我们可以选择忽略这个问题。最受欢迎的选择之一是这个。
  • (b)。检测——
    允许死锁发生,然后检测系统中存在死锁,最后处理死锁。
  • (C)。避免 –
    我们可以施加资源分配限制以防止死锁。
  • (d)。避免 –
    通过合理分配资源,我们可以消除死锁。

在分布式系统中不使用死锁避免。避免死锁的困难在于算法需要提前知道资源使用需求,以便正确调度它们。

1.资源死锁:
一个进程可以同时等待大量资源,并且在获取所有资源之前无法前进。如果集合中的每个进程都在寻找由集合中另一个进程持有的资源,并且必须获得所有请求的资源才能解除阻塞,则该进程集是资源死锁的。

符号表示——
当进程 P i正在等待获取资源 R i 时

当进程 P i拥有资源 R i 时

死锁情况:假设一个系统正在运行 2 个进程 P 1 & P 2并且他们想要资源 R 1 & R2。资源分配图如下所示:

这里,P 1拥有R 1并等待获得R 2资源,而P 2 拥有R 2并等待获得R 1资源。通过这种方式,P 1等待 P 2完成,P 2等待 P 1完成,因此陷入僵局。

2. 通信死锁:
此死锁中的进程等待与一组进程中的其他进程通信。在从这些进程中的任何一个接收到通信时,等待的进程可以解除阻塞。如果集合中的每个进程都在等待与集合中的另一个进程通信,并且集合中的任何进程在收到它正在等待的通信之前从未开始任何额外的通信,则该集合是通信死锁的。

例子 –
进程 A 等待从进程 B 获取消息,进程 B 等待从进程 C 获取消息,进程 C 等待从进程 A 获取消息,因此出现死锁。
TFW图如下所示:

分布式系统 (DDBS) 中的用户通过执行事务来访问数据库的数据对象。事务可以被认为是对数据对象执行的一系列读取和写入。数据库的数据对象可以被认为是事务获取(通过锁定)和释放(通过解锁)的资源。在 DDBS 中,等待图被称为事务等待图(TWF Graph)

分布式系统中资源和通信死锁的区别:

S. No

Communication Deadlock

Resource Deadlock

1. In communication model, a before a process can continue, it may know the identification of the processes from which it must receive a message to communicate. It is not directly known that which transaction is dependent on which other transaction. 
2. In communication model, a process cannot proceed with the execution until it can communicate with one of the process for which it is waiting. In resource allocation model, a process cannot proceed with the execution until it receives all the resources for which it is waiting.
3. Waiting (by processes) is done for messages. Waiting (by processes) is done for resources.
4. If each process in the set seeks resources held by another process in the set, and it must obtain all the requested resources before it can become unblocked, the process set is resource-deadlocked. If each process in the set is waiting to communicate with another process in the set, and no process in the set ever begins any additional communication until it receives the communication for which it is waiting, the set is communication-Deadlocked.
5. Cannot be prevented by safe state. Can be prevented by safe state.