Livelock
Unlike deadlock, livelocked packets continue to move through the network, but never reach their destination.
This is primarily a concern for non-minimal routing algorithms that can misroute packets.
If there is no guarantee on the maximum number of times a packet may be misrouted, the packet may remain in the network indefinitely.
Dropping flow control techniques can also cause livelock.
If a packet is dropped every time it re-enters the network, it may never reach its destination.
There are two primary techniques for avoiding livelock, deterministic and probabilistic avoidance.
In deterministic avoidance, a small amount of state is added to each packet to ensure its progress.
The state can be a misroute count, which holds the number of times a packet has been misrouted.
Once the count reaches a threshold, no more misrouting is allowed.
This approach is common in non-minimal, adaptive routing.
A similar approach is to store an age-based priority in each packet.
When a conflict between packets occurs, the highest priority (oldest) packet wins.
When used in deflection routing or dropping flow control, a packet will become the highest priority packet in the network after a finite amount of time.
This prevents any more deflections or drops and the packet will proceed directly to its destination.
Probabilistic avoidance prevents livelock by guaranteeing the probability that a packet remains in the network for T cycles approaches zero as T tends to infinity(无穷大).
For example, we might want to avoid livelock in a 2-ary k-mesh with deflection routing and single flit packets.
The maximum number of hops a packet can ever be from its destination is H_max = 2(k−1).
We then write a string for the history of a packet, where t denotes a routing decision toward the destination and d represents a deflection (such as tddtdtt . . .).
If the number of t ’s in the string minus the number of d’s ever exceeds H_max , then we know the packet must have reached its destination.
As long as the probability of a packet routing toward destination is always non-zero, the probability of this occurring approaches one.
Therefore, our network is livelock-free as long as we can always guarantee a non-zero chance of a packet moving toward its destination at each hop.
Livelock的更多相关文章
- 活锁(livelock)
活锁(livelock) 活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败. 活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的“活”, 而处于 ...
- 有关于并发中的死锁(Deadlock)、饥饿(Starvation)、活锁(Livelock)
最近在看<实战Java高并发程序设计>,发现了之前没有接触过的几个名词. 死锁:之前在接触多线程的时候,接触过死锁的情况.死锁是线程中最糟糕的情况,如下面的图中的四辆车子一样,如果没有一辆 ...
- “全栈2019”Java多线程第二十三章:活锁(Livelock)详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- 活锁(livelock) 专题
活锁(livelock) 活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败. 活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的“活”, 而处于 ...
- .Net多线程编程—预备知识
1 基本概念 共享内存的多核架构:一个单独的封装包内封装了多个互相连接的未处理器,且所有内核都可以访问主内存.共享内存的多核系统的一些微架构,例如内核暂停功能,超频. 内核暂停功能:当使用内核不多的时 ...
- 分布式系统理论进阶 - Paxos
引言 <分布式系统理论基础 - 一致性.2PC和3PC>一文介绍了一致性.达成一致性需要面临的各种问题以及2PC.3PC模型,Paxos协议在节点宕机恢复.消息无序或丢失.网络分化的场景下 ...
- Concurrency vs. Parallelism
http://getakka.net/docs/concepts/terminology Terminology and Concepts In this chapter we attempt to ...
- Questa Functional Verification-autocheck
1.AutoCheck analysis introduce Autocheck是自动对RTL代码使用形式验证进行规则检查的检查器,是Questa Verify tools的一部分.Autochenc ...
- [转]透过 Linux 内核看无锁编程
非阻塞型同步 (Non-blocking Synchronization) 简介 如何正确有效的保护共享数据是编写并行程序必须面临的一个难题,通常的手段就是同步.同步可分为阻塞型同步(Blocking ...
随机推荐
- [剑指Offer]27-二叉树的镜像
题目链接 https://www.nowcoder.com/practice/564f4c26aa584921bc75623e48ca3011?tpId=13&tqId=11171&t ...
- Java_7 ArrayList集合
1 ArrayList创建变量的步骤 1: 导入包 java.util包中 2: 创建引用类型的变量 数据类型< 集合存储的数据类型> 变量名 = new 数据类型<集合存储的数据类 ...
- 微信小程序填坑之路
图片处理 三个小方法仅供参考1.将图片转成base64编码,可以使用代码来转换,当然我才不愿意特意写代码转,我懒,献上一个在线图片转base64的地址:http://tool.css-js.com/b ...
- 队列 和 线程 之GCD dispatch
1.dispatch_queue_create 创建队列开启异步线程(1,4,2,3) // 创建一个队列 dispatch_queue_t queue = dispatch_queue_creat ...
- Bootstrap 框架 day57
Bootstrap框架 Bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. 它是为实现快速开发Web应用程序而设计的一套前端工具包 ...
- 一个命令查看mysql的所有配置(原创)
在mysql的命令提示符下,执行下面一句话,查看mysql服务器的所有全局配置信息: mysql> show global variables; 得到: 上表的文本内容: "Varia ...
- Navicat premiu的导入和导出
对于Navicat premiu(数据库管理工具)中对于数据库的导出和导入步骤如下: 1.选择要导出的数据库->转储SQL文件->选择结构和数据或结构->选择存放的路径,即可导出成功 ...
- zh-cn 与 zh-hans 是什么关系、有什么区别
回答一: 作者:知乎用户 链接:https://www.zhihu.com/question/21980689/answer/19923726 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权 ...
- Windows服务安装、卸载、启动和关闭的管理器
最近在重构公司的系统,把一些需要独立执行.并不需要人为关注的组件转换为Windows服务,Windows服务在使用的过程中有很多好处,相信这一点,就不用我多说了.但是每次都要建立Windows服务项目 ...
- nginx 启动报错 “/var/run/nginx/nginx.pid" failed” 解决方法
问题: 重启虚拟机后,再次重启nginx会报错: open() "/var/run/nginx/nginx.pid" failed (2: No such file or dire ...