Concurrency 僵局和无限期拖延有什么区别?

Concurrency 僵局和无限期拖延有什么区别?,concurrency,Concurrency,死锁——两个或多个相互竞争的动作都在等待对方完成的情况,因此两个动作都没有完成 无限期延迟-在其他进程受到系统关注时无限期延迟进程的调度 这两个术语似乎非常相似。我怎样才能把它们区分开来 在任何让进程等待的系统中 资源分配和进程调度决策,这是可能的 在另一个进程运行时,无限期地延迟进程的调度 流程受到系统的关注。这种情况各不相同 被称为无限期推迟、无限期封锁或饥饿, 可能会像僵局一样毁灭性 发件人: 哈文德的僵局条件(1968)-7.2.1 •有一个循环的流程列表,每个流程都希望拥有一个资源

死锁——两个或多个相互竞争的动作都在等待对方完成的情况,因此两个动作都没有完成

无限期延迟-在其他进程受到系统关注时无限期延迟进程的调度

这两个术语似乎非常相似。我怎样才能把它们区分开来

在任何让进程等待的系统中 资源分配和进程调度决策,这是可能的 在另一个进程运行时,无限期地延迟进程的调度 流程受到系统的关注。这种情况各不相同 被称为无限期推迟、无限期封锁或饥饿, 可能会像僵局一样毁灭性

发件人:

哈文德的僵局条件(1968)-7.2.1

•有一个循环的流程列表,每个流程都希望拥有一个资源 名单上的另一个人

•资源不能共享

•只有所有者才能释放资源

•流程可以在 请求另一个

发件人:

因此,无限期延迟会导致1个进程受到影响,而其他进程会正常继续,这可能是由于调度不当或其他原因造成的,在这种情况下,无限期延迟的进程的优先级总是低于相同资源之后的所有其他进程。在以后的某个时候,它可能会以足够高的优先级来获取资源


当一个进程请求由另一个进程持有的资源时,会出现死锁。该进程(A)将不会释放该资源,直到它得到它正在请求的另一个资源,顺便说一句,该资源被另一个进程(B)持有,该进程(B)将不会释放该资源,直到它收到另一个进程(C)持有的资源,该进程(C)将不会释放该资源,直到它得到(A)持有的资源。该场景涉及3个过程,A、B、C;但它可能涉及由两个或多个进程组成的任何“循环”。

如果两个进程处于死锁状态,它们就不可能做任何有用的工作,因为它们相互依赖,而且两者都不会让步


如果这一进程无限期推迟,至少在理论上,这一进程有可能继续下去,并在未来某个时候做一些有益的工作。如果其他进程停止滥用资源或干脆退出,或者您增加被无限期推迟的进程的优先级,则可能会发生这种情况。

您这么说:第一个进程涉及两个不同的进程交互,而第二个进程涉及调度程序和单个进程的问题,与其他流程没有直接关系……你能举个具体的例子吗?我不清楚。当一个优先级较低的线程被饿死并且无法接收系统资源时,无限期延迟就是饿死,因为其他优先级较高的线程在从其他一些优先级较高的线程释放资源时会立即抢夺资源。饥饿与死锁无关,即使在没有死锁的情况下也可能发生。@user2784234-知道这也意味着饥饿确实澄清了我的疑问。