倒挂的解决方案你现在是一位计算机专家,来聊一聊:“美国的火星探测器Mars Path-finder 就是因为优先级倒挂而出现故障的故事”

news2025/1/19 11:18:06

目录

倒挂的解决方案

你现在是一位计算机专家,来聊一聊:“美国的火星探测器Mars Path-finder 就是因为优先级倒挂而出现故障的故事”

●使用中断禁止


 具体证明请参阅LiuKayland1973年发表的论文。

 

因时序或外部中断或进程挂起而导致操作系统获得 CPU 控制权。
操作系统在所有就绪的进程中按照某种算法遴选进程。
如果选中的是非当前进程,则操作系统将当前进程(中断或挂起的进程)状态予以保护。
将选中的进程的环境布置好(设置寄存器、栈指针、状态字等)。
跳转到选中的进程

倒挂的解决方案

优先级倒挂的问题在 20 世纪 70 年代就已经发现,但却没有找到一个可以预测其发生的方法。这是因为在实际 运行中很难判断哪些进程之间会进行资源竞争,哪些进程又会从别人的资源竞争中渔翁得利。不过,虽然我 们不能预测其发生,但却可以采取手段防止其出现。由于优先级倒挂必须满足某些条件,因此我们只需将这 些条件排除即可防止优先级倒挂。
那么如何防止优先级倒挂呢?首先我们应该看到,优先级倒挂有两种形式:
不持有资源的低优先级进程阻碍需要资源的高优先级进程的执行。
持有资源的低优先级进程阻碍需要资源的高优先级进程的执行。

你现在是一位计算机专家,来聊一聊:“美国的火星探测器Mars Path-finder 就是因为优先级倒挂而出现故障的故事”

美国的火星探测器Mars Pathfinder是NASA于1997年成功发射的一项太空任务,旨在研究火星的地质特征、气候和大气条件。该任务的主要目标是通过着陆器和一辆名为Sojourner的火星漫游车来获取火星表面的图像和数据。

在Mars Pathfinder任务中,的确出现了一个与优先级倒挂相关的故障。这个问题源于任务中的软件设计。在探测器的软件中,任务控制代码使用了优先级反转(priority inversion)的方式来管理任务的执行顺序。

优先级反转是指当一个高优先级任务被一个低优先级任务占用所需的共享资源时,导致低优先级任务阻塞高优先级任务的现象。在Mars Pathfinder任务中,由于设计缺陷,当Sojourner火星漫游车需要访问共享资源时,它的任务优先级会被提高,从而导致其他高优先级任务被阻塞。

具体而言,在火星探测任务中,Sojourner火星漫游车需要与探测器上的无线电设备进行通信。由于设计上的错误,当无线电设备正在被其他高优先级任务使用时,Sojourner任务的优先级会被提高,以确保通信任务能够尽快完成。然而,这种优先级反转的机制却导致了其他高优先级任务被阻塞,影响了任务的正常执行。

这一故障的出现对Mars Pathfinder任务造成了一些延误和数据传输中断的问题。不过,NASA的工程师们很快意识到了问题,并通过重新设置优先级和优化软件设计来解决了这个问题。他们对任务的软件进行了修改,确保了高优先级任务能够在必要时获得优先执行,并且成功地恢复了任务的正常运行。

这个故事提醒了我们在设计和开发复杂系统时,需要仔细考虑任务的优先级和资源管理,避免出现优先级倒挂等问题。尤其在航天探测等对可靠性和安全性要求较高的领域,合理的软件设计和优先级管理至关重要。通过总结故障经验和进行改进,可以提高系统的鲁棒性和可靠性,确保任务的顺利执行。

使用中断禁止

这种办法的核心是通过禁止中断来保护临界区。在采用此种策略的系统中只有两个优先级:可抢占优先级和 中断禁止优先级。前者为一般进程运行时的优先级,后者为运行于临界区进程的优先级。由于不存在第3 种 优先级,因此第1 种优先级倒挂无法发生。由于系统里只存在一把锁(禁止中断操作在任何时候只能由一个 进程执行),不能发生乱序,因此也不会发生死锁。又由于进入临界区的进程总是能够不被打断而一直运行 到结束,因此也不会发生悬挂(hang)。此时,即使高优先级进程采用繁忙等待也不会发生死锁。
这里需要注意的是,所有中断都必须禁止。如果禁止的仅仅是一个特定的硬件设备的中断,则硬件的中断优 先处理机制将再次引入优先级倒挂。
该方法普遍应用于简单的嵌入式系统。这种系统的特点是可靠性、简易性和资源需求低。不过这种方法对程 序员的要求较高,因此在程序设计时需要将临界区设计得很短(中断禁止时间过长会造成系统响应时间增加而导致错误或灾难),通常应该在100 微秒以下。而这个时间对于通用计算机来说很不现实。
在多 CPU 环境下,由于不能使用中断禁止,因此使用一个简单的变种:单一共享标志锁。该方法在共享内存 里面提供一个单一标志。所有CPU 在进入跨 CPU 临界区时都必须先获得该标志。这个标志在有的操作系统里 面称为旋锁。本书将在第七篇对旋锁进行讨论。

 

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

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

相关文章

数据结构-关键路径-理论

1.AOE-网 与AOV-网相对应的是AOE-网(Activity On Netword),即以边表示活动的网。AOE-网是带权的有向无环图,其中,定点表示时间,弧表示活动,权表示活动持续的时间。通常AOE-网可用来估算工程的完…

Base64字符串从前台传到后台以后,“+”加号消失

记录一下问题&#xff1a; 使用 encodeURI(str) 对字符串进行加密的时候&#xff0c;后端解密会丢失 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&…

第一章.机器学习的基础概念

第一章.机器学习的基础概念 1.1 机器学习的基础概念 1.机器学的概念&#xff1a; 机器学习就是机器从数据中总结经验。从数据中找出某种规律或者模型&#xff0c;并用他来解决某种实际问题。 2.机器学习的应用场景 1).事物本身存在某种潜在规律 2).某些问题难以使用普通编程…

two-stage目标检测算法

R-CNN 现在&#xff0c;将目光穿越回2012年&#xff0c;hinton刚刚提出alexnet的时代。 此时&#xff0c;该如何审视目标检测任务&#xff1f; 当时的目标检测采用的是滑动窗口手动特征分类器的思路。 该方法的弱点包括 速度慢 精度差 精度差的问题是由手工特征造成的&am…

【VS安装记录】Visual Studio 2022安装教程(超详细)

大家好&#xff0c;我是雷工&#xff01; 由于更换了电脑&#xff0c;很多软件需要重新安装&#xff0c;为了方便学习C#&#xff0c;今天有时间安装下Visual Studio 2022&#xff0c;顺便记录安装过程。 1、从官网下载并解压软件压缩包&#xff0c;然后打开文件夹。 2、双击…

切比雪夫不等式,大数定律及极限定理。

一.切比雪夫不等式 1.定理 若随机变量X的期望EX和方差DX存在,则对任意ε > 0,有   P{ |X - EX| > ε } < DX/ε2 或 P{ |X - EX| < ε } > 1 - DX/ε2 2.解析定理 ①该定理对 X 服从什么分布不做要求&#xff0c;仅EX DX存在即可。 ②“| |” 由于X某次…

linux kernel pwn 基础知识

基础知识 内核概述 内核架构 通常来说我们可以把内核架构分为两种&#xff1a;宏内核和微内核&#xff0c;现在还有一种内核是混合了宏内核与微内核的特性&#xff0c;称为混合内核。 宏内核&#xff08;Monolithic kernel&#xff09;&#xff0c;也译为集成式内核、单体…

网络原理——基础概念(端口号、分层、封装和复用)、各层协议(TCP/IP协议)(详细图解)

目录 一、基础概念 1、 IP地址 &#xff08;1&#xff09;点分十进制 2、端口号 3、协议 &#xff08;1&#xff09;协议的 组成部分 &#xff08;2&#xff09; 协议的 作用 4、五元组 5、协议分层 &#xff08;1&#xff09;分层的 好处 &#xff08;2&#xff0…

Overleaf中Latex问题——控制文本分两列显示(分栏布局)

文章目录 需求描述相关介绍实现代码实现效果参考和总结 需求描述 要写论文&#xff0c;需要分两列进行显示文本。但是默认都是单列展示&#xff0c;并且自动换行。 需要实现一下的效果 相关介绍 在$LaTeX 中&#xff0c;你可以使用 中&#xff0c;你可以使用 中&#xff0c…

Tokenview上线BRC-20浏览器,支持Ordinals API数据服务

5月20日&#xff0c;Tokenview团队宣布正式推出BRC-20代币浏览器&#xff0c;同时支持BTC Ordinals API数据服务。作为通用多链区块链浏览器&#xff0c;Tokenview以最快的速度推出了BRC-20浏览器&#xff0c;Ordinals API旨在为所有面向比特币的普通用户和开发者提供数据支持&…

追寻篮球梦想 点燃希望之光 2023年海彼特全国幼儿篮球联赛·总决赛圆满落幕

5月21日&#xff0c;由北京海彼特教育科技院主办的“2023年海彼特全国幼儿篮球联赛总决赛”。在河北体育馆隆重举行&#xff0c;精彩的比赛效果使体育馆顿时成为幼儿篮球界最高端、大气的舞台。 本次盛会联合举办方有&#xff1a; 河北体育馆 亚洲少儿体育协会 北京海彼特文…

组件123456789

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

G企孵化-千趣生活项目,10年互联网经验专业策划商业模式

G企孵化-千趣生活项目&#xff0c;10年互联网经验专业策划商业模式 背景&#xff1a;现在许许多多的项目&#xff0c;首先对外呼吁的口号就是“上市”但真正能做到上市的企业&#xff0c;确实没有几个&#xff0c;10年互联网经验的微三云胡佳东&#xff0c;给大家详细聊聊&…

【卡尔曼滤波的学习,以及一些理解】

卡尔曼滤波的一些理解 优秀的博客推荐直观理解卡尔曼滤波核心算法举个例子 最近两个多月在实习&#xff0c;做的是GPS定位相关的一些工作&#xff0c;同时也简单做了一下组合导航。卡尔曼滤波是组合不同传感器比较核心的算法&#xff0c;应用也比较广泛&#xff0c;也有很多文章…

电子数据保全及数据恢复

目录 一.创建虚拟磁盘 系统操作 1.创建虚拟磁盘文件 2.完成低级格式化——分区——高级格式化 3.虚拟磁盘创建完成 用winhex做 2. 镜像&#xff1a; 克隆&#xff1a; 计算分区的hash值&#xff1a; 二.FAT32文件系统 1.认识FAT32文件系统 三.NTFS文件系统 认识NTFS文…

数字信号处理5

好长时间没有更新了&#xff0c;一是这段时间事情比较多&#xff0c;另外一个&#xff0c;我觉得抄书其实意义不大&#xff0c;不如先看书&#xff0c;一个章节看完之后&#xff0c;再写&#xff0c;那样子的话&#xff0c;会效果更好一些&#xff0c;所以我就花了一段时间去把…

chatgpt赋能Python-python_chia

简介&#xff1a;什么是Python Chia&#xff1f; Python Chia是一种加密货币&#xff0c;它的挖矿过程使用Python编程语言。Python Chia是开源的&#xff0c;任何人都可以参与挖矿。 Chia使用绿色挖矿的方式&#xff0c;这意味着Chia的挖矿过程对环境没有任何负面影响。此外&…

typeScript开发

typeScript开发 1.TypeScript简介2.TypeScript 安装3.TypeScript 基础语法3.TypeScript 基础类型4.TypeScript 变量声明5.TypeScript 运算符6.TypeScript 条件语句7.TypeScript 循环8.TypeScript 函数9.TypeScript Number10.TypeScript String&#xff08;字符串&#xff09;11…

使用github CICD 简单部署vue项目

1.首先先创建一个github访问地址&#xff0c;关于Github Pages的域名访问地址&#xff0c;在github上新建一个以域名为名称的仓库即可&#xff0c;一般都是githubname.github.io 2.首先创建vue项目&#xff0c;这里我就使用自己写的前端项目脚手架来创建vue项目 这里顺便把图标…

立创梁山派学习笔记——GPIO输入检测

按键检测 前言按键的硬件电路BOOT选择复位按键唤醒按键GPIO输入框图软件配置寄存器简介1.端口控制寄存器&#xff08;GPIOx_CTL, xA..I&#xff09;2.端口上拉/下拉寄存器&#xff08;GPIOx_PUD, xA..I&#xff09;3.端口输入状态寄存器&#xff08;GPIOx_ISTAT, xA..I&#xf…