热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Threadx优先级翻转优先级继承

优先级翻转优先级翻转是指较低优先级已经获得临界资源,这时较高优先级线程也需要获得的这个临界资源时,较高优先级线程会被挂起,等待资源释放。如果这时中等优先级任务抢占了低优先级任务,就




优先级翻转

优先级翻转是指较低优先级已经获得临界资源,这时较高优先级线程也需要获得的这个临界资源时,较高优先级线程会被挂起,等待资源释放。如果这时中等优先级任务抢占了低优先级任务,就出现了低优先级任务先执行,高优先级任务在等待,而且时间也变得不确定。

实时系统最大特点就是高优先级任务能够在确定时间进行响应,并且能够抢占低优先级任务。优先级翻转现象打破了这种规则,使系统变得不稳定。

举例:

1,线程a执行,并获取了互斥量M

2,线程b抢占了线程a

3,发生中断,唤醒了线程c,把线程c加到了就绪队列,并且线程c是所有就绪线程中优先级最高线程。线程c执行并企图获取互斥量M,由于未能获取,自我挂起。切换到线程b继续执行。

4,直到线程b执行完,切换到线程a,线程a释放互斥量M,高优先级线程c才能继续执行。

高优先级线程c的执行响应时间发生了不确定性。

在这里插入图片描述

解决线程优先级翻转方法:

1,应用开发者通过合理设置线程优先级和资源来防止优先级翻转

2,低优先级线程获取共享资源时,可以设置抢占门限避免中等优先级的线程抢占执行

3,线程可以用互斥量的优先级继承选项来排除不确定的优先级翻转。


优先级继承

优先级继承是指 高优先级的线程申请被低优先级线程占有的互斥量时,低优先级会得到高优先级,当低优先级线程释放互斥量后,会恢复到原来的优先级。 也就是让低优先级任务短暂变为高优先级,阻止了中等优先级的抢占。

Threadx系统中只有互斥量有优先级继承选项,信号量没有。

参考:嵌入式实时操作系统的多线程计算






  • 点赞



  • 收藏



  • 分享




    • 文章举报






osnet
发布了29 篇原创文章 · 获赞 2 · 访问量 2718
私信

关注

推荐阅读
author-avatar
牛玺峻国_781
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有