摘要:用户态功能得到加强。与之对应的是另一种操作系统体系架构微内核,在微内核架构下,即使是操作系统内核功能,比如文件系统网络协议栈设备驱动程序等,也是以进程形式实现,每个功能是一个独立的进程,占用独立的地址空间。
经过HelloX开发团队近一年的努力,在HelloX V1.86版本基础上,增加许多功能特性,并对V1.86版本的一些特性进行了进一步优化之后,正式形成HelloX V1.88版本。经相对充分的测试和验证之后,现正式发布。相关代码,已全部上载到github上(github.com/hellox-project/HelloX_OS),欢迎对HelloX感兴趣的朋友下载测试和试用,并进一步反馈问题。
V1.88版本完成时间较长,主要原因是在过去的一年里,我从事的单位持续遭受各种外部压力。这些压力传递到员工身上,导致工作量和压力倍增,业余时间大大压缩。大多数时候都是晚上10点以后才下班,周末基本都要加班。即使在这样紧张的工作压力下,HelloX的开发也没有中断,一直持续。而且对代码的质量要求更高,因为通过过去一年多的遭遇,使我认识到基础软件的重要和必要性。HelloX属于基础软件,必须夯实基础,做到最大程度的容错和外部适应。
除继续保持V1.86所有特性之外,V1.88版本主要对下列特性进行了支持或优化:
根据github的统计,HelloX V1.88在原来基础上总共更新了130多个源代码文件,修改或增加了大约3万行的源代码。V1.88版本的总代码行大约为20万行(不包括用户态的应用程序代码)。HelloX V1.88内核编译后的二进制文件大小,大约在565K左右。
用户态进程功能是HelloX V1.85版本新引入的功能,主要目的是为了对不同的应用程序之间,以及应用程序、内核之间进行彻底的隔离,创造一个安全稳定的执行环境。是否具备用户态功能,是区分通用操作系统和嵌入式操作系统的标志之一。在HelloX V1.88版本中,用户态功能做了较大的增强。但用户态功能博大精深,需要考虑的因素不比内核本身要少,因此在后续版本中,还会进一步完善和增强用户态功能。
大部分嵌入式的操作系统都不具备用户态功能,在嵌入式领域,包括操作系统内核,应用程序,各种驱动程序,大多数情况都是一个解决方案厂商提供,不存在不信任的应用程序或设备驱动。而且引入进程之后,频繁的进程间切换会降低系统整体性能,因此权衡下来,嵌入式操作系统一般都不实现用户态功能。
但是HelloX定位于物联网网关等复杂的应用场景,需要动态加载和执行第三方应用程序。如果不做安全隔离,程序之间就可以直接访问对方数据,存在巨大安全隐患。同时第三方应用质量无法保证,在没有地址空间隔离的情况下,一旦一个应用程序出问题,很大概率会导致整个系统崩溃。因此权衡下来,HelloX最终在V1.85版本中引入用户态进程功能。
只是动态按需加载的第三方应用,才会以进程形式运行。HelloX内核本身的功能,比如TCP/IP协议栈,网卡驱动程序,USB驱动程序,文件系统,等等功能还是在内核中运行。因为我们认为这些功能是可信任的,而且都是系统必须功能(一项功能缺失,即使操作系统内核不受影响,也已经无法提供完整的功能),因此与内核分离意义不大,这就是典型的“宏内核”体系架构。与之对应的是另一种操作系统体系架构:微内核,在微内核架构下,即使是操作系统内核功能,比如文件系统、网络协议栈、设备驱动程序等,也是以进程形式实现,每个功能是一个独立的进程,占用独立的地址空间。这种实现方式可进一步确保内核的安全,但是由于进程间通信(IPC)的低效率问题,会使得系统性能大打折扣。当然,现在有很多技术手段,来提升微内核架构下系统的整体性能,但是站在工程角度,笔者还是建议整体上用宏内核来实现操作系统。但是可以充分吸收微内核的一些优点,来改进宏内核架构。比如在HelloX的实现中,把TCP/IP协议栈、日志管理、以太网管理等等作为独立线程(运行于内核态)实现,这样可使得模块之间更加独立,由于不涉及用户态上下文切换,IPC性能得以保证,总体上呈现出一种“宏内核+微内核”结合的优势。
HelloX V1.88版本的用户态功能主要包含下列这些:
支持用户态功能,是HelloX由嵌入式操作系统向通用操作系统转变的标志。作为计算机领域的最基本软件,支持丰富的应用场景是操作系统得以长期存在的基础。具备高性能、实时性、高可靠的通用操作系统,必然会比嵌入式操作系统更能适应外部需求,也更容易把场景做丰富。通用操作系统与嵌入式操作系统并不是非此即彼、相互排斥的,而是可以有机统一起来。影响通用操作系统性能的传统机制,比如内存交换、延迟页面调入等,随着计算机内存的不断增大,已经变得不是很重要。把这些功能拿掉,保留用户态功能,同时对调度机制、加载机制、中断响应等做出优化,是可以有效统一嵌入式操作系统和通用操作系统的。HelloX后续版本将超这个方向发展。
与以前版本的原则一致,在HelloX V1.88版本的开发过程中,我们始终坚持“稳定可靠,不留问题死角,可直接应用”为原则,所有代码都经过了详细深入的内部测试。
网络功能一直是HelloX操作系统的最重要功能。相比前一个版本,HelloX V1.88的网络功能进一步增强,比如增加了对Intel服务器网卡82547的支持,把DHCP Server功能迁移到了用户态,对不同网络线程进行了多核重分配,设计并实现了统一的网络接口管理框架,等等。
在原来专门定制的软路由器black box基础上,又升级了一款新的软路由器“blue-white”,因为这款路由器的前面板有蓝、白两色。最新升级的路由器,可以支持4到8个千兆以太网接口(原来只有两个接口),可以通过console接口(RS232)进行配置,下图是它前面板:
所有千兆以太网接口是对等的,可以通过配置,作为WAN接口(连接运营商)或者LAN接口(连接本地交换机,或者WLAN AP)。通过串口(console接口)进行配置管理,个人电脑可以通过类似超级终端的软件,来控制blue-white,如上图。
由于大多数的WiFi芯片都不开源,因此blue-white当前并不提供WLAN AP功能。需要外接一个二层AP设备,提供WLAN信号接入。该软路由的总体成本在600元人民币左右,如果批量定制,成本还可以进一步降低。但是与基于SoC的家用路由器相比,虽然没有功耗和成本优势,但其计算能力,则是传统家用路由器无法比拟的,这也是它作为物联网网关的重要优势。
最近刚好搬了新家,就以blue-white为核心,设计了一个家庭网络,并实际投入使用。整个网络的构造如下手绘图:
运营商提供的光猫工作在二层桥接模式,blue-white作为整个家庭网络的核心网关,发起到运营商网络的pppoe连接,并为下游设备(比如IP电视、两个WLAN AP等)分配IP地址。家里用的家电、电脑、PAD、手机等等,都通过WLAN AP接入。其中IP电视多带带通过一条物理网线接入blue-white,这样可以把持续大流量的电视机,与突发网络流量的其它终端设备隔离开,不至于相互影响。下列是blue-white的一个运行截图:
CPUID作为用户态应用程序,加载并运行后可以显示完整的CPU信息。
截止目前,blue-white已运行一月有余,表现稳定。在长期外出出差的情况下,可以整体切断弱电开关,节约电量。在返回家中时,直接打开电源即可,无需做任何重新配置。在连接运营商的PPPOE session中断的情况下,也可以重新拨号建立连接。经过实际网络速度测试,下行速率在230M左右(受运营商接入带宽限制),CPU峰值利用率不超过50%。
在自己生活的环境中真正应用起HelloX,并根据实际需求持续进行开发和优化,与“只开发、不使用”,或者“只使用、不开发”,感觉是完全不一样的。
在使用过程中,随着越来越多的物联网设备接入到HelloX网关,我个人越来越体会到物联网操作系统的真实和价值,越来越感受到物联网网关的重要性。设想一下,物联网网关可以看到所有物联网设备的通信模式,包括报文的平均长度,发送间隔,带宽,时间分布,MAC地址,通信协议类型,等等信息。通过这些信息,即使不对IP报文做深度分析(这样做是不符合法律规定的),也可以通过大数据或者AI技术识别出设备类型和设备能力,从而有目的的与物联网设备进行协同。单个物联网网关,是一个本地网络的控制中心,而所有的物联网网关组成的大的网络,则是整个世界的控制中心。HelloX将聚焦物联网网关方向,做深入的技术耕耘,为人类建立安全,可靠,智能的物联网数字中心。
HelloX操作系统是包括内核、设备驱动程序、用户态应用程序、物联网套件等一系列功能的一个系统软件,这与当前流行的主要操作系统都有不同之处:
Linux:Linux主要定位是操作系统内核以及基本的管理维护工具,其定位是通用操作系统的内核,可以应用在物联网领域,但是并未针对物联网领域做特殊优化和定制。HelloX既包括操作系统内核,也包括面向物联网的套件,针对物联网做了定制,是面向物联网领域的专业操作系统;
Android:这是面向智能手机的操作系统,Android并没有实现操作系统内核,而是直接使用了Linux作为内核,在此基础上开发了支持智能手机的配套功能和组件。HelloX的思路与Android有类似之处,都是面向某一个应用场景,针对场景做了深入开发。但与Android不同,HelloX本身实现了内核功能,没有引用其它内核;
鸿蒙(Harmony):与Android类似,是面向智能移动终端的操作系统,也是基于Linux内核,针对智能移动终端场景做了深入开发,实现了诸如软件总线等技术,方便不同类型的移动终端随时随地的交互和协同。HelloX是面向物联网领域的操作系统,具备完全自主开发的内核和物联网执行环境,用于支撑万物互联。鸿蒙操作系统设计了内核抽象层,可以对不同的内核进行封装和抽象,因此,理论上,可以把HelloX作为鸿蒙的内核之一;
欧拉:面向信息基础设施的操作系统,比如服务器、云计算、网络设备、工业设备等,从其定位和描述来看,更多的是定位于后端专业应用场景。欧拉也是基于Linux内核进行开发和完善,与行业合作伙伴一起建设信息基础设施的最核心软件部件。
总结起来,就是HelloX操作系统包括了内核、支撑模块、物联网执行子系统等一系列组件,有完全自主知识产权的内核,遵循BSD开源协议。并不是说使用Linux内核就不是真正的操作系统,但作为最核心部件,具备自主内核有很大好处:可以选择不开源,做到进一步的安全;可以对内核进行任意修改,而不用考虑开源协议的约束;可以自主规划内核发展路径,有最大自主权…。但是开发一个全新的内核,也有巨大挑战,必须要有广泛的应用场景、庞大的用户基数,对内核进行广泛测试,确保其稳定性和可靠性。
作为物联网操作系统,HelloX将始终聚焦物联网领域的应用,为物联网量身定制一套最优的系统软件解决方案。我们认为,只有一个内核的支撑,是远远不够的。物联网和智能硬件的有效发展和壮大,需要更多技术的支持,比如人工智能,分布式计算,机器学习,等等。但一个稳定可靠和可扩展的物联网操作系统,是这些技术的最好生存土壤。
同时我们认为,物联网中的一个关键组件将会是物联网接入网关。不论是哪种应用场景,物联网网关将是物联网世界连接用户或者真实世界的最核心角色。随着5G等技术向工业领域深入推进,以及工业制造领域越来越快的数字化转型,对物联网网关的需求会越来越多。因此,后续HelloX会首先瞄准这一个物联网应用场景,进行深入耕耘。物联网网关首先是一个更安全和高效的宽带接入网关,同时具备支撑物联网应用的能力。下图示意了我们对物联网网关的理解:
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/122276.html
摘要:为广大开发者提供基于互联网技术栈的操作系统平台,极大简化了物联网开发难度,提高开发效率。边缘计算借助硬件的计算能力,为家庭和企业提供强大的边缘计算能力,不仅能够满足物联网时代家庭生活和企业计算的多种需求,还能够降低用户设备和网络的成本。 EdgerOs介绍 EdgerOS 是为万物互联时代而...
摘要:相比之下,物联网操作系统领域的碎片化问题则非常严重,并没有哪几个操作系统占据绝对优势,正处于百花齐放百家争鸣的阶段。在年被公司正式收购,将自己的服务内嵌到系统中,并于年推出了集成无线连接安全等功能的物联网操作系统。 物联网操作系统是运行在物联网设备上的提供物物相连能力的操作系统,其核心在于...
摘要:微软雅黑宋体在高性能方面,物联网平台采用了分布式集群架构设计,可支持海量设备的长连接和百万并发数据交换,提供设备与云端间健壮的双向通信链路。物联设备爆发增长,5G网络即将商用,IPv6逐渐普及,计算成本下降,以及大数据分析和人工智能技术的快速发展,这些不断涌现的技术浪潮,正在推动我们更快地进入万物智联时代。 近日,UCloud优刻得重磅发布了第一款物联网平台产品UIoT-Core,该平...
摘要:无处不在的三剑客这时我们终于了解了我们的三剑客,他们也就这么可以结合到一起了,是这一切的基础。无处不在的三剑客就这样到了这里,写得似乎很多也很少,但是还是没有做出来一个东西,于是我们朝着这样一个方向前进。 无处不在的三剑客 这时我们终于了解了我们的三剑客,他们也就这么可以结合到一起了,HTML+Javascript+CSS是这一切的基础。而我们用到的其他语言如PHP、Python、R...
摘要:定律在那篇最流行的编程语言能做什么里,我们列举了在不同领域的使用情况,今天让我们来详解一下在物联网中的应用。这个硬件层决定了物联网应用比应用更加复杂。这时,我开始关注实现物联网应用的可能性。 凡是能用JavaScript写出来的,最终都会用JavaScript写出来。 —— Atwood定律 在那篇《最流行的编程语言JavaScript能做什么?》里,我们列举了JavaScript在不...
阅读 3248·2021-11-22 12:07
阅读 1892·2021-10-12 10:11
阅读 1055·2019-08-30 15:44
阅读 2952·2019-08-30 12:45
阅读 2223·2019-08-29 16:41
阅读 1647·2019-08-29 16:35
阅读 2641·2019-08-29 12:57
阅读 1158·2019-08-26 13:51