`
kanwoerzi
  • 浏览: 1643289 次
文章分类
社区版块
存档分类
最新评论

进程优先级反转

 
阅读更多
. 优先级反转(Priority Inversion)

  由于多进程共享资源,具有最高优先权的进程被低优先级进程阻塞,反而使具有中优先级的进程先于高优先级的进程执行,导致系统的崩溃。这就是所谓的优先级反转(Priority Inversion)。

  2. 产生原因

  其实,优先级反转是在高优级(假设为A)的任务要访问一个被低优先级任务(假设为C)占有的资源时,被阻塞.而此时又有优先级高于占有资源的任务(C)而低于被阻塞的任务(A)的优先级的任务(假设为B)时,于是,占有资源的任务就被挂起(占有的资源仍为它占有),因为占有资源的任务优先级很低,所以,它可能一直被另外的任务挂起.而它占有的资源也就一直不能释放,这样,引起任务A一直没办法执行.而比它优先低的任务却可以执行.

  所以,一个解决办法就是提高占有资源任务的优先级,让它正常执行,然后释放资源,以让任务A能正常获取资源而得以执行.

  3. 解决方案 ( 优先级继承 / 优先级天花板 )

  目前解决优先级反转有许多种方法。其中普遍使用的有2种方法:一种被称作优先级继承(priority inheritance);另一种被称作优先级极限(priority ceilings)。

  A. 优先级继承(priority inheritance)

  优先级继承是指将低优先级任务的优先级提升到等待它所占有的资源的最高优先级任务的优先级.当高优先级任务由于等待资源而被阻塞时,此时资源的拥有者的优先级将会自动被提升.

  B. 优先级天花板(priority ceilings)

  优先级天花板是指将申请某资源的任务的优先级提升到可能访问该资源的所有任务中最高优先级任务的优先级.(这个优先级称为该资源的优先级天花板)

  A 和B的区别:

  优先级继承,只有当占有资源的低优先级的任务被阻塞时,才会提高占有资源任务的优先级,而优先级天花板,不论是否发生阻塞,都提升.

分享到:
评论

相关推荐

    linux实时信号量优先级翻转和优先级继承

    描述解决线程优先级翻转的优先级继承协议实现

    pintos 作业2

    进程优先级调度,因为不同的学校,操作系统上机作业是不一样的,因此,大家看好,不要没事浪费了,资源分,这里面详细介绍了在哪里更改,希望对大家有帮助

    嵌入式系统/ARM技术中的嵌入式实时系统中的优先级反转问题

    本文就什么是优先级反转及其产生原因进行分析,并提出2个行之有效的解决方案。 关键词:嵌入式实时系统 多任务 信号量 优先级反转1 问题的提出 目前,市场上占有率比较高的商业RTOS有VxWorks/PSOS、QNX、 LynxOS、...

    实时操作系统-任务管理与调度

    嵌入式实时操作系统及应用开发 任务管理与调度 进程与线程/任务/任务管理/任务调度/优先级反转

    giCell zlg-gui

    级由其客户任务的最高优先级驱动,随之动态改变,以消除隐式优先级反转现象; 5. 提供任务(Task)、互斥锁(Mutex)、信号量(Semaphore)、位域标志(Flag)、 定时器(Timer)、优先级消息(Message)和环形...

    推荐系统架构师考试全套视频教程合集.zip

    14.5.5 优先级反转 14.6 中断处理和异常处理 14.7 嵌入式系统开发设计 14.7.1 交叉开发环境 14.7.2 开发过程 14.7.3 调试方法 第十五部分 开发管理 15.1 范围管理 15.2 时间管理 15.3 成本管理 15.4 文档管理 15.4.1...

    kangle最新版linux安装包

    kangle的访问控制理念来自linux的iptables防火墙,kangle实现很多最小化的匹配模块和标记模块,通过组合,反转可以实现最复杂的需求;从而实现强大的访问请求控制(url,ip地址,连接数/网速限制,http头,时间控制,多种...

    精通Windows.API-函数、接口、编程实例.pdf

    13.8.2 区域边沿、区域填充、反转与勾勒操作 423 13.8.3 组合、比较、移动等操作 426 13.8.4 点击测试(Hit Testing) 427 13.8.5 路径的创建与操作 431 13.8.6 路径转换为区域 432 13.8.7 使用区域和路径...

    精通WindowsAPI 函数 接口 编程实例

    13.8.2 区域边沿、区域填充、反转与勾勒操作 423 13.8.3 组合、比较、移动等操作 426 13.8.4 点击测试(Hit Testing) 427 13.8.5 路径的创建与操作 431 13.8.6 路径转换为区域 432 13.8.7 使用区域和路径...

    精通Qt4编程(第二版)源代码

    \10.3.2 死锁及优先级反转问题 274 \10.3.3 本地存储问题 275 \10.4 Qt的线程机制 276 \10.4.1 可重入与线程安全 276 \10.4.2 线程与事件循环 277 \10.4.3 线程与信号/槽机制 278 \10.4.4 多线程网络示例 279 ...

    精通qt4编程(源代码)

    \10.3.2 死锁及优先级反转问题 274 \10.3.3 本地存储问题 275 \10.4 Qt的线程机制 276 \10.4.1 可重入与线程安全 276 \10.4.2 线程与事件循环 277 \10.4.3 线程与信号/槽机制 278 \10.4.4 多线程网络示例 279 \10.5 ...

Global site tag (gtag.js) - Google Analytics