物联网和“工业4.0”为我们描述了一个非常美好的未来, 但物联网究竟如何实现?这也许是很多技术人员以及企业关注的热点话题。
物联网的硬件技术,特别是通讯技术的突破, 将物联网的连接维度扩展到无限(无线)空间。而传感,数据识别,边缘计算等技术等为硬件终端的数据收集和传输提供了可能性。可以说快速发展的物联基础技术已经开始让各种软件有了发展的空间。
然而, 物联网的最大特色是终端设备众多,类型和功能千差万别,设备的性能要求在不同场景下要求也不一致, 这些特点又使得软件开发异常困难。而物联网软件,关乎着终端的数据接入,设备管理,数据安全等等,因此软件发展的滞后,已经成为物联网发展的瓶颈。
那么,物联网的软件应该如何开发才能管理硬件终端,并且有效的管理软件资源?
在互联网时代, 操作系统是软硬件的接口,发挥着基本系统软件的功能。 比如智能手机有IOS, Android 操作系统;PC 有Windows操作系统;服务器有Linux, Unix 操作系统。这里的操作系统管理着硬件、以及数据资源,控制程序运行,改善用户界面,为其他中间件以及应用软件提供支持,并且通过分配资源,成为一切硬件运行的指挥中心。
在物联网发展的初级阶段(智能硬件,智能穿戴)时代,数据通过传感器直接传到云端。 而随着物联网的发展,大多数情况下,直接将传输数据基本上行不通了。比如在工业领域,由于大量的机器,设备生成的数据量很容易超过可用带宽,所以将这些数据发送到云端需要昂贵的成本。此外,一些设备和操作流程需要在几秒甚至几毫秒内就实现自动响应工作。等到上载的数据到达数据中心,再将结果传送到边缘,通常就已经太晚了。
那么,物联网是否也可以通过操作系统,做到软硬件分离,并且通过操作系统为各种应用软件的开发提供可能性?
首先,我们考虑物联网可以使用现有的互联网的操作系统吗?我们认为,随着智能终端多样化,数据巨量化,以及系统的复杂化, Windows, Linux, 甚至安卓系统的内核存在规模庞大、不够实时、缺乏安全等问题,已经不能适应未来物联网的需求。
再者, 是否有必要基于物联网的特色开发一套终端操作系统,并可以适应不同终端协议的需求,并且具有扩展性,操控性。我们相信是非常有必要的,操作系统的存在必将重新规范物联网终端设备,并为物联网应用的迅速发展提供了统一的开发环境 。
因此,我们将终端操作系统定义成物联网底层连接“物”与“云”的系统软件,对于“云”来说,物联网操作系统可以将各种具象的物抽象为单一的“物“,其本身的特性和多种API和SDK 非常便于中间件以及顶层应用软件的开发,并不以中间传送的角色出现。
操作系统基本原理
物联网操作系统与PC ,手机,服务器等传统的IT 架构有相似之处,目的是管理硬件,为软件提供运行环境 。简单来看,操作系统在实际应用中所处的位置。
操作系统需要进行硬件抽象I/O控制,内存管理,线程、进程调度,文件系统管理,UI交互,而这些功能的原子操作是由操作系统内核完成。而一个操作系统能否出色或者能否被广泛接受是看其能否提供丰富的软件接口,完备的应用体系,开发环境等等因素。
物联网终端操作系统的必要性
物联网终端操作系统解决了物联网终端设备的碎片化问题
物联网终端设备是物联网的基础单元,物联网的能力是由这个基础单元的能力所决定,如果没有一个好的物联网终端操作系统,物联网终端设备就无法摆脱碎片化的问题。物联网终端设备的能力也无法发挥和扩展。
物联网终端操作系统培养专有的物联网技术生态链
提高物联网应用的开发速度
物联网应用因为涉及到各种硬件终端设备,又必须考虑到云端和应用层面的需求,操作系统和各种开放式接口,可以大家加速研发速度。
培养健康的技术生态链
如果没有好的操作系统,将会阻碍软件开发人员,硬件开发人员从事物联网领域的研究的积极性。而只有从事物联网领域人才基数的提高,才能促进物联网技术进一步的发展和完善。
因此物联网终端操作系统的目标应该是充分抽象物联网终端设备,而且可以快速培养出专有的技术人才。
物联网终端操作系统应该具有的功能
硬件控制能力
物联网终端设备是可以感知或控制物体一个或多个属性, 这种感知和控制都是由不同的硬件设备完成。物联网由于行业和领域的多样性,这些硬件可能是多种多样,那么对硬件的抽象和控制显的尤为突出。
操作系统中通常采用I/O控制,对与外来设备采用即插即用的方式,Windows是这点做的最好的操作系统了,它采用驱动和操作系统分开的方式,硬件提供商提供硬件设备的同时也提供配套的驱动程序,这样操作系统对硬件的支持就非常开放。
同时操作系统要提供丰富的API接口来控制硬件或外设。API可以提供硬件的底层控制,也可以是高层的应用属性的控制。例如API可以是对一类接口如串口控制,也可以是针对摄像设备的控制。通常操作系统的早期阶段是以底层接口API为多,随着操作系统的发展会向高层API发展。
通过上面的讨论,我们可以总结出:物联网终端操作系统要能够提供丰富的硬件设备驱动,同时提供丰富的硬件控制API。
软件远程控制能力
物联网终端设备的数量是非常庞大,而且通常都是无人监控和操作,那么物联网终端设备的远程被控制的能力非常重要,因此终端操作系统为软件的远程控制能力支持,应该是物联网终端操作系统的一个特性。
远程控制能力可以从下面两个方面理解:应用的远程升级和系统控制能力高度开放。
应用的远程升级需要操作系统能够将应用的运行环境和应用分离。Android系统,Windows系统,linux系统都是这类的操作系统,但是大部分的嵌入式操作系统都不是这类系统。一个比较好的解决方式是Java虚拟机的概念即操作系统中提供一个虚拟化的运行环境,应用可以后向的开发和升级。只有做到软硬件分离,应用与运行环境分离,才能将物联网领域中的技术分离促成物联网技术链的形成。
系统控制能力高度开放指终端操作系统能够为应用提供足够丰富的控制接口,这里不仅涉及到API接口开发,还涉及到操作系统访问控制权限的设计。
丰富,精简的网络承载能力以及互联网协议支持能力
物联网终端设备能够具有通过近距离无线通信与其他物联网终端设备进行信息交换能力。物联网的承载网络可以是多种多样的(从物联网近距离无线通讯技术讨论中可以了解),不同网络下的设备之间的通讯是比较困难的,那么物联网终端操作系统要能够提供一种承载无关的物联网通讯协议,从而满足不同阶段不同网络承载设备的部署,同时突破目前物联网通讯技术各自为政的局面。物联网操作系统同时应该提供丰富的网络接口能力,支持众多的网络协议,目前互联网领域中的网络协议都应该能够在物联网中有对应的映射和补充。
物联网终端操作系统网络协议应该是精简的,目前物联网处于早期发展阶段,物联网终端设备的能力相对较弱,那么精简的网络协议有利于设备,应用的快速开发和部署,同时满足物联网终端设备能力不一致的问题。
物联网终端操作系统支持网络协议应该是支持高吞吐量,高效的网络协议,物联网基本的神经单元数据都是由物联网终端设备采集提供的,同时这些采集通常是不间断,高速产生的,这对于网络协议提出了新的需求。
边缘计算能力
计算机能力包括技术的精度,计算的速度,数据输入/输出的速度,计算模型。不同的物联网终端设备对上述的计算能力会有不同的要求。
计算的速度和数据输入/输出的速度是软件、硬件共同作用的结果。就计算的精度来来说,这个要求是物联网终端操作系统需要提供的基础能力,数据的精确度和计算结果的精确度是数据价值的保障,
计算模型操作系统能够提供丰富的计算模型,方便开发者开发,同时提供计算模型插件能够支持第三方的技术模型。