Android不是微内核,Android属于宏内核!两者有着本质区别!
操作系统分为:宏内核与微内核!
20世纪70年代初诞生的UNIX系统可以说是那一时期最好的操作系统,随着计算机技术的快速发展。在UNIX系统功能变的越发强大的同时,内核代码量也在快速的膨胀,带来的弊端也随之出现,系统的可靠性、代码的可维护性和稳定性都存在着问题。
为了解决这些问题,业界开始反思UNIX系统设计。从重构UNIX代码和架构开始,人们尝试把UNIX内核提供的一些服务和功能放到内核外,把执行在特权级别的内核代码缩到最小,内核只提供基本的服务,而用户空间程序承担尽可能多的原来驻留在内核空间的功能。
这就诞生了第一代微内核Mach。由于第一代微内核性能太差,很快就被业界所遗忘,但是人们并没有停止对微内核的研究,随后推出的第二代、第三代微内核都得到了很好的发展。当然,与此同时作为宏内核的代表Linux和Windows系统也在快速的发展。
作为操作系统发展的两大分支——微内核和宏内核,他们有着截然不同的设计理念。宏内核将所有的系统功能(包括内存管理、文件系统、设备驱动等)都在内核里实现,而微内核则只在内核中保留了必须在内核态运行的功能,而把其他功能都移至用户态以服务线程的方式来实现。
这种设计方法使得微内核本身的体积大大减小。同时,运行于微内核之上的用户态的系统服务由于处于各自的地址空间之内,保证了服务之间的强隔离。这种设计思想,给予了基于微内核的操作系统高度的可重构性、稳定性和可靠性。
小结:操作系统按照设计思路,分为宏内核与微内核
宏内核与微内核,孰优孰劣?
关于微内核和宏内核孰优孰劣的讨论,业界也一直没有停息过。1992年Andrew Tanenbaum(Minix系统设计者)和Linus Torvalds(Linux内核创始人)之间进行了一场关于“Microkernel vs Monolithic kernel”的长篇邮件论战,论战也吸引了众多操作系统方面的顶级黑客参加。
因为当时微内核还处在学术研究阶段,且有着严重的性能缺陷,最终大家得到的一致结论则是微内核不如宏内核。14年后的2006年,两人再次对这个话题进行了论战,这时候Andrew Tanenbaum明显有了底气,因为在这十几年中微内核解决了令人诟病的性能问题,并且在嵌入式系统领域(航空航天、汽车电子、无线通讯、医疗设备等)愈发得到市场的认可。所以我们不能简单的评判微内核和宏内核哪一个更好,作为操作系统设计的两种思路,两者各有优缺点,随着技术的进步,二者也在相互的借鉴。可以确切的说,只要操作系统还在发展,关于二者的讨论就不会停止。
宏内核与微内核比对:
IPC性能耗时分析:
从目前的研究热点来看,更多的人把目光投向了微内核,利用微内核在实时系统及嵌入式虚拟化领域的优势,来解决现有的嵌入式操作系统的安全性问题。OK Labs提出的Microvisor概念,即具有虚拟化功能的微内核,就是一个很好的案例。L4微内核家族的众多成员,如Fiasco.OC、NOVA、Codezero以及seL4都有虚拟化方面的应用。
小结:宏内核和微内核的应用场景不同,尺有所短,寸有所长
微内核的发展经历
微内核的发展大致经历了三个阶段:
- 以Mach为代表的第一代微内核,作为微内核概念早期尝试,在系统性能上表现很差;
- 以L4为代表的第二代微内核,采用了全新的设计理念,突破了微内核的性能制约,为微内核的实用化奠定了基础;
- 以OKL4、FOC和seL4为代表的第三代微内核,引入了权能控制,大大提高了微内核系统的安全性,同时seL4还通过了完整的形式化验证,这将微内核的安全性又提高到了一个新的等级。
OKL4微内核是澳大利亚新南威尔士州立大学操作系统研究小组和澳大利亚国家信息和通信技术部(NICTA)基于他们的第二代微内核Pistachio-embedded所开发的。目前OKL4有两个版本:开源的OKL4 Microkernel和闭源的OKL4 Microvisor。OKL4 Microvisor是商业化的L4微内核,Microvisor是Microkernel + Hypervisor的缩写,强调OKL4微内核本身的Hypervisor属性,所以它既可以作为Hypervisor运行多个操作系统,也能作为Microkernel运行独立程序。Microvisor拥有包括资源管理以及具有实时功能和低性能开销的调度功能。
从目前的研究热点来看,更多的人把目光投向了微内核,利用微内核在实时系统及嵌入式虚拟化领域的优势,来解决现有的嵌入式操作系统的安全性问题。OK Labs提出的Microvisor概念,即具有虚拟化功能的微内核,就是一个很好的案例。L4微内核家族的众多成员,如Fiasco.OC、NOVA、Codezero以及seL4都有虚拟化方面的应用。
小结:微内核的短板是性能,但是随着硬件平台性能的提升,瓶颈不在
智能终端给予微内核发展的新机
美国在微内核领域的研究也是处于世界领先的地位,从早期的Mach项目开始,到后来的DTMach(Distributed Trusted Mach)项目,再到DTOS(Distributed Trusted Operating System)项目,这些项目都是利用微内核打造一款安全操作系统,参与者包括美国国家安全局(NSA)和美国安全计算公司(SCC)。还有一家美国公司,绿山软件(Green Hills SoftWare),作为全球最大的独立嵌入式系统开发解决方案提供商在微内核领域也颇具实力,他们利用微内核研制的Integrity-178B Real-time Operatiing System已经达到CC标准(信息技术安全评估标准)的EAL6+安全等级(最高为7级),其主要应用于军用航空电子设备中。
移动终端的使用是操作系统发展的里程碑式推动事件,全球超过百亿的终端类设备,使得智能化操作系统有了极大的发展。主流的智能手机操作系统有Symbian OS、Android OS、Windows Phone、iOS、Blackberry等。按照源代码、内核和等的划分,智能手机操作系统可分为开放型平台(基于Linux内核)和封闭型平台(基于UNIX 和Windows 内核)两大类。但是随着产品的发展,现在市面上,主要以Android和IOS的市场占有率最大。
随之智能设备的兴起,智能终端的广泛部署,移动终端市场是嵌入式领域最为活跃而且规模最大的市场之一,嵌入式领域对小型化、微结构的操作系统的迫切需要,推动了微内核技术的迅猛发展。微内核逐渐被智能终端厂商接受——苹果IOS使用微内核架构!华为鸿蒙采用微内核架构!Google的下一代操作系统Fuchsia也采用微内核架构。
随着5G商用的快速推进,物联网发展进一步提速,智能穿戴、智能家居和车联网等产品都离不开终端的参与,为了实现物联网统一发展、统一平台,实现全场景、全能型操作系统。Google、苹果和华为,均在操作系统层面推出了各自的产品,可以说微内核是决战未来、面向5G的“未来操作系统”。
小结:移动终端和5G将是微内核的主战场
与Android系统的关系
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电,由Google公司和开放手机联盟领导及开发,该平台由操作系统、中间件、用户界面和应用软件组成。
Android的操作系统代码在1亿行以上,仅内核部分代码就多达2000万行。微内核的基本特点是,内核态和用户台分离,基础服务与系统基本操作分离,各个服务客体运行隔离的进程,使用消息机制进行通信。
Android本质是宏内核,虽然使用的是经过裁剪后的Linux,但是本质是未变的,但架构上参考了微内核的设计,所有的程序都运行在虚拟机中的,每个虚拟机之间是相互隔离的,仅此而已。
总结
微内核架构上是在系统上构建及简的系统功能,仅提供进程之间的基础通讯,其余复杂的功能散落在不同的服务里,所以在微内核架构里面融入安卓系统在技术层面是一个可以容易实现的事,所以华为的鸿蒙系统可以兼容Android。Android操作系统也在发展,Google面向下一代操作系统的Fuchsia是Android的替代品,可以看出未来操作系统的发展方向是微内核,面向未来多场景,全适配是操作系统厂商的梦想,这个梦想要依靠微内核来实现。