该文为下半部,上半部分可阅读:如何设计物联网终端操作系统(上)。
系统大小的可伸缩能力
从外观上来说,物联网终端设备与计算机、移动终端的一个显著区别是,物联网终端设备外观、尺寸都是不固定的,有的很小,有的很大,有的对功耗有要求,有的对网络能力有要求,有的对数据采集有要求等。
外观和尺寸的不固定,对操作系统占用空间的大小就会有多种要求,从百K级别到M级别都要适配。那么在设计操作系统时,对物联网终端操作系统的要求就是:内核要小,功能可裁剪。
内核小:不仅指操作系统内核部分小,而且要求操作系统的最小功能集要很小。这样在设计物联网终端设备时,才能不受操作系统本身的大小尺寸所限制。
功能可裁剪:硬件设备多样性也必然要求操作系统的能力根据硬件能力提高或裁剪。物联网终端操作系统应该能够提供丰富的可裁剪的功能模块供选择。这点不仅要求操作系统的最小集是足够的稳定,而且要求操作系统在设计时考虑足够强的动态升级的能力。
支持云技术能力
云技术与物联网的关系已经讨论,为了更好地配合云技术,或者促进云技术在物联网领域的应用,我们要在物联网终端操作系统设计之初就需要考虑两者的关系,增强物联网终端设备支持云技术的能力。
数据安全性和数据传输的安全性:为云技术提供安全、完整的数据是物联网终端设备的基本任务。
数据的预处理:为了配合云技术的并发计算,终端设备应该有能力按照云端要求对原始数据进行处理或过滤。
安全的数据存储:在物联网网络传输能力还未有质的提升之前,本地化的安全的数据存储也是配合云技术的一个能力。简单的汇总是为了配合云技术在物联网行业的应用,物联网终端操作系统应该有完善的数据处理的能力。
系统的自我生长能力
操作系统的发展有两种方式:一种是操作系统提供者不断地完善系统,软件开发者不断地丰富其应用,做到互相促进的发展方式Windows就是属于这样的操作系统;另一种是操作系统本身也需要更多的开发者来丰富,由更多的机构共同促进操作系统的发展,而应用的开发者也可以为操作系统贡献力量,Linux就是属于这种操作系统。第一种方式的操作系统会更加纯粹集中于某一领域,而第二种会产生出操作系统群,会有不同的变种,应用会相对多样,但碎片化也随之而来。
物联网终端操作系统应该选择哪条发展路线?我们的观点是第二种路线,理由如下。
(1)物联网终端设备多样性,要求操作系统也有多样性的特点。
(2)物联网的应用领域是分行业的,那么需要针对不同行业特性设计不同的终端操作系统。
(3)从整个计算机技术领域发展来说,开源的理念越来越被接收,开源会让更多人、机构参与进来,对培养技术链非常有帮助。
在设计物联网终端操作系统时,本文的设计思想是通用操作系统+行业操作系统。
通用操作系统是指物联网终端操作系统的提供者关注操作系统在物联网行业通用领域技术的提升。行业操作系统的指针对不同行业,由行业操作系统提供者制定行业操作系统标准。这种方式既解决了操作系统自身自我发展的能力,又解决了开源、开放带来的碎片化问题。
技术上如何从通用操作系统向行业操作系统演进,这不仅要求通用操作系统足够开放,也要求通用操作系统架构支持系统级模块的扩展,即我们所说的系统模块加载或者动态模块加载的能力。
语言及开发环境
好的语言和开发环境可以很容易吸引技术人员积极参与,同时提高应用的开发速度。对于一款物联网终端操作系统来说,是需要一个移植性强的语言,还是跨平台性强的语言;什么样的开发环境更容易被开发人员所接受?
物联网终端操作系统需要的应该是语言系统中对计算、数据采集网络组网这3个方面的增强,即我们要在语言基础库中增强对物联网的扩展。比如Java语言中,需要在Java.lang或Java.uti中增强对各类计算公式的扩充,需要新增 Java iot扩展类,以提高对外设的控制,需要在Java.net类中加入对近距离无线通信技术的支持。如果是C语言,那么就需要增加C语言基础库。开发环境包括编辑、编译、调试、模拟、测试等方面的提供,这里不仅要求操作系统在设计时提供强大的调试、跟踪能力、同时操作系统的提供者要同时提供丰富的工具供开发人员使用。
除了上述对于语言库、开发环境的讨论,物联网是否需要语言根据物联网的特性引导开发者改变开发的思路?我们认为应该从开发应用的习惯以及测试、实施上引导开发者。
首先是计算的精准度,不同于以往的开发系统,物联网终端应用要求数据采集,数据的计算是越精准越有价值,因此开发者要有科研的精神,对计算的结果要达到科学级的精准度。
其次是协调性和病毒性,这里要求开发每款应用时,物联网终端应用是同时实施到一组或者一群设备上,因此并发、协调以及应用的病毒式特性都要在开发阶段考虑。
最后是应用的实施和部署,即要考虑应用实施、部署、升级要简单方便。