C 嵌入式系统设计模式 24:安全性和可靠性介绍

news2024/11/16 5:37:46

本书的原著为:《Design Patterns for Embedded Systems in C ——An Embedded Software Engineering Toolkit 》,讲解的是嵌入式系统设计模式,是一本不可多得的好书。

本系列描述我对书中内容的理解。本文章描述嵌入式安全性和可靠性模式之一:安全性和可靠性介绍。

可靠性 (Reliability) 是衡量一个系统“运行时间”或“可用性”的度量标准。它反映了系统在出现故障前成功完成计算的概率。换句话说,它是系统能够提供服务概率的一种随机度量。通常使用 平均故障间隔时间(MTBF)或成功提供服务的概率(如0.9999)来量化这一指标。可靠性分析通常在 故障模式与影响分析(FMEA)中进行管理。

平均故障间隔时间:衡量系统或设备在两次故障之间平均工作时间的指标。它是可靠性的一个重要参数,用于预测系统的稳定性。

故障模式与影响分析:一种预防性的质量工具,旨在识别产品设计或过程中潜在的故障模式,评估其对系统的影响,并确定相应的优先级以改进设计或控制过程。通过FMEA,可以在产品设计阶段识别并解决潜在的可靠性问题。

安全性 (Safety ) 和可靠性是两个不同的概念。一个安全的系统指的是在运行过程中不会对人员或设备造成过多危险。危险是导致事故或灾祸发生的事件,即会带来某种形式的损失,如人员伤亡。危险发生的 危害 有多大?需要评估危险的严重性和危险发生的可能性,通过计算这两者的乘积来确定危害的大小。

产生危害的基本方式有 5 种:

  1. 能量释放
  2. 毒素释放
  3. 干扰生命维持功能
  4. 向安全人员或控制系统提供误导性信息
  5. 出现危险情况时没能及时报警

与安全性和可靠性相关的 缺陷 (Faults)

事故的发生可能是由于系统中存在 错误 (errors),或者是由于系统的某些方面出现 失效 (fails)。

  • 错误:系统 缺陷 (fault) 行为导致或者需求不正确、糟糕的设计或糟糕的实现导致。
    有的错误可能不可见,但它始终存在于系统中。当错误可见时,就称其为显性错误。
  • 失效 :会在某个时间点发生,并导致系统进入失效状态。也就是说,系统之前运行正常,但某些东西发生了变化,例如汽车传动系统中的金属杆断裂(持久性故障),或者汽车发动机控制计算机中的某个数据位翻转,但随后又恢复正常(易失性故障)。

缺陷 (fault) 即可能导致错误 (error),也可能导致失效 (failure)。

本章讨论安全和可靠系统时,涉及到 3 个术语:即 errorfailurefault

  • error (错误):机组人员或维修人员的疏忽或不正确的行为,或需求、设计或实施中的错误。
  • failure (失效):影响部件、零件或元件运行,使其无法按预期运行(包括功能丧失和不期望的行为)。
  • fault (缺陷):导致项目或系统中出现显性错误,这种错误可能导致失效。

通常是某个 缺陷 行为导致了 错误,然后产品运行 失效

之所以区分这两种不同的缺陷,是因为针对这两种缺陷的解决方案是不同的。具体来说:

  • 失效 (failures) 可以通过 同构冗余 来解决。同构冗余是指创建系统或组件的多个完全相同的副本,以增加系统的可靠性。如果其中一个副本发生故障,其他副本可以继续提供服务。
  • 如果原始设计或代码中存在 错误 (errors),那么这个错误可能会在所有副本中复制。在这种情况下,为了继续安全地运行,你必须使用 异构冗余 。异构冗余是指使用不同的设计、代码或实现方式来创建提供相同服务的多个通道或组件。这种方法的好处是,即使其中一个通道由于某种特定错误而失效,其他通道由于使用了不同的设计或代码,可能不会受到同样的影响,从而增加了系统的整体健壮性。

缺陷与系统中的各种元素有关。可以在需求中规定缺陷的行为。系统中的一个元素可能是缺陷的源头,另一个元素可能帮助识别缺陷,还有元素可能缓解缺陷。

我相信并不存在所谓的“安全软件”,因为系统是否安全是由复合系统决定的,即电子、机械和软件在它们的操作环境中协同工作——所决定的。硬件缺陷可以通过软件缓解,反之亦然。我们说安全,指的是整个系统是安全的或者不安全的。

类似的,系统的可靠性是系统中所有组成部分的函数。一个系统的可靠性不仅仅取决于单个组件的可靠性,还取决于这些组件如何协同工作以及是否有备用机制来应对组件故障。关于如何评估安全性和可靠性以及如何构建安全和可靠的系统,有大量的文献可以参考,但对这些主题的详细讨论超出了本书的范围。

实现安全性和可靠性

一般来说,所有对安全性要求严苛的系统和高可靠性系统,都必须包含并妥善管理冗余性,以确保达到它们的安全性和可靠性要求。如何管理这些元素取决于安全和可靠性问题之间的特定平衡。这种冗余可以是“大范围内的冗余”(架构冗余)或“小范围内的冗余”(详细设计冗余)。在本书中,我们将考虑这两种冗余的几种模式。






读后有收获,资助博主养娃 - 千金难买知识,但可以买好多奶粉 (〃‘▽’〃)
千金难买知识,但可以买好多奶粉

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

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

相关文章

ERP实施顾问面试题目

02什么是BOM和ECN?它们的完整英文拼写是什么?什么是替代料?(10分) BOM物料清单是英文Bill of Material的简写;ECN工程变更通知单是英文Engineering Change Notice的简写;替代料:由于…

vscode中解决驱动编写的时候static int __init chrdev_init()报错的问题

目录 错误出错原因解决方法 错误 在入口函数上,出现 expected a ; 这样的提示 出错原因 缺少了 __KERNEL __ 宏定义 解决方法 补上__KERNEL__宏定义 具体做法:在vscode中按下ctrlshiftp ,输入:C/C:Edit Configurations&#xff0…

JMM(Java Memory Model)内存模型

Java内存模型,规范了计算机内存与java虚拟机之间的协调工作,即规定了 将java 虚拟机中的变量存储到内存中和从内从中取出来的内存细节。 Java内存模型中规定了所有的变量都存储在内存中,每条线程还有自己的工作内存,线程对变量的…

Exception异常处理

1. 两种异常处理机制 1.1 使用 throw 关键字手动抛出异常 使用throw关键字抛出异常,代码会的显得简单明了 如下图所示 1.2 使用 try-catch 捕获异常 使用try-catch进行捕获异常,往往会使代码变得更加笼统,层层包裹 如下图所示 2. 自定义…

大数据 - Spark系列《十三》- spark集群部署模式

Spark系列文章: 大数据 - Spark系列《一》- 从Hadoop到Spark:大数据计算引擎的演进-CSDN博客 大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置-CSDN博客 大数据 - Spark系列《三》- 加载各种数据源创建RDD-CSDN博客 大数据 - Spark系列《…

【pycharm使用ssh连接服务器】

2、pycharm使用ssh连接服务器 1、具体流程2、一些需要注意的小问题2.1 更改代码地址2.2 本地代码上传到服务器2.3 在服务器的环境中上新安装库,但是pycharm检测不到 1、具体流程 打开pycharm – File – Setting 输入服务器的IP地址,端口号、登录账号名…

qt如何配置ros环境

在Qt5.7的版本可以使用bash -i -c来启动qt,让Qt自己识别系统环境,不知道为什么Qt在之后的版本,这样使用都失效了。因为它会默认把CMAKE_PREFIX_PATH修改掉。 网上还有安装ros插件版本的qt creator,感觉失去了一些灵活性。 自己测试…

连接端口和连接端口转换OrCAD补丁

来介绍此功能之前先复习一下一些OrCAD的基础知识。 说到连通两个器件,有什么办法呢?最直接的就是用线连通。比如下面这两个器件需要连通,我们可以直接用线Place wire连接。 但是如果这两个器件由于某些原因,他们之间相隔很远&…

Milvus的相似度指标

官网:https://milvus.io/docs/metric.md版本: v2.3.x 在 Milvus 中,相似度度量用于衡量向量之间的相似度。选择良好的距离度量有助于显着提高分类和聚类性能。下表展示了这些广泛使用的相似性指标如何与各种输入数据形式和 Milvus 索引相匹配。 一、浮…

大语言模型:Large Language Models Are Human-Level Prompt Engineers概述

研究内容 如何通过prompt,在不进行微调大语言模型的前提下,增加大语言模型的表现 研究动机 prompt非常有用,但是人工设置的非常不自然;因此提出了要自动使用大语言模型自己选择prompt;取得了很好的效果。 作者主要…

java异常概述及自定义处理

前言 学到异常了,本来以为处理异常只是避免bug,结果发现还可以为了编程需要自定义异常。打好基础,daydayup! 异常 什么是异常 异常就是代表程序出现的问题 异常的体系 异常体系指的是java开发人员为了方便程序员使用所开发的异常类&#xff…

一文彻底搞懂MySQL建表规范

文章目录 1. 表设计规范2. 索引规范3. SQL语句规范4. 散表规范 1. 表设计规范 库名、表名、字段名使用小写字母,使用“_”分割,不超过12个字符。使用InnoDB存储引擎。存储精确浮点数使用DECIMAL替代FLOAT和DOUBLE。使用UNSIGNED存储非负数值&#xff0c…

Linux基础学习:常用命令

目录结构及其常用命令 处理目录的常用命令: ls :列出目录及文件名cd:切换目录pwd:显示目前的目录mkdir:创建一个新的目录rmdir:删除一个空的目录cp:复制文件或目录rm:删除文件或目录…

Redis核心数据结构之字典(一)

字典 概述 字典又称为符号表(symbol table)、关联数组(associative array)或映射(map),是一种保存键值对(key-value pair)的抽象数据结构,在字典中,一个键(key)可以和一个值(value)进行关联(或者说将键映射为值),这些关联的键和…

Unity类银河恶魔城学习记录9-1 9-2 P89,90 Character stats - Stat script源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Stat.cs using System.Collections; using System.Collections.Generic; us…

SSM整合项目(删除家居 + 分页查询)

1.删除家居 1.需求分析 2.编写Service层 1.FurnService.java 添加方法 //删除家居public void del(Integer id);2.FurnServiceImpl.java 实现方法 Overridepublic void del(Integer id) {furnMapper.deleteByPrimaryKey(id);}3.单元测试 Testpublic void del() {furnService.…

超越 Siri 和 Alexa:探索LLM(大型语言模型)的世界

揭秘LLM:语言模型新革命,智能交互的未来趋势 近年来,虚拟助手的世界发生了重大转变。 虽然 Siri 和 Alexa 本身就是革命性的,但一种称为大型语言模型 (LLM) 的新型人工智能正在将虚拟助手的概念提升到一个全新的水平。 在这篇博文…

面试官:线程调用2次start会怎样?我支支吾吾没答上来

写在开头 在写完上一篇文章《Java面试必考题之线程的生命周期,结合源码,透彻讲解!》后,本以为这个小知识点就总结完了。 但刚刚吃晚饭时,突然想到了多年前自己面试时的亲身经历,决定再回来补充一个小知识点&#xff…

Mybatis-Plus——04,自动填充时间(新注解)

自动填充(新注解) 一、数据库添加两个字段二、实体类字段属性上增加注解三、编写填充器四、查看结果4.1 插入结果4.2 修改结果 五、同步修改5.1实体类属性改成 INSERT_UPDATE5.2 在填充器的方法这里加上 updateTime5.3 查看结果————————创作不易…

汽车软件市场迅猛扩张,Perforce Helix Core与Helix IPLM助力汽车软件开发的版本控制及IP生命周期管理

汽车软件世界正处于持续变革和转型之中。从自动驾驶汽车到电动汽车和先进的驾驶辅助系统,汽车软件的集成度和复杂性不断提升。 据美国电气与电子工程师协会的研究,如今大多数汽车都集成了超过1亿行代码,而仅仅十年前,这种水平的汽…