拓冰建站拓冰建站
首页 / 资讯中心 / 正文

[AutoSar]BSW_OS 03 priority ceiling protocol(PCP)

目录关键词平台说明参考状态装换图一、critical section 临界区的定义二、priority ceiling protocol是什么三、使用限制范围四、优先级反转五、死锁六、引入priority ceiling protocol后关键词嵌入式、C语言、autosar、OS、BSW平台说明项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言CC编译器HighTec (GCC)回到总目录参考状态装换图一、critical section 临界区的定义多个TASK或者ISR可以同时访问的resource 被成为临界区critical section。resource包括 memory、SPI、CAN、I2C。二、priority ceiling protocol是什么priority ceiling protocol优先级上限协议又被俗称为天花板优先级协议。在autosar OS中用于临时提升TASK 或者ISR 的优先级以最大化减轻优先级反转的影响和避免死锁的产生。在配置好TASK/ISR和与其相挂钩的resource后会自动分配静态的优先级P给resourceP的值等于TASK/ISR的最高的优先级。例如当TASK1,TASK2同时访问resource1TASK1优先级 10 TASK2优先级 5那么静态分配的resource1的优先级就是10.当TASK2使用resource1的时候TASK2的优先级会被临时调整到10 resource1的优先级等TASK2运行完成后TASK2的优先级重新回到5.具体请参考第六小结。三、使用限制范围单核或者多核芯片中的核内。四、优先级反转在没有优先级上限协议的情况下可能会出现优先级反转的情况。定义优先级较低的task延迟了优先级较高的task的运行结束时间。优先级从下往上递增。TASK1 TASK2 TASK3 TASK4。TASK1和TASK4可共享一个信号量S1。T1时刻 TASK4先运行并占用S1TASK1-3处于suspend状态。T2时刻TASK1,TASK2TASK3被激活运行但是由于信号量S1被TASK4占用TASK1在判定envent的时候无法获取S1导致TASK1转移到waiting状态。T3时刻TASK2由于TASK进入waiting且TASK2优先级又高于TASK4所以TASK4被抢占转移到READY状态。T4时刻TASK3由于TASK2运行完毕且TASK3优先级又高于TASK4所以TASK4依旧被抢占转移到READY状态。T5时刻TASK3运行完毕TASK4被抢占结束转移到RUNNING状态运行完毕后释放S1。T6时刻由于TASK4释放了S1TASK1满足所有envent于是开始转移到RUNNING。于是TASK1的运行被低优先级的TASK延迟了运行时间的情况称之为优先级反转。五、死锁两个TASK/ISR同时因只能获取两个resource中的一个并占用而不能同时获取到两个resoure导致无法运行的情况称之为死锁。优先级从下往上递增。TASK1 TASK2TASK1和TASK2可共享两个信号量S1S2。T1时刻TASK1先运行并占用S1。T2时刻由于TASK1需要等待一个其他EVENT例如其他task设置转入waiting状态TASK2开始运行并占用S2。T3时刻由于TASK1条件满足继续开始执行。TASK2转为ready状态。T4时刻TASK1请求占用S2但是S2已经被TASK2占用导致TASK1进入WATING状态,TASK2开始运行。T5时刻TASK2请求占用S1但是S1已经被TASK1占用导致TASK2进入WATING状态.至此TASK1和TASK2 同时进入waiting状态且不可能恢复到running进入死锁。六、引入priority ceiling protocol后注意TASK/ISR不会被同优先级的TASK/ISR所抢占。优先级从下往上递增。Ceiling priority TASK1 TASK2 TASK3 TASK4。TASK1和TASK4可共享一个信号量S1。T1时刻TASK4开始运行S1被占用。T2时刻TASK1TASK2,TASK3被开始激活想要抢占TASK4由于有priority ceiling protocol此时TASK4的优先级被临时调整到和TASK1一样的优先级TASK1无法抢占TASK4且此时TASK4优先级临时比TASK2和TASK3高所以继续运行TASK4而TASK2Task3进入ready状态。T3时刻由于TASK4运行完毕并释放S1TASK1开始执行。T4时刻TASK2由于TASK1运行完成所以转移到了running。T5时刻TASK3由于TASK2运行完成所以转移到了running。由此可见引入了priority ceiling protocol后最大化减小了TASK4对TASK1的的影响。回到总目录
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门