跳转至

7.Mars

约 496 个字 预计阅读时间 2 分钟

1. Mars Pathfinder

1.1 Mission

  • Demonstrate new landing techniques: parachute and airbags;
  • Take pictures、Analyze soil samples;
  • Demonstrate mobile robot technology: Sojourner;

1.2 System Reset

  • Within a few days of landing, when Pathfinder started gathering meteorological data, spacecraft began experiencing total system resets.
  • 开始以为是负载太高了;
  • 开始的尝试是,slow down系统处理的速度;
  • 困难是,bug不是稳定复发的,不知道会在什么时候出现bug;
  • 我们为了复现操作系统的bug,会有一种 recall and replica 技术,录制和重放;
  • 地球上有一个完整的火星车复制品,复现了火星车在火星的所有操作;

1.3 VxWorks RTOS(实时操作系统)

  • image-20221212170010421

  • Mutex同时只能被一个线程使用,只有拥有Mutex才能访问Information Bus;

  • image-20221212170158960

  • 当Weather Data Thread得到Mutex并往Information Bus 里写数据的时候,数据还没写完就发生了一次调度,高优先级的线程获得了资源,而高优先级线程再去读Information Bus的资源时,也得先拿到Mutex,就开始等待;

  • 这时又发生了调度,中优先级的线程,在run的时候,低优先级线程没有机会得到运行,但低优先级线程持有mutex,这样高优先级线程也不能跑;
  • 这时操作系统就会以为系统故障,就 重启了;

1.4 优先级反转

  • 高优先级线程在等待一个低优先级线程持有的资源的时候,这时就要使用优先级反转来解决这个问题;
  • 把低优先级线程优先级进行暂时的提高;

1.5 如何fix

  • 优先级继承(当低优先级线程持有高优先级线程所需要的一些资源时,会暂时继承高优先级的优先级);

1.6 启示

    1. 调试是比较难的,所以一个detailed trace是很有必要的;
    1. 热补丁系统:不重新升级或者重启的情况下,打上补丁;(比如change memory里面的值或者修复代码里面的bug)
  • image-20221212171358844

本文总阅读量