微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式实时系统中的优先级反转问题

嵌入式实时系统中的优先级反转问题

时间:06-10 来源:电子工程世界 点击:

  在优先权极限方案中,系统把每一个临界资源与1个极限优先权相联系。这个极限优先权等于系统此时最高优先权加 1。当1个任务进入临界区时,系统便把这个极限优先权传递给这个任务,使得这个任务的优先权最高;当这个任务退出临界区后,系统立即把它的优先权恢复正常,从而保证系统不会出现优先权反转的情况。如上例中,当task3进入临界区时,立即把它的优先权升高到极限优先权,保证task3此时能尽快退出临界区,进而释放其占有的信号量。当高优先级任务task1执行的时候就不会出现其等待低优先级任务task3释放信号量而被阻塞的情况,从而保证不会出现上面所说的优先级反转。采用这种方案的另一个有利之处,是仅仅通过改变某个临界资源的优先级就可以使多个任务共享这个临界资源,如下所示。

  void TaskA(void){

  ...

  SetTaskPriority(RES_X_PRIO);

  // 访问共享资源 X

  SetTaskPriority(TASK_A_PRIO);

  ...

  }

  以上就RTOS中优先级反转问题出现的原因以及解决方法进行了详细的说明。21世纪将是嵌入式系统的时代。从事嵌入式系统设计的人员深入了解RTOS的原理和内部潜在的问题,如优先级反转等,将有助于开发出更加可靠的产品。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top