那么为了保证高优先级任务能顺利运行,

  则必须要让当前占用该资源的任务赶紧运行下去,直到把资源释放。

  再让高优先级的任务来占用这个资源。

  优先级反转在RTOS中是一个很深刻的课题,

  目前还没有非常好的解决方案。

  在这个问题上,目前业界比较典型的做法是VxWorks的做法

  原理如下:

  当任务A请求的资源被任务C所占用的时候

  则将C的优先级提升到任务A的级别,让占有资源的任务先运行,

  这样能在一定程度上解决优先级反转的问题。

  但是这样做,事实上破坏了实时系统里面运行优先级的意义...

  其他,有些商业RTOS也提出了一些解决方案

  比如常见的极限优先级方案:

  将使用资源的任务优先级提升到系统高级别

  使得任何使用该资源的任务都能快速通过

  但是,对优先级意义的破坏性,比优先级继承方案更大!

  接下来又有好多事情可以做了。比如可以细读一些其他的开源系统如ucos,freeRTOS,smallRTOS,RAW OS,keil RTX,RTTherad,uclinux,minix,linux以及一些比较的开源代码,虽然代码量很大,但是可以慢慢来,先看比较关注的某个模块是如何实现的。

  一次看懂少部分,慢慢的很有提高了。兴趣是好的老师,多实践,看的再多也不如经手一遍。