为什么华为鸿蒙OS要采用微内核技术,微内核操作系统的前世今身
华为的蒙鸿操作系统自发布以来受到了广泛的关注,其一大特点就是采用「微内核」架构。
我们学习操作系统课程的时候,讲到微内核由来已久,有众多天然优势,是未来系统的发展方向。可是事实上,真正进入工业级应用的微内核操作系统并不多。这个分歧主要是学术界和工业届的分歧,学术界认为,微内核是操作系统发展的主流方向,但一直以来工业界不这么认为。
当年Linus推出Linux以后,和他的老师AndrewTanenbaum(写Minix系统的牛人)就宏内核和微内核进行了激烈的辩论,即著名的“Tanenbaum–Torvaldsdebate”。
什么是「微内核」架构
微内核是指操作系统的最底层是一个包含最基本功能的Kernel(内核),这个内核通常只负责最基本的最底层的任务,如上下文切换、中断处理、进程间通信(IPC)和时钟处理等,而其他的系统任务,如硬件驱动,文件系统和内存管理都以用户态进程(即ring3)的形式运行,并且相互之间通过IPC进行通信。
宏内核则与之相反,所有的系统任务均在内核态(ring0)处理,系统模块之间通过函数调用方式进行交互。这两个不同架构模式的操作系统概念自提出已经过去了三十年(最早的微内核系统是由卡内基梅隆大学开发的Mach,于1985年被提出,之前的操作系统都是宏内核,如Unix等。
「微内核」优缺点
工业界和学界普遍认为微内核的优势在于内核很轻(通常C代码在10000行左右),因此攻击面和代码出错的可能性更低。微内核比宏内核依赖更为简单,而且大部分任务是以进程的方式运行,一旦出错只会影响到这个进程本身,稳定性更强。
另一方面,由于内核的精简化,所以这样的操作系统内核可以很方便的进行移植,由于这种内核是小型的,不包括其他功能性模块,可以让我们随意的拼凑,这样就是可以得到不同组合。如华为鸿蒙系统那样:
鸿蒙OS实现模块化耦合,对应不同设备可弹性部署,鸿蒙OS有三层架构,第一层是内核,第二层是基础服务,第三层是程序框架。可用于大屏、PC、汽车等各种不同的设备上。还可以随时用在手机上,但暂时华为手机端依然优先使用安卓。
不过微内核的整体性能不如宏内核,这对于追求性能的厂商而言,采用宏内核无可非议。我们平常接触到的操作系统,大多数都是宏内核,包括Windows系统和类Unix系统,微内核一度仅局限于研究目的。
但随着硬件和处理器性能的快速发展,摩尔定律和多核技术使得计算机基本处于过剩状态,而现在大部分性能问题可以说是软件造成的。而且L4在微内核本身的IPC性能方面已经有了长足的发展,性能不再是限制微内核发展的主要原因。
Windows、macOS、Linux三大操作系统是微内核吗?
Linux由于是开源系统,采用宏内核这点没有任何疑问。在编译Linux内核的时候,会接触到module概念,但这些module共享同一个addressspace(地址空间)。而在微内核操作系统中,module彼此之间通常是隔离的,具有不同的addressspace。
Windows和macOS,都宣称采用微内核架构。为了追求效能,他们将需要具备特权的服务组件放进核心空间,违反了微内核的基本设计原则,更为接近整块性核心的设计方式,可称为混合内核。
「微内核」的历史
微内核家族
第一代微内核系统Match由于IPC性能令人失望,德国的JochenLiedtke提出了L3和后续的L4结构,对IPC的性能改进很大,甚至相比较Unix都有很大的性能优势。为了追求效率,L4用汇编语言实现,但也导致第一代L4只能运行在486和奔腾处理器上面。目前L4已经变成微内核的一个设计标准,围绕这个标准,有很多的L4的实现。
最初的由Jochen设计的L4目前称之为L4/X86,现在最活跃的两个分别是Pistachio和Fiasco。前者是普通的微内核,后者是专门为实时系统设计的微内核,实现了L4V2(L4APIVersion2)。由于Fiasco跟L4关系,所以平时Fiasco也被称做L4/Fiasco,以强调它是L4的一个实现。
Fiasco的意思是“失败“,是DresdenReal-TimeOperatingSystemsProject(德累斯敦大学实时操作系统项目)的核心子项目,它是一个具备实时功能的微内核。在一个实时系统里面,通常有两种任务,一种是real-time的,另一种是time-sharing的。real-time部分由Fiasco提供,在time-sharing部分,开发者们利用了Linux。开发者对Linux进行了修改,使得Linux能够运行在L4/Fiasco,这便是L4Linux项目。
近年来,有两个微内核系统特别受到关注,一个是谷歌的Fuchsia,另一个是用Rust语言实现的RedoxOS。
Fuchsia是谷歌在2016年公开的一个项目,尽管谷歌一直没有对外公布它的目的和计划,但是它普遍被认为将用于取代安卓系统,以求彻底解决安卓及其底层的Linux内核的历史问题。Fuchsia的底层Zircon本身是基于lk,而lk原本是一个嵌入式微控制器系统,最具有最基本的任务调度,同步原语等功能。但是Zircon在lk基础上构建各种系统服务,而Fuchsia又在Zircon上构建了图像化服务和其他应用程序。
RedoxOS是一个从2015年开始的开源通用操作系统项目,其遵循微内核架构,最大的特点在于完全使用Rust(和少量必需的汇编)作为开发语言编写操作系统及周围生态(例如文件系统、显示服务器及Rust版本的libc)。Redox是编写一个完整、功能齐全的通用操作系统的尝试,关注于安全性、自由性、可靠性、正确性和实用性。该项目团队希望能够在没有障碍的情况下使用它作为Linux的替代品。它一定程度上兼容于POSIX,因而应该能够在无需大量修改的情况下运行大多数Linux程序。
历史的车轮在前进,新的需求场景不断向现有操作系统提出挑战。如部署于自动驾驶中枢位置的操作系统,对安全性和稳定性的要求将大于兼容性和灵活性,也是微内核发挥长处的地方。鸿蒙采用微内核架构,较传统操作系统,有很多新的优势:
主题测试文章,只做测试使用。发布者:最新稳定辅助网,转转请注明出处:https://www.744broad.com/15352.html