当一个高优先级任务正在等待一个资源,但一个低优先级任务正在持有它,一个中等优先级任务继续在中间运行时,就会发生优先级反转——阻止低优先级任务释放它。
如此有效→低优先级任务阻止高优先级任务。
示例
任务H→高优先级任务(需要UART)。
任务L→低优先级任务(目前持有UART互斥)。
任务M→中等优先级任务(不使用UART,但继续运行)。
1.任务L锁定UART互斥。
2.任务H唤醒并尝试锁定UART→,但它被阻止了,因为任务L保留了它。
3.任务M(中等优先级)继续运行,因为它的优先级高于任务L。
4.任务L永远不会获得释放互斥的CPU时间。
5.任务H(高优先级)仍然卡住→优先级反转。
解决方案→优先继承
RTOS暂时提高了任务L的优先级,以匹配任务H,因此它可以快速完成并释放互斥。然后任务H继续。
结论
当高优先级任务被阻止时,就会发生优先级反转,因为低优先级任务持有它所需的资源,而中优先级任务阻止了低优先级任务。这可能会导致系统停滞。RTOS通常通过优先级继承来解决它,低优先级任务的优先级被暂时提高,使其能够快速释放资源。
9月11日及9月17日,STM32研讨会将走进北京和上海。作为ST合作伙伴,麦克泰将在本次研讨会展示功能安全嵌入式实时操作系统SAFERTOS和Flexible Safety RTOS。欢迎报名并现场沟通您的功能安全RTOS需求。
麦克泰技术走过了30年发展历程(1995-2025),秉承“让嵌入式软件开发更容易”的理念,致力于推广嵌入式软件开发工具、测试软件和嵌入式操作系统。麦克泰技术通过举办嵌入式软件和操作系统研讨会、开设培训课程、出版图书,撰写博客文章,倡导和宣传开放和开源的嵌入式软件、操作系统以及开发技术,包括VRTX(90年代)、µC/OS(2000年),Montavista Linux(2010年)和FreeRTOS(2010年)以及IAR/BDI/J-Link等知名的产品和技术。
麦克泰技术具有丰富嵌入式软件项目开发、行业应用与服务经验。今天,我们依托欧美嵌入式软件商业团队支持,提供嵌入式软件商业授权和服务。包括(不限于)SEGGER嵌入式软件开发和编程工具(J-Link/Flasher),OS分析工具Tracealyzer,WITTENSTEIN公司的SafeRTOS(FreeRTOS)、Flexible Safety RTOS(µC/OS-II MPU)以及新一代PX5 RTOS。麦克泰技术专注预认证功能安全操作系统在汽车、轨交、医疗和工业领域的应用以及RISC-V处理器嵌入式开发生态建设。我们正在以开放开源+商业软件的支持,服务产业客户。
全部0条评论
快来发表一下你的评论吧 !