美文网首页好文
死锁,活锁,饿死,阻塞的理解

死锁,活锁,饿死,阻塞的理解

作者: Jokerone_ | 来源:发表于2017-04-22 10:33 被阅读0次

原文链接:死锁和活锁,饿死,阻塞个人理解

死锁

死锁

线程A或者B需要过独木桥(使用该进程),而C还没有走完(进程还在占用),于是三方僵死;
也可以是没有C 的情况下,A和B互不礼让僵死。 A和B都认为自己优先级最高应该使用该进程。

活锁

活锁

线程A和B都需要过桥(都需要使用进程),而都礼让不走(那到的系统优先级相同,都认为不是自己优先级高),就这么僵持下去。

饿死

饿死

这是个独木桥(单进程),桥上只能走一个人,B来到时A在桥上,B等待;而此时比B年龄小的C来了,B让C现行(A走完后系统把进程分给了C),C上桥后,D又来了,B又让D现行(C走完后系统把进程分个了D)以此类推B一直是等待状态.

阻塞

阻塞

死锁:
1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。
2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
4)环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。
活锁:
活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败。 活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的“活”, 而处于死锁的实体表现为等待;活锁有可能自行解开,死锁则不能。活锁可以认为是一种特殊的饥饿。 下面这个例子在有的文章里面认为是活锁。实际上这只是一种饥饿。因为没有体现出“活”的特点。 假设事务T2再不断的重复尝试获取锁R,那么这个就是活锁。
饥饿:
饥饿 ,与死锁和活锁非常相似。是指一个可运行的进程尽管能继续执行,但被调度器无限期地忽视,而不能被调度执行的情况。[1] 饥饿可以通过先来先服务资源分配策略来避免。

相关文章

  • 死锁,活锁,饿死,阻塞的理解

    原文链接:死锁和活锁,饿死,阻塞个人理解 死锁 线程A或者B需要过独木桥(使用该进程),而C还没有走完(进程还在占...

  • 死锁和活锁,饿死,阻塞个人理解

    原链接:http://f.dataguru.cn/thread-541686-1-1.html 以下个人理解,请各...

  • 死锁、活锁、饿死

    死锁 是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将...

  • 死锁,活锁,饿死

    死锁:线程1等待线程2互斥持有的资源,而线程2也在等待线程1互斥持有的资源,两个线程都无法继续执行。 活锁:拿到锁...

  • 死锁

    线程饥饿死锁 锁顺序死锁 动态锁顺序死锁通过锁顺序来避免死锁 避免死锁

  • Java中锁的概念

    在谈锁之前,首先要理解一些常用的锁的分类名词: 1. 锁的常用分类 死锁:所谓死锁,就是多个线程同时被阻塞,它们中...

  • 并发模型 精华一页纸

    1、并发模型一般有两类 阻塞方式 – 通过加锁来实现资源并发 非阻塞方式 - 系统原语实现 I、死锁 VS 活锁 ...

  • 并发几个概念

    1.同步与异步 2.并发和并行 3.临界区 4.阻塞和非阻塞 5.死锁、饥饿、活锁 6.并发级别 6.1阻塞 6....

  • 并发编程中必须知道的几个概念

    并发编程中下面的这些概念是非常关键的: 同步与异步 并行与并发 临界区 阻塞与非阻塞 死锁、活锁与饥饿 1. 同步...

  • 十.Java并发编程的挑战

    1. 死锁 线程死锁 死锁是指两个或多个线程被阻塞等待获取某些其他线程所持有的锁。当多个线程同时需要相同的锁,但以...

网友评论

    本文标题:死锁,活锁,饿死,阻塞的理解

    本文链接:https://www.haomeiwen.com/subject/bgfszttx.html