精华内容
下载资源
问答
  • Linux有两种内核形式,一种是安卓系统用的宏内核,另一个就是华为的鸿蒙系统使用的是微内核微内核的设计理念是尽可能的简化,在微内核操作系统中,内核是指精心设计的、能实现现代OS最基本的核心功能的部分。...

    Linux有两种内核形式,一种是安卓系统用的宏内核,另一个就是华为的鸿蒙系统使用的是微内核,微内核的设计理念是尽可能的简化,在微内核操作系统中,内核是指精心设计的、能实现现代OS最基本的核心功能的部分。微内核并非是一个完整的OS,而只是操作系统中最基本的部分,它通常用于:

    1、 实现与硬件紧密相关的处理;

    2 、实现一些较基本的功能;

    3、负责客户和服务器之间的通信;

    4、它们只是为构建通用OS提供一个重要基础,这样就可以确保把操作系统内核做得很小。

    173051197_1_20191012081649707

    所以简单地说,微内核就是把核心功能拆解得尽可能小,根据不同设备的需求自由组合,跟搭积木似的,同时还可以增强系统的安全性、可移植性、也能使分布式结构更加合理的运作,植入更多的插件程序,这是华为号称能跨不同平台部署的关键所在。

    而安卓系统用的宏内核就比较庞大而复杂了,仅仅是代码就有几千万行,但是这种内核方式可以将手机系统所用到的所有驱动软件、底层代码、各种管理以及网络协议等都直接保存在了内核当中,运行效率非常高,响应速度也非常快,这是相比微内核的优势所在。

    173051197_2_2019101208165051

    但是安卓的宏内核缺点也很明显,那就是安卓手机卡死、卡顿的情况,因为用这种内核方式保存的进程或者相关的内存数据只要有其中一个发生崩溃,那么面临着的就是整个系统的崩溃,所以稳定性方面,是“宏内核”的弱势。但是随着谷歌这几年的不断优化,还有手机硬件的爆发式提升,现在的安卓设备死机崩溃的现象已经少多了。

    不管是微内核还是宏内核,两者都有自己的优点和缺点,但是微内核更加适合华为的战略设计思路,未来是物联网,万物互联的时代,华为想在手机、电脑、电视和其它消费设备领域全面开花,这样高效灵活的微内核自然是首选方案,加上华为自己的“方舟编译器”,可以极大程度的提高系统的响应速度和运算效率,这样一来也就能快速减少与安卓系统的差距。

    展开全文
  • 微内核最近微内核的概念常常被大家提及,同时还有Google Fuchisa这样的微内核新星,这里让我们一起来认识下微内核吧。背景庞大的UNIX家族计算机技术在二战后快速发...

    最近微内核的概念常常被大家提及,同时还有Google Fuchisa这样的微内核新星,这里让我们一起来认识下微内核吧。

    背景庞大的UNIX家族

    计算机技术在二战后快速发展,构成计算机的主要基本单元从电子管发展到分立晶体管,再到后来的大规模集成电路。随着计算机技术发展,计算机性能越来越强劲,硬件越来越复杂,人们发现很难去直接管理计算机了,于是人们开始设计软件用于管理越来越复杂的计算机系统,这些软件称作系统级软件。从最开始的批处理系统,多道程序系统,分时系统到上世纪60年代开始出现通用操作系统,计算机系统层出不穷,直到上世纪70年代才出现被大家广泛接受广泛使用的通用操作系统。其中最经典的当然就是UNIX系统了。

    UNIX系统,1971年诞生于大名鼎鼎的贝尔实验室的一台PDP-11/24机器上,其后经过不断发展与传播,在80年代取得了巨大成功,UNIX被移植到众多的处理器架构,并在众多行业得到广泛使用,甚至成为行业标准影响至今。

    640?wx_fmt=png

    UNIX以及类UNIX系统如Linux都是典型的宏内核设计,也就是把所有系统服务都放到内核里,因为系统服务代码之间存在大量数据交换和大量的服务请求,而在同一个代码段内进行函数调用(C语言)或跳转(汇编或者机器码时代)是最直接、最高效的方法,在同一片地址空间也方便数据交换,所以这样的宏内核设计是很自然的。

    但是随着UNIX内核功能的拓展(文件系统、TCP/IP网络协议栈、进程管理、内存管理、驱动程序等),UNIX内核代码也相应增加了很多,进而在可维护性.稳定性,安全性方面面临一些挑战。为了试图解决这些挑战,人们开始尝试使用微内核的思想来设计系统内核。

    什么是微内核?

    微内核设计的基本思想是简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护。内核只提供最基础的服务,比如多进程调度、多进程通信(IPC)等。其中进程通信是作为连接应用与用户态系统服务的桥梁。

    下图是宏内核与微内核的对比示意图

    640?wx_fmt=png

    宏内核系统相关的服务基本都是放于内核态内核中,例如文件系统、设备驱动、虚拟内存管理、网络协议栈等;而微内核则把更多的系统服务(例如文件系统、POSIX服务、网络协议栈甚至外设驱动)放到用户态应用,形成一个个服务,等待其他应用的请求。而后来,为了在宏内核与微内核之间扬长避短,也发展出了中间的混合内核的形态,部分服务也会放置于内核中。

    微内核的发展历史

    微内核这个概念从提出开始就在不断地发展、完善进步之中,到目前为止可以分为代。

    第一代微内核:从无到有

    第一代微内核的主要代表是Mach,该系统由卡内基-梅隆大学的Avie Tevanian和Richard Rashid主导开发。在Mach刚刚开始设计时,UNIX的发展正如日中天,所以Mach在设计时的一大目标就是兼容UNIX,但是与UNIX不同的是Mach尝试使用微内核架构去设计。Mach以IPC是作为所有系统服务与内核交换数据的基础机制,充分运用IPC、虚拟内存、多进程等特性将冗余的系统服务移出内核作为进程运行。

    1986年,经过两年的开发,第一版的Mach发布后的第二年,Mach就发布了第2版,不过由于时间仓促,加之没有足够的人手与资金,所以此时Mach内核并不提供完全的系统服务。为了支撑系统上层运行,这一版的内核包含了大量4.3版本的BSD系统(UNIX的一个分支)代码提供系统服务,并且BSD系统服务运行在内核状态,这导致Mach内核的代码体积甚至大于常规UNIX内核。第一版和第二版的Mach主要做了如下工作:1. 验证了微内核的可行性;2. 在多处理器计算机上进行移植验证了微内核在多处理器计算机上的运行;3. 最后为了提高IPC的效率,Mach使用共享内存机制来完成IPC。而Mach的共享内存机制是在虚拟内存技术的支持下实现的,只有需要对内存进行写入时才进行复制。这么一处理比每次都复制一遍内存节省了内存使用同时又加快了IPC机制的处理时间,这个改进称为写时复制,并且在如今的通用操作系统如Linux中常常用到。

    经过测试,Mach 2.5的效率最多比UNIX少25%,但是考虑到Mach带来的可靠性、可拓展性、安全性,这个效率损失尚可以接受。当然此时Mach内核还不算完全的微内核。而考虑到微内核可以更高效地利用多处理器计算机的处理器核心资源,人们期待着等Mach把系统服务都搬到内核之外后可以把运行效率损失降下来。同时Mach在微内核方面小小的尝试迅速吸引了大批公司与组织的注意,开放软件基金会(Open Software Foundation, OSF)宣布下一代系统OSF/1将基于Mach的内核, NeXTSTEP也将使用Mach2.5, 甚至IBM也打算利用Mach构建Workplace OS。苹果公司这个时候也出手了,苹果公司也从此基于Mach2.5打造其操作系统内核XNU,XNU的构成如下图所示,Mach作为内核的内环,外环右侧是苹果的驱动框架(I/O Kit),外环左侧是BSD的系统服务代码提供UNIX兼容的服务层,这三者共同协作向上层提供完整的系统服务。XNU广泛地使用在苹果公司的OSX,IOS等系统中。

    640?wx_fmt=png

    这个时候由于UNIX系统广泛使用带来的商业利益,此时BSD系统开发者与UNIX的拥有者AT&T陷入了法律大战,Mach使用的BSD相关代码有了法律风险。提升性能的期望和规避法律风险的需求推动着Mach 3.0的开发,Mach 3.0的开发目标主要是为了替换BSD系统服务,同时尽量多地将系统服务放到内核之外去运行,成为名副其实的微内核设计。经过众多开发者3年的努力,Mach 3.0于1990年发布,但是由于在系统服务之间完全使用IPC通信,而不是向宏内核那样直接进行函数调用,即便是多处理器机器上运行也性能损失惨重,Mach 3.0最多比UNIX损失 67% 运行效率,这导致Mach 3.0以及其所代表的第一代微内核设计被看衰。此后断断续续有在Mach的基础上对性能进行提升的尝试,但是均不太理想,至此Mach成为了微内核第一代先驱者。

    第二代微内核:解决性能问题

    第二代微内核的主要代表是L3和L4,以及QNX系统使用的Neutrino内核。前面第一代的微内核Mach由于效率问题虽然失败了,但是微内核的理念并没有被放弃,德国的计算机科学家Jochen Liedtke认为Mach的IPC效率低下的原因就是因为IPC部分不够精简,于是他开发了L3和L4微内核,对IPC部分进行了很彻底的精简:1. 内核的IPC机制只是单纯地传递信息,诸如安全权限检查这类的代码都省略掉,省略掉的功能全部由用户进程自己处理。如此一来IPC功能部分的代码执行时间大大缩短;2. IPC不使用内存传递消息,而使用寄存器传递消息,同时限制IPC每次传递的信息长度,这样省去了对内存的访问时间。L4微内核的IPC速度经过测试要比Mach快20倍,这个令人惊讶的优化效果吸引了众多的目光,使微内核的研究重新火热起来。后面L4内核又发展出了很多相关系统,比如Pistachio,L4/MIPS,与Fiasco等等,这些内核组成了L4的大家族。


    640?wx_fmt=png


    第二代微内核的代表除了有L4内核,也还有其他微内核比如Exokernel、Rambler等,不过商业上最成功的则是目前黑莓公司旗下的QNX系统所使用的Neutrino内核(QNX,1980年诞生,最初以QUICK UNIX为名,后改为QNX;2004年QNX被Harman国际收购;2010年Harman国际下被黑莓收购,QNX成为黑莓旗下的资产),QNX主要为高可靠领域提供解决方案,比如交通、能源、医疗、航天航空等。


    640?wx_fmt=png

    第三代微内核:主要重视安全问题等

    在前面两代的基础上,第三代微内核蓬勃发展,许许多多微内核都被开发出来,主要代表有:seL4、Fiasco.OC、NOVA等。本来第一代微内核的设计隔离了使内核安全性降低的系统服务,让系统服务漏洞不会影响内核,进而提高了内核安全性,可以说是关上了破坏系统的门, 但是第二代系统却又给攻击者开了个窗户;由于第二代微内核在内核中省去了关于安全性检查等步骤,把所有关于安全检查功能的实现都交给系统服务自己去实现,这导致系统服务的通信接口直接暴露给用户态,任何进程都可能无限制地请求系统服务,系统服务不得不花费额外的代价来区分请求是否合法,容易造成拒绝服务攻击。比如正常的文件服务应该是从虚拟文件系统服务->文件系统服务->磁盘驱动服务这个流程来完成的,但是如果攻击者如果绕过虚拟文件系统服务,直接无限制地请求攻击者本身没有权限访问的文件系统服务,使文件系统服务长期处于满载状态,让其他进程无法通过正常的虚拟文件系统得到文件系统服务。为了增强安全性,且不过分影响性能,人们开始研发第三代微内核。

    seL4是在第二代内核L4的基础上发展而来的。seL4不仅仅继承了L4内核家族的高性能特性,还具备基于端点(enndpoint)的IPC机制。这种IPC机制最大的特点是使用了能力空间的概念,进程在使用IPC请求系统服务时必须具备相对应的能力,进程持有不可伪造的令牌来表示拥有请求某种服务的能力。令牌可以被复制,可以被转移,还可以通过IPC进行传输。令牌其实是一个指向存在于内核空间内核对象的指针,所以普通进程并不能修改自身以及其他进程的权限分配,但是内核可以对令牌指定的权限进行控制,从而保证了用户态不能绕过能力空间这个机制对系统服务造成滥用。

    seL4还是第一个完全通过形式化验证的内核,通俗说形式化验证就是在数学软件的帮助下使用数学语言自动化地推导检查系统的每一个运行状态。

    其他的微内核系统:Fuchsia,Minix

    Fuchsia是Google开发的一款全新操作系统,试图覆盖手机、平板甚至笔记本等一系列领域。Google为该系统配备了Vulkan图形接口、3D桌面渲染Scenic、Flutter应用开发框架,还有一个称为zircon的微内核。zircon内核是从高通平台的一个Bootloader项目:Little Kernel发展而来。zircon内核属于微内核设计,只提供IPC,进程管理,地址空间管理功能。zircon区别于以进程或者以文件为核心的设计,zircon是以内存为核心来设计的,内存在zircon中是以对象的方式存在,可以通过channel通信机制传递虚拟内存对象(Virtual memory object)的句柄,进程拿到句柄后可以把这块内存映射到自己的空间。

    Minix系统则由荷兰阿姆斯特丹的Vrije大学的Andrew S.Tanenbaum教授所开发。该系统最大的特点是可以故障隔离,自动重启失败的服务。Minix使用分层设计,最底层的微内核提供中断处理、进程管理、进程通信等服务,这一层运行在内核态;中间层提供轮回服务(Reincarnation Server)、文件服务、进程管理、X图形服务以及驱动等,这一层运行在用户态;最上层为用户进程。其中轮回服务负责在中间层的服务出现崩溃时重启这些服务,从而保证服务的自我修复。Minix由于其自我修复特性被英特尔管理引擎(ME)所选用,该管理引擎主要负责管理英特尔芯片的内部模块。

    微内核的优缺点

    640?wx_fmt=png 优点

    1-系统服务模块化,可移植性高;

    2-内核安全性提高(模块内部的bug不影响内核稳定,将黑客利用软件漏洞造成的破坏限制在单个模块内部);

    3-可以多套系统服务共存,相当于同时运行多种操作系统;

    4-稳定统一的接口(可以独立维护私有驱动以及服务,不需要跟内核源码绑定);

    5-在商业上,微内核可以避免代码受到一些开源协议的影响,比如GPL协议;

    6-内核精简,可以进行形式化验证,利用数学证明内核的安全性;

    7-数学可证明的实时性;

    8-非常适合多处理器系统设计,在多处理器核心计算机上,互相依赖的系统服务可以同时运行;

     640?wx_fmt=png 缺点

    1-通过进程通信的方式交换数据或者调用系统服务,而不是使用系统调用,造成额外的操作系统开销;

    2-使用一些频繁使用的系统服务时,比如网络收发数据,造成的进程上下文切换对操作系统来说也是一个负担;

    3-由于系统服务高度模块化,系统服务之间存在大量的内存复制;

    4-对互相之间存在复杂调用关系的系统服务,难以设计通信接口;

    5-系统服务与内核在地址空间上分离,造成代码局部性差,降低了cache命中率;

    展开全文
  • 什么是微内核架构

    2021-03-09 00:28:12
    什么是微内核架构相信大家都听说过微内核架构,也或多或少做过一些类似于微内核架构的设计,为了可以更好的设计出微内核的架构,我们了解下什么是微内核架构。说到微内核架构,大家首先会想到的是Ecl...

    什么是微内核架构

    相信大家都听说过微内核架构,也或多或少做过一些类似于微内核架构的设计,为了可以更好的设计出微内核的架构,我们了解下什么是微内核架构。

    说到微内核架构,大家首先会想到的是Eclips、IDEA、OSGI、Spring Plugin、SPI等,这些都是我们熟知的微内核架构。有了微内核架构,我们可以更好的定制和控制流程,所以微内核架构的设计思想经常在做配置化中台项目的方案中出现的。

    微内核架构实现主要是插件化思想(Plug-in),是一套插件体系,最早的插件化方法是应用在操作系统之上,久而久之就有了微内核设计这一思想。

    了解微内核,需要先了解这个“内核”。

    在操作系统中,内核围绕于操作系统的核心功能,比如时钟中断、进程创建与销毁、进程调度、进程间通信等内核态的动作。而文件系统、内存管理、设备驱动等都被视为非内核能力,这部分会被放在用户态空间。

    微内核是相对于宏内核而言,宏内核包含了很多的底层程序功能,做的事情非常多,而且不是可拔插的,修改任意一个功能点,都需要整个程序联动,而且有可能引入一个bug,导致整个内核不可用,类似于一个功能复杂的单体系统,每次变更和交付成本都非常高,风险也非常大。

    而微内核只围绕于核心功能设计,他的功能实现都是相互独立的,其他非核心功能是通过用户态的独立进程以插件的方式加入进来的,微内核引擎负责管理进程、调度进程、进程之间通信。某一个功能出现问题时,由于其是独立的进程,不会对其他进程产生影响,也不会导致内核不可用。

    微内核中,多个进程协调通信,需要进行系统调用,系统调用需要切换堆栈及保护进程现场,过程比较耗时。宏内核(也就是用户态)中,是通过函数调用完成各个模块之间合作,所以宏内核较微内核效率更高。

    通过操作系统微内核概念,可以类比到业务系统。一个系统,特别是经过微服务拆分之后的系统,都会服务于某个“内核”,多个核心功能通过微服务的方式拆分,服务之间通过通信交换数据。通过微内核解决了快速交付问题,实现了代码隔离,控制风险点的目的。

    而考虑到扩展性,我们需要定义出内核的骨架,并开放出plugin,以实现个性化扩展。这样的微内核架构,我们可以便于定制,改动小,进而实现热更新,这也是微内核架构的主要价值。

    微内核架构设计

    在微内核架构中有两个核心组件:系统内核、插件化组件。

    系统内核:主要解决的是内核的核心功能,比如插件的注册与管理、插件生命周期管理、插件之间通信、插件的热加载与替换。

    结构如下:

    基于微内核的插件化设计,我们可以实现组件隔离,每个插件可以以独立jar包或独立进程运行,这些插件组件进程可以独立部署在分布式网络上,实现水平扩展,某种程度就像我们的微服务治理体系,有独立部署的微服务进程,也有中心治理的注册中心与配置中心。

    在操作系统中,微内核与宏内核通信方式上有如下区别:

    微内核架构下,组件之间的通信也是基于消息的,比如每个组件对于消息处理有两个能力:收(receive)、发(send)。

    那两个进程之间通信,是否需要一个三方中介呢?比如这样:

    在操作系统中,消息的通信是基于内核转发的,也就是我们经常听说的消息总线架构,内核负责协调各个进程的通信,比如进程A想要发送消息给进程B,需要知道B对应的内存地址。进程向内核发送消息,内核再将消息发送给对应的接收进程,这就是一个总线通信过程。

    在很多微内核架构设计实现上,组件之间都可以通过EventBus实现Plug-in之间的解耦,也就是借鉴了总线的设计。

    在微服务架构的通信实现上,在SOA时代,有类似于消息总线的概念。但微服务是进程之间的直接调用,没有了这个所谓的总线。

    但是如果引入了一个中心化的服务注册与发现中心,就可能也会有个所谓的内核中转:

    在插件化系统中,组件之间不直接通信,而是借助于一个中心化的内核系统进行转发。这种设计思想非常类似于操作系统的内核转发实现,插件之间隔离、透明。某个组件下线或替换,其他组件不需要感知。

    这样的架构会存在于一些其他的问题。首先,这个中心化的转发中介变成了单点,其可用性严重影响了整个系统的可用性。当中心化系统变成单点转发,就存在对应的性能问题。

    对于远程进程调用的性能优化,我们可以想到这几点:

    1. 采用高性能的二进制协议代替http1.x协议,因为http1.1的文本协议性能较差;

    2. 采用类似于零拷贝机制,实现快速网络包转发,而不需要做内核态与用户态的转换;

    3. 引入好的网络硬件,比如RDMA;好的协议,如UDP、QUIC等;

    4. 选择不同的通信方式,比如RPC的、Pub/Sub的、无序ACK的、单工/双工通信的等;

    为了处理这么多协议的转发,内核系统需要具备Adapter以实现对于众多协议的解析与转发,比如引入多个filter来支持不同的协议,但是他将变得越来越复杂。

    还有一种思路是,内核服务只支持一种协议,各个插件之间也基于这个协议通信,协议的适配与转换由各个组件自己做就可以。

    其实很多人会想到,这个中心化的内核组件的消息转发不就是类似于一个MQ系统的Broker吗?而那种独立处理通信协议的组件不就类似于Mesh设计吗?

    没错,前一种类似于类似于broker,后一种类似于service mesh或agent思想。功能上是一样的,只是处理逻辑上有些差异。

    broker是集中式的,所有组件通过broker进行消息的收发,涉及到注册与发现机制。mesh是基于服务的注册与发现,消息发送需要找到对方的agent,再实现两个agent之间的通信。

    broker方案设计核心在于,broker需要管理注册的服务、路由的管理、数据的采集等这些核心功能,类似于微内核的内核本身理念一样。如果要扩展整个微内核架构能力,需要编写独立的service,之后和broker对接,在broker接收消息,处理完毕后发送消息。

    那中心的broker负载太高如何扩容呢?因为broker本身具有服务调用的数据采集能力,所以可以从这里采集,作为扩缩容的参考,经过分析后,可以调用k8s的api实现pod的扩缩容了。

    我们可以发现,这套围绕于内核的核心设计以及扩展service的思想非常的云原生,比如上层业务系统想要调用存储服务,微内核系统可以对外提供一个消息存储的api,而这套api可以按需扩展是基于redis、还是tair或是其他kv,为服务标准化和可替代性提供了很好的基础,对上云操作非常友好,也就体现了云原生的灵活性。

    中心化转发和点对点发送,两个方案各有优缺点,架构就是一个取舍的过程,我们需要结合自己系统的特点和体量决定选择合适的方案。

    总结

    微内核架构对于我们做微服务设计,或是偏中台、平台系统设计提供了非常好的参考建议,比如对于微服务边界的划分,我们完全可以参考操作系统的设计,经过几十年的发展,其设计之精妙已经被验证了,非常稳定,功能划分也非常合理。

    展开全文
  • 一文读懂微内核

    2021-05-14 18:35:15
    一文读懂微内核 2019年8月9日华为 余承东 发布HarmonyOS 1.0,HarmonyOS的发布将一个计算机领域内非常专业的词带到了广大公众的视线内,这就是微内核。 事实上,微内核并不是一个新概念。早在1969年,UNIX系统开始...

    一文读懂微内核

    2019年8月9日华为 余承东 发布HarmonyOS 1.0,HarmonyOS的发布将一个计算机领域内非常专业的词带到了广大公众的视线内,这就是微内核

    事实上,微内核并不是一个新概念。早在1969年,UNIX系统开始设计的时候,类似微内核架构的操作系统就已经出现。1969年,丹麦计算机科学家Per Brinch Hansen开发的RC 4000 Multiprogramming System操作系统,是历史上第一次将操作系统组件分离为各个相互交互的组件,将内核简化为仅用于通信和支持系统,并使用管道共享内存作为其进程间通信的基础。如今回看RC 4000 Multiprogramming System虽然其本身并不是很成功,但激发了微内核概念。

    继续HarmonyOS的话题,看了HarmonyOS 1.0发布会回放后,我有一个疑问:
    什么是宏内核,什么又是微内核,微内核相比于宏内核真的有如此大的优势吗?

    华为HarmonyOS 1.0发布会直播回放:
    https://www.bilibili.com/video/av62950256/

    一、操作系统

    了解微内核宏内核之前,首先了解一下操作系统

    操作系统(Operating System)是现代计算平台的基础与核心支撑系统,负责管理硬件资源(包括输入输出设备的初始化、分配与回收)、控制程序运行改善人机交互以及为上层应用软件提供运行环境等。操作系统作为计算机之“魂”,是释放硬件能力、构建应用生态的基础

    从应用的角度看,操作系统的作用:一是服务于应用,二是管理应用

    • 一方面操作系统提供各种不同层次、不同功能的接口,以满足上层应用的需求。
    • 另一方面,操作系统负责对应用生命周期进行管理,包括初始化、启动、调度、切换、销毁等。

    从硬件的角度看,操作系统主要包含两类功能:

    • 一方面操作系统将不同功能的硬件资源纳入统一的管理。
      例如,内存管理,操作系统识别电脑中存在的多种不连续的、有限的物理内存区域,再采用某种内存管理分配机制进行分配与管理。
    • 另一方面操作系统负责将不同功能硬件资源进行抽象,将有限的、离散的资源抽象为无限的、连续的资源,并将硬件资源通过接口提供给上层应用调用,从而使上层应用无需关心硬件的具体细节。
      例如,上层应用开发中,开发者无需关心物理内存硬件的容量、型号信息,而是面向一个近似无限的、统一的虚拟地址空间。

    操作系统简要结构

    通常而言,狭义的操作系统指的是操作系统内核加上一个Shell(即UNIX/Linux等操作系统中的命令行页面)。随着硬件种类和应用需求越来越丰富,大量共性功能沉淀到操作系统中,操作系统的内涵和外延不断扩大,因此,广义的操作系统又可以进一步分为操作系统内核与操作系统框架。操作系统内核负责对硬件资源的管理与抽象,为操作系统框架提供基础的系统服务(操作系统内核又分为宏内核、微内核等);操作系统框架则基于操作系统内核提供的服务为不同的应用提供API接口与运行环境。

    二、宏内核&微内核

    现在操作系统大多采用宏内核架构(如UNIX、Linux等),操作系统将一些基本的、公共的、与硬件紧密相关的 (如中断处理、内存管理、文件系统、设备驱动等)、运行频率较高的功能(如进程调度、时钟管理等)以及关键性的数据结构独立出来,使之常驻内存,并对其进行保护。内核中采用模块化设计组织各个功能,所有模块运行于内核空间,模块间通信直接调用模块间提供的接口函数实现。

    宏内核基本架构

    宏内核可以理解为是个很大的进程,其内部又能够被分为若干功能模块(或者是若干层)。宏内核在运行的时,为一个单独的二进制大映象,模块间的通讯是通过直接调用其他模块中的函数实现的,而非消息传递。

    宏内核中许多的功能模块都在同一个内核空间上运行,伴随着操作系统的发展,内核模块的复杂度越来越高,操作系统在可靠性安全性方面慢慢出现了一些问题,一个很小的bug都会使整个系统崩溃。为解决宏内核存在的问题,许多研发人员尝试对宏内核架构进行解耦,将部分非核心功能(如文件系统、设备驱动等)从内核中拆分出来,作为一个独立的服务运行于单独的进程中,并为其提供进程间通信的能力(IPC Inter Process Communication),内核中只保留最核心的功能(如内存管理、进程调度等),这种架构被称为微内核架构。在微内核下服务与服务互相隔离,单个服务即使出现故障或受到安全攻击,也不会导致整个操作系统的崩溃或被攻破,从而有效提供了操作系统的可靠性与安全性。

    微内核基本架构

    Minix

    有兴趣详细研究微内核实现与原理的同学,可以研究一下Minix
    Minix第一个版本于1987年发布,是荷兰计算机科学家Andrew S. Tanenbaum为了教学而创作,如今为Andrew S. Tanenbaum教授所著《操作系统:设计与实现》的示例代码。
    Minix启发了Linux内核的创作。1990年,还在上大学的Linus TorvaldsMinix得到灵感,出于对操作系统的兴趣,于1991年发布了Linux。

    Minix目前有三个主要的版本:

    三、宏内核VS微内核

    自宏内核与微内核这两种架构出现伊始,人们就两者的优劣与特点展开了深入的讨论。
    当前随着物联网时代的到来,使微内核架构的操作系统架构再次受到广泛关注。

    • 弹性扩展能力:
      对于一个庞大的宏内核来说,很难仅仅通过简单的剪裁与扩展,使之满足支持资源诉求从KB到TB级别的场景;而对于微内核,内核空间只包含核心功能,天然具备模块化解耦与弹性部署的能力。
    • 功能安全:
      由于宏内核在故障隔离方面存在的缺陷,其安全与稳定性方面很难与微内核媲美。
    • 进程间通信:
      微内核将非核心功能以单独进程的方式运行于用户态,不同系统功能的相互调用需要通过进程间通信实现(IPC Inter Process Communication)。相比于宏内核内核空间中模块间通信采用函数,微内核采用进程间通信,通信效率较低。

    当前智能终端呈现多样化的发展趋势,面对物联网时代的到来,微内核天生具备的模块化解耦、弹性部署的能力以及安全稳定的特性,非常符合物联网的发展,但进程间通信(IPC Inter Process Communication)的性能无疑成为微内核的软肋

    微内核虽然存在IPC性能软肋,但IPC性能并非不可提升。
    德国计算机科学家Jochen Liedtke(L3微内核与L4微内核系列的创造者)曾表示,高性能IPC的设计与实现必然是与体系结构相关的,过度的抽象将极大影响IPC的性能,而利用体系结构相关的状态进行优化则可将IPC性能提升到极致
    2019年华为HarmonyOS发布会中,余承东透露华为在微内核IPC优化方面的成果,采用微内核架构的HarmonyOS在IPC方面性能可以达到同样采用微内核的Fuchsia操作系统的5倍
    相信未来广大技术研发人员不断对IPC性能进行优化,微内核IPC的性能会有大的提升。

    参考

    维基百科 Regnecentralen:
    https://en.wikipedia.org/wiki/Regnecentralen

    维基百科 RC_4000_multiprogramming_system:
    https://en.wikipedia.org/wiki/RC_4000_multiprogramming_system

    维基百科 微内核:
    https://zh.wikipedia.org/wiki/%E5%BE%AE%E5%85%A7%E6%A0%B8

    维基百科 Mach:
    https://zh.wikipedia.org/wiki/Mach

    现代操作系统:原理与实现
    https://item.jd.com/12731379.html

    操作系统的发展:
    https://www.feng.com/post/6209622

    有关微内核:
    https://mp.weixin.qq.com/s/MLCR7qqGFWyyP0KcZqW3Kw

    ========== THE END ==========

    欢迎关注我的公众号

    展开全文
  • 一个微内核操作系统的设计与实现设计并实现了一个运行在Bochs虚拟机上的微内核结构的操作系统,详细描述了系统中进程管理、进程间通讯、基本内存管理、磁盘服务器以及文件(本文共5页)阅读全文>>本文首先分析并...
  • 从鸿蒙OS谈谈微内核架构

    万次阅读 多人点赞 2019-08-09 22:11:43
    从华为鸿蒙OS谈谈微内核架构 微内核架构简介
  • 通信行业周观点:鸿蒙2.0版本发布,“微内核”结构带动万物互联时代将至.pdf
  • [转帖]认识微内核

    2019-10-02 11:45:51
    micro kernel ; monothlickernel ;hybrid kernel ...最近微内核的概念常常被大家提及,同时还有Google Fuchisa这样的微内核新星,这里让我们一起来认识下微内核吧。 背景庞大的UNIX家族 计算机技术在二战后...
  • 终于鸿蒙微内核弄懂了-程序员和鼓励师的合作

    万次阅读 多人点赞 2019-10-02 14:10:22
    当鸿蒙OS宣布开源的时候,各种空洞的炒作,几乎把国产操作系统的技术本质掩盖了,虽然笔者没亲眼见过鸿蒙的代码,也没用方舟成功编译什么程序,不过当华为官宣鸿蒙将使用微内核的时候其实这款OS的风格就已经确定了,...
  • 处理器走进多内核时代

    千次阅读 2013-10-25 01:02:52
    它是处理器的最重要组成部分。内核结合系统外围,例如缓存、内存管理单元、执行单元、指令级单元、定时器以及I/O端口等组成完整的处理器。当今各种嵌入设备的普及加速对更多功能、线程级并行性的需求,服务器面对...
  • 鸿蒙系统的微内核是什么

    万次阅读 多人点赞 2019-08-27 23:15:50
    ​最近华为高调发布了鸿蒙操作系统(Harmony OS),基于微内核的全场景分布式系统,可以按需扩展,低延时,实现更广泛的系统安全。按照发布会的PPT来看,鸿蒙OS有三层架构,第一层是微内核,第二层是基础服务,第三层...
  • 从鸿蒙操作系统的发布,经Minix认识微内核

    千次阅读 多人点赞 2019-08-20 22:27:38
    来自《有关微内核OS史上最透彻一篇 - 写于华为鸿蒙发布一周之际》https://mp.weixin.qq.com/s/MLCR7qqGFWyyP0KcZqW3Kw 华为鸿蒙OS发布已经一周了,在这一周中发生了很多事情,有人对华为路转粉,也有人对华为粉转黑...
  • Kubernetes: 微内核的分布式操作系统

    千次阅读 2020-06-24 13:48:03
    Kubernetes: 微内核的分布式操作系统 沈凋墨 编程高手/游戏达人/AI砖家 ​关注他 77 人赞同了该文章 如今,Kubernetes已经成为分布式集群管理系统和公有云/私有云的事实标准。实际上,Kubernetes是一个分布式...
  • linux微内核(鸿蒙分析)

    千次阅读 2020-11-11 11:37:10
    1、最近鸿蒙炒的火热,19年就说ipc是谷歌fu的5倍,但他当时没有对比宏内核,正常宏内核的ipc效率肯定很高,我自己觉得微内核确实是体积小了但是外面的那些驱动什么的又需要开发者去开发,鸿蒙独立了跑到国外谷歌全家...
  • 微内核(microkernel)相关

    2019-09-17 17:38:16
    欢迎访问个人网站,阅读此文... 介绍 WIKI上的解释是:在计算机科学中,微内核是一个近乎最小的软件集合,但具有能够提供实现操作系统所需的机制。 Incomputer science, amicrokern...
  • 近年来,我国自主研发操作系统被反复提及。近期,一个计算机领域内非常专业的词来到了几乎所有人的视线内,这就是——微内核。人们对操作系统内核的讨论越来越热烈,甚至有人说我不懂什么叫微内核,什么...
  • 前面第一代的微内核Mach由于效率问题虽然失败了,但是微内核的理念并没有被放弃,德国的计算机科学家Jochen Liedtke认为Mach的IPC效率低下的原因就是因为IPC部分不够精简,于是他开发了L3和L4微内核,对IPC部分进行...
  • 开辟鸿蒙,聊聊华为微内核

    千次阅读 2019-08-10 18:36:21
    曾经,微内核的操作系统一直活在实验室里,从来没走出过实验室。无数教授拿着教材说“微内核的操作系统没有实现过”。 过了昨天,这句话就就成为历史了。 操作系统(Operating System)内核有几种? 操作系统内核...
  • 鸿蒙OS — 基于微内核的全场景分布式OS

    千次阅读 多人点赞 2019-08-10 14:42:57
    鸿蒙是一款基于微内核的全场景分布式OS。微内核赋予鸿蒙更高的扩展性和安全性,分布式使得鸿蒙可以全场景多终端交互,高性能IPC和确定性引擎使得鸿蒙天生流畅,是一款真正面向未来的OS。鸿蒙OS开源,华为基于现有的...
  • QNX微内核RTOS

    千次阅读 2014-01-03 14:00:04
     与iphone和ipad一样,QNX同样采用的是微内核的构架,而且比iphone和ipad的微内核还要早20年。在操作系统内部只有一个非常小的内核,如图所示,协议、驱动以及文件系统等等都是在内核之外,内核层完全是由QNX做的,...
  • 微内核一直努力遵循“内核应该极小化”的原则(minimality),这让很多微内核研究者和开发者收到了束缚,在时代允许的硬件环境下难以对性能进行有效优化。 缺乏大企业支持。当然这也和微内核当初性能不佳有关。 ...
  • 微内核(microkernel)相关from :http://www.yandong.org/archives/191介绍WIKI上的解释是:在计算机科学中,微内核是一个近乎最小的软件集合,但具有能够提供实现操作系统所需的机制。Incomputer science, ...
  • 华为鸿蒙系统:基于微内核的全场景分布式OS1、分布式架构首次用于终端OS,实现跨终端无缝协同体验。2、 确定时延引擎和高性能IPC技术实现系统天生流畅。3、基于微内核架构重塑终端设备可信安全。4、通过统一IDE支撑...
  • 华为发布鸿蒙系统:基于微内核的全场景分布式OS余承东表示,鸿蒙OS是基于微内核的全场景分布式OS,这是分布式架构首次用于终端OS,可以实现跨终端无缝协同体验。鸿蒙系统系统4大特点据悉,“微内核”是鸿蒙OS的特点...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,211
精华内容 3,684
关键字:

微内核时代