什么是微内核,什么是宏内核?这两者之间有何区别?

HsiangE


内核:

内核是操作系统的核心,是操作系统工作的基础,分为单内核、双内核、微内核。内核负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性,是为众多程序提供对硬件的安全访问的一部分软件。


举个例子:当我们要播放一个视频的时候,视频APP要调用到设备的驱动程序,比如说声卡、显卡,而设备驱动程序又是由内核进行管理的,APP必须获得内核的访问权限。

更通俗地讲,内核就相当于一个公司架构里面的管理层。


微内核:

微内核是内核的一种精简形式。通常系统服务层是和内核集成在一起的,而微内核将系统服务层被分离出来,变成可以根据需求加入的选件,这样就可以提供更好的可扩展性和更加有效的应用环境。

昨天华为开发者大会宣布的鸿蒙操作系统用的就是微内核,这也是鸿蒙系统的亮点之一。



宏内核:

宏内核又称为单内核,它的架构特性是整个核心程序都是以核心空间的身份及监管者模式来运行。宏内核被视作为运行在单一地址空间(核心空间)的单一的进程,核心提供的所有服务,都以特权模式进行。

目前有的宏内核可以将其运作从整体性运作拆分成几个服务模块,并且让各模块各自运作,但其操作系统的代码依然是高度紧密的,很难修改成其他类型的操作系统架构。

现在我们常用的操作系统多为宏内核,比如安卓系统、IOS。


微内核和宏内核的区别:

宏内核和微内核的区别可以形象地理解为中央集权制和分封制。

宏内核简单地说就是把很多的东西都集成进内核里,各种进程和内核高度紧密,它的优点是效率高,缺点是稳定性差,如果开发进程出现一个bug经常会导致整个操作系统挂掉。


微内核的内核只能进行最基本的调度、内存管理,它的优点是非常稳定,做驱动开发时,发现错误,只需要相应地修正再重启进程就行了,但缺点是效率差。它的一大特点是可以进行模块化设计。



二五八Group


    华为最新发布的鸿蒙系统采用了微内核架构,而安卓系统采用了宏内核。采用微内核架构的还有windows系统内核、塞班系统、google正在研发的Fuchsia系统(用于替代android)。

    宏内核

    宏内核是指内核包含了操作系统绝大部分功能,比如网络协议、文件系统、硬件驱动等,这些模块具有很高的权限,各个模块系统开发难度相对较低。


    随着集成的模块越来越堵,内核不断增加,因此会出现类似安卓系统碎片化的问题,如果一个模块出现问题,整个系统就会崩溃,稳定性比较差。因此很多安卓手机,隔段时间就需要重启。

    微内核

    鸿蒙系统采用了微内核架构,内核部分仅仅包括了操作系统基本的任务管理、内存分配回收等几个必要的模块,其他模块外挂在为微内核周边,不具有最高权限,作为单独的进程存在,而且互不打扰,稳定性比较好。

    未来LoT时代,微内核是发展趋势,鸿蒙操作系统、google正在研发的Funchsia系统均采用了微内核,微内核是跨平台、分布式硬件的关键技术,是适应未来技术发展的必然趋势。


    总结

    随着5G网络的普及,万物互联以及LoT时代的到来,未来需要分布式架构支持多终端统一系统的运行,而多终端操作系统稳定性非常重要,因此微内核是未来“万物互联”时代发展趋势。


如果觉得对你有帮助,可以多多点赞哦,也可以随手点个关注哦,谢谢。

Geek视界


操作系统内核的几个重要的特点:

内核是操作系统的核心部分,它管理着系统的各种资源

内核可以看成连接应用程序和硬件的一座桥梁,是直接运行在硬件上的最基础的软件实体

在一些简单的硬件设备上可以没有内核或操作系统而直接运行程序,比方单片机等。这些设备通常只是用于特定的场合,也通常功能比较单一。而对于一般计算机来说操作系统是必不可少的。对不同的操作系统,其内核实现也是有所区别的。

目前从内核架构来划分,可分为微内核(Micro Kernel)和宏内核(Monolithic Kernel),“宏内核”这个翻译其实不是很好,翻译成“单内核”事实上更好一点。

对于微内核,用户服务和内核服务分别运行在不同的地址空间中;对于宏内核不管是用户服务还是内核服务事实上都是内核在统一管理,它们是运行在同一地址空间中的。

我们需要好好理解第5点,也就是用户服务和内核服务运行的地址空间的问题。大家都知道Linux采用的是宏内核,但是它也区分内核空间和用户空间,那不是有歧义了吗?

对于Linux来说,不管是应用还是内核都是由内存管理单元来做统一的内存管理的,用户空间的程序确实不能访问内核空间,但是对于内核来说,3GB-4GB的线性地址空间对整个内核都是共用的,同时内核中的VFS、System Call等模块被划分到内核中,它们之间的地址空间是相同的,这里的用户服务按照我的理解就是这几个内核模块所需要的报备。

微内核定义:

内核管理着所有的系统资源,在微内核中用户服务和内核服务在不同的地址空间中实现。在应用程序和硬件的通信中,内核进程和内存管理的极小的服务,而客户端程序和运行在用户空间的服务通过消息的传递来建立通信,它们之间不会有直接的交互,这样一来,微内核中的执行速度相对就比较慢了,这是微内核架构的一个缺点。

在内核架构中,用户服务是独立于内核服务的,因此任何用户服务崩溃都不会影响到内核服务,这就加强了操作系统的健壮性,这是微内核的优势所在。另一点,微内核的扩展性强,添加一个功能,只需要建立一个新的服务到用户空间当中,而内核空间不需要任何的修改。因此,微内核可移植性强、安全并且易于扩展。

宏内核定义:

宏内核同样管理着用户程序和硬件之间的系统资源,但是和微内核不一样的是,在宏内核架构中,用户服务和内核服务在同一空间中实现。具体一点,就是内核可以代表内核进程运行代码,就是通常的内核进程;当用户进程经过系统调用或者中断进入到内核态时,内核也可以代表它运行代码。这样一来,宏内核需要管理的资源多于微内核,其大小就相对大一些了。

在宏内核架构当中,内核管理着CPU调度,内存管理,文件管理和系统调用等各模块的的工作,由于用户服务和内核服务被实现在同一空间中,这样在执行速度上要比微内核快。然而,宏内核的劣势也是显而易见的,那就是当内核中的某个服务崩溃了,整个内核也会崩溃。另一点,想要在内核中添加新的功能就意味着内核中的各个模块需要做相应的修改,因此其扩展性很弱。

内存管理的区别:

宏内核在内核空间就实现了系统所有内存管理所需的一切业务,包括内存分配策略、虚拟内存管理分页算法等。

对于微内核的内存管理实现,有一个发展过程。在第一代的微内核架构中,内核代理了用户空间的内存管理,控制着内存访问的权限。

内核中的某个服务负责管理缺页异常并保存新分配的页,只要有缺页异常发生,请求就经过内核通知页管理器。页管理器必须进入特权模式下来获取内存的访问,然后回到用户模式下。然后发送一个返回结果来触发进程,当然这个过程也是需要经过内核的。处理缺页异常或者保存新分配页的整个过程是繁复而耗时的。

为了弥补性能上的损失,之后的微内核构架在内存管理上作了相应的改变。每个进程有3个内存管理原语(Primitves):map、grant和flush。如果进程想要共享它的内存页那么它的可以通过map来映射内存页给其它进程。当进程通过grant来让渡它的内存页给其它进程之后,该进程就丧失了这些内存页的访问权,直到让渡进程不再刷新它们。如此一来,整个系统运行过程就成了这样:在系统启动时,内核将所有内存保存到一个叫做基本的系统进程 (basic system process) 当中,当然这个所谓有基本进程是运行在用户空间中的,如果其它进程需要内存,就是再需要从内核中获取,它可以直接向这个基本的系统进程索取。

其它模块的区别:

微内核和宏内核在设计上还存在一些其它的区别,比方IO管理方面,宏内核的设备驱动直接在内核中实现,硬件中断也直接在内核中处理;但是在微内核中,内核是不直接处理IO中断管理的,来自硬件的请求将被重定向到用户服务中去,比方内核捕获了一个中断,那么内核发送给设备驱动服务就完事了,设备驱动服务会去处理这个中断。

总结:

微内核效率比宏内核慢,但在安全性、可靠性方面要比宏内核好,在扩展性方面微内核也有优势。

从内核构架发展趋势来说,将来或许会有比Linux更为强劲的基于微内核架构的OS出现,让我们拭目以待吧!


小胡侃事


期盼着,期盼着,鸿蒙系统终于来了。

它是一款全新的基于微内核的面向全场景的分布式操作系统,能够满足全场景流畅体验、架构级可信安全、跨终端无缝协同及一次开发多终端部署的这四大特点要求。

未来万物互联时代接入物联网的设备形式非常多,包括PC、平板、穿戴设备、VR以及智能电视、智能音响、智能冰箱等智能家电以及汽车等。鸿蒙系统是分布式架构首次用于终端操作系统,能够跨终端无缝协同,如智能手表上没有摄像头,可以用手机上的摄像头。

此外,与安卓及苹果操作系统基于宏内核技术不同,鸿蒙使用微内核技术。宏内核技术是指除了最基本的进程调度、内存管理等外,文件驱动、网络协议等其他许多功能都包括在里面。其优点是开发较容易,毕竟操作系统的绝大部分功能就在里面;缺点是稳定性差,只要其中一个功能模块出现问题就会导致整个系统崩溃。微内核技术则相反,除了进程调度、内存管理等基本功能外,其他模块都不具有最高权限,即便一个模块出错也不会造成系统崩溃,系统稳定性高。宏内核技术就像有人用多米诺骨牌组成一幅精美的图画,有一张牌出错,整幅画就完了。而微内核技术是把这幅画分成若干部分,即使一部分出错,其他部分也没事。

另外从安全性来说,宏内核技术相当于一套大房子,只要拿了大门钥匙,可以进入每一个房间;而鸿蒙使用的微内核技术,相当于每个房间都有不同的钥匙,安全性大大提升。


血染战旗红


鸿蒙OS在华为HDC2019开发者大会上正式发布,华为消费者业务CEO余承东向媒体介绍了华为鸿蒙操作系统,鸿蒙操作系统有几个关键词:微内核、全场景、分布式,这其中就包括了大家今天想知道的微内核。

到底什么是微内核?

简单来说微内核就好像是联邦制,国家政府只掌握军队、宪法等核心权利之外,各州拥有较大的灵活性、创造性,他们拥有地方立法权和地方税收政策。宏内核就是中央集权、一党专政,几乎任何事情需要内核参与处理。

就跟CISC复杂指令集、以及RISC精简指令集一样,微内核和宏内核一样,也是在不同时期操作系统的技术选型。微内核是内核部分只负责地址空间、进程间通信、以及线程管理等核心功能,其他文件系统、驱动程序等服务功能全都放在内核之外;宏内核则是将几乎所有服务功能都放在系统内核,使用的时候直接调用,服务功能包括内存管理、进程管理等。

现在的主流操作系统中,Unix/Linux是宏内核,移动端Android和iOS也是宏内核,Windows和macOS是微内核为主,不过Windows和macOS可以算作是混合内核设计,混合内核有很大的优势,本质上用微内核的方式来设计内核,而在实际上运用宏内核的方式,将一些重要的服务组件放进内核空间成为混合内核。

鸿蒙操作系统到底前景如何

余承东在华为HDC2019开发者大会上,余承东讲到了鸿蒙操作系统,鸿蒙操作系统有几个关键词:微内核、全场景、分布式。而且余承东直言,鸿蒙OS一夜之间就可以让Android应用适配鸿蒙OS,而且性能要比Android快几倍,华为的方舟编译器还能编译C/C++/Java/Kotlin等众多语言,看上去鸿蒙操作系统非常美好。

不过可能事实上没有大家想象的那么美好,微内核也未必就一定比宏内核好 ,微内核更不是华为的发明。全场景不管是Windows/macOS/Linux、还是移动端的iOS/Android本身都具有这样的底层能力,可是在没有搭建起生态之前都是妄谈。分布式更不用说了,这同样不是新概念,不过分布式的理念确实适合物联网。

余承东说鸿蒙一夜之间可以取代Android,而且性能是Android的数倍,真的有这样的实力,华为完全没有必要给Android机会,而且还会获得其他厂商的支持。余承东这么说是要给对方一个下马威,然后能够为鸿蒙争取三到五年的时间,这个时间可以让华为有更多的时间来准备。

还是那句话,中国人不能永远没有自己的操作系统和处理器芯片,现在Deepin Linux和鸿蒙OS现在总算是有了一些实质性的进步。饭要一口一口吃、要一步一步走,咱不能夜郎自大反而要更加发奋图强,没有核心技术总是有被卡脖子的危险。


本文为字节跳动签约作者EmacserVimer悟空问答原创文章,未经允许转载、抄袭必究!


分享到:


相關文章: