当前位置:网站首页>优先级反转与死锁
优先级反转与死锁
2022-07-06 09:16:00 【薇远镖局】
1、优先级反转
指资源被锁时低优先级任务抢占高优先级任务。
举例:任务A、B、C,优先级从低到高依次为1、2、3,所有任务都是完全抢占式,任务A和C共享资源R。
1.任务A运行,并对资源R加锁;
2.任务C被激活抢占任务A,并尝试对资源R加锁,因此C进入WAITING状态,A从被抢占的地方恢复;
3.任务B被激活并抢占任务A,任务B成功执行;
4.任务A恢复执行并释放资源R,任务A执行完成;
5.任务C恢复并对资源R加锁并完成执行。
我们观察到任务B优先级低于任务C却实际上抢占了任务C,这就是优先级反转。在实时要求较高的系统中这种高优先级的任务被意外延迟是难以接受的。更严重的是由于优先级反转,任务C的延迟时间是无法确定的,因为任何比任务A优先级高的任务都可以抢占任务A。
2、死锁
对资源加锁造成两个任务的冲突,每个任务都锁住了另一个任务需要的资源,使得每个任务都不能完成。
举例:任务A、B,共享两个资源R1、R2,其他情况与优先级反转中相同。
1.任务A对R1加锁;
2.任务B抢占A,并对R2加锁,之后尝试对R1加锁,由于R1已经被锁,所以任务B进入WAITING状态;
3.任务A恢复执行,尝试对R2加锁,由于R2已经被锁,所以任务A进入WAITING状态;
4.其他任务进入执行状态,而任务A和B永远无法继续执行。
死锁很可能在正常测试中不能被发现,而在交付客户后由于问题难以复现而更难被排查到。
解决优先级反转和死锁的方法很多,在OSEK中利用OS的优先级天花板协议(priority ceiling protocol)是最有效的方法。
RT-thread 互斥量中优先级继承机制
2018-11-01 13:23:58
三个线程分别是 H线程、M线程、L线程
1.三个线程的优先级顺序是:H线程 > M线程 > L线程;
2.正常运行的时候H线程可以打断M线程与L线程, M线程可以打断L线程;
3.假设系统有一个资源被保护了,此时该资源被L线程在使用,某一时刻H线程需要使用该资源,但L线程还未使用完,H线程申请不到而进入阻塞态,此时已出现优先级翻转现象;
没有优先级继承机制的时候:
如果L线程执行的时候,M线程刚好被唤醒了,由于M线程的优先级比较高,会打断L线程,抢占CPU使用权,直到M线程执行完成;
M线程将CPU的使用权给L线程,L线程继续执行,L执行完后释放该资源;
H线程得到该资源,从阻塞态解除;
这个过程,高优先级的H等待了M线程+L线程的时间,如果有更多线程的时候,那系统就崩溃了,等不起的!
有优先级继承机制的时候:
在H贤臣申请资源的时候由于申请不到资源进入阻塞态,系统会把当前使用资源的L线程的优先级临时提高到与H线程的优先级相同;
此时M线程被唤醒也不会打断L线程;
L线程执行完毕,释放资源,H线程获取资源被继续执行,H线程等待的时间只是L线程的执行时间。
原文:
OSEK study notes – 优先级反转与死锁
边栏推荐
- Double to int precision loss
- Some concepts often asked in database interview
- Detailed explanation of nodejs
- Reading notes of difficult career creation
- IOT system framework learning
- Common regular expression collation
- 第4阶段 Mysql数据库
- Codeforces Round #753 (Div. 3)
- Word typesetting (subtotal)
- 【CDH】CDH/CDP 环境修改 cloudera manager默认端口7180
猜你喜欢
Word排版(小計)
物联网系统框架学习
Software I2C based on Hal Library
R & D thinking 01 ----- classic of embedded intelligent product development process
機器學習--線性回歸(sklearn)
Principle and implementation of MySQL master-slave replication
Kept VRRP script, preemptive delay, VIP unicast details
分布式节点免密登录
error C4996: ‘strcpy‘: This function or variable may be unsafe. Consider using strcpy_ s instead
Mall project -- day09 -- order module
随机推荐
L2-007 family real estate (25 points)
Internet protocol details
{一周总结}带你走进js知识的海洋
[Presto] Presto parameter configuration optimization
2019 Tencent summer intern formal written examination
Case analysis of data inconsistency caused by Pt OSC table change
电商数据分析--薪资预测(线性回归)
Codeforces Round #753 (Div. 3)
vs2019 桌面程序快速入门
About string immutability
MySQL START SLAVE Syntax
互联网协议详解
jS数组+数组方法重构
SQL时间注入
[Flink] cdh/cdp Flink on Yan log configuration
[Bluebridge cup 2020 preliminary] horizontal segmentation
[MRCTF2020]套娃
电商数据分析--用户行为分析
Common regular expression collation
Detailed explanation of nodejs