白话解释“优先级翻转”。

简介:
    优先级翻转发生的条件:
    1、首先发生翻转需要有三个任务,它们的优先级分别是高、中、低。
    2、低优先级和高优先级都需要take同一个信号量。
     优先级翻转的过程:
    1、低优先级先take到信号量。
    2、低优先级被中优先级任务抢占。(然后低优先级任务就只能等中优先级任务执行完,再继续执行之后,才能释放信号量了)
    3、高优先级需要take该信号量了,但是由于中优先级任务运行时间长,低优先级任务又霸占住信号量不放,高优先级无奈被阻塞了。(一般高优先级任务都是要快速完成一些需要及时处理的事情,被阻塞可是大事)
    这样的现象就叫优先级翻转,因为高优先级它无法抢占低的,不“高”了,当然就是翻转了。
     避免优先级翻转的办法:
    使用互斥信号量,并且设置防优先级翻转参数(SEM_INVERSION_SAFE )。
     防止优先级翻转的原理:
    改变在于上面的过程中的第1步,低优先级take到该信号量的时候,系统就搜索该信号量还可能被哪些任务使用,然后就把该低优先级任务的优先级调整到这些任务中最高的一个那么高。
    这样,起码低优先级运行到释放信号量,高优先级也就立即能运行了,就不会出现中优先级任务长时间运行使得高优先级任务无休止等待的情况了。   
      注意两个前提条件:
1、信号量持有时间尽可能短。(这是写代码过程中就要注意的,做到这一点,就可以保证高优先级不用等低优先级任务太久)
2、高优先级任务执行非常快。(这也是任务设计的要求,高优先级应该只处理那些紧急而且快速的事情。)
所以不会出现中优先级抢占,但无法抢占而带来问题。因为上述两点决定了它们耽误的时间非常短,不会对中优先级造成影响。
















本文转sinojelly51CTO博客,原文链接:http://blog.51cto.com/sinojelly/200891 ,如需转载请自行联系原作者
相关文章
|
物联网 开发者
NB-IoT 中 TAU 和 PSM 定时器配置 | 学习笔记
快速学习 NB-IoT 中 TAU 和 PSM 定时器配置
NB-IoT 中 TAU 和 PSM 定时器配置 | 学习笔记
|
3月前
|
SQL 人工智能 数据挖掘
Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践
Apache Doris 4.0 原生集成 LLM 函数,将大语言模型能力深度融入 SQL 引擎,实现文本处理智能化与数据分析一体化。通过十大函数,支持智能客服、内容分析、金融风控等场景,提升实时决策效率。采用资源池化管理,保障数据一致性,降低传输开销,毫秒级完成 AI 分析。结合缓存复用、并行执行与权限控制,兼顾性能、成本与安全,推动数据库向 AI 原生演进。
347 0
Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践
|
10月前
|
机器学习/深度学习 数据采集 自然语言处理
深度学习实践技巧:提升模型性能的详尽指南
深度学习模型在图像分类、自然语言处理、时间序列分析等多个领域都表现出了卓越的性能,但在实际应用中,为了使模型达到最佳效果,常规的标准流程往往不足。本文提供了多种深度学习实践技巧,包括数据预处理、模型设计优化、训练策略和评价与调参等方面的详细操作和代码示例,希望能够为应用实战提供有效的指导和支持。
|
人工智能 搜索推荐 物联网
Android系统版本演进与未来展望####
本文深入探讨了Android操作系统从诞生至今的发展历程,详细阐述了其关键版本迭代带来的创新特性、用户体验提升及对全球移动生态系统的影响。通过对Android历史版本的回顾与分析,本文旨在揭示其成功背后的驱动力,并展望未来Android可能的发展趋势与面临的挑战,为读者呈现一个既全面又具深度的技术视角。 ####
|
8月前
|
Linux
CentOS分区表损坏修复方法
以上就是CentOS分区表损坏的修复方法,无论你是选择轻装使用fdisk,还是深度潜行使用TestDisk,都能找到照亮分区的灯塔,走出困境。恩,随风者无畏,享受这个过程,你会发现其乐无穷。
346 19
|
监控 安全 数据可视化
如何使用这些上网行为管理软件一键管控员工网络
使用WorkWin、Hubstaff和Veriato等上网行为管理软件,企业可以有效监控和提升员工工作效率。这些工具提供实时员工监控、时间统计、移动部署、权限控制、远程管理及安全监控等功能,确保工作安全,优化时间分配,防止数据泄露,并通过任务追踪促进项目进展。通过生成报告和分析,企业能识别生产力瓶颈和安全风险,从而制定改进策略。
366 3
|
SQL 人工智能 算法
使用低代码平台,让复杂的应用开发变得更轻松
在企业数字化转型中,低代码平台通过模块化设计、智能化对接及丰富的插件生态,帮助企业快速开发高效、灵活的业务应用。平台支持单体与微服务架构,内置多种实用工具,如拖拽式开发、自动化流程配置等,大幅降低开发门槛。同时,平台提供五大技术引擎(SQL、功能、模板、图表、切面)、四大应用服务(开发、设计、图表、模板)及多数据库支持,确保高性能与稳定性。此外,平台还支持AI模型对接,提供丰富的底层组件和跨平台兼容性,帮助企业快速应对市场变化,提升运营效率。
|
人工智能 自然语言处理 定位技术
基于qwen max 的知识图谱 指令对比分析 结构 指令 领域 指令差异分析
感谢阿里开发者社区通义千问Qwen技术应用实践征文活动赠予的Qwen Max Token。本文介绍了三种知识图谱抽取模式:只给结构、给结构和领域引导、给结构、领域引导和领域few-shot样本。通过对比“只给结构”和“给结构和领域引导”两种方法,分析了它们在准确性、推理能力、数据覆盖范围和构建成本等方面的优劣。结果显示,领域引导显著提升了知识图谱的准确性和推理能力,但构建成本较高;而只给结构的方法适用于大规模通用文本的快速抽取,但精度较低。选择合适的方法应根据具体应用需求。
535 1
|
搜索推荐 算法 C语言
【排序算法】八大排序(下)(c语言实现)(附源码)
本文继续学习并实现了八大排序算法中的后四种:堆排序、快速排序、归并排序和计数排序。详细介绍了每种排序算法的原理、步骤和代码实现,并通过测试数据展示了它们的性能表现。堆排序利用堆的特性进行排序,快速排序通过递归和多种划分方法实现高效排序,归并排序通过分治法将问题分解后再合并,计数排序则通过统计每个元素的出现次数实现非比较排序。最后,文章还对比了这些排序算法在处理一百万个整形数据时的运行时间,帮助读者了解不同算法的优劣。
452 7

热门文章

最新文章