#车载软件的核心:操作系统关键技术---实时任务调度解析

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:

物质的贫穷能够摧毁你一生的尊严,精神的贫穷能够耗尽你几世的轮回。人生没有白走的路,没有白读的书。你触碰过的那些文字,会在不知不觉间帮你认识这个世界,会悄悄帮你擦去脸上的肤浅和无知。虽然读书不一定让你功成名就,不一定让你前程锦绣,但它能让你说话有道理,做事有余地,出言有尺度,嬉闹有分寸,读书和赚钱是人生最好的修行,前者让人不惑,后者让人有尊严。

本文主要分享关于车载操作系统中关键技术——车载软件的核心:操作系统关键技术实时任务调度解析。

在这里插入图片描述

实时任务调度技术

在汽车应用领域,不可避免地要应对两类实时任务。

一类被称为硬实时任务,这类任务无论在什么样的情况下都必须在规定的截止时间内执行完毕,否则会造成不可接受的后果(如因碰撞传感器引发的安全气囊弹出);

另一类为软实时任务,这类任务也规定了严格的截止时间,但是偶尔超过了时间门限也不会引发严重的后果,如触摸屏交互,即使反应时间超限导致应用体验不好,也不会酿成安全事故。

实时任务又可分为周期性任务,偶发任务(通常是硬实时)和非周期任务(通常是软实时)。无论是哪种车用操作系统,都面临着多个软硬实时任务(进程 / 线程)同时争夺有限资源的问题,需要操作系统内核提供合适的调度机制来满足硬实时任务截止时间要求,在此基础上,还需要满足其他系统和应用指标(周转时间,资源占用效率)。操作系统内核的任务调度机制通常可分为两大类 - 抢占式和非抢占式。

在这里插入图片描述

-> 1、非抢占调度方式是指当一个低优先级任务获得了处理器执行资源后,即使内核知道有更高优先级的任务在等待处理器资源,仍然会让这个低优先级任务继续执行,直到当前任务完成或发生某种事件而进入阻塞态时,才会把处理器资源分配给当前最高优先级的任务。虽然这种调度方式比较简单,但它不适合于分时系统,也不适合于实时系统。

-> 2、抢占式调度方式是指当一个低优先级任务正在处理器上执行时,如果有更高优先级的任务出现需要使用处理器资源,内核会立即暂停正在执行的任务,将处理器资源分配给当前更高优先级的任务。这种方式对提高系统的实时性和响应效率有明显的好处,但也要遵循一定原则,否则可能因为频繁切换任务而降低处理器效率,或者让低优先级任务等待时间过长影响系统整体性能

很显然,车用领域的操作系统内核都必须支持基于任务优先级的抢占式调度方式。内核任务调度系统设计的核心是如何为每个任务定义合适的优先级,以保证包括任务截止时间在内的各项系统性能指标都能得到满足。

为了简化系统设计,有的简要架构系统(如 uC/OS-II)甚至规定所有任务的优先级都不同,任务的优先级也同时唯一标识了该任务本身,但在复杂系统下这个方法不太适用。

通常我们会将系统中所有的任务按照一定的优先级定义划分为若干个不同优先等级的多级队列(Multi-Level Queue,MLQ,优先级相同的任务放在一个队列中,高优先级任务队列优先得到服务,当高优先级队列为空或阻塞时,低优先级队列才能得到服务。此外,还需为每个任务队列采用合适的任务调度策略来决定哪个任务该优先获得资源(一般会采用FIFO和RR机制)。MLQ方法中,系统性能表现主要依赖于对任务优先级的合理定义。

针对 MLQ 调度策略可能带来的低优先级任务饥饿(长时间得不到服务)和优先级反转问题(高优先级任务所需资源被低优先级任务锁住),又出现了多级反馈队列(Multi-level Feedback Queue,MLFQ)调度机制,这一机制采取了动态调整任务优先级的策略,MLQ机制的基础上采用了短任务优先级策略,同时还会对任务的运行时间做评估,即统计每个任务已经执行了多长时间,并据此判断此任务是长任务还是短任务,然后调整对应任务的优先级,被判断为长任务的优先级会被逐次调低。为避免低优先级任务长期得不到服务,还可以定时/不定时将所有任务优先级提到最高,再根据任务实际运行长短动态逐渐调整优先级。

对于周期性实时任务,除了上述 MLQF 方法外,还可使用速率单调(Rate-Monotonic, RM)策略。这种策略是要预先知道任务的周期,并根据周期静态地为每个任务分配一个优先级:任务的周期越短,意味着截止时间要求越迫切,优先级越高。RM 策略还可以支持抢占式调度,高优先级的任务可以抢占低优先级的任务。此外,RM 也可以引入动态优先级变化机制,增加调度策略的调度能力。RM 方法由于优先级固定,实现简单,带来的任务时延固定,成为解决周期性实时任务最佳策略。

在这里插入图片描述

在实时性任务调度中,还可以采用最早截止时间优先(Earliest Deadline First, EDF)策略。这种策略和 RM 类似,只是该策略是根据任务的截止时间来动态分配任务优先级。

另外,还有一种分区调度机制,该机制将处理器算力按一定比例分隔成几个区(比如 70%,30%),然后把不同线程分到这些分区里按上述调度策略进行调度。当分区里的处理器资源预算被用完以后,该分区里所有可执行线程都会被 “停住” ,直到预算恢复。为了提高处理器利用率,降低分区资源的空置率,同样可以采取 “自适应分区调度” 机制来改进调度性能,即定时计算各分区的算力闲置情况,在分区算力有富裕时,“自适应” 允许把多出来的算力 “借给” 需要更多算力的分区。

需要指出的是,内核硬实时调度机制只是支撑硬实时任务的一部分,整个任务的实时性还需要依赖于应用本身的设计,例如在 AUTOSAR CP 中还提出了通过将应用和 CPU 核(多核情况下)绑定,禁止动态分配内存的方法来保证应用运行的确定性。

总之,从技术发展趋势看,上述的这些基于优先级的抢占式进程调度机制通过一定程度的 “动态”优化,都能很好地在满足硬实时任务的截止时间要求的基础上,照顾到软实时业务和其他非实时业务的性能需求,达到系统最优化,因此在现有的简要架构、宏内核以及微内核架构中都被广泛支持。

搁笔分享完毕。

愿你我相信时间的力量,

做一个长期主义者!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: rt-thread 是一款面向嵌入式系统的实时操作系统,它具有小巧、灵活、可裁剪等特点,适用于各种嵌入式开发平台和应用领域。rt-thread 的中文指导手册旨在为开发者提供详细的技术指导和使用说明,使其能够更好地理解和使用 rt-thread 操作系统。 rt-thread 中文指导手册包含了操作系统的架构、底层驱动、线程管理、内存管理、IPC机制、网络协议栈等重要内容,并提供了实际的例子和应用场景,方便开发者学习和使用。此外,rt-thread 中文指导手册还介绍了开源社区、开发工具和常用硬件平台等相关资源,帮助开发者更好地融入 rt-thread 社区,参与到操作系统的开发和改进中来。 rt-thread 中文指导手册将不断更新和完善,以适应不断变化的市场需求和技术发展。同时,rt-thread 开发团队也将持续提供技术支持和社区建设,与开发者一同推动 rt-thread 在嵌入式领域的发展。 ### 回答2: RT-Thread是一款轻量级、可裁剪的嵌入式实时操作系统,具有可移植性好、资源占用少等优点。RT-Thread操作系统中文指导手册是RT-Thread官方提供的中文文档,包含了系统架构、内核核心、应用框架、驱动开发、网络协议栈等内容。 该指导手册详细介绍了RT-Thread操作系统的设计思路和实现原理,包含了丰富的示例代码、实现细节和使用技巧,方便嵌入式系统开发人员快速上手。 在使用RT-Thread操作系统过程中,可通过该指导手册了解系统的整体结构和各个模块的功能,学习如何进行系统移植、系统配置、内核裁剪、任务调度等相关操作。同时,在应用开发中,可通过该指导手册了解RT-Thread提供的应用框架和API接口,以及常见的驱动开发方法和网络协议栈实现。 RT-Thread操作系统中文指导手册具有简单明了的语言风格和结构布局清晰的特点,易于理解和查阅。对于RT-Thread操作系统的学习和使用具有很高的参考价值,是RT-Thread软件开发者必备的技术文档之一。 ### 回答3: rt-thread是一个轻量级的嵌入式操作系统,适用于各种嵌入式设备的开发。rt-thread操作系统具有很好的可移植性和可扩展性,可以在不同的硬件平台和应用场景下进行应用开发。rt-thread 支持多任务、实时性、轻量级等特点,在工控、智能家居、智能穿戴和智能车载等领域的应用广泛。 rt-thread的中文指导手册很详细,对该操作系统的基本概念、架构、应用开发以及常用驱动等方面进行了全面的介绍。手册首先介绍了rt-thread的特点和优势,包括多任务实时、可扩展性、易移植等,然后介绍了rt-thread的架构和内核对象,包括线程、信号量、消息队列、邮箱等,分别针对这些对象的常用使用方法做了详细的说明和演示。 在应用开发方面,手册对不同的应用场景进行了介绍,例如网络应用、文件系统应用、用户界面应用等,同时也深入讲解了rt-thread的构建和配置、线程同步、中断处理等实践内容。在驱动方面,手册详细阐述了如何使用rt-thread的设备驱动模型来快速开发应用,为开发人员提供了一个较为清晰的开发框架。 总的来说,rt-thread操作系统中文指导手册非常适合初学者学习和开发人员参考,其中浅显易懂的语言和丰富的实例代码都为用户提供了一个高效的编程工具。无论是嵌入式设备的开发还是通用嵌入式应用开发,在rt-thread指导手册的帮助下都能够更方便、更快捷地完成应用开发和维护工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车载诊断技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值