{{detailStore.author.is_follow?'已关注':'关注'}}
管理
智舱产品经理补课笔记2:车载操作系统
文章

1.门外汉眼中的操作系统

作为工科生,上学的时候肯定接触过操作系统相关的知识,但是现在已经忘得差不多了。

在我补课之前,对操作系统的认知是这样子的:

(1)操作系统是夹在硬件和应用软件中间的一层软件,向下管理硬件设备,向上给应用软件提供运行环境

(2)操作系统能提供一些系统功能,用户必须依靠操作系统才能跟设备交互

(3)用户容易自行安装和卸载的,就是应用软件;用户不容易安装和卸载的,就是操作系统。

2.什么是车载操作系统 2.1 什么是操作系统

操作系统(英语:Operating System,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。

根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。

操作系统的功能主要有:

(1)进程管理。通俗来讲,程序想要运行的话,是需要占用cpu资源的。操作系统利用线程、进程,把应用程序花费为逻辑上独立的任务,为这些任务动态分配CPU资源。

(2)内存管理。为各个应用程序监控、分配和管理内存,既能保证应用程序的内存需求,也确保整体内存的使用效率。

(3)文件系统。cpu无法直接访问外部存储器(硬盘、存储卡等),用到什么数据才调到内存中,操作系统需要管理文件在外存上的存储方式,并确保这些数据能被有效使用。

(4)用户界面。用户可见、可交互的界面,本质上是对显示设备、鼠标、键盘、触摸屏等设备的有效管理。

(5)设备管理。对其他设备的管理。

(6)网络协议。提供多种网络接口方式,提供符合国标的网络协议栈,确保计算机能够接入网络。

2.2 车载操作系统有什么特点和分类

车载操作系统和常见的移动端、PC端操作系统,使用场景和要求跟消费级产品不同。

由于车载操作系统会控制汽车关键部件,对实时性、安全性有更高要求;同时座舱内又有用户的娱乐场景,对娱乐应用的支持性、丰富度也有要求。

根据不同的特点,车载操作系统就有不同的分类。

2.2.1 微内核和宏内核

内核是操作系统的核心,向上连接着应用程序,向下连接着硬件。

但是内核不能独立运行,还有一些用户服务和内核服务,例如设备驱动之类的。微内核和宏内核的区别就是,这些支持性的服务是在内核里面还是内核外面。

参照下图,宏内核把这些乱七八糟的都在内核里面,而微内核把它们保存在用户空间中,需要的时候才去调用它们。

这就导致了二者截然不同的特点:执行效率上,宏内核的运行速度更快,因为所需的功能都在内核里面,微内核还需要跨模块调用;扩展性上,微内核扩展性更强,内核空间和用户控件相互隔离,模块化后可以对用户空间的功能进行扩展;安全性上,微内核显然安全程度更高,用户控件里面的功能崩溃后一般影响不到内核里面的数据。这些特点差异也导致了微内核和宏内核不同的使用场景。

2.2.2 实时操作系统与分时操作系统

实时操作系统(RTOS,Real Time Operating System)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。

理解实时操作系统比较简单,有叫必答的操作系统,实际上再往下挖还有硬实时、软实时的区分,但我觉得产品经理就不需要懂这么深了。只要理解实时操作系统是一个对任务的完成时间要求很高的操作系统类型

分时操作系统(TSOS,Time-sharing Operating System) ,使一台计算机同时为几个、几十个甚至几百个用户服务的一种操作系统叫分时操作系统。把计算机与许多终端用户连接起来,分时操作系统将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。

通俗的理解,CPU是一个厨师,实时操作系统就是一个顾客点了菜之后,厨师马上就去做。分时操作系统想要卷一下厨师,就把厨师的时间分成片(比如1分钟是1片),一个厨师操作四个灶,每个灶只操作1个时间片就马上挪到下一个灶上忙活,所以分时操作系统可以同时为多个程序服务。并且,如果一个时间片足够短,例如毫秒级别,在我们人类的感知程度,就是一个大厨在同时给四个灶做菜,感受不出来每个灶的停顿。

这样看起来,分时是不是效率上碾压实时呢?当然不是。严格意义上,分时的响应速度一定慢于实时。更重要的是,复杂的时间片处理逻辑可能会导致卡死、崩溃,所以对安全性要求高的设备一般会选择实时操作系统。

2.2.3 基础型、定制型和ROM型,以及carplay

上面两个分类基本是对操作系统本身的划分,但各个厂商在应用时,肯定会根据自己的需求对系统进行改造,根据改造方式和程度的不同,又划分出 基础型、定制型和ROM型三种类型。

基础型操作系统就是系统所有的底层、组件都是自研的,主要有QNX、Linux、Android、WinCE(淡出市场了)。

定制型是指在基础操作系统之上进行定制化开发,对内核、驱动等较核心的模块进行了修改。例如特斯拉Version、华为鸿蒙OS、AliOS。

ROM型是指基于基础型操作系统进行有限的定制化开发,不涉及系统内核的修改,一般只修改操作系统自带的应用程序。例如比亚迪DiLink、蔚来NIOOS、小鹏XmartOS等。新势力大多数是基于Android进行的定制。

以Carplay为例的需要连接手机控制车辆的方案,实际上不是操作系统,可以理解为投屏,carwith、Android Auto都是类似的方案。

2.2.4 虚拟机和系统架构

上面提到了,不同的操作系统会满足不同的使用需求。车辆相关的使用需求本身就有不同的类型,例如车控指令对实时性、安全性要求特别高,显然符合实时操作系统的特点;智舱娱乐类的功能对安全性、实时性要求没那么高,反而对扩展性要求高,匹配分时操作系统的特点。实际上,车端运行多个操作系统本身就是常见的架构,所以我们在用户视角下看到的操作系统,实际上可能是多个操作系统组成的架构。

要在同一个设备上运行多个操作系统,就衍生出下面几种架构:

(1)硬件隔离架构。

从硬件层面进行划分,不同的硬件资源安装不同的操作系统。

该方案的资源从属和管理问题更简单,在哪块就归哪块管理,但是灵活性比较差,不能对其他分区的资源进行操作。

(2)虚拟机管理器架构。

可以通俗理解为在硬件上先运行一个虚拟机,再把不同的操作系统运行到这个虚拟机上。这又有两种衍生类型,type1的虚拟机直接运行在硬件上,所以各个车载操作系统不需要改动,直接可以访问硬件资源,但是虚拟机需要捕捉各个车载系统的敏感特权指令进行处理,所以降低了运行速度;type2的虚拟机运行在宿主操作系统上,需要各个车载操作系统进行改造,把它们的特权指令改成对虚拟化api的调用,所以运行速度提高了。

虚拟机管理器架构的优点有:

多类功能可以运行在同一个SoC上,节约硬件资源 同一个SoC可以同时支持多个屏幕,用户在不同屏幕上的操作不会互相影响 更高效的数据互联互通机制 更有效的硬件资源共享

但是虚拟机也带来了以下问题:

系统开发的复杂度高 增加了系统调度的复杂度 存在安全性问题。由于虚拟机的内存会共享,所以容易通过安全漏洞进入其他虚拟机。

(3)混合架构

为了平衡不同架构的优点和缺点,可以采用几类基础架构组成混合架构。

下图是一个典型的混合架构,例如最左侧这一条可以使用QNX来操作仪表盘和车控功能,右边可以用Android来支持娱乐系统。

3.车载系统生态的形成

上一部分盘点了复杂的车载系统分类,之前在写芯片的文章中,也能看出来根据功能不同,芯片的种类也非常多。由于车载系统需要管理硬件,所以系统和芯片之间并非混搭,一个变量的切换都会带来适配成本。但是,由于大众接受程度、软件生态、人才流动等原因,一些主流的配置逐渐被厂商采纳、被大众认可,国产新势力基本都是ARM架构芯片+Android系统。作为对比,Tesla才用的X86架构+Linux系统,在我看来就是可扩展性没那么强。同样是Android之间的功能迁移成本相对小,但是如果想把Android平台的优秀功能同步到Tesla车机上,相当于Tesla要重新研发一遍,在车载功能数量固定的时候,自研能够保证体验,但是随着用车场景增多、娱乐场景越来越丰富,自研的启动成本、维护成本会越来越大。这个时候选择主流的架构加入,就比自己推陈出新搞个新架构的成本要低很多。

另外,无论是什么生态,大体还是根据某个基础型操作系统魔改出来的,所以下面会基于四个基础型操作系统,看看都形成了什么生态。

3.1 QNX

黑莓公司的实时操作系统,闭源。特点是高运行效率、高可靠性。在工控领域有几十年的应用经验,除了汽车以外,还应用到航空航天等对安全性、实时性要求很高的领域。在仪表盘和驾驶辅助领域,QNX的市占率几乎接近100%。

但也由于闭源,QNX的授权使用费用很高、兼容性可能有问题,并且生态应用比较缺乏。

3.2 Linux

开源操作系统,最大的优点是有很强的定制开发灵活度。

Linux的来源其实是有梗的,很早的时候Bell实验室写了个操作系统Unix,普遍作为当时对操作系统的研究对象,但是Unix的授权费用很高。1987年荷兰有个大学教授为了教学方便,参考Unix写了个操作系统Minix。Minix流传出来后,各地的程序员对它进行了魔改,扩充了很多功能,但是大学教授不开心了,觉得自己的系统就是用来教学的,不能破坏它的纯净性。后来Linus Torvalds也魔改了一套系统叫Linux,可能是因为他不满于那个大学教授的封闭思想,就声明了Linux以任何姿势使用也不收费,也可以帮助他一起修改。后来在很多人的参与下,Linux正式版本发布,一代一代迭代出来。

所以,Linux系统最显著的优点就是免费、灵活性很高。但是由于Linux在消费级市场的渗透率不高,说白了就是太极客了,不够小白,所以Linux得应用生态不够完善,技术支持性差。

3.3 Android

Android是基于Linux开发的最成功的产品,消费级市场发展非常广泛,我们几乎看到的所有移动设备都有Android操作系统的位置。所以把Android单独拿出来说。

Android同样是开源的,同时在google的加持下,移动端生态非常完善。虽然车机屏是个大屏,但是用户的操作习惯更像移动端设备,而非输入设备丰富的PC端,所以接入移动端生态的优势非常大。但是Android系统为了匹配消费娱乐需求,安全稳定性较差。想想手机死机了是小事,车机如果频繁死机,那影响就大了,所以它一般不匹配仪表等安全性较高的部件。

4.产品经理应该关注哪些信息

对产品经理而言,了解了上面关于操作系统的知识,能有哪些帮助呢?

(1)意识到同样的功能在不同的架构下有不同成本/可实现性

限定一个功能的交互形式、时效要求,在QNX和Android系统下,可能有不同的成本。或者反向思考,在不同的系统下,尽可能选择更合适的设计,例如QNX下尽量用轻量、简约的动态效果、交互方式,清晰、直接地呈现功能。

(2)意识到不同的硬件有怎样的交互限制

例如车里有多块屏,能够理解哪些屏是在一个操作系统内,哪些屏有独立的操作系统,进而理解用户场景,哪些屏可以同时操作没有影响,哪些屏可能会相互干涉。

(3)意识到为系统性能把关

同一个SoC承载的操作系统上,有意识盘点自己的场景和其他并发场景的复杂度,能有意识地确认会不会产生性能问题。当进行性能调优的时候,能够较准确地识别到哪些功能有踩踏关系并做出取舍。

(4)意识到异业参考的标的

Android生态的去抄Android,QNX生态的去抄QNX。

写评论
积分赞赏
点赞
评论区
  • 编辑
  • {{is_favourite ? '已收藏' : '收藏'}}
  • 举报
  • 加入黑名单
  • 删除
  • 取消置顶
  • 置顶推荐
    • 6小时
    • 12小时
    • 24小时
    • 3天
    • 一周
    • 长期
  • {{digest?'撤销精华':'设为精华'}}
回到顶部
  • 全部评论{{detailStore.commentnum}} 条
  • 只看作者
  • 最热
  • 最新
  • 最早

「待审核」

{{ comment.relativeTime }} 已被赞赏 {{comment.integral}} 积分 回复

暂无相关评论

发表一下个人看法吧