高完整性系统工程(十一):Fault Tolerant Design

news2024/11/14 23:50:51

目录

1. INTRODUCTION TO FAULT TOLERANCE

1.2 Definitions

1.3 Two Kinds of Faults

1.4 Hardware vs Software Faults

1.4.1 Failure Curve for Hardware

1.4.2 Hardware and Software Failures

1.5 Causes of Failures

1.6 3 Ways to Class Failures

1.6.1 Temporal Behaviour

1.6.2 Output Behaviour

1.7 Independence vs Correlated 独立性与相关性

2. REDUNDANCY

2.1 冗余 Redundancy

2.2 Hardware Redundancy 硬件冗余

2.2.1 Detecting Errors

2.3 投票(Voting)

2.3.1 近似一致(Approximate Agreement)

2.3.2 投票算法(Voting Algorithms)

2.3.3 多数投票(Majority Voting)

2.3.4 通用k-多数投票(Generalised k-plurality voting)

2.3.5 通用中位数投票(Generalised Median Voting)

2.3.6 Comparison of Voters 

2.4 N模块冗余(N-Modular Redundancy)

2.5 清除(Purging)


1. INTRODUCTION TO FAULT TOLERANCE

容错系统:如果系统能在有限数量的故障存在的情况下,依然按照规定的规格运行,那么这个系统就被认为是容错的。

  • "有限数量的故障"指的是我们作为工程师选择的容错等级,具体容错等级的选择通常基于HAZOP(危害及可操作性研究)等工具。
  • "按照规定的规格在故障存在的情况下运行"意味着系统必须能够检测到故障的发生,并进行故障处理。

1.2 Definitions

  • 故障(Failure):系统行为偏离规定的规格。
  • 缺陷(Fault):故障的原因,可能是错误的步骤,过程,数据定义等。
  • 错误(Error):缺陷的表现(发生)。
  • 可靠性(Reliability):系统在特定时间内无故障运行的概率。

1.3 Two Kinds of Faults

  • 硬件缺陷:物理缺陷,可能导致系统或组件产生错误。 A physical defect that can cause the system or component to produce an error
  • 软件缺陷:软件源代码中的缺陷,可能导致系统或组件产生错误。A defect in the source of the software that can cause the system or component to produce an error

1.4 Hardware vs Software Faults

硬件和软件以不同的方式失败。硬件通常会随着时间的推移出现故障,如元件的退化或环境条件的改变。反观软件,则在相同的状态和输入下,每次都会失败或每次都会成功,这就使得软件的故障更加系统性。

1.4.1 Failure Curve for Hardware

Does this make sense for software failures? No!

1.4.2 Hardware and Software Failures

Hardware (tends to) fail randomly 硬件(倾向于)随机故障

  • e.g. degradation of components 组件的退化
  • e.g. changes in environmental conditions 环境条件的变化

Software (tends to) fail systematically 软件(倾向于)系统性故障

  • with same state, same inputs, fails every time or succeeds every time (although beware concurrency and other sources of nondeterminism) 相同的状态,相同的输入,每次都失败或每次都成功(但要注意并发性和其他非确定性的来源)

1.5 Causes of Failures

  • 规格中的缺陷 Faults in the Specification:需要良好的规格验证技术。
  • 系统组件中的缺陷 Faults in System Components(软件或硬件):需要良好的工程技术(本课程的重点)。
  • 环境影响导致的缺陷 Faults due to Environment Effects:例如,对于太空船来说可能是辐射,对于其他系统可能是温度,G力等。(在HAZOP等工具中应被识别出来)

1.6 3 Ways to Class Failures

  • 时间行为 Temporal Behaviour:永久的,间歇的或瞬态的 permanent, intermittent or transient。
  • 输出行为 Output Behaviour:非恶意的或拜占庭式的 Non-Malicious or Byzantine。
  • 独立性和相关性 Independence and Correlation:独立的或相关的 Independent or Correlated。

1.6.1 Temporal Behaviour

1.6.2 Output Behaviour

非恶意输出:所有接收的组件都能一致地解释输出。

拜占庭式输出:所有接收的组件无法一致地解释输出。

1.7 Independence vs Correlated 独立性与相关性

考虑两个相同的服务器,故障等于服务器崩溃。这两个服务器的故障是独立的还是相关的?在这里,我们需要理解它们的独立性和相关性。就像在可靠性块图(Reliability Block Diagrams)中,我们假设服务器故障是不相关的。

在这个过程中,更深入的理解和扩展,可以涉及到如何进行HAZOP,以及不同类型的故障(例如拜占庭故障)可能如何影响系统的工作。此外,我们也可以研究不同的容错策略,如冗余,备份,多版本等,以及如何在设计时考虑这些策略来提高系统的容错性。

2. REDUNDANCY

2.1 冗余 Redundancy

冗余是一种技术,使得在部分组件失效的情况下,系统仍能继续运行。主要类型包括:

  • 硬件冗余 Hardware Redundancy:如使用多个处理器、复制硬件组件及计算。
  • 软件冗余 Software Redundancy:如开发多种实现方式的软件。
  • 信息冗余 Information Redundancy:如使用错误检查和错误纠正编码。
  • 时间冗余 Time Redundancy:如重试任务,事务回滚等。

例如,空中客车A330/340的设计就使用了硬件冗余。具体内容可以参考 Airbus FCS。

2.2 Hardware Redundancy 硬件冗余

硬件冗余用于检测和容忍系统中的特定错误。例如,在一个静态对(Static Pair)中,监视器和接口互相检查。其中的假设是,P1和P2是独立失败的。

2.2.1 Detecting Errors

例如,当监视器从P1接收到32.0,从P2接收到32.1,这是正常的;但如果从P1接收到32.0,从P2接收到4.3,那么就存在错误。但这时就需要确定到底是P1还是P2出现了故障。

2.3 投票(Voting)

当需要比较超过两个组件时,可以使用投票机制,以确定可能出现故障的组件。如下面的示例,P1, P2, P3通过投票器输出结果。

2.3.1 近似一致(Approximate Agreement)

例如,当P1,P2,P3分别输出24.2、24.1、24.3时,如果他们的输出在某个小距离ε内,我们就认为这两个测量值是足够相等的(sufficiently equal)。在这个例子中,P1和P2是足够相等的,而P3与它们的距离较大,因此可能存在错误。

2.3.2 投票算法(Voting Algorithms)

投票算法决定了应该输出什么。例如,当P1,P2,P3分别输出24.2、24.1、24.3时,应该输出什么?

接下来我们会详细解释三种投票方式:Majority Voting 多数投票,Generalised k-plurality voting 通用k-多数投票,Generalised Median Voting 通用中位数投票。

2.3.3 多数投票(Majority Voting)

多数投票是一种简单的投票算法,其中的输出是投票中得到最多数的选项。在错误检测中,如果大多数的组件(例如P1和P2)提供了相同的值,那么这个值就会被视为正确的,而其他与众不同的值(例如P3)会被视为可能的错误。

  • 当票数最多的集合(例如S1)的票数超过总数的一半时(即> N/2),投票算法将输出S1中的任意元素。
  • 当票数最多的集合(例如S2)的票数没有超过总数的一半时,投票算法不会产生输出(表示为⊥)。

2.3.4 通用k-多数投票(Generalised k-plurality voting)

在通用k-多数投票中,我们考虑那些得票数至少为k的值。在我们的例子中,如果k等于2,那么只有那些至少由两个处理器产生的值才会被考虑。这种方式提供了一种灵活的容错机制,因为我们可以根据处理器的数量和信任度来选择合适的k值。

  • 当票数最多的集合(例如S2)满足多数约束(即票数≥k),投票算法将输出S2中的任意元素。
  • 当票数最多的集合(例如S2)不满足多数约束(即票数<k),投票算法不会产生输出(表示为⊥)。

2.3.5 通用中位数投票(Generalised Median Voting)

在通用中位数投票中,我们选择所有值中的中位数作为结果。如果处理器数量是奇数,中位数就是排序后处于中间的那个值;如果处理器数量是偶数,中位数就是排序后中间两个值的平均值。这种方法对于处理器输出值相差较大的情况特别有效,因为中位数可以提供一个相对稳定的结果。

在通用中位数投票中,我们反复消除最远的两个元素,直到最后剩下1个或2个元素,然后选择其中任何一个作为输出。

2.3.6 Comparison of Voters 

不同的投票算法有不同的优点和缺点,选择哪种算法取决于具体的应用场景和容错需求。

2.4 N模块冗余(N-Modular Redundancy)

N模块冗余是一种容错技术,它通过掩蔽故障组件的故障来保持系统的正常运行。具体来说,对于有N个组件的系统:

  • 系统可以容忍⌊(N-1)/2⌋个组件的失败。
  • 系统可以检测到??个组件的故障。(这个问题在给出的slides中没有给出具体的数值,需要根据具体的N值和冗余策略来确定。)

2.5 清除(Purging)

如果一个单位是故障的,应该对其进行清除,除非这个故障是暂时的。具体的清除策略包括:

  • 自我清除(Self purging):单位将自己与投票输出进行比较,如果不同,就对自己进行清除。
  • 筛选冗余(Sift-out redundancy):将所有的单位配对,如果某个单位与大多数单位的输出不同,那么控制器就会断开与该单位的连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/605825.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LLM】大模型值得探索的十个研究方向

note 基础理论&#xff1a;大模型的基础理论是什么&#xff1f; 网络架构&#xff1a;Transformer是终极框架吗&#xff1f; 高效计算&#xff1a;如何使大模型更加高效&#xff1f; 高效适配&#xff1a;大模型如何适配到下游任务&#xff1f; 可控生成&#xff1a;如何实…

ChatGPT有关的模块知多少?

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 ChatGPT有关的模块知多少&#xff1f; &#x1f9ca;摘要&#x1f9ca;ChatGPT 开发库清单 &#x1f9ca;摘要 本文介绍了基于OpenAI ChatGPT 的API 开发的python 模块库。【原创&am…

STM32cubemx定时外部模式测量10M以上频率

STM32cubemx定时外部模式测量10M以上频率 本文讲解利用定时器的外部时钟功能&#xff0c;巧妙测量高频外部信号频率。范围可以到高达30M以上。 所需工具&#xff1a; 开发板:STM32F103RCT6STM32CubeMXIDE: Keil-MDK 文章目录 STM32cubemx定时外部模式测量10M以上频率原理讲解…

【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(Optional篇)

Guava相关的介绍 Guava工程包含了许多被Google的Java项目广泛依赖的核心库。我们希望通过本文档为Guava中最流行和最强大的功能提供更具可读性和解释性的说明。 本教程是中级教程&#xff0c;适合 Guava 中级开发者的进阶学习。 学习Guava前的准备工作 学习目标和计划&#xf…

Python学习笔记 - 探索集合Set

尊敬的各位&#xff0c;我是Mr.数据杨&#xff0c;非常高兴和你们一起走进Python的世界。今天&#xff0c;让我们一起探讨Python中神奇的“集合”。你们是否读过《三国演义》&#xff1f;你们应该记得那场赫赫有名的“桃园三结义”吧&#xff1f;那让我们以此为例&#xff0c;来…

Windows动态链接库的生成和使用

工程需要&#xff0c;最近在编一组Windows上的动态链接库给Python调用。之前做过Linux下C动态库的编译&#xff0c;并提供给Python调用&#xff0c;Windows下的编译跟Linux还是有些差距&#xff0c;因此花了一点时间跑通&#xff0c;在这里记录一下。 为了完整对比&#xff0c…

Hive on Spark环境搭建

Hive 引擎简介 Hive 引擎包括&#xff1a;默认 MR、tez、spark 最底层的引擎就是MR &#xff08;Mapreduce&#xff09;无需配置&#xff0c;Hive运行自带 Hive on Spark&#xff1a;Hive 既作为存储元数据又负责 SQL 的解析优化&#xff0c;语法是 HQL 语法&#xff0c;执行…

(2.54mm)TSM-120-04-S-DV-P-TR方形接线柱针脚、ADRF5545ABCPZN(通用)射频前端 SPDT

TSM-120-04-S-DV-P-TR (2.54mm) 表面安装.025"方形接线柱针脚是板对板连接器&#xff0c;有单排、双排或三排方形接线柱端子可供选择&#xff0c;带直通、直角或混合技术引脚。这些高度可靠的坚固针脚有垂直和水平两种方向&#xff0c;在混合气流 (MFG) 环境中可使用10年。…

【C语言实现简易ATM】上个C语言程序设计课,我成产品经理了?

博主简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的人。 博主主页&#xff1a;陈童学哦 所属专栏&#xff1a;C语言程序设计实验项目 如果本文对你有所帮助的话&#xff0c;还希望可以点赞&#x1f44d;收藏&#x1f4c2;支持一下…

2023年京东618满300减50是全品类吗?满减叠卷怎么用?

2023年京东618满300减50是全品类吗?满减叠卷怎么用? 京东平台上有着比较多的卖家开店&#xff0c;在对店铺进行运营的过程中&#xff0c;很多卖家都会参与平台的一些活动&#xff0c;这样能够有效的将产品推广出去&#xff0c;对于618大促活动也是属于其中活动之一&#xff0…

代码随想录第52天

1.最长递增子序列 接下来&#xff0c;我们依然用动规五部曲来详细分析一波&#xff1a; dp[i]的定义 本题中&#xff0c;正确定义dp数组的含义十分重要。 dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度 为什么一定表示 “以nums[i]结尾的最长递增子序” &…

软考A计划-电子商务设计师-专业英语

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

高压侧电流检测电路及仿真

高压侧电流检测电路仿真 电路图如下 主要设计思想&#xff0c;通过两组电阻将高压侧的共模电压降到运放&#xff08;此处也可以使用单电源运放&#xff09;的工作电压范围内。然后在进行二次放大。主要放大倍数取决于第二级放大侧电阻比值。因此如果需要减小功耗&#xff0c;可…

JAVA数组基础

目录 一、使用方式 1-动态初始化 ①先声明数组 ② 创建数组 ③分配方式 二、使用方式 2-静态初始化&#xff08;直接在声明的同时初始化{ } &#xff09; 三、数组使用注意事项和细节 四、数组两种初始化方式都是将内存空间分配到堆上面的 一、使用方式 1-动态初始化 …

助力金融科技创新 同创永益受邀参加2023 INNO CHINA中国产业创新大会

2023 INNO CHINA中国产业创新大会-金融科技创新论坛于2023年5月10日在北京大学中关村新园召开。本次金融科技创新论坛由北大创新评论主办&#xff0c;同创永益受邀参加。来自银行、保险、证券等金融行业的多位专家、学者齐聚大会现场&#xff0c;共同探讨金融科技发展新趋势、金…

复合型人才

一、为什么需要复合型人才 在社会的大环境影响下&#xff0c;不同行业所展现的交叉属性越来越强&#xff0c;因此单一型人才已经不满足当前的企业需求&#xff0c;复合型人才逐渐成为市场上的主流&#xff1a;即不仅要“精”通&#xff0c;更要“全”面。 人才需求是由市场的…

长尾词挖掘,如何选择精准的长尾词优化?

长尾词的挖掘也是一门大学问&#xff0c;它存在多种不同的方法。最常用的方法是把关键词直接放搜索引擎的搜索框搜索和使用长尾词挖掘工具这两种。 以运动水壶为例。 关键词直接放搜索引擎的搜索框搜索&#xff0c;结果如下&#xff1a; 使用长尾词挖掘工具&#xff0c;…

【C++笔记总结】面向对象编程——封装 |C++

文章目录 前言一、类的封装1.1、公有&#xff0c;私有&#xff0c;保护1.2、类的定义和类的实现相分离1.3、构造函数&#xff0c;析构函数&#xff0c;拷贝构造函数1.4、静态数据成员和静态成员函数1.5、友元函数&#xff0c;友元类 二、类的实现——对象2.1、对象的静态分配&a…

【SpringCloud——Elasticsearch(中)】

一、DSL查询语法以及整合JAVA代码使用 以下操作案例均基于上篇的hotel索引库及其数据进行。 1、查询基本语法 GET /indexName/_search {"query": {"查询类型":{"查询条件":"条件值"}} } 2、查询所有 2.1、DSL语句 #查询所有 GET …

Java并发编程面试题——线程池

目录 1.什么是线程池&#xff1f;有什么优缺点&#xff1f;2.创建线程池的方式有哪些&#xff1f;2.1.通过 Executor 框架的工具类 Executors 来创建不同类型的线程池2.2.使用 ThreadPoolExecutor 类自定义线程池2.3.注意事项 3.自定义线程池时有哪些参数&#xff1f;它们各有说…