华为鸿蒙系统刷屏,到底什么是微内核操作系统呢?
昨天华为在松山湖的华为开发者大会上正式宣布了鸿蒙操作系统,该系统其中一个亮点是 —— 微内核。华为声称,微内核的启用,使其速度大大提升,并且在安全性上产生变革性突破,微内核打破了宏内核下root即可获取用户所有权限的做法,在安全性上大大提升。
什么是微内核呢?
微内核结构由一个非常简单的硬件抽象层和一组比较关键的原语或系统调用组成;这些原语,仅仅包括了建立一个系统必需的几个部分;如线程管理,地址空间和进程间通信等。
微核的目标是将系统服务的实现和系统的基本操作规则分离开来。例如,进程的输入/输出锁定服务可以由运行在微核之外的一个服务组件来提供。这些非常模块化的用户态服务器用于完成操作系统中比较高级的操作,这样的设计使内核中最内核的部分的设计更简单。一个服务组件的失效并不会导致整个系统的崩溃,内核需要做的,仅仅是重新启动这个组件,而不必影响其它的部分
微内核将许多OS服务放入分离的进程,如文件系统,设备驱动程序,而进程通过消息传递调用OS服务.微内核结构必然是多线程的,第一代微内核,在内核提供了较多的服务,因此被称为'胖微内核',它的典型代表是MACH,它既是GNU HURD也是APPLE SERVER OS 的内核,可以说,蒸蒸日上.第二代微内核只提供最基本的OS服务,典型的OS是QNX,QNX在理论界很有名,被认为是一种先进的OS.
采用微内核设计的操作系统
微内核并非一个新的概念,它已经存在很长的历史,下列的操作系统都是基于微内核结构设计的:
- AⅨ
- BeOS
- L4微内核系列
- Mach,用于GNU Hurd和Mac OS X
- Minix
- MorphOS
- QNX
- RadiOS
- VSTa
- RT-Thread
知乎上有人对微内核下了一个结论:
Micro-kernel 已经失败。在商业级操作系统中(包括可以用于 mission critical 的 open source 操作系统),除了 L4 还在苦苦留有少量份额,没有任何 micro-kernel 的市场。
第一代 micro-kernel 是以一个错误的方式解决了一个错误的问题。而第二代 micro-kernel 不过是以正确的方式解决了错误的问题。
原文可看 https://www.zhihu.com/question/19716757
Linux 究竟是单内核的还是微内核的
Linux 是一个单内核结构,同时又吸收了微内核的优点:模块化设计,支持动态装载内核模块。Linux 还避免了微内核设计上的缺陷,让一切都运行在内核态,直接调用函数,无需消息传递。
早在 1992 年,Linus 曾经与 Tanenbaum 进行一场关于操作系统内核选择的著名争论。Tanenbaum 认为,以微内核架构设计的操作系统,在理论上,比宏内核架构更加优越,主张Linux应该以微内核架构来进行重新设计。但是 Linus 以开发实务上的观点展开反击,陈述 Linux 选择宏内核架构进行开发的理由,并比较Minix与Linux的性能差异。你可以通过维基百科了解此次争论的完整细节。
Tanenbaum —— 著名的技术作家、教育家和研究者,IEEE高级会员、ACM高级会员、荷兰皇家艺术和科学院院士、1994年ACM Karl V. Karlstrom杰出教育奖、1997年ACM计算机科学教育杰出贡献奖、2002年Texty卓越教材奖、第10届ACM操作系统原理研讨会杰出论文奖、被列入“Who's Who in the World”人物目录。
下图是宏内核(左)和微内核(右)两种结构的简单架构图:
当然对最终用户而言,我们并不在意采用何种方案。从现实情况来看,微内核似乎还有很长的路要走。
我们非常期待鸿蒙系统早日能给最终用户提供服务。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
每日一博 | 关系型数据库全表扫描分片详解
导读:数据总线(DBus)专注于数据的实时采集与实时分发,可以对IT系统在业务流程中产生的数据进行汇聚,经过转换处理后成为统一JSON的数据格式(UMS),提供给不同数据使用方订阅和消费,充当数仓平台、大数据分析平台、实时报表和实时营销等业务的数据源。 在上一篇关于DBus的文章(DBus 数据库表结构变更处理方案)中,我们主要介绍了在DBus的设计中,表结构变更及其带来的各种问题是如何处理的。本文则是从数据分片的角度出发,具体介绍DBus在数据采集的过程中,运用了什么样的分片策略和分片原理,以及过程中遇到的问题及解决方案。 一、分片策略 对于传统的关系型数据库,DBus通过提供全量数据拉取和增量数据采集两种途径满足用户数据采集需求。DBus数据抽取流程如下图所示(以mysql为例): 全量数据采集的主要原理是:根据主键、唯一索引、索引等信息,确定分片列。之所以分片列要根据主键、唯一索引、索引等选择,是因为这些列的数据在库里建立了良好索引,能提升数据扫描的效率。 根据选定的分片列,对数据进行拆片,确定每片数据的上下界,然后根据每片上下界,以6~8左右的并发度,进行数据拉取。(6~8左右...
- 下一篇
Zend 创始人提议创建 PHP 方言,暂命名为 P++
P++是临时代号,可能会更改。 今日消息,不久前从 Zend 公司离职的Zeev Suraski 以 PHP 开发组成员的身份提议要创建 PHP 方言,暂命名为P++。 Zeev 表示,现有的 PHP 继续作为动态语言存在,而他提出的 PHP 方言暂命名为 P++,改成更严格的静态语言。他强调道,P++ 不是 PHP 的分叉。因为两者的代码库完全相同,维护代码库的开发者也会一样。另外,如果你安装了 PHP,那么将安装 P++,反之亦然。 总而言之,PHP 和 P++ 的绝大部分代码都是相同的。两者在特定差异点方面才会有不同的实现方式 —— 有点类似于 PHP 7 中的严格类型检查模式(strict_types),只不过 P++ 涉及的范围更广。 Zeev 还说到,动态语言和静态语言并无对错之分,这两种思想都是有价值的,然而创建一种同时迎合这两个人群的语言是一项挑战,这也是他提出 P++ 的原因之一。 所以 P++ 会有什么大胆的改进呢?据 Zeev 介绍,作为 PHP 的方言,P++ 会与 PHP 共存,但不会背负PHP 语言背后的历史包袱。换句话说,这种新方言本质上可能会有更加严格的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用