#电子电气架构——车载软件的核心:操作系统内核

文章探讨了车载操作系统内核的三种主要架构——简要架构、宏内核和微内核。宏内核在桌面、服务器和手机系统中广泛使用,但在车用领域面临代码量大、安全挑战高的问题。微内核通过将服务移至用户态以提高稳定性和安全性,如QNX已通过ASIL-D认证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

自己最不愿意看到的事情就是在自己准备最不充分地时候不可避免地发生,最害怕遭遇的东西也会在自己最弱、它最强的时候现身(有点像墨菲定律)。自己生活的世界,未来又太多的可能性、浑浊不堪、难以掌控,但谨慎的思想和语言可以帮助我们发现证明人生意义的独特、辉煌和命运。。

本文主要分享下国内汽车行业内,关于操作系统内核的事情,现阶段国内做OS操作系统的有各家OEM、菊厂等,作为软件定义汽车的核心,有自己的内核是至关重要的。

言归正传,回归正文!

操作系统内核技术架构

1. 简要架构

在车辆动力电子,底盘电子和车身电子等实时控制功能实现当中,经常会使用到一些功能相对简单的微控制单元(MCU)芯片(如单片机),这类芯片资源配置较低,硬件上没有为操作系统内核提供复杂的内存管理和特权级别的隔离功能,因此会采用一种简要的操作系统内核结构设计。其中任务调度更多是采用轮询方式。

在简要结构设计当中,内核服务与应用程序会被放置在同一地址空间,应用程序无需切换地址空间和权限层级就能够直接调用内核服务,具有高效的优势,有利于实时业务的实现。但相对于后面提到的宏内核和微内核架构设计,简要架构系统缺乏内核隔离保护能力,任何一个模块(无论是应用还是内核服务)出现问题都可能导致系统崩溃。

出于硬件成本和实时性的综合考虑,汽车领域中许多基于AUTOSAR CP的安全车控嵌入式实时系统都采用了简要架构设计。其他领域类似的简要架构系统还有 uC/OS II,FreeRTOS(裁剪版)。

2. 宏内核架构

宏内核(Monolithic Kernel)架构在计算机和通信领域是应用最为广泛的一类操作系统架构,其相关产品的生态也最为完善,目前常见的桌面系统(如 Windows,MacOS,Linux 桌面发行版),服务器系统(如Unix,Linux)和主流手机操作系统(Android,iOS)均是基于宏内核架构。

宏内核架构操作系统在智能驾驶和智能座舱领域也有大量应用。宏内核的特点是将所有传统的操作系统服务(例如进程调度,内存管理,文件系统和设备驱动)全部运行在内核态,能够直接操控硬件,系统服务间的内部调用效率相对较高。

在硬件能力的支撑下,宏内核可以实现用户程序和内核的安全隔离保护,采用合适的进程调度机制(优先级抢占式)时也能够满足车用领域的硬实时性任务要求,并能支持虚拟化等新技术来满足汽车 E/E 架构向集中式架构演进的需求。

但是应该看到,由于面向通用业务而设计,随着宏内核功能的丰富,其代码量也会变得越来越庞大,以 Linux 内核为例,2021 年底其内核已经达到了 3220 万代码行的规模,且可能会持续增长,在车用领域这不仅意味着软件复杂度和硬件成本的增加,也意味着更高的信息安全和功能安全挑战。目前,业界还未看到基于宏内核的操作系统产品通过功能安全 ASIL-B 以上的安全认证。

为了应对这些问题,宏内核架构的操作系统也采用了模块化,抽象,分层,层级等方法来控制其不断增长的复杂度。

->模块化:内核通过模块化的策略来组织功能,提供可加载内核模块(LKM)机制。例如将大部分设备驱动与内核其他功能解耦。

->抽象:对内核服务进行抽象以提高可维护性、降低复杂度。例如 Linux 将所有的数据,设备和内核都抽象成文件,对应用层提供统一接口。

->分层:将逻辑上或功能上相近的模块分层,以便更好地组织功能。例如 Linux 文件系统的分层结构。

->层级:对于内核的资源管理引入层级的概念,如进程调度优先级的分类等。

3. 微内核架构

从功能服务的角度看,微内核(Microkernel)操作系统和宏内核系统并无本质差异,只是采用了不同的内核架构设计思路。由于宏内核架构系统将所有的服务都运行在内核态,任何一个模块出现错误或者被攻击就有可能引发内核的崩溃,从而影响到整个系统的稳定性。

而且随着内核代码量越来越大,这种概率还会提高。为了保证内核的稳定性,微内核架构主张将宏内核的功能进行解耦,将某些功能从内核中剥离出来作为独立服务,并挪到用户态去运行(比如文件系统、设备驱动)。内核为这些剥离到用户态的服务提供各种通信机制,以保证这些服务能够相互协作,这样即使单个服务出错或者被攻破也不会导致内核崩溃或者出现系统安全问题。

微内核的最小内核设计原则主张保留尽量少的功能在内核态运行(如进程调度、内存管理、进程间通信等)。微内核架构设计同时还主张机制与策略分离的原则,尽量将策略配置管理功能剥离到用户态,将实现机制保留在内核态运行,这样可以根据应用场景适配不同的内核服务实现机制。微内核的这两个设计理念不仅提高了安全性,而且由于内核功能相对简单,其内核服务的时延相对比较容易控制和估算,也有利用于硬实时系统的调度实现。

不过由于第一代微内核系统代表 Mach 采用了一种过于通用的进程间通信 IPC(Inter-Process Communication)设计方案,加上自身资源(内存、CPU 缓存)占用过大等问题,导致其性能受到很大影响,与同期的宏内核系统相比有明显差距。但后续有文献分析表明,“高性能的 IPC 的设计与实现必然是与体系结构相关的,过度抽象将极大影响 IPC 的性能,而利用体系结构相关的状态进行优化则可将 IPC 性能提升到极致” 。

经过改进和优化,第二代微内核系统代表 SeL4 在采用了最小化设计原则的情况下,也达到了与同时期宏内核系统同样的效率水平。此外,SeL4 系统还通过了形式化验证。目前微内核架构系统在汽车、工业等高实时、高可靠和高安全领域得到了广泛应用,并有商用化产品(如 QNX)通过了汽车行业的 ASIL-D 功能安全认证。

搁笔分享完毕,希望文章让你做国内车载行业有一个概述了解。

愿你我相信时间的力量,

做一个长期主义者!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汽车电子实验室

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

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

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

打赏作者

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

抵扣说明:

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

余额充值