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

2023-05-16

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

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

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

结构

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

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

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

将微内核之前,要了解内核。
内核是什么?听起来跟cpu一样,像一个物理硬件。但是恰恰不是。内核是操作系统中的核心部分。那操作系统是硬件?肯定不是,是软件。那么内核也就是软件。
内核还可以分为:微内核和宏内核(单内核)。
如何区分呢?做一个形象的比喻。
宏内核相当于一家公司,然后办公室不划分任何部门,所有的部门都在这里工作。
微内核也是一家公司,但是它把办公室隔成了很多小办公室,每个部门在各自的办公室办公,不会相互影响。
微内核是只提供系统的必要服务,即把必要的服务放在核区。而把其他的服务,包括文件管理、网络服务等服务放到用户模式下。
这样子做的优点和缺点是什么呢?
先讲缺点:会降低速度。这是致命的缺点,所以在很久以前内核基本都是宏内核。很少会有微内核。但是你讲到这?不对呀。华为和谷歌不是有微内核系统吗?华为的鸿蒙这么火?
这就讲讲它的优点:
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还要固执的使用宏内核呢,换成微内核不就好了吗?

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

[美人鱼名场面]

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

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

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

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

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

很明显嘛,考虑到微服务架构出现的时间(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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是微内核,看这一篇就够了 的相关文章

  • CMakeLists.txt 语法介绍与实例演练

    一 Cmake 简介 cmake 是一个跨平台 开源的构建系统 它是一个集软件构建 测试 打包于一身的软件 它使用与平台和编译器独立的配置文件来对软件编译过程进行控制 二 常用命令 1 指定 cmake 的最小版本 cmake minimu
  • tar 解压缩命令详解

    tar 解压缩命令详解 以下是对tar命令的一些总结 xff1a tar cvf test tar test 仅打包 xff0c 不压缩 tar zcvf test tar gz test 打包后 xff0c 以gzip压缩 在参数f后面的
  • 嵌入式Linux应用开发---GCC程序编译

    电脑编程就是一个 翻译 过程 xff0c 要把用户的程序翻译成CPU指令 xff0c 其实也就是机器代码 所谓的机器代码就是用CPU指令书写的程序 xff0c 被称作低级语言 而程序员的工作就是编写出机器代码 由于机器代码完全是一些数字组成
  • 嵌入式Linux应用开发---Makefile工程管理

    GUN make Linux程序员必须要学会GUN make 来构建和管理自己的软件工程 GUN 的make能够使整个软件工程的编译 链接只需要一个命令就可完成 make 在执行时 xff0c 需要一个命名为Makefile的文件 Make
  • uptime查看系统负载 -top动态管理进程

    一 uptime 查看系统负载 top动态管理进程 1 uptime 查看cpu负载工具 span class token punctuation span root span class token annotation punctuat
  • 嵌入式Linux应用开发---Linux文件编程

    系统调用 文件访问 库函数 文件访问 时间编程 Linux中文件编程可以使用两种方法 xff1a Linux系统调用 C C 43 43 语言库函数 前者依赖于Linux系统 xff0c 后者与操作系统是独立的 xff0c 在任何操作系统下
  • 嵌入式Linux应用开发---进程控制理论基础

    进程控制理论基础 进程是一个具有一定独立功能的程序的一次运行活动 特点 xff1a 动态性并发性独立性异步性 进程ID 进程ID xff08 PID xff09 xff1a 标识进程的唯一数字 父进程的ID xff08 PPID xff09
  • 嵌入式Linux应用开发---进程通信 管道

    目录 进程间通信概述 管道通信 信号通信 共享内存 进程间通信概述 为什么需要进程间通信 xff1f 数据传输 xff1a 一个进程需要将它的数据发送给另一个进程资源共享 xff1a 多个进程之间共享相同的资源 事件通知 xff1a 一个进
  • QNX操作系统简介

    前言 说到操作系统 xff0c 先来列举一些 UNIX 和 类Unix 操作系统 分类操作系统UNIX System V家族A UX AIX HP UX IRIX LynxOS SCO OpenServer Tru64 Xenix Sola
  • 虚拟化技术介绍 & hypervisor简介

    什么是虚拟化 xff1f 虚拟化 xff08 英语 xff1a Virtualization xff09 是一种资源管理技术 xff0c 是将计算机的各种实体资源 xff0c 如服务器 网络 内存及存储等 xff0c 予以抽象 转换后呈现出
  • 什么是ARA?它由什么组成?

    什么是ARA xff1f 它由什么组成 xff1f 什么是Machine xff1f Machine与ECU之间的关系是怎么样的 xff1f Execution Manifest 的作用是什么 xff1f Execution Managem
  • 从工程师的角度看AUTOSAR

    软件定义汽车 的火热带动了工程师们对于汽车电子软件热烈地讨论 不曾想到 xff0c 隐藏在控制器内部 xff0c 默默地发挥着作用的汽车电子软件 xff0c 如今备受瞩目 本人毕业到现在 xff0c 一直在汽车行业做软件 xff0c 切身感
  • 车载以太网SOME/IP概述

    车载以太网SOME IP概述 汽车测试技术 汽车测试网 车载以太网SOMEIP概述 xff08 二 xff09 汽车技术 汽车测试网 The error handling of SOME IP is shown as an example
  • 基于模型的嵌入式软件开发

    对工具的分类和资质审核 通过认证的方式发放证书 应对复杂系统时 xff0c 软件开发人员的工作效率在降低 解决复杂软件开发效率低下的路径 xff1a 模块化开发 xff08 一个复杂的系统包含很多模块 xff0c 每个模块都比较简单 xff
  • ARM Cortex-A系列处理器性能分类比较

    在如今这个电子产品泛滥的年代 xff0c 仅仅靠品牌或是外观已经不足以辨别产品的优劣 xff0c 其内置的处理器自然也就成为了分辨产品是否高端的标准之一 那么我们今天就不妨好好了解一下近几年来电子产品中较为主流的RAM处理器 在这之前让我们
  • linux 前后台进程详解

    前后台进程切换 nice 进程优先级 free 实战 screen 后台执行命令 linux 前台进程与后台进程的区别 xff1a 进程的前台与后台运行 跟系统任务相关的几个命令 xff1a 注 xff1a 实际生产环境中 xff0c 都是
  • 编写项目工作说明书(SOW)

    工作说明书 SOW 是一个项目必须提供的工作指南 SOW是一个关键的管理工具 xff0c 不管是用来指导卖方或者承包商的工作 xff0c 或者是用来指导他们的内部工作 xff0c SOW必须包括所有所期望工作的描述 这些描述不需要在一个很详
  • i++在两个线程执行100次,最终的结果是

    i 43 43 语句只需要执行一条指令 但当有多个线程时 xff0c 并不能保证多个线程i 43 43 xff0c 操作同一个i 因为还有寄存器的因素 xff0c 多个cpu对应多个寄存器 每次要先把i从内存复制到寄存器 xff0c 然后
  • 一万字解读CP AUTOSAR

    导读 xff1a AUTOSAR旨在改善汽车电子系统软件的更新与交换 xff0c 同时更方便有效地管理日趋复杂的汽车电子软件系统 AUTOSAR规范的运用使得不同结构的电子控制单元的接口特征标准化 xff0c 应用软件具备更好的可扩展性以及
  • 关于SOME/IP的理解

    1 总体说明 如上图所示为标准的网络七层架构 xff0c SOME IP Scalable service Oriented MiddlewarE over IP xff0c 即 运行于IP之上的可伸缩的面向服务的中间件 他在系统中其实就是

随机推荐

  • 系统性思维是什么?

    像是魔方一个 xff0c 当你遇到一个问题时 xff0c 有系统性思维的人会告诉你为什么你会有这个问题 xff0c 这个问题的前因后果是什么 xff0c 怎么避免类似问题 xff0c 正确的方法是什么 xff0c 其他可能得错误路径是什么
  • 如何从普通员工成为一个领导者

    how to become a company leader from one employee 要想成为一个领导或者领导 xff08 影响别人 xff09 首先需要基本的领导基本功 这里分享一些我的心得体会 自我反省 xff1a 要不断自
  • 读书笔记1

    第七期主题词 xff1a 告别 1 我们最终都要远行 xff0c 最终都要与稚嫩的自己告别 xff0c 告别是通向成长的苦行之路 海子 2 我和谁都不争 xff0c 和谁争我都不屑 xff0c 我的双手烤着生命之火取暖 xff0c 火萎了
  • 武志红《为何爱会伤人》

    最近读武志红 为何爱会伤人 xff0c 让我们从另一个角度去理解爱情 xff0c 本书从全新的视角解读爱情 xff0c 提出从 认识自己内心 的角度来看待爱情 xff0c 什么是迷恋 xff1f 什么是一见钟情 xff1f 如何获得真爱等问
  • 关于如何去寻找自己的另一半和我的爱情观

    用这个题目 xff0c 我自己都没想到 xff0c 因为目前我还是单身 xff0c 虽然谈过几次恋爱 xff0c 但最后都成了白月光 下面我给出了自己的反思 xff0c 也找了我的领导谈心 xff0c 也看了一些书 xff0c 想找到为什么
  • 一篇文章完全讲解C语言指针

    指针对于C来说太重要 然而 xff0c 想要全面理解指针 xff0c 除了要对C语言有熟练的掌握外 xff0c 还要有计算机硬件以及操作系统等方方面面的基本知识 所以本文尽可能的通过一篇文章完全讲解指针 为什么需要指针 xff1f 指针解决
  • MySQL定时备份

    MySQL定时备份实例 xff1a 每周一晚上3 00 xff0c 备份数据库服务器上webdb库的所有数据到系统的 mysqlbak目录中 xff0c 使用系统日期做备份文件名 xff01 span class token operato
  • 一篇文章完全讲解C语言指针

    https mp weixin qq com s biz 61 MzU3NDU5NDczMw 61 61 amp mid 61 2247504309 amp idx 61 5 amp sn 61 5421ee86fb1be92b43d99f
  • 读懂Adaptive Autosar架构-基础应用篇

    对于Adaptive AUTOSAR xff0c 咱们经常会看到这句话 xff1a Write once Adopt everywhere 但实际上理想很丰满 xff0c 现实很骨感 毕竟Classic Platform xff08 后面简
  • 软件架构的定义

    一 软件架构的定义 我们先讨论一下什么是软件架构 xff1f 对于软件架构并没有一个标准的定义 xff0c 但是你和软件工程师谈到架构的时候 xff0c 他们会知道这些都会是架构的内容 是不是要分层 xff0c 如何处理事件 xff0c 如
  • 一文了解V2X技术栈及其产业链

    C V2X会给未来出行交通带来怎样的改变 xff1f 会在哪些场景下发挥作用 xff1f 这条产业链里面的公司又是哪些 xff1f 大厂们在V2X上的投入又是如何呢 xff1f 本文可以给你一个答案 1 为什么需要V2X 随着C V2X及5
  • 精力管理分享

    你是否长时间工作却没有时间休息 是否总是感到压力很大 xff0c 时间不够用 xff1f 是否经常觉得很疲惫 xff0c 怎么调整都找不到状态 xff1f 然而 xff0c 不论是工作还是生活 xff0c 我们每个人都需要进行自我能量的调节
  • 目标管理

    业务能力很突出 xff0c 管理能力跟不上 xff0c 怎么办 xff1f 这节课帮你补全管理必修模块 xff0c 掌握全面的管理视角 学了很多管理手段 xff0c 总是用不上怎么办 xff1f 用工具统一管理语言 xff0c 拿来就能用
  • 深入浅出理解SOME/IP

    详解SOME IP协议文档 1 知乎 知乎 xff0c 中文互联网高质量的问答社区和创作者聚集的原创内容平台 xff0c 于 2011 年 1 月正式上线 xff0c 以 让人们更好地分享知识 经验和见解 xff0c 找到自己的解答 为品牌
  • SOME/IP-SD 深入浅出

    文章中 xff0c 我们了解了一条完整的SOME IP报文应该长什么样子 xff0c 但这显然是不够的 xff0c 至少还有以下这几个问题并没有得到明确的解决 xff1a Client如何发现服务 当服务不可用时 xff0c 如何通知Cli
  • Segmentation Fault错误原因总结

    一 什么是 Segmentation fault in Linux 所谓的段错误就是指访问的内存超过了系统所给这个程序的内存空间 xff0c 通常这个值是由gdtr来保存的 xff0c 他是一个48位的寄存器 xff0c 其中的32位是保存
  • 漫谈QNX(架构/进程,线程,同步,进程间通信IPC)

    1 架构 说起Blackberry的QNX操作系统 想必大家都听说过 xff0c 但到底为什么QNX能如此有名 xff1f 难道微软的Windows和Linux都不能与之抗衡 xff1f 美国NASA的太空接驳飞船也使用QNX操作系统 QN
  • Linux系统安装后需要做什么?

    安装完linux系统之后需要做的事情 以centos7为例 xff1a 1 用root用户登录 2 tab键补全安装包 yum span class token operator span y install bash span class
  • ETAS Adaptive AUTOSAR 自适应平台示例视频教程

    ETAS AP AUTOSAR自适应平台示例视频教程 本系列文章旨在提供一个详细的操作指南 xff0c 以构建ETAS AP AUTOSAR自适应平台的示例 实践练习的目标是加强AUTOSAR自适应平台中的理论概念 xff0c 并更好地理解
  • 什么是微内核,看这一篇就够了

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