什么是微内核,看这一篇就够了

微内核是将服务转移到进程上的一种内核模式。宏内核是一种传统的内核结构,它将进程管理,内存管理等各项服务功能都放到内核中去,通常用在通用式的内核上,如unix,linux等。

两个系统的内核是通过进程的创建FORK的实现来比较,因为进程的创建涉及到系统调用,内存管理,文件管理等系统的主要方面。因此通过比较FORK的实现可以大致看到内核的差别。

微内核的代表:Minix,在Minix中,操作系统的内核,内存管理,系统管理都有自己的进程表,每个部分的表包含了自己需要的域。表象是精确对应的,为了保持同步,在进程创建或结束时,这三个部分都要更新各自的表。

什么是微内核,看这一篇就够了

结构

微内核是内核的一种精简形式。将通常与内核集成在一起的系统服务层被分离出来,变成可以根据需求加入的选件,这样就可提供更好的可扩展性和更加有效的应用环境。使用微内核设计,对系统进行升级,只要用新模块替换旧模块,不需要改变整个操作系统。

可以用商业对比来解释微内核的模块概念。考虑一个过度忙碌的商务经理。通过将工作分给其他人,这位经理可以将他的能力更有效地用于重要的商务工作中去,并集中于其他一些任务,例如开辟新的商务分支等。

什么是微内核和宏内核百度知道

将微内核之前,要了解内核。
内核是什么起来跟cpu一样,像一个物理硬件。但是恰恰不是。内核是操作系统中的核心部分。那操作系统是硬件定不是,是软件。那么内核也就是软件。
内核还可以分为:微内核和宏内核(单内核)。
如何区分呢一个形象的比喻。
宏内核相当于一家公司,然后办公室不划分任何部门,所有的部门都在这里工作。
微内核也是一家公司,但是它把办公室隔成了很多小办公室,每个部门在各自的办公室办公,不会相互影响。
微内核是只提供系统的必要服务,即把必要的服务放在核区。而把其他的服务,包括文件管理、网络服务等服务放到用户模式下。
这样子做的优点和缺点是什么呢br> 先讲缺点:会降低速度。这是致命的缺点,所以在很久以前内核基本都是宏内核。很少会有微内核。但是你讲到这对呀。华为和谷歌不是有微内核系统吗为的鸿蒙这么火br> 这就讲讲它的优点:
1.系统稳定。因为把更多的系统服务放到了用户模式,所以微内核里的服务少,所以奔溃的机会就变少了。被放到用户模式的服务崩溃了也不会对系统造成很大的影响。这一点我们回忆下Windows7以前的操作系统,蓝屏的概率是不是比Windows7以后的操作系统更大呢是为什么呢为Windows从7开始就把微内核的架构放进去了,把更多的服务放在了用户模式。那么现在这些服务出现错误,你也不会蓝屏了,重新开机下又恢复了。
2.系统易维护更新。这个很容易理解,因为改的代码量变少了。
3.安全性能高。
so现在大多数宏内核都加了一点微内核的思想。

原文链接:https://blog.csdn.net/qq_41300494/article/details/105896364

什么是宏内核与微内核

什么是微内核,看这一篇就够了

 

什么是微内核,看这一篇就够了

UNIX、Linux操作系统就是典型的宏内核,将系统所有的需要支持的服务均放置在内核中。毕竟系统服务代码之间存在大量的数据计算,通过内核来进行处理,能够高效的完成数据处理的过程。但是,随着系统的不断发展,这种工作方式势必会导致内核越来越大,甚至是臃肿。这样,也就需要更高的硬件资源来支持这种宏内核的工作方式。

 

UNIX、Linux操作系统的宏内核代码就有上亿行,基于Linux内核开发的安卓系统内核代码同样高达两千万行。但是,手机端常用的代码仅为宏内核的6%左右,于是微内核的概念便产生了。

微内核指的是尽可能简化内核,将更多的用户服务程序放置在内核之外完成。内核仅仅放置最核心以及经常性需要使用到的程序代码。

鸿蒙OS在发布会上强调了多个特性用来强调鸿蒙OS作为一个操作系统而言本身的突破和优势在哪里,根据余承东的发言,大致可以分为下面四点:

  • 采用分布式架构,可以实现跨终端的能力互助共享。
  • 低时延和高性能IPC带来高流畅的使用体验。
  • 基于微内核技术的可信执行环境,通过形式化方法提升了内核安全,全面提升全场景终端设备的安全能力。
  • 鸿蒙OS可支撑开发者实现一次开发、多端部署,最终实现跨终端生态共享。

根据三短一长选最长定理,本篇笔记我们来简单说一下微内核架构。

在了解微内核之前,我们先要了解操作系统,内核这几个基本概念,方便我们下面的阅读与理解。

操作系统(Operation System,简称OS):是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石;

内核:内核建立了计算机软件与硬件之间通讯的平台,内核提供系统服务,比如文件管理、虚拟内存、设备I/O等。

微内核定义:

微内核是内核的一种精简形式。将通常与内核集成在一起的系统服务层被分离出来,变成可以根据需求加入选件,这样就可提供更好的可扩展性和更加有效的应用环境。使用微内核设计,对系统进行升级,只要用新模块替换旧模块,不需要改变整个操作系统

根据以往我们的惯例,概念什么的太晦涩难懂了。

为了大家更好地理解微内核的概念,我们先来介绍一下宏内核架构。

微内核与宏内核

既然微内核是把内核集成在一起的系统服务给分离出来,那么宏内核必然反其道而行之,宏内核遵循的原则是一个都别想走原则,及相关系统服务都集成在一个内核中,宏内核在操作系统中扮演的角色类似于哆啦A梦,本身精通无数项操作系统必备技能,而且为人热心,凡事都身体力行,事必躬亲 。即我们所有系统服务都是通过这一个内核来完成的。大家想,宏内核啥事儿都得自己一个人干,就像家里的顶梁柱一样,万一顶梁柱有个三长两短,那这个家岂不是都要塌了,是这样的,这就是宏内核架构的弊端,因为所有的系统服务都集成在了一个内核中,就导致万一某个系统服务出现了故障,就会影响到整个操作系统的运行。当然,顶梁柱毕竟称之为顶梁柱,三天两头出事千斤顶也顶不住,宏内核绝大多数情况下是不会出问题的,宏内核架构的代表是linux操作系统。

关于linux是宏内核还是微内核,这点网上众说纷坛,各有各的道理,在查阅了相关的资料,包括linux创始人关于微内核和宏内核比较著名的那一场整理,本人不才,没有找到英文原文,但是维基百科上有所说明,链接如下:

https://zh.wikipedia.org/wiki/整塊性核心

而微内核呢,我们可以看作是一个团队,核心呢就是我们这个团队的领导者,即最核心的那一个。而团队的其他人,则负责各自的领域。而微内核和其他模块之间互相通信,也就是当我们向内核调用某些内核没有包含的系统调用时,内核负责通知相应模块执行调用。这种架构带来一个什么样的好处呢,可扩展性非常高。模块化,插件化的设计,意味着我们可以很方便的添加新的模块而不对其他模块造成影响,同样也可以很方便地卸载某些系统服务。同时呢,当系统内一些模块出现故障无法运行时,也只是对这个模块造成影响,而其他的模块则几乎没有影响。算是解决了宏内核“得个感冒,殃及全身”的问题。而我们大多数人使用的windows操作系统就是基于微内核架构实现的。

那既然微内核架构这么好,那为什么linux还要固执的使用宏内核呢,换成微内核不就好了吗/p>

不尽然,尽管微内核采用了插件式的设计,扩展性很高。但是大家想,团队之间最重要的是什么,沟通和合作,正因为微内核分离了系统服务层,每次调用都需要通信,而这种通信是需要时间成本的,这就意味着微内核的效率往往是低于宏内核的。还是不理解下面这个极端的沟通例子。

[美人鱼名场面]

微内核(邓超):你知道吗,我见到了美人鱼,就是那种,那种,美人鱼,你知道吗/p>

系统服务层(文章):是这样的画画中)

微内核:不是,就是那种看起来,很美的美人鱼

系统服务层:先生,我们都是经过严格的训练..

宏内核:我见到了美人鱼,这个样子啊,记住了。

很明显嘛,考虑到微服务架构出现的时间(2005)是晚于微内核出现的时间的,所以我做了一个大胆的猜测,微服务架构在设计的时候其实是有借鉴微内核架构的,毕竟微服务架构也是将单一的应用拆分成不同的服务,不同服务之间相互进行通信。同时我们IDEA的插件系统其实也有采用微内核架构。

搞清楚这个问题,需要理解什么是操作系统中的地址空间(或者说什么是页表)。

操作系统为每个应用程序提供独立的地址空间,也就是一个有页表定义的从虚拟地址翻译成物理地址的地址空间(32位为0-4GB)。

操作系统的特权级代码运行在高端地址中,并且映射给所有的应用程序使用(例如32位Linux使用3GB-4GB做为内核空间)。也就是说应用程序使用系统调用请求内核做一些特权的事情,内核的代码可以近乎随意的执行各种内核函数。这种所有内核代码在一个地址空间,并且可以任意调用的操作系统内核叫做宏内核。你可以想象成一个办公大厅,各个部门都在一起办公,这样你找完财务报销后就可以直接找审计部门审核,然后就把钱取出来了。

这样的操作系统构造,好的地方是各个操作系统的调用非常快,毕竟大家都在一起办公嘛。但不好的地方是,如果一个地方出现问题,整个操作系统都会受到影响。比如,有人跟财务部门吵架了,那别的部门都没办法专心办公了,整个系统也就崩溃掉了(kernel oops)。

早在上世纪80年代,一个荷兰大学教授试图解决这个问题,他把操作系统的各个部分放在隔离的地址空间里。也就是说,财务处有自己的大楼,审计也有自己的大楼,… 他们共同生活在一个办公园区,并且彼此互相不见面。每个报账请求交个园区的工作人员,由他在各个部门间跑腿。而这个园区(专门的跑腿人),就是微内核。

世界上微内核的先驱就是荷兰教授Andrew Tanenbaum写的MINIX,全称是MIni-uNIX,一个对UNIX V6的最小移植。当然这个MINIX是一个teaching操作系统,当时不具备生产能力。1991年芬兰一个叫Linus的小伙,在MINIX基础上,基于宏内核思想开发了一个操作系统,就是我们用的Linux。当时两位大佬还在MINIX的maillist上为宏内核还是微内核更好吵了一架,现在还能找到。

毕竟当时处理器硬件能力有限,速度占主要考虑因素嘛,Linux在很长一段时间占据主导地位。最近几年硬件的异构化、安全等因素越来越重要,大公司比如谷歌尝试微内核操作系统fuschia,菊花厂的鸿蒙。估计要不是美国制裁,鸿蒙也不会这么收关注。

下面这个链接是美国计算机协会通信杂志前两年的一期文章,刊登了Andrew老爷爷自己对微内核30年来开发的反思,同时提到了为什么没有把MINIX做成功,当时读得津津有味。

https://www.zhihu.com/question/339638625/answer/782044005

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24872 人正在系统学习中

来源:aFakeProgramer

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年8月19日
下一篇 2022年8月19日

相关推荐