? ? 如题,什么是微内核操作系统呢? ? ??那,什么又是操作系统呢?
? ? 其实,网上有很多对操作系统的定义,写得非常详细,本文无需重复造轮子,同学们可以上网了解其详细定义。小编在这里以自己的理解,简单白话介绍一下。
操作系统
????从软件构成来说,操作是一种软件程序,主要由调度器、进程/线程、IO设备驱动等组成;从使用层面来说,操作系统管理系统中所有的硬件资源,并为用户程序提供相应的服务,常见的如Windows,linux等。用户程序是没有权限直接访问系统中的各种硬件资源的。因为如果放开了权限,用户程序的一个错误操作,可能导致整个系统的崩溃,更何况有很多用户程序在同时运行,崩溃的概率将是很大的。这样的结果,用户是无法接受的。
????所以系统所有硬件资源、特权行为等都将由操作系统软件负责。当然,你说操作系统本身也可能出现问题啊!确实,这是不可避免的。所有你能寄托希望的就是,写操作系统软件的人足够牛、可能发生的错误足够少。事实证明市场主流的操作系统目前用起来确实还不错。所以请安心地将这份寄托放在微软、谷歌、Linux开源社区的开发者们,还有逐渐发展起来的国产操作系统的开发者们身上。
????本文,包括本公众号主要研究微内核操作系统,所以对常见的操作系统概念不再做延申。下面将详细讲解微内核操作系统的相关概念。
微内核操作系统
????前文提到操作系统本身也可能发生错误,针对这个问题,初看感觉无计可施。其实不然,从数学思维的角度来看,理论上,越简单的事务越不容易犯错,代码量越小出错的概率越小。也许正是基于这个原理,就衍生出了微内核操作系统。
????我们常用的windows、linux操作系统,它们并不是微内核操作系统,相反,它们是宏内核操作系统。那么微内核与宏内核有什么不一样呢?
????下面将从物理(硬件)特征和虚拟(软件)特征,做一些对比:
????????能直接看出差距的应该是内核镜像的尺寸了。微内核仅保留了调度器、同步机制、进程线程管理等最基本的核心服务,所以代码尺寸能小很多。要知道,当前linux内核约80%以上都是驱动代码。去掉驱动代码后,尺寸减小到原来的20%,还是很惊人的。
????????微内核与宏内核的常见软件架构区分见下图:
????一般微内核操作系统的软件组件架构图,也可以如下图所示:
????????微内核与宏内核相比,至少文件系统、网络协议栈、设备驱动等的崩溃不会造成微内核操作系统的崩溃,但是宏内核就难说了,大概率oops。在微内核操作系统中,很多组件可以在不重启内核的情况下,被再次起起来。这在很多对系统安全要求较高的场景是非常有用的。
????????微内核软件组件的模块化更多更灵活。很多模块可以在不重启系统的情况下单独完成更新升级。
????????相比宏内核,微内核的上下文切换会更多,从而综合性能多少还是比不上宏内核。
????说了这么多,具体什么操作系统是微内核呢?市场上还是有的,著名的QNX基于微内核,深耕汽车车载OS,占有绝对的市场率;Google约2015年开始默默研究的Fuchsia OS的内核zircon也是基于微内核开发的。还有其他微内核操作系统,如SEL4等,就不一一列举了。
? ? ? ? 出于对zircon微内核的爱好,作者将持续更新fuchsia os微内核的研究文章。
|