(注:本文来源于科技期刊《电子产品世界》2019年第8期第35页,欢迎您写论文时引用,并注明出处。)
摘要:物联网相关的系统技术是当前的一个热点,既有基于云计算的物联网平台技术,也有物联网设备 采用的操作系统技术,还有边缘计算所用到的系统软件技术等。本文首先阐述了在物联网场景中所需要的系统软件,并回顾了物联网设备常用的操作系统,然后提出了本文对于物联网操作系统的定义,它是特指在物联网设备的使用场景中,能够将各种物联网设备集合起来发挥作用、管理此场景中软硬件资源的系统软件。最后介绍了一个工业界实践中的物联网操作系统—指令集智能操作系统。
关键词:操作系统;物联网;智能设备;物联网操作系统
1 操作系统的演进
操作系统经过了几代的发展,从最早期的多任务操作系统,如Multics和UNIX,到适用于个人电脑的多处理器操作系统,如Linux和Windows,再到最近10多年广泛流行的移动操作系统,如iOS和Android,其核心技术已经非常成熟,软件复杂度也达到了上亿行代码的规模。操作系统的每一次大发展必定跟计算机硬件的发展密切相关。随着物联网(IoT)时代的到来,操作系统也必将迎来新的发展。
表1 总结了每一代操作系统的特征。
2 物联网需要什么样的基础软件
物联网的核心是各种物体连接到互联网:互联网仍然是基础,物联网并没有再造出一个独立的网络,但是对互联网进行了扩展和延伸,允许各种物体通过互联网交换信息和通信。大量的物体都连接到了网络,最直接的效果是,这些物体都可以被远程操控,例如,物体的状态显示在任何一个屏幕上,物体上的开关可以由远端的软件来控制。譬如,在图1中,体重计是一个物联网设备,它能够连接到后台服务器,上报数据和状态,远程用户可以通过连接服务器来获得体重计的数据和状态。
在这样的环境下,我们可以看到有三个地方需要软件:一是体重计上的软件;二是服务器上的软件,完成体重计设备的状态监测以及数据记录和报告;三是客户端的软件,显示所需要的信息或者接受用户的指令。
首先,体重计需要一个操作系统来完成基本硬件的能力,包括连接网络的能力。这样的系统很成熟,门槛也不高,对于体重计,用一个单片机(MCU)就可以让它工作起来,或者也可以用一个嵌入式系统,功能更强大。其次,在后台服务器需要一个服务软件,一方面与体重计进行连接与通信,另一方面也允许远程用户连接上来并指定相应的体重计设备,以便查看信息或者对它进行控制。客户端的功能通常用浏览器来完成,不需要额外安装软件;也可以用移动应用或者各种形态的小程序的形式来跟服务器通信。
几乎每一种物联网设备,为了让它们以联网的方式工作起来,都需要像体重计这样的软件架构。概括起来,物联网设备的软件分如下两部分(如图2)。
• 在设备硬件上,用一个软件程序让设备工作起来,并且具备连接网络的能力;
• 需要有一个服务软件能够为这个设备提供各种便利的服务。
在某些特定情况下,可以把以上两方面的软件功能都放在设备上完成,这样就不需要后台服务器,因而客户端可以直接连接设备。但这通常仅限于一些计算和存储能力较强的设备,并且对部署方式也有要求(比如智能路由器)。本文不讨论这样的设备实例和软件架构。
操作系统的意义在于,对硬件的基本功能进行抽象,从而做到各种应用软件无需直接跟硬件打交道就可以操控硬件。针对如图2所示的软件划分,我们可以抽象出下面的操作系统来协同工作。
• 物联网设备操作系统。这是运行在设备上的软件,常见的是嵌入式操作系统,用恰当的软件把设备驱动起来,让它们正常地工作;
• 物联网操作系统。这是工作在设备之外的服务器上的软件,它提供了设备功能之外的扩展或延伸能力,譬如远程访问能力、历史数据记录和分析能力、多个设备的协同功能,等等。
物联网设备操作系统很容易理解,有大量的教科书或专著来详细讲解现代操作系统的软件结构和相应 的资源调度算法[1]。物联网操作系统是一个相对比较新的概念,但事实上又广泛存在着大量的软件在完成这些功能。很多设备厂商需要搭建一个后台服务系统,甚至还有不少厂商开发了客户端移动APP。这就是典型的、在操作系统缺位的情况下,硬件厂商不得不自己研发软件系统的情形。而理想的情况是:存在通用的物联网操作系统,可以让设备厂商专注于设备 研发,设备厂商只需开发驱动软件以及简单的应用软件就可以让设备用起来。
3 物联网设备操作系统
物联网设备所在的硬件环境往往有以下特点。
• 连接。这是物联网设备的必要功能,以特定的方式连接到计算机网络,进而连接到互联网。常 见的接入协议有Zigbee、蓝牙、Wi-Fi、NB-IoT或RoLa等。
• 低功耗。这些设备需要长时间(几个月,甚至几年)运行,对电量的消耗有苛刻的要求,通常只能靠电池供电。
• 安全。设备要能报告自己的状态,并且有一定纠错和保密的能力,还要避免被仿冒和入侵。
• 标准。每一种设备都隶属于特定的行业,而成熟的行业往往已经形成了相应的工业标准,最起码也有事实上的参考标准。
运行在物联网设备上的操作系统往往有多种选择,取决于设备本身的计算和存储能力,一般地,可分为微控制器(MCU)和中央处理器两大类。典型的有以下一些操作系统。
• ARM Mbed OS[2]。Arm公司专门针对IoT设备的开源操作系统,主要支持Cortex-M微处理器。
• FreeRTOS[3]。针对嵌入式设备的开源实时操作系统,支持众多的微处理器。FreeRTOS有三个商业性质的衍生版本:SafeRTOS、Amazon RTOS及 OpenRTOS。
• RT-Thread[4]。类似于FreeRTOS的设备侧实时操作系统,支持大量的微处理器架构。这是难得的国内成长起来的操作系统,且经营了良好的社区氛围。
• LiteOS[5]。是华为研发的轻量级开源实时操作系统,在设计上支持Arm、x86和RISC-V微处理器。
• Zephyr[6]。是Linux基金会的一个项目,针对资源受限和嵌入设备的实时操作系统,支持多种主流的微处理器架构。
• 嵌入式Linux。是Linux操作系统的一个剪裁版本,它继承了Linux的优势和大量的社区资源,又具有嵌入式操作系统的特性。OpenWRT是嵌入式Linux 的一个发行版,广泛应用于诸如智能路由器、智能家居等设备。
• Android Things[7]。Google针对物联网设备的开源操作系统,它是在Android基础上进行剪裁形成的,对系统资源的要求比Android低很多。
• VxWorks[8]。是一个老牌的实时操作系统,支持众多处理器架构,广泛应用于军事、航空、航天等高精和对实时性要求极高的领域,最经典的莫过于NASA 的火星探测车上装载了VxWorks操作系统(如图3)。
以上列举的设备操作系统,除了VxWorks外,代码都是开源的,并且有相应的开发者工具和社区,背后有商业公司在支持。可以说,这些实时操作系统为物联网时代设备的繁荣提供了最核心的软件支撑,它们一方面吸收了操作系统领域的研究成果,另一方面也针对嵌入式设备或物联网设备进行了优化和剪裁。
顺便提一下,很多文献资料把设备操作系统称为物联网操作系统[9-11],甚至提出未来可否有一个统一的物联网操作系统。笔者认为,由于物联网设备的多样性和差异性,用一个系统来统一驱动各种设备是不合理的,也是不现实的,但是这种努力会对设备操作系统的架构演进有帮助,使架构更灵活,在不同计算能力的设备上有更好的伸缩性,并且可沉淀出高质量的可复用软件模块(譬如连接协议、渲染引擎、执行引擎等)。
4 物联网操作系统
设备操作系统解决的是设备怎么联网、如何更方 便地联网的问题,但没有解决联网之后做什么以及如何做的问题。从长远发展来看,后者无疑更为重要。这就是前文提到的物联网操作系统,它特指在物联网设备的使用场景中,能够将各种物联网设备集合起来发挥作用,并管理此场景中软硬件资源的系统软件。
我们来看一些场景(如图4)。
• 一组智能灯的协同。单个智能灯可以具备开、关、调节灯光等基本功能,若跟具体场景结合起来, 可以让这种联网控制能力具有更大的价值。譬如,在家庭场景,可以根据生活习性和作息时间进行自动调节;在野外路灯场景,可以根据户外光线做到自适应环境;等等。
• 酒店房间智能化。目前越来越多的酒店配备了智能设备,包括电视、灯控、空调、镜子,甚至窗帘、马桶等。单个设备若独立工作,联网的价值只是取代了遥控器或者墙面开关,而智能化真正的目标是为住客提供舒适、贴心的室内环境。
• 建筑体的健康检测。拿桥梁来举例,一座大桥的检测系统会有大量的传感器来采集数据,然后再通过专业的模型来分析桥梁的健康状况。单个传感器只反映一个局部状态,所有传感器集合起来进行分析可以获得关于桥梁的健康评价。
以上列举的这些场景都需要数量众多的物联网设备协同起来发挥作用,不同的场景目前有各自独立的解决办法。有的开发专门的应用系统来解决场景中的设备协同工作需求,例如桥梁检测系统、灯光控制系统等。还有一种解决办法是用云服务平台来连接所有的设备,然后利用云服务平台的功能来开发相应的场景智能系统。例如,针对智能家居的场景,可以通过云服务平台来实现设备之间的协同。有些智能音箱厂商通过这种方式来实现语音控制电器。
这就回到本节开始提到的问题:物联网设备连接以后做什么和如何做的问题。本质上,这需要一个软件系统,我们根据对各种场景进行抽象,按照两层架构来实现这样的软件系统:最基础的一层软件是通用的,可适用于各种物联网场景,包括设备连接和管理、数据采集和处理等;另一层是应用软件,用于实现各个场景中需要的功能逻辑。前者正是物联网操作系统,后者是物联网操作系统之上的应用软件。这与本文第二节讲到的软件划分是一致的,如图5所示。
物联网操作系统承载的是通用的能力,包括但不限于以下功能。
• 设备接入。使得各种不同类型的设备通过局部的模块(驱动程序)连接到操作系统中,从而操作系统可以获取设备的状态信息。
• 反向控制设备。操作系统可以向设备发送命令,达到控制设备的目的。
• 设备管理。对于连接到一个操作系统上的设备进行管理,包括查看它们的状态、设置报警条件、设置位置、诊断驱动程序,等等。
• 数据采集。采集来自于物联网设备的数据,可定制表结构和数据目录。作为系统完整性,也要有扩展能力,可接受外部的数据。
• 数据分析和检索。操作系统提供功能对采集到的数据进行分析,并更新指标值。指标是一个业务相关的衡量单位或特征,有名称和值。指标的计算既可以实时完成,也可以定时完成,或者通过事件或应用层命令来触发。操作系统也提供数据检索的能力,方便应用层引用或者搜索数据。
• 数据展示。操作系统提供常见的数据展示能力,包括结构化和非结构化数据的图形化显示,各种指标的统计图表等。
• 日志。日志是一个操作系统的基本能力,在物联网场景中尤为重要。完善的日志能力可便于诊断各个物联网设备的异常情形。
• 算法。操作系统提供一个基础的算法库,包括统计分析算法、AI算法等,便于应用程序实现各种业务逻辑。在物联网场景中,这相当于一个数据武器库。
• 系统服务。操作系统以系统服务的形式将能力提供给上层应用程序,系统服务的集合涵盖各种基础的功能,并且理想情况下,允许应用厂商扩展定义更多系统服务。
• 安全性。作为物联网操作系统,涉及各个物联网设备连接到系统中,安全性尤为重要,包括系统安全、设备安全、数据安全以及无线安全。
• 扩展功能。物联网操作系统的扩展性体现在多个方面:提供接入规范,允许非原生支持的设备也能够接入进来;系统服务可以扩展;数据采集格式可定制;数据处理和展示可扩展;算法库可以扩展,等等。
• 开发工具。需要应用程序样例和相应的开发工具,来帮助应用程序开发者理解和学习物联网操作系统。
图6显示了物联网操作系统的基础模块。
对于一个具体的物联网场景,仅仅以上的通用功能往往不足以支撑这个场景中的基本需求,譬如,办公室环境还需要门禁和无线投屏的能力,酒店环境需要智能灯光调节、服务呼叫等功能。因此,物联网操作系统的定制和扩展能力非常重要,针对特定类型的场景,可以在基础系统之上叠加扩展包,形成针对场景的智能操作系统(比如智慧办公操作系统、智慧酒店操作系统等)。
而从物联网操作系统的角度,它存在的价值是:将设备与服务软件解除了耦合,不同类型或不同数量 的设备可以动态链接进来,即使在不重新安装或启动操作系统的情况下,也能适应设备增删的变化。对于 截然不同功能的场景,可以使用同一个操作系统来提供基础服务。另一方面,从物联网应用的角度,应用开发可基于统一的一层服务,再辅助以操作系统的开发工具,可以极大地提高开发效率。
5 指令集智能操作系统
杭州指令集智能科技有限公司提出了商业智能操作系统(BI-OS,Business Intelligence Operating System)来实现物联网设备的互联互通,完全符合上 一节介绍的物联网操作系统的要求。图7显示了BI-OS 的总体技术架构[12]。
BI-OS运行系统分五层,由底向上分别是设备子 系统、设备层、数据层、服务层,以及应用层。其中设备子系统是由设备厂商提供的,本质上是运行物联网设备操作系统的那个设备侧软件;应用层是指建立在BI-OS上的应用软件,它们调用BI-OS所提供的系统服务,来满足客户的需求。而中间的三层是BI-OS的核心。
• 设备层:利用智能数字网关技术,将各种物联网设备采集的数据上传到数据层,与其他数据进行融合计算。
• 数据层:这一层包括数据中心、计算中心和算法模型库。
• 服务层:将不同场景中应用共有的基础性和关键性的服务进行抽象,统一在服务层夯实。
BI-OS作为一个通用的物联网操作系统,可以应用到各种商业场景中。一个典型的商业场景是智慧楼宇,通过BI-OS将一个大楼内的所有联网设备连接到一个系统中,这样不仅做到更高效的自动化管理,而且随着大楼运营一段时间,数据累积起来,可以优化运营策略(譬如节省能耗、人流引导、堵住安全缺陷,等等)。
参考文献
[1] 何小庆.嵌入式操作系统风云录:历史演进与物联网未来[M].北京:机械工业出版社,2016.
[2] ARM Mbed OS[EB/OL].https://www.mbed.com.
[3] FreeRTOS[EB/OL].https://freertos.org/.
[4] RT-Thread[EB/OL].https://www.rt-thread.org/.
[5] LiteOS[EB/OL].https://www.huawei.com/minisite/liteos/cn/index.html.
[6] Zephyr[EB/OL].https://www.zephyrproject.org/.
[7] Android Things[EB/OL].https://developer.android.com/things/.
[8] VxWorks[EB/OL].https://www.windriver.com/products/vxworks/.
[9] 虞保忠, 郝继锋.物联网操作系统技术研究[J]. 航空计算技术, 2017(3).
[10] 何小庆.物联网操作系统研究与思考[J]. 电子产品世界, 2018(1):27-31.
[11] 彭安妮, 周威, 贾岩,等.物联网操作系统安全研究综述[J]. 通信学报, 2018.
[12] 指令集商业智能操作系统[EB/OL].http://www.isyscore.com.
作者简介:
潘爱民(1970-),男,博士,主要研究方向:移动操作系统、信息安全、大数据、移动互联网和 物联网技术。