幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

震撼的Linux全景图业界成熟的内核架构长什么样?

  分享下Intel傲腾项目关键开发者彭东对于这个话题的思考。
  你好,我是LMOS。
  什么?你想成为计算机黑客?
  梦想坐在计算机前敲敲键盘,银行账号里的数字就会自己往上涨。拜托,估计明天你就该被警察逮捕了。真正的黑客是对计算机技术有近乎极致的追求,而不是干坏事。
  下面我就带你认识这样一个计算机黑客,看看他是怎样创造出影响世界的Linux,然后进一步了解一下Linux的内部结构。
  同时,我也会带你看看WindowsNT和Darwin的内部结构,三者形成对比,你能更好地了解它们之间的差异和共同点,这对我们后面写操作系统会很有帮助。
  关于Linus
  LinusBenedictTorvalds,这个名字很长,下面简称Linus,他1969年12月28日出生在芬兰的赫尔辛基市,并不是美国人。Linus在赫尔辛基大学学的就是计算机,妻子还是空手道高手,一个码林高手和一个武林高手真的是绝配啊。
  Linus在小时候就对各种事情充满好奇,这点非常具有黑客精神,后来有了自己的计算机更是痴迷其中,开始自己控制计算机做一些事情,并深挖其背后的原理。就是这种黑客精神促使他后来写出了颠覆世界的软件Linux,也因此登上了美国《时代》周刊。
  你是否对很多垃圾软件感到愤慨,但自己又无法改变。Linus就不一样,他为了方便访问大学服务器中的资源,而在自己的机器上写了一个文件系统和硬盘驱动,这样就可以把自己需要的资源下载到自己的机器中。
  再后来,这成为了Linux的第一个版本。看看,牛人之所以为牛人就是敢于对现有的规则说不,并勇于改变。
  如果仅仅如此,那么也不会有后来的Linux内核。Linus随后做了一个重要决定,他把这款操作系统雏形开源,并加入到自由软件运动,以GPL协议授权,允许用户自由复制或者改动程序代码,但用户必须公开自己的修改并传播。
  无疑,正是Linus的这一重要决定使得Linux和他自己名声大振。短短几年时间,就已经聚集了成千上万的狂热分子,大家不计得失的为Linux添砖加瓦,很多程序员更是对Linus像神明一样顶礼膜拜。
  Linux内核
  好了回到正题,回到Linux。Linus也不是什么神明,现有的Linux,99。9的代码都不是Linus所写,而且他的代码,也不一定比你我的代码写得更好。
  Linux,全称GNULinux,是一套免费使用和自由传播的操作系统,支持类UNIX、POSIX标准接口,也支持多用户、多进程、多线程,可以在多CPU的机器上运行。由于互联网的发展,Linux吸引了来自全世界各地软件爱好者、科技公司的支持,它已经从大型机到服务器蔓延至个人电脑、嵌入式系统等领域。
  Linux系统性能稳定且开源。在很多公司企业网络中被当作服务器来使用,这是Linux的一大亮点,也是它得以壮大的关键。
  Linux的基本思想是一切都是文件:每个文件都有确定的用途,包括用户数据、命令、配置参数、硬件设备等对于操作系统内核而言,都被视为各种类型的文件。Linux支持多用户,各个用户对于自己的文件有自己特殊的权利,保证了各用户之间互不影响。多任务则是现代操作系统最重要的一个特点,Linux可以使多个程序同时并独立地运行。
  Linux发展到今天,不是哪一个人能做到的,更不是一群计算机黑客能做到的,而是由很多世界级的顶尖科技公司联合开发,如IBM、甲骨文、红帽、英特尔、微软,它们开发Linux并向Linux社区提供补丁,使Linux工作在它们的服务器上,向客户出售业务服务。
  Linux发展到今天其代码量近2000万行,可以用浩如烟海来形容,没人能在短时间内弄清楚。但是你也不用害怕,我们可以先看看Linux内部的全景图,从全局了解一下Linux的内部结构,如下图。
  啊哈!是不是感觉壮观之后一阵头晕目眩,头晕目眩就对了,因为Linux太大了,别怕,下面我们来分解一下。但这里我要先解释一下,上图仍然不足于描述Linux的全部,只是展示了重要且显而易见的部分。
  上图中大致分为五大重要组件,每个组件又分成许多模块从上到下贯穿各个层次,每个模块中有重要的函数和数据结构。具体每个模块的主要功能,我都给你列在了文稿里,你可以详细看看后面这张图。
  不要着急,不要心慌,因为现在我们不需要搞清楚这些Linux模块的全部实现细节,只要在心里默念Linux的模块真多啊,大概有五大组件,有好几十个模块,每个模块主要完成什么功能就行了。
  是不是松了口气,先定定神,然后我们就能发现Linux这么多模块挤在一起,之间的通信主要是函数调用,而且函数间的调用没有一定的层次关系,更加没有左右边界的限定。函数的调用路径是纵横交错的,从图中的线条可以得到印证。
  继续深入思考你就会发现,这些纵横交错的路径上有一个函数出现了问题,就麻烦大了,它会波及到全部组件,导致整个系统崩溃。当然调试解决这个问题,也是相当困难的。同样,模块之间没有隔离,安全隐患也是巨大的。
  当然,这种结构不是一无是处,它的性能极高,而性能是衡量操作系统的一个重要指标。这种结构就是传统的内核结构,也称为宏内核架构。
  想要评判一个产品好不好,最直接的方法就是用相似的产品对比。你说Linux很好,但是什么为好呢?我说Linux很差,它又差在什么地方呢?
  下面我们就拿出Windows和macOS进行对比,注意我们只是对比它们的内核架构。
  DarwinXNU内核
  我们先来看看Darwin,Darwin是由苹果公司在2000年开发的一个开放源代码的操作系统。
  一个经久不衰的公司,必然有自己的核心竞争力,也许是商业策略,也许是技术产品,又或是这两者的结合。而作为苹果公司各种产品和强大的应用生态系统的支撑者Darwin,更是公司核心竞争力中的核心。
  苹果公司有台式计算机、笔记本、平板、手机,台式计算机、笔记本使用了macOS操作系统,平板和手机则使用了iOS操作系统。Darwin作为macOS与iOS操作系统的核心,从技术实现角度说,它必然要支持PowerPC、x86、ARM架构的处理器。
  Darwin使用了一种微内核(Mach)和相应的固件来支持不同的处理器平台,并提供操作系统原始的基础服务,上层的功能性系统服务和工具则是整合了BSD系统所提供的。苹果公司还为其开发了大量的库、框架和服务,不过它们都工作在用户态且闭源。
  下面我们先从整体看一下Darwin的架构。
  什么?两套内核?惊不惊喜?由于我们是研究Darwin内核,所以上图中我们只需要关注内核用户转换层以下的部分即可。显然它有两个内核层Mach层与BSD层。
  Mach内核是卡耐基梅隆大学开发的经典微内核,意在提供最基本的操作系统服务,从而达到高性能、安全、可扩展的目的,而BSD则是伯克利大学开发的类UNIX操作系统,提供一整套操作系统服务。
  那为什么两套内核会同时存在呢?
  MACOSX(2011年之前的称呼)的发展经过了不同时期,随着时代的进步,产品功能需求增加,单纯的Mach之上实现出现了性能瓶颈,但是为了兼容之前为Mach开发的应用和设备驱动,就保留了Mach内核,同时加入了BSD内核。
  Mach内核仍然提供十分简单的进程、线程、IPC通信、虚拟内存设备驱动相关的功能服务,BSD则提供强大的安全特性,完善的网络服务,各种文件系统的支持,同时对Mach的进程、线程、IPC、虚拟内核组件进行细化、扩展延伸。
  那么应用如何使用Darwin系统的服务呢?应用会通过用户层的框架和库来请求Darwin系统的服务,即调用Darwin系统API。
  在调用Darwin系统API时,会传入一个API号码,用这个号码去索引Mach陷入中断服务表中的函数。此时,API号码如果小于0,则表明请求的是Mach内核的服务,API号码如果大于0,则表明请求的是BSD内核的服务,它提供一整套标准的POSIX接口。
  就这样,Mach和BSD就同时存在了。
  Mach中还有一个重要的组件Libkern,它是一个库,提供了很多底层的操作函数,同时支持C运行环境。
  依赖这个库的还有IOKit,IOKit管理所有的设备驱动和内核功能扩展模块。驱动程序开发人员则可以使用C面向对象的方式开发驱动,这个方式很优雅,你完全可以找一个成熟的驱动程序作为父类继承它,要特别实现某个功能就重载其中的函数,也可以同时继承其它驱动程序,这大大节省了内存,也大大降低了出现BUG的可能。
  如果你要详细了解Darwin内核的话,可以自行阅读相应的代码。而在这里,你只要从全局认识一下它的结构就行了。
  WindowsNT内核
  接下来我们再看下NT内核。现代Windows的内核就是NT,我们不妨先看看NT的历史。
  如果你是90后,大概没有接触过MSDOS,它的交互方式是你在键盘上输入相应的功能命令,它完成相应的功能后给用户返回相应的操作信息,没有图形界面。
  在MSDOS内核的实现上,也没有应用现代硬件的保护机制,这导致后来微软基于它开发的图形界面的操作系统,如Windows3。1、Windows9598ME,极其不稳定,且容易死机。
  加上类UNIX操作系统在互联网领域大行其道,所以微软急需一款全新的操作系统来与之竞争。所以,WindowsNT诞生了。
  WindowsNT是微软于1993年推出的面向工作站、网络服务器和大型计算机的网络操作系统,也可做PC操作系统。它是一款全新从零开始开发的新操作系统,并应用了现代硬件的所有特性,NT所指的便是新技术(NewTechnology)。
  而普通用户第一次接触基于NT内核的Windows是Windows2000,一开始用户其实是不愿意接受的,因为Windows2000对用户的硬件和应用存在兼容性问题。
  随着硬件厂商和应用厂商对程序的升级,这个兼容性问题被缓解了,加之Windows2000的高性能、高稳定性、高安全性,用户很快便接受了这个操作系统。这可以从Windows2000的迭代者WindowsXP的巨大成功,得到验证。
  现在,NT内核在设计上层次非常清晰明了,各组件之间界限耦合程度很低。下面我们就来看看NT内核架构图,了解一下NT内核是如何庄严宏伟。如下图:
  这样看NT内核架构,是不是就清晰了很多?但这并不是我画图画得清晰,事实上的NT确实如此。
  这里我要提示一下,上图中我们只关注内核模式下的东西,也就是传统意义上的内核。
  当然微软自己在HAL层上是定义了一个小内核,小内核之下是硬件抽象层HAL,这个HAL存在的好处是:不同的硬件平台只要提供对应的HAL就可以移植系统了。小内核之上是各种内核组件,微软称之为内核执行体,它们完成进程、内存、配置、IO文件缓存、电源与即插即用、安全等相关的服务。
  每个执行体互相独立,只对外提供相应的接口,其它执行体要通过内核模式可调用接口和其它执行体通信或者请求其完成相应的功能服务。所有的设备驱动和文件系统都由IO管理器统一管理,驱动程序可以堆叠形成IO驱动栈,功能请求被封装成IO包,在栈中一层层流动处理。
  Windows引以为傲的图形子系统也在内核中。
  显而易见,NT内核中各层次分明,各个执行体互相独立,这种高内聚、低偶合的特性,正是检验一个软件工程是否优秀的重要标准。而这些你都可以通过微软公开的WRK代码得到佐证,如果你觉得WRK代码量太少,也可以看一看REACTOS这个号称开源版的NT。
  重点回顾
  到这里,我们了解了Linux、DarwinXNU和Windows的发展历史,也清楚了它们内部的组件和结构,并对它们的架构进行了对比,对比后我们发现:Linux性能良好,结构异常复杂,不利于问题的排查和功能的扩展,而DarwinXNU和Windows结构良好,层面分明,利于功能扩展,不容易产生问题且性能稳定。
  下面我们来回顾下这篇的重点。
  首先,我们从一名计算机黑客切入,简单介绍了一下Linus,他由于沉迷于技术,对不好的规则敢于挑战而写出了Linux雏形,并且利用了GNU开源软件的精神推动了Linux后来的发展,这样的精神很值得我们学习。
  然后我们探讨了Linux内核架构,大致搞清楚了Linux内核中的各种组件,它们是系统、进程、内存、储存、网络。其中,每个组件都是从接口到硬件经过了几个层次,组件与组件之间的层次互联调用。这些组件组合在一起,其调用关系形成了一个巨大的网状结构。因此,Linux也成了宏内核的代表。
  为了有所对比,我们研究了苹果的DarwinXNU内核结构,发现其分层更细,固件层、Mach层屏蔽了硬件平台的细节,向上层提供了最基础的服务。在Mach层之上的BSD层提供了更完善的服务,它们是进程与线程、IPC通信、虚拟内存、安全、网络协议栈以及文件系统。通过Mach中断嵌入表,可以让应用自己决定使用Mach层服务还是使用BSD层的服务,因此DarwinXNU拥有了两套内核,DarwinXNU内核层也成为了多内核架构的代表。
  最后,我们研究了迄今为止,最成功的商业操作系统Windows,它的内核是NT,其结构清晰明了,各组件完全遵循了软件工程高内聚、低偶合的设计标准。最下层是HAL(硬件抽象),HAL层是为了适配各种不同的硬件平台;在HAL层之上就是微软定义的小内核,你可以理解成是NT内核的内核;在这个小内核之上就是各种执行体了,这些执行体提供了操作系统的进程、虚拟内存、文件数据缓存、安全、对象管理、配置等服务,还有Windows的技术核心图形系统。
  思考题
  WindowsNT内核属于哪种架构类型?很期待在留言区看到你的分享。

图胧月夏季养护有诀窍多肉达人分享三个要点胧月是景天科的多肉植物,是常绿垂吊亚灌木。它们的叶片肥厚无柄,底色灰绿,覆白霜。日照时间比较长且温差较大时,叶片呈粉紫色,叶片枝顶簇生成莲座状,非常惹人喜爱。养过多肉植物……古人说冬吃萝卜夏吃姜,但又说晚吃姜,赛砒霜,晚上真的不能吃吗今年春节的时候,经常有亲朋好友来家里看望爸妈,所以,我们准备了好多的可乐,武汉今年的春节天气寒冷,除了饮酒之外,大多数人都喜欢喝点热饮,所以,老妈爱做姜汁可乐,其实做法也简单,……图观花植物美人蕉你会养吗这样栽培植株更漂亮美人蕉是亚热带和热带常用的观花植物。喜温暖和充足的阳光,不耐寒。对土壤要求不严,在疏松肥沃、排水良好的沙土壤中生长较好,也适应于肥沃粘质土壤生长。相信很多朋友都听过美人蕉……胃阴虚火身体会有哪些表现?中医7味药,养阴益胃因为现代人的生活节奏比较快,压力比较大,有很大一部分人吃饭很不规律,经常是饥一顿饱一顿,甚至有的暴饮暴食,吃饭不规律,时间久了之后胃病也就逐渐出现了。胃阴虚火,是比较常见……图熊童子夏天怎么养少浇水植株不会掉叶说到熊童子,可是带了不少人进多肉植物的大坑。虽然它是众所周知的度夏困难户,叶插绝育户与掉叶积极户,但耐不住它萌。现在喜欢熊童子的朋友依然有很多。熊童子已经成为多肉植物中比……图暹罗猫剃毛会怎样颜色变黑让人后悔暹罗猫是一种很有特点的猫咪,它在剃过毛之后新长出来的毛发会变黑,因此我们不要随意给它们剃毛,否则就会改变它们原本的模样。此外,我们也不要喂给它们过多的鱼。暹罗猫是一种可爱……一门三杰成泡影!全红婵妹妹3个项目皆落败,身材黝黑健硕天赋平我们知道全红婵在东京奥运会中夺金,并且成绩直接打破了历史记录,震惊了全世界,就连我国跳水皇后郭晶晶、陈若琳、吴敏霞等人都自愧不如,在此后的一年中,全红婵挺住了发育关,一年长高1……图挑选泰迪幼犬谨记三个原则不懂狗狗也能挑到纯种贵宾想养泰迪的朋友,总希望在挑选泰迪犬的时候,能找到一只聪明的幼犬。其实泰迪幼犬出生一个月内,就能通过观察它们外观和行为,评定它们大致的身体状况以及性格等情况。泰迪本身是一种……图分享白鹤芋的养殖方法植株耐阴忌强光白鹤芋又名苞叶芋、和平芋,民间因其有吉祥寓意而称为一帆风顺,常用于室内绿化美化装饰。不过很少人知道一帆风顺的养殖方法和注意事项,因此觉得白鹤芋不好养。白鹤芋在生活中深受一……图斑点狗好驯养吗三个技巧驯服淘气的大麦町犬斑点狗其实就是大家说的大麦町犬,原产地南斯拉夫。它们平静而警惕,表情聪明伶俐,听话易训,感觉敏锐,容易与小孩相处。这种狗狗具有极大的耐力,而且奔跑速度相当快。斑点狗的学名……图盆栽非洲菊怎么养新手要注意三个要点非洲菊是常见的花卉,颜色非常多,鲜艳夺目,应用在家居布置中也并不少见。这种植物原产于南非,是一种多年生的草本植物,目前在花市上非洲菊比较热销,深受人们的喜爱。相信很多朋友……每天早上吃一个鸡蛋,身体会发生什么变化?你爱吃鸡蛋吗?相信大家对于鸡蛋这种食物应该是非常了解的,应该每家每户的厨房里都有鸡蛋。鸡蛋对于中国社会的发展也起到了重要的作用,其中所含的营养物质相对较为丰富,研究数据显示,鸡蛋中含有……
三星显示与UDC签订长达5年OLED材料供应合同集微网消息近日,三星显示器与UDC签署了一份长期合同,提供OLED材料的供应和许可。合同的内容没有透露,但据说期限到2027年,还可以选择再延长两年。三星显示器从UDC获……安徽绝美景区火了,山岳风光秀丽绮丽,是休闲旅游的好地方安徽绝美景区火了,山岳风光秀丽绮丽,是休闲旅游的好地方安徽省作为徽商文化的发源地,自古以来都是一处商业贸易十分发达的地区,而在新中国成立以后,凭借着优越的地理位置以及发达……似海厚泽感师恩2021年12月27日,老师于凌晨在睡眠中安详辞世,当我在床前千呼万唤唤不回的那一刻,我肝肠寸断,痛不欲生。那一天,我以泪洗面,精神恍惚:我心空了,犹如精致的琉璃瓶被打碎了,撒……从2199元跌至1329元,10GB运存6400万三摄,66你的手机现在运行内存是多少呢?随着互联网的发展,智能手机可以承载的东西也越来越多,大家的手机无论是运存还是内存,都有了明显的提升。过去4GB运存就够用,现在8GB运存也已……巩汉林发视频致歉当时没认证收藏足球的签名真伪中新网北京3月17日电(刘星晨)20年前,我收藏了这枚足球,误以为得到了国足黄金一代球员的签名,当时对签名的真伪没有得到认证。17日晚,喜剧表演艺术家巩汉林在个人短视频平台账号……世界第六还是嫩了点,孙颖莎直落三局,早田希娜被横扫北京时间3月17日,WTT新加坡大满贯女单四分之一正式开打,率先迎来的是孙颖莎与早田希娜的对决。目前,孙颖莎的世界排名是第一,早田希娜则是第六,可以说两人之间有不小的差距,但是……强!最近,北京985这支九冠王女篮队,11人同时入选国家队人近日,中国篮球国家队人才库名单正式发布,北京师范大学女子篮球队共11人名列其中,包括主教练李笋南、助理教练赵雪同及球员张敬一、李双菲、熊中怡、唐子婷、刘姝妍、秦超、曹博怡、李妍……大骨架女孩穿衣服太吃亏?记住3个搭配思路,摆脱壮气质我们都知道人体可以分为不同的体型,那么骨架也是有区分的,常见的骨架分2种:大骨架和小骨架。小骨架的女生在穿衣方面的局限性不大,容易搭配出时尚且显瘦的造型。但是,大骨架相较……这5味清热药治肝病是一绝小编导读肝病是临床常见的一大类病证,包括肝炎、肝硬化、黄疸等。临床诊治肝病时,我们能发现不少中药都可用于肝病的治疗,其中清热药在肝病的治疗中能发挥不小的作用,今天为大家介……烤红薯会比蒸红薯热量高吗?红薯怎么吃健康?红薯是生活中比较常见的一种食物,它的吃法比较多,可以煮着吃,可以蒸着吃,还可以烤着吃等。烤红薯和蒸红薯是比较受欢迎的,如果是自己做的,烤红薯和蒸红薯的热量是一样的,如果是外面卖……詹皇317,湖人完败太阳!安东尼18分,威少132!布克艾顿湖人对阵太阳北京时间3月14日,西部赛区的两大劲旅湖人队与太阳队狭路相逢。已经锁定季后赛席位的太阳队,在本场比赛展现了强大的攻防实力。湖人VS太阳太阳狂胜湖人……如何应对孕期睡觉出现的情况,睡好孕期觉?所有生过宝宝或是正怀孕的妈妈都经历过,随着肚子越来越大,晚上睡觉就会越难受,同时还面临着不少问题,比如很多孕妇在晚上睡觉时会感到手麻、胳膊与腰酸痛,有些孕妇还有打呼噜的现象等,……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网