范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

健澜科技认识微内核,华为鸿蒙操作系统微内核到底是什么?

  鸿蒙系统2021年6月2日发布
  杭州健澜科技有限公司小编提前解读华为鸿蒙操作系统的内核。
  一文认识微内核,华为"鸿蒙"操作系统微内核到底是什么?
  背景庞大的UNIX家族
  计算机技术在二战后快速发展,构成计算机的主要基本单元从电子管发展到分立晶体管,再到后来的大规模集成电路。随着计算机技术发展,计算机性能越来越强劲,硬件越来越复杂,人们发现很难去直接管理计算机了,于是人们开始设计软件用于管理越来越复杂的计算机系统,这些软件称作系统级软件。从最开始的批处理系统,多道程序系统,分时系统到上世纪60年代开始出现通用操作系统,计算机系统层出不穷,直到上世纪70年代才出现被大家广泛接受广泛使用的通用操作系统。其中最经典的当然就是UNIX系统了。
  UNIX系统,1971年诞生于大名鼎鼎的贝尔实验室的一台PDP-11/24机器上,其后经过不断发展与传播,在80年代取得了巨大成功,UNIX被移植到众多的处理器架构,并在众多行业得到广泛使用,甚至成为行业标准影响至今。
  
  UNIX以及类UNIX系统如Linux都是典型的宏内核设计,也就是把所有系统服务都放到内核里,因为系统服务代码之间存在大量数据交换和大量的服务请求,而在同一个代码段内进行函数调用(C语言)或跳转(汇编或者机器码时代)是最直接、最高效的方法,在同一片地址空间也方便数据交换,所以这样的宏内核设计是很自然的。
  但是随着UNIX内核功能的拓展(文件系统、TCP/IP网络协议栈、进程管理、内存管理、驱动程序等),UNIX内核代码也相应增加了很多,进而在可维护性.稳定性,安全性方面面临一些挑战。为了试图解决这些挑战,人们开始尝试使用微内核的思想来设计系统内核。
  什么是微内核?
  微内核设计的基本思想是简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护。内核只提供最基础的服务,比如多进程调度、多进程通信(IPC)等。其中进程通信是作为连接应用与用户态系统服务的桥梁。
  下图是宏内核与微内核的对比示意图
  
  宏内核系统相关的服务基本都是放于内核态内核中,例如文件系统、设备驱动、虚拟内存管理、网络协议栈等;而微内核则把更多的系统服务(例如文件系统、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等系统中。
  
  这个时候由于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的大家族。
  
  第二代微内核的代表除了有L4内核,也还有其他微内核比如Exokernel、Rambler等,不过商业上最成功的则是目前黑莓公司旗下的QNX系统所使用的Neutrino内核(QNX,1980年诞生,最初以QUICK UNIX为名,后改为QNX;2004年QNX被Harman国际收购;2010年Harman国际下被黑莓收购,QNX成为黑莓旗下的资产),QNX主要为高可靠领域提供解决方案,比如交通、能源、医疗、航天航空等。
  
  第三代微内核:主要重视安全问题等
  在前面两代的基础上,第三代微内核蓬勃发展,许许多多微内核都被开发出来,主要代表有: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)所选用,该管理引擎主要负责管理英特尔芯片的内部模块。
  微内核的优缺点
  微内核的优点
  1-系统服务模块化,可移植性高;
  2-内核安全性提高(模块内部的bug不影响内核稳定,将黑客利用软件漏洞造成的破坏限制在单个模块内部);
  3-可以多套系统服务共存,相当于同时运行多种操作系统;
  4-稳定统一的接口(可以独立维护私有驱动以及服务,不需要跟内核源码绑定);
  5-在商业上,微内核可以避免代码受到一些开源协议的影响,比如GPL协议;
  6-内核精简,可以进行形式化验证,利用数学证明内核的安全性;
  7-数学可证明的实时性;
  8-非常适合多处理器系统设计,在多处理器核心计算机上,互相依赖的系统服务可以同时运行;
  微内核存在的缺点
  1-通过进程通信的方式交换数据或者调用系统服务,而不是使用系统调用,造成额外的操作系统开销;
  2-使用一些频繁使用的系统服务时,比如网络收发数据,造成的进程上下文切换对操作系统来说也是一个负担;
  3-由于系统服务高度模块化,系统服务之间存在大量的内存复制;
  4-对互相之间存在复杂调用关系的系统服务,难以设计通信接口;
  5-系统服务与内核在地址空间上分离,造成代码局部性差,降低了cache命中率。

外星人在29颗行星上,已观测地球5千年?最近的在十光年外?在我们仰望星空的时候,是否有人曾想过,其实星空也在仰望着我们?人类对于外太空的探索一直都是一件饱受争议的事情,因为如果我们不探索太空,那么我们就很可能会在地球这个人类文明的摇篮中一印度500万只甲鱼泛滥成灾,为何印度人不愿吃,想出口到中国?生物入侵几乎是全世界大多数国家都有的问题,但是很多国家对于生物入侵已经有了自己的一套解决办法,而还有一些国家则是凭借自己国家内的人民进行自产自销,比如我国,尽管在小龙虾是外来地区的河马粪便有多恐怖?每年有成千上万的鱼群,被河马拉的屎生生憋死生活在非洲马拉河地区的河马们和当地的鳄鱼共为水中霸主,河马是一种非常奇葩的物种,它有着长长的獠牙和一副看来非常凶恶的长相,还有庞大臃肿的身体,只看这些人们或许会认为它的皮肤也应该是太空中的温度为零下270摄氏度,为什么空间站还要散热?人类对于宇宙的探索从上世纪50年代开始,但是在那之前,我们已经通过各种观测,对于我们所处的宇宙有了基本的了解。至少是在文艺复兴前后,人们就开始用科学的态度去面对浩瀚的宇宙空间,以往科学家发现数十亿年前不应该存在的东西,史前文明存在吗?前言人类存在于地球数百万年,在数万年前还过着茹毛饮血的生活,但是在人类文明出现之后,短短几千年的时间,人类足迹就遍布全球,人类文明的造物也在地球上留下不可磨灭的印证。但是有没有想过进化论的终极BUG乌龟,是如何成了科学家们的噩梦的?引言46亿年前地球诞生,1亿年后一颗彗星的撞击为地球带来生命的种子,又经过1亿年这些既能繁殖又能变异的细菌从原核生物进化到单细胞生物,随后受到生态环境和其它刺激的影响分化出了真菌植一首七步诗与两个文学泰斗七步诗世说新语文帝尝令东阿王七步中作诗,不成者行大法。应声云云。帝有惭色。煮豆持作羹,漉豉以为汁。萁在釜中燃,豆在釜中泣。本是同根生,相煎何太急。古诗源诗的写作背景是,公元220年鞭锏门神的人物故事友人老张在群里发帖子说昨天是腊月二十八,我家大门上贴了门神画。小孙孙指着画问我,那两个骑马弄棒的人是谁呀?我答不上来。谁给说说看!鞭锏门神画在群里我作了回答,我说这张画叫鞭锏门神,现实中只有两个选择,你愿意做灰太狼还是光头强?灰太狼和光头强谁的生活最艰难男人累,男人苦,想喊阿姨(阿姨是奋斗出来的),我不想奋斗了,也没资格的时代捂脸。你是愿意当光头强,还是灰太狼呢?其实现代的男同志要么是光头强一样,给老板美国加拿大持续高温,刷新北纬50度气温纪录,2021怎么这么热?北美地区出现热死人的热盖天气并不是因为加拿大和美国西北地区出现了新的最高温纪录,而是新的最高温远远超过旧的纪录。在这之前,加拿大史上最高温纪录是1937年创下的,当时在加拿大不列颠汝果欲学诗,先学对对子上个世纪五十年代,我上初中,语文老师张佩鈞先生是一位知识渊博,风趣幽默的老者。为了活跃课堂气氛,教学生学知识,长见识,提高读写能力,他常常在课堂上穿插讲述一些对对子猜字谜打油诗之类
3部高分历史片大盘点,第一部重新上映的话票房最起码破百亿小伙伴们喜欢历史片吗?反正小编就很喜欢看历史片。历史片依托于现实,根据真实事件改编而来,却在细节上面有了艺术性的加工。历史片对于陶冶我们的情操有着很大的帮助。今天小编就给大家盘点一3部高分惊悚片大盘点,最后一部超过50万人打了5星惊悚片作为电影的一个类型,以侦探神秘事件罪行错综复杂的心理变态或精神分裂状态为题材展开,与恐怖片相比,两者有着异曲同工之妙。那么今天小编就给大家盘点一下3部高分惊悚片,最后一部超过3部超过30万人点评的高分儿童片大盘点,你都看过哪部呢?儿童片一般指的是反映儿童生活,或以儿童的心理眼光去看事物的影片。儿童片的范围是非常广泛的,影片主题属于教育儿童,或教育大人如何正确对待儿童,对儿童观众能够起到增长知识陶冶感情锻炼意盘点3部超过40万人评价的高分灾难片,第2名创造了票房奇迹灾难片一直是富有感官刺激的一种电影类型,以对人类造成巨大灾难的天灾人祸为题材的影片。一般渲染惊心动魄的灾难,以刺激观众的恐惧感,也有的表现摆脱灾难的方法,战胜或躲避灾难的智慧。那么3部评分最高的科幻片大盘点,第一部脑洞太大能看懂的人不多科幻片一直是电影世界难得的瑰宝,作为类型片的一种,采用科幻元素作为题材,以建立在科学上的幻想性情景为背景,在此基础上展开叙事的影视作品。19年大爆的流浪地球就是典型的科幻片,还是国盘点3部国产西部片,第一部虽有百万好评但是能看懂的人不多在现在的电影市场里面,西部片这一类型现在已经没落了,但是西部片以其独特的魅力一直都有着忠实的拥泵存在。传统的西部片一直局限于19世纪的美国西部,那个时候美国西部正在大开发,浩瀚的西盘点3部超过40万人评价的高分武侠片,这些都是你的童年回忆吗武侠片作为国内的特有剧种,在上个世纪90年代和千禧年的头十年是非常火的存在。试问我们的童年不是在武侠片的陪伴下成长起来的呢?今天小编就给大家盘点3部超过40人评价的高分武侠片,这些评分最高的三部动作片大盘点,第一名距今快100年了动作片是一种非常热门的电影类型,其情节多半包括一连串的动作镜头,如打斗特技追车或爆炸场面等,通常的情节设定为正义的一方对抗邪恶的一方,而解决的方法往往是诉诸暴力。是以强烈紧张的惊险三部评分最高的喜剧片大盘点,有一部是国产电影喜剧片指以笑激发观众爱憎的影片。常用不同含义的笑声,鞭笞社会上一切丑恶落后现象,歌颂现实生活中美好进步事物,能使观众在轻松愉快的笑声中接受启示和教育,以及得到愉悦的心情。多以巧妙的3部超过30万人评论的高分动画大盘点,这些都是你的童年回忆动画是一种综合艺术,是集合了绘画漫画电影数字媒体摄影音乐和文学等众多艺术门类于一身的艺术表现形式。目前动画电影在电影市场的占重越来越高了,而创造了票房奇迹的哪吒更是中国动画的骄傲,3部超过60万人评价的高分传记片盘点,第一部的小李子是真的帅传记片一般都是依靠现实生活中存在的人物进行艺术性的加工,一般来说具有极高的史学和文学价值。今天小编就给大家盘点一下3部超过60万人评价的高分传记片盘点。3。血战钢锯岭这部电影由真实