变量的值从假(FALSE)到真(TRUE)。这就杜绝了系统复位问题。

火星探路者(Mars Pathfinder)是一艘在1997年携带探测车登陆火星并建立基地的美国太空船。它包括命名为卡尔萨冈纪念站的登陆者,和一辆重量很轻 (10.6公斤/23磅),命名为旅居者号的轮型机器人火星车。这艘太空船于火星全球探勘者号发射一个月之后的1996年12月4日由德爾它 II发射,并于1997年7月4日于火星上称为欧克西亚沼区的克里斯平原阿瑞斯谷着陆。为了解决这个问题,他们开启了一个布尔参数,来指示是否应该进行互斥锁定的优先级继承。 上述的互斥锁定已经把该参数关闭;如果打开它,优先级反转就能被阻止。

根据优先级继承,当高优先级任务请求信号(semaphore)时,持有信号的任务优先级继承高优先级任务的优先级。在图2中,当任务“high”请求信号时,任务“low”将继承任务“high”的优先级。这使得“low”能优先抢占“medium”。

造成问题(对其它两个也可能造成同样的问题)的互斥锁定的初始化参数存储在一个全局变量中,其地址放在发射软件的符号表里。因为VxWorks包含一个C语言解释器,允许开发人员输入和执行C表达式和函数来进行系统调试。它可以给太空船上传一个简短的C程序。在解释C程序时,可以改变这些变量的值从假(FALSE)到真(TRUE)。这就杜绝了系统复位问题。



工程师们学到了什么?

只有对实际系统行为的详细追踪,济南信用卡代还才能捕获和识别错误执行序列。而对一个不能追踪的黑盒子来说,是无法诊断的;
系统中具备调试工具是非常重要的。如果不能修改系统,则问题无法修正;
花费额外的时间确保在测试阶段的优先级继承正确性,甚至牺牲一些本来非常宝贵的额外性能开销。


解决方案来源

当主讲人提到一份论文――它第一个识别优先级反转问题,并且提出了解决方案。特别的事发生了――令人惊讶的是,作者们都在房间里,收到了热情的接待。论文原文是:

L. Sha, R. Rajkumar, and J. P. Lehoczky. Priority Inheritance Protocols: An Approach to Real-Time Synchronization. In IEEE Transactions on Computers, vol. 39, pp. 1175-1185, Sep. 1990.

【1】本摘要根据麦克•琼斯(Mike Jones)于1997年12月所记录的风河系统(Wind River Systems)公司首席技术官大卫•维尔纳(David Wilner)在IEEE实时操作系统研讨会上的专题演讲。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值