优先级反转与死锁
来源:互联网 发布:自然辩证法与人工智能 编辑:程序博客网 时间:2024/06/05 15:23
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)是最有效的方法。
原文:
OSEK study notes – 优先级反转与死锁
- 优先级反转与死锁
- 自旋锁死锁与优先级反转
- 死锁和优先级反转的区别与联系
- 互斥锁陷阱:优先级反转、死锁
- 死锁与优先级翻转
- 死锁 & 优先级反转
- SylixOS下优先级反转与解决方案
- 优先级反转
- 优先级反转
- 优先级反转
- 优先级反转
- 优先级反转
- 优先级反转
- 优先级反转
- 优先级反转
- 优先级反转
- 优先级反转
- 优先级反转
- 配置Nginx反向代理Tomcat
- QUESTION 169 A database has three online redo log groups with one member each. A redo log member wit
- Windows 无法安装到这个磁盘。选中的磁盘具有MBR分区表。在 EFI 系统上,Windows 只能安装到 GPT 磁盘。
- 如何把EXE文件做成windows服务
- CAS单点登录数据库配置操作学习记录笔记
- 优先级反转与死锁
- GCD使用详解
- MSSQL 用SQL语句操作数据
- 手把手入门神经网络系列(2)_74行代码实现手写数字识别
- PDO防注入原理分析以及使用PDO的注意事项
- setjmp和longjmp的使用
- 大文件之Java RandomAccessFile用法
- Android ActionBar 讲解
- 典型Top K算法