1.优先级翻转问题
当rt-thread实时操作系统运行时,如果单纯使用信号量来管理公共资源,则会出现优先级翻转问题,导致高优先级线程被低优先级线程运行而阻塞,使得系统的实时性无法得到保证。下面为优先级翻转的具体解释
优先级翻转:
现有三个不同优先级的线程·,优先级分别为高,中,低,使用信号量机制访问同一公共资源(临界区)。
1.优先级为低的线程先占用信号量,访问公共资源,此时高优先级线程使用信号量访问临界区,由于低优先级线程已经占用信号量还未释放,则高优先级线程进入阻塞状态,等待信号量释放。

2.此时中优先级线程就绪,由于RT-Thread使用线程优先级抢占机制,则中优先级线程获得cpu使用权,低优先级线程挂起等待。

3.当中优先级线程运行完毕,让出cpu使用权,低优先级线程得以继续运行。当c优先级线程运行完毕,释放信号量,则高优先级线程获取信号量访问临界区,开始运行。

由此可见,此时高优先级线程没有立即获取cpu使用权,而是一直等待其他低优先级线程完成任务后释放信号量,才可运行,严重影响了系统的实时性。
2.优先级继承机制
为解决使用信号量优先级翻转问题,互斥量采用了优先级继承机制,下面为优先级继承机制的解释。
当有线程通过互斥量访问某一公共资源(临界区)时,此时若有多个线程访问此临界区,则进入线程等待队列,此时将占用临界区的线程优先级暂时调整为线程等待队列中优先级最高的线程相同优先级,则当外界即使有其他线程需要使用cpu时,也不会影响线程等待队列中的线程访问临界区,避免其他中等优先级线程抢占cpu,当此线程使用完毕释放互斥量时,优先级回到原先优先级。
3.互斥量基本概念
互斥量是一种特殊的信号量,只有两种状态,开锁

本文介绍RT-Thread实时操作系统中互斥量的基本概念、优先级继承机制及使用方法,并通过实例演示如何防止线程间资源冲突。
最低0.47元/天 解锁文章
444

被折叠的 条评论
为什么被折叠?



