导航:首页 > 操作系统 > linux的内核结构图

linux的内核结构图

发布时间:2023-04-08 11:36:55

⑴ 一张图看懂linux内核运行交互关系,值得收藏!

很多朋友如果接触过Linux的都知道Kernel的含义,kernel是操作系统的核心或者最重要的部分。众所周知的是,几乎整个互联网都运行在 Linux上,从网络协议,到服务器,到你平常访问的绝大多数网站,都能看到它的身影段咐指,Linux 内核就是最复杂最流行的开源项目之一。

无意中看到MakeLinux 制作的Linux内核交互图,讲的很全面,这里分享给大家。

俗话说“一图胜千言”,下面通过一张完整的 Linux 内核运行原理图,可以很方便地让你学习内核知识。在 Linux 内核中,有许多层次、模块、功能调用和函数。要把其中的每一块儿都弄握配明白是很不容易的,MakeLinux做了一个非常酷的完整的内核交互图,上面非常清晰地标注了每一个组件部分及之间的关系,这张Linux内核交互图可以很好的帮助你不用一一细读 Linux 内核代码,就能弄明白各个内核子系统间复杂的内部联系。因为比较大,所以这里我做个拆分。

这张图上包含有超过400个关键简判函数,这400个关键函数被分进了一些主要的子系统,彼此之间的关系用连线标明了,清晰明了。

考虑到很多朋友可能需要原图,所以放网络云了,大家私信 “内核” 就可以领取了。也希望大家帮忙多多转发,谢谢~

⑵ linux操作系统的内核有哪几个子系统组成,简要说明各子系统的作用

Linux是一个一体化内核(monolithic kernel)系统。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。

一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux。设备驱动程序可以完全访问硬件。Linux内的设备驱动程序可以方便地以模块化(molarize)的形式设置,并在系统运行期间可直接装载或卸载。

Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。

版本号Linux内核使用三种不同的版本编号方式。

第一种方式用于1.0版本之前(包括1.0)。第一个版本是0.01,紧接着是0.02、0.03、0.10、0.11、0.12、0.95、0.96、0.97、0.98、0.99和之后的1.0。

第二种方式用于1.0之后到2.6,数字由三部分“A.B.C”,A代表主版本号,B代表次主版本号,C代表较小的末版本号。只有在内核发生很大变化时(历史上只发生过两次,1994年的1.0,1996年的2.0),A才变化。

可以通过数字B来判断Linux是否稳定,偶数的B代表稳定版,奇数的B代表开发版。C代表一些bug修复,安全更新,新特性和驱动的次数。

以版本2.4.0为例,2代表主版本号,4代表次版本号,0代表改动较小的末版本号。在版本号中,序号的第二位为偶数的版本表明这是一个可以使用的稳定版本,如2.2.5,而序号的第二位为奇数的版本一般有一些新的东西加入。

是个不一定很稳定的测试版本,如2.3.1。这样稳定版本来源于上一个测试版升级版本号,而一个稳定版本发展到完全成熟后就不再发展。

第三种方式从2004年2.6.0版本开始,使用一种“time-based”的方式。3.0版本之前,是一种“A.B.C.D”的格式。七年里,前两个数字A.B即“2.6”保持不变,C随着新版本的发布而增加,D代表一些bug修复,安全更新,添加新特性和驱动的次数。

3.0版本之后是“A.B.C”格式,B随着新版本的发布而增加,C代表一些bug修复,安全更新,新特性和驱动的次数。第三种方式中不再使用偶数代表稳定版,奇数代表开发版这样的命名方式。举个例子:3.7.0代表的不是开发版,而是稳定版!

⑶ linux内核主要由哪几个部分组成

一个完整的Linux内核一般由5部分组成,它们分别是内存管理、进程管理、进程间通信、虚拟文件系统和网络接口。

1、内存管理
内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子系统对内存分配的请求。

Linux内存管理支持虚拟内存,而多余出的这部分内存就是通过磁盘申请得到的,平时系统只把当前运行的程序块保留在内存中,其他程序块则保留在磁盘中。在内存紧缺时,内存管理负责在磁盘和内存间交换程序块。

2、进程管理
进程管理主要控制系统进程对CPU的访问。当需要某个进程运行时,由进程调度器根据基于优先级的调度算法启动新的进程。:Linux支持多任务运行,那么如何在一个单CPU上支持多任务呢?这个工作就是由进程调度管理来实现的。

在系统运行时,每个进程都会分得一定的时间片,然后进程调度器根据时间片的不同,选择每个进程依次运行,例如当某个进程的时间片用完后,调度器会选择一个新的进程继续运行。

由于切换的时间和频率都非常的快,由此用户感觉是多个程序在同时运行,而实际上,CPU在同一时间内只有一个进程在运行,这一切都是进程调度管理的结果。

3、进程间通信
进程间通信主要用于控制不同进程之间在用户空间的同步、数据共享和交换。由于不用的用户进程拥有不同的进程空间,因此进程间的通信要借助于内核的中转来实现。

一般情况下,当一个进程等待硬件操作完成时,会被挂起。当硬件操作完成,进程被恢复执行,而协调这个过程的就是进程间的通信机制。

4、虚拟文件系统
Linux内核中的虚拟文件系统用一个通用的文件模型表示了各种不同的文件系统,这个文件模型屏蔽了很多具体文件系统的差异,使Linux内核支持很多不同的文件系统。

这个文件系统可以分为逻辑文件系统和设备驱动程序:逻辑文件系统指Linux所支持的文件系统,例如ext2、ext3和fat等;设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。

5、网络接口
网络接口提供了对各种网络标准的实现和各种网络硬件的支持。网络接口一般分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。

网络设备驱动程序则主要负责与硬件设备进行通信,每一种可能的网络硬件设备都有相应的设备驱动程序。

(3)linux的内核结构图扩展阅读

Linux 操作系统的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet 网络。

1981 年IBM公司推出微型计算机IBM PC。

1991年,GNU计划已经开发出了许多工具软件,最受期盼的GNU C编译器已经出现,GNU的操作系统核心HURD一直处于实验阶段,没有任何可用性,实质上也没能开发出完整的GNU操作系统,但是GNU奠定了Linux用户基础和开发环境。

1991年初,林纳斯·托瓦兹开始在一台386sx兼容微机上学习minix操作系统。1991年4月,林纳斯·托瓦兹开始酝酿并着手编制自己的操作系统。

1991 年4 月13 日在comp.os.minix 上发布说自己已经成功地将bash 移植到了minix 上,而且已经爱不释手、不能离开这个shell软件了。

1993年,大约有100余名程序员参与了Linux内核代码编写/修改工作,其中核心组由5人组成,此时Linux 0.99的代码大约有十万行,用户大约有10万左右。

1994年3月,Linux1.0发布,代码量17万行,当时是按照完全自由免费的协议发布,随后正式采用GPL协议。

1995年1月,Bob Young创办了RedHat(小红帽),以GNU/Linux为核心,集成了400多个源代码开放的程序模块,搞出了一种冠以品牌的Linux,即RedHat Linux,称为Linux"发行版",在市场上出售。这在经营模式上是一种创举。

2001年1月,Linux 2.4发布,它进一步地提升了SMP系统的扩展性,同时它也集成了很多用于支持桌面系统的特性:USB,PC卡(PCMCIA)的支持,内置的即插即用,等等功能。

2003年12月,Linux 2.6版内核发布,相对于2.4版内核2.6在对系统的支持都有很大的变化。

2004年的第1月,SuSE嫁到了Novell,SCO继续顶着骂名四处强行“化缘”, Asianux, MandrakeSoft也在五年中首次宣布季度赢利。3月,SGI宣布成功实现了Linux操作系统支持256个Itanium 2处理器。

⑷ 什么是Linux系统架构

您好很高兴回答您的问题:

Linux系统架构分为两个部分一个是单台Linux系统架构 另外一个是网站集群架构.


单台Linux系统架构:

由硬件,内核,命令解释器,外围软件组成

网站集群架构

⑸ Linux操作系统由什么组成

Linux系统结构一般有3个主要部分:内核kernel、命令解释层Shell或其他操作环境、实用工具
1.Linux内核

内核是系统的核心,是运行程序和管理磁盘、打印机等硬件设备的核心程序。操作系统向用户提供一个操作界面,它从用户那里接收命令,并且把命令送给内核去执行。

当 Linux安装完毕之后,一个通用的内核就被安装到主机中,这个通用内核能满足绝大部分用户的需求,但普遍适用性内核对具体的某台主机来说,可能有一些并不需要的内核程序将被安装。因此,Linux允许用户根据主机的实际配置定制 Linux的内核,从而有效地简化 Linux内核,提高系统启动速度。
2.Linux Shell

Shell是系统的用户界面,提供了用户与内核进行交互操作的接口。它接收用户输入的命今,并且把它送入内核执行。操作系统在系统内核与用户之间提供操作界面, Linux存在多种操作环境,分别是基于图形界面的集成桌面环境和基于Shell命令行环境。

Shell是一个命令解释器,它解释由用户输入的命令,并且送到内核。Shell编程语言具有普通编程语言的很多特点,如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。

作为命令行操作界面的替代, Linux还提供了像 Windows那样的可视化图形界面X-window的图形用户界面。

3.实用工具
标准的 Linux系统都有配套的实用工具程序,如编辑器、浏览器、办公套件及其它系统管理工具等,用户可以自行编写需要的应用程序。

⑹ Linux内核中sk_buff结构详解

sk_buff是Linux网络中最核心的结构体,它用来管理和控制接收或发送数据包的信息。各层协议都依赖于sk_buff而存在。内核中sk_buff结构体在各层协议之间传输不是用拷贝sk_buff结构体,而是通过增加协议头和移动指针来操作的。如果是从L4传输到L2,则是通过往sk_buff结构体中增加该层协议头来操作;如果是从L4到L2,则是通过移动sk_buff结构体中的data指针来实现,不会删除各逗简层协议头。这样做是为了提高CPU的工作效率。

skb_buff结构如下所示:

这里要声明两个概念的区别,后续直接用这两个概念,注意区分:
(1)线性数据:head - end。
(2)实际山早裤线性数据:data - tail,不包含线性数据中的头空间和尾空间。
skb->data_len : skb中的分片数据(非线性数据)的长度。
skb->len : skb中的数据块的总长度,数据块包括实际线性数据和非线性数据,非线性数据为data_len,所以skb->len= (data - tail) + data_len。
skb->truesize : skb的总长度,包括sk_buff结构和数据部分,skb=sk_buff控制信息 + 线性数据(包括头空间和尾空间) + skb_shared_info控制信息 + 非线性数据,所以skb->truesize = sizeof(struct sk_buff) + (head - end) + sizeof(struct skb_shared_info) + data_len。

sk_buff结构体中的都是sk_buff的控制信息,是网络数据包的一些配置,真正储存数据的是sk_buff结构体中几个指针指向的数据区中,线性数据区的大小 = (skb->end - skb->head),对于每个数据包来说这个大小都是固定不变的,在传输过程中skb->end和skb->head所指向的地址都是不变的,这里要注意这个地址不是本机的地址,如果是本机的地址那么数据包传到其他主机上这个地址就是无效的,所以这个地址是这个skb缓冲区的相对地址。

线性数据区是用来存放各层协议头部和应用层发下来的数据。各层协议头部相关信息放在线性数据区中。实际数据指针为data和tail,data指向实际数据开始的地方,tail指向实际数据结束的地方。
用一张图来表示sk_buff和数据区的关系:

这一节介绍先行数据区在sk_buff创建过程中的变化,图中暂时省略了非线性数据区:

2.1中所讲的都是线性数据区中的相关的配置,当线性数据区不够用的时候就会启用非线性数据区作为数据区域的扩展,skb中用skb_shared_info分片结构体来配置非线性数据。

skb_shared_info结构体是和skb中的线性数据区一体的,所以在skb的各种操作时都会把这两个结构看作是一个结构来操作。如:

skb_shared_info结构:

非线性数据区有两种不同的构成数据的方式
(1)睁稿用数组存储的分片数据区,采用是是结构体中的frags[MAX_SKB_FRAGS]
对于frags[]一般用在当数据比较多,在线性数据区装不下的时候,skb_frag_t中是一页一页的数据,skb_frag_struct结构体如下:

下图显示了frags是怎么分配分片数据的:

(2)frag_list指针来指向的分片数据:

参考:

⑺ linux内核是什么,有啥作用 ,

Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。

操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。

计算机的硬件,含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是没有软件来操作和控制它,自身是不能工作的。完成这个控制工作的软件就称为操作系统,在Linux的术语中被称为“内核”,也可以称为“核心”。

Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。


(7)linux的内核结构图扩展阅读:

Linux内核的特性

1、可移植性

Linux是全球被最广泛移植的操作系统内核。从掌上电脑iPad到巨型电脑IBM S/390,甚至于微软出品的游戏机XBOX都可以看到Linux内核的踪迹。Linux也是IBM超级计算机Blue Gene的操作系统。

2、网络支持

作为一个生产操作系统和开源软件,Linux 是测试新协议及其增强的良好平台。Linux 支持大量网络协议,包括典型的 TCP/IP,以及高速网络的扩展(大于 1 Gigabit Ethernet [GbE] 和 10 GbE)。Linux 也可以支持诸如流控制传输协议(SCTP)之类的协议,它提供了很多比 TCP 更高级的特性(是传输层协议的接替者)。

3、动态内核

Linux 还是一个动态内核,支持动态添加或删除软件组件。被称为动态可加载内核模块,它们可以在引导时根据需要(当前特定设备需要这个模块)或在任何时候由用户插入。

4、系统管理程序

Linux 最新的一个增强是可以用作其他操作系统的操作系统。该系统对内核进行了修改,称为基于内核的虚拟机(KVM)。这个修改为用户空间启用了一个新的接口,它可以允许其他操作系统在启用了 KVM 的内核之上运行。除了运行 Linux 的其他实例之外, Microsoft® Windows® 也可以进行虚拟化。惟一的限制是底层处理器必须支持新的虚拟化指令。

阅读全文

与linux的内核结构图相关的资料

热点内容
如何查看电脑系统服务器ip地址查询 浏览:389
把文件夹设锁 浏览:570
命令行语句 浏览:218
企友3e财务如何连接服务器 浏览:984
华为手机如何删除卸载app残留数据 浏览:543
rpm的命令作用 浏览:365
如何查看网站的服务器时间 浏览:850
编译局和人民出版社 浏览:652
java泛型extends 浏览:326
头条程序员教学 浏览:772
安卓合并什么意思 浏览:530
linux在光盘引导 浏览:537
imap服务器地址怎么查 浏览:654
作曲教程pdf 浏览:506
pr怎么压缩文件大小 浏览:863
查看oracle字符集命令 浏览:179
锂电池增加密度 浏览:661
linux用户密码忘记 浏览:242
gb压缩天然气 浏览:635
图片拼接不压缩app 浏览:670