关于Linux内核的根本架构和工作原理,曾经有一张生动风趣的图,可以协助Linux体系入门和技术人员来了解其构成和运转原理:

我也来看图说Linux系统内核

有关这个图的解读,其实网上现已有许多说得也是非常精彩的。但笔者希望参加一些自己的考虑和了解,和觉得有必要扩展的内容,希望可以更好的协助读者。

来源: turnoff.us

这个图的原图在: turnoff.us。关于这个网站,有这样的表述:

{turnoff.us} is a geek comic site. Comics about Programming Languages, Web, Cloud, Linux, etc… 这是一个极客漫画网站,关于编程语言,Web,云计算,Linux等等…

风趣或许无聊的开发者,可以不时的去访问一下,说不定会有一些创意,或许会心一笑(比方这个感受一下)。

我也来看图说Linux系统内核

本文主题这个图的名字是: Inside The Linux Kernal(在Linux的内核),原图完整版的地址是:

turnoff.us/image/en/in…

这个图的精华,笔者觉得可以一句话来总结,让咱们来领会和考虑吧:

Evil Is In The detail (魔鬼在细节里)

架构

先来看看全体架构。这是一个大楼内部一角,繁忙的场景,这个大楼的一角,便是Linux内核。从图上可以看到,这个部分其实是一个两层半的结构。

最下面一层看起来像是一个库房,便是文件体系(File System);地面层有许多人(大部分都是企鹅)在各种繁忙,代表着进程表(Process Table);还有一个跃层,代表着人机交互界面(Terminals And Termina process);这些便是Linux内核的根本层次架构,一切程序履行、资源调度、体系功能都在这个内核中运转和实现。

角色和进程

图中有许多企鹅,它们通常代表着在Linux内核中运转的进程。之所以运用企鹅,应该是由于Linux的Logo和形象代表便是一个企鹅。但假如咱们仔细观察,会发现虽然它们都是企鹅,可是它们的打扮、动作乃至神态都是不一样的,隐喻着它们有不同的特性和情况。一般情况下,企鹅的胸前会挂着一个写有数字的工牌,代表着这个进程的进程编号,还有其他的内容,咱们在后面会详细分析。

除了企鹅之外,咱们还看到有几条小狗。这些都是看门狗(Watch Dog)。它们负责在体系内部进行巡查,处理各种反常情况。

最终还有一个小丑,应该就代表着体系内部的反常进程,比方病毒木马等恶意软件。

门和楼梯

这个大厅里边,有几扇门,代表着和外部世界交流的网络端口。

左边的那个门上面的编号是80,这是规范的HTTP的端口号,所以这是一个规范Web端口;端口周围有一个护卫进程,了解网络编程的同学应该可以看出来它便是Apache Tomcat,由于它头上戴着那个了解的羽毛。

中心旮旯里边那个门的门牌都歪了,由于它现已年久失修。由于它是ftp端口(端口编号21),现在现已根本上没人用了。

右边那个门编号是22,便是SSH的端口,周围那个戒备森严,戴墨镜耳机的保安,表明了这个端口的安全级别比较高。

SSH周围的楼梯,可以上到交互界面层;而21端口周围,还有一个隐蔽的楼梯,上面FS的指示牌,表明从这儿可以下到文件体系层。

文件体系

文件体系是独自的一层。这儿边有许多柜子,依照行列堆放规整,表明了文件体系保存文件的方式和结构。文件放在柜子的抽屉里边,并且也是依照索引依次寄存。

大部分抽屉都是封闭的,阐明现在还没有人来访问。库房里有编号是421的一个进程正在查看文件;还有一个柜子现已打开,但周围却没有人,可能是那个进程打开了文件,却由于某种原因没有正常封闭(比方反常或强行退出,乃至进程自身就忘了要封闭文件句柄),所以需要一条看门狗来进行处理。

交互界面

交互界面是一个跃层,阐明它是内核的一部分,但和进程办理大厅联络严密。这儿墙上有许多屏幕,代表它经过可视化的界面来处理信息,实际上便是体系和人的交互界面。

屏幕有许多个,代表体系可以同时处理多路的指令交互。屏幕上的内容都有不同,有的屏幕还没有开启,有的屏幕是字符界面,有的还有图形界面,代表不同的GUI的交互情况。

这儿有两个进程来办理这些屏幕。有一个进程面向屏幕,正在一个操控板上进行操作,笔者的了解是它是一个输出进程,可以操控各个屏幕的不同情况和输出内容;另一个进程面向大厅,手中拿着一份文件,应该正在向大厅里边的进程下达质量,所以它是一个输入操控进程。 这样咱们也可以了解为什么这儿是一个半层,由于它需要一个敞开的架构来衔接输入输出和履行进程。

繁忙的大厅

大厅里,便是各种进程运转和繁忙的主要场所了。

大厅的中心,是一张长条桌。这儿应该便是主进程表了,一个主进程正在和一堆进程开会,可能正在和谐它们的运转;这些进程神态和情况各异,有的仔细听讲,有的不屑一顾,有的瞻前顾后,有的沉默不语…,的确很像体系中各种使命履行的情况。

大厅一角堆了许多管道,这是Linux处理信息的重要机制。两个进程正在繁忙的运用一根管道进行数据的转移。

大厅里还有几个比较特别的进程。编号为213的正在紧张的看着它的手表,它是Cron(守时使命)进程,它负责守时履行一些使命;另一个端着酒杯,有点喝醉了的应该是Wine()进程。

还有一个没有在进程表桌子上的进程正在游荡,这应该是一个孤立进程或许情况反常的进程,体系正常派出看门狗来对它进行铲除。

Linux内核和生态

经过上面的解读,笔者相信大家都对Linux内核有了更深化的了解。了解了这个,有助于咱们了解Linux内核在Linux生态体系中的意义和定位。

所以,严厉的说来,Linux不是一个操作体系,它只是一个操作体系内核。软件开发商或许各种开源软件社区,根据这个内核,配套开发了相关安装和部署程序、驱动程序、图形界面、办理工具、文件体系、应用软件等等,开发和包装出了群众认知意义上的操作体系来和Window或许Mac OS体系进行对应,这些都称为发行版。然后根据Linux内核和这些发行版本,进一步开发和丰厚了相关的应用软件和体系,逐步构建成为现在庞大而丰厚的Linux软件生态体系,然后支撑其咱们现在丰厚多彩的互联网世界。