Linux 内核
字数: 1553 字 时长: 6 分钟
Linux 内核是 Linux 操作系统的主要部分,它实现进程管理、内存管理、文件系统、设备驱动和网络系统等功能,从而为核外的所有程序提供运行环境。它是计算机硬件与其进程之间的核心接口,负责两者之间的通信,还要尽可能高效地管理资源。如果内核不认识某个最新的硬件,那么硬件也就无法被驱动,也就无法使用该硬件。
之所以称为内核,是因为在操作系统中就像果实硬壳中的种子一样,控制着硬件(无论是电话、笔记本电脑、服务器,还是任何其他类型的计算机)的所有主要功能。
NOTE
任何人都可以获取最新版本的 Linux 内核源代码。Linux 内核官网
内核作用
- 内存管理:追踪记录有多少内存存储了什么以及存储在哪里
- 进程管理:确定哪些进程可以使用中央处理器(CPU)、何时使用以及持续多长时间
- 设备驱动程序:充当硬件与进程之间的调解程序/解释程序
- 系统调用和安全防护:从流程接受服务请求
在正确实施的情况下,内核对于用户是不可见的,它在自己的小世界(称为内核空间)中工作,并从中分配内存和跟踪所有内容的存储位置。用户所看到的内容(例如 Web 浏览器和文件)则被称为用户空间。这些应用通过系统调用接口(SCI)与内核进行交互。
可以这样理解:内核就像是一个为高管(硬件)服务的忙碌的个人助理。助理的工作就是将员工和公众(用户)的消息和请求(进程)转交给高管,记住存放的内容和位置(内存),并确定在任何特定的时间谁可以拜访高管、会面时间有多长。
为了更具象地理解内核,不妨将 Linux 计算机想象成有三层结构:
- 硬件:物理机(这是系统的底层结构或基础)是由内存(RAM)、处理器(或 CPU)以及输入/输出(I/O)设备(例如存储、网络和图形)组成的。其中,CPU 负责执行计算和内存的读写操作。
- Linux 内核:操作系统的核心。(没错,内核正处于核心的位置)它是驻留在内存中的软件,用于告诉 CPU 要执行哪些操作。
- 用户进程:这些是内核所管理的运行程序。用户进程共同构成了用户空间。用户进程有时也简称为进程。内核还允许这些进程和服务器彼此进行通信(称为进程间通信或 IPC)。
内核版本命名
Linux 内核版本命名在不同的时期有其不同的规范。目前 Linux 内核版本号任然是由 3 个数字组成:A.B.C
:
- 数字 A 是内核版本号,版本号只有在代码和内核的概念有重大改变的时候才会改变。
- 数字 B 是内核主版本号,主版本号根据发布时间来分配。
- 数字 C 是内核次版本号,次版本号是无论在内核增加安全补丁、修复 bug、实现新的特性或者驱动时都会改变。
在正式发布之前,一般都冠以「待发布」(release candidates)字样,通过在内核版本的普通数字之后添加后缀 rc
。
有些时候,版本号后面有类似于 tip
这样的后缀,表明另一个开发分支,这些分支通常(但不总是)是一个人开始发起的。举例来说,ck
代表 Con Kolivas,ac
代表 Alan Cox 等等。有时,字母和内核建立分支的主要开发领域相关,例如 wl
表示该分支主要测试无线网络的。同时,不同的发行版也会根据需要有自己的后缀。
内核版本分类
可以在 Linux 内核官方网站 https://www.kernel.org/ 上查看各种版本的内核源代码。
Linux 内核版本主要分为以下几类:
- Mainline:主线版本,是最新的内核版本,包含最新的特性和改进,但可能不够稳定。
- Stable:稳定版,由 mainline 在时机成熟时发布,稳定版也会在相应版本号的主线上提供 bug 修复和安全补丁。
- Longterm:长期支持版,提供长期的 bug 修复和安全补丁支持,适用于需要长期稳定运行的系统。
- Linux-next:一个用于测试下一个主线版本的内核树。
mainline: 6.5-rc1 2023-07-09 [tarball] [patch] [view diff] [browse]
stable: 6.4.2 2023-07-05 [tarball] [pgp] [patch] [inc. patch] [view diff] [browse] [changelog]
stable: 6.3.12 2023-07-05 [tarball] [pgp] [patch] [inc. patch] [view diff] [browse] [changelog]
longterm: 6.1.38 2023-07-05 [tarball] [pgp] [patch] [inc. patch] [view diff] [browse] [changelog]
longterm: 5.15.120 2023-07-05 [tarball] [pgp] [patch] [inc. patch] [view diff] [browse] [changelog]
longterm: 5.10.186 2023-06-28 [tarball] [pgp] [patch] [inc. patch] [view diff] [browse] [changelog]
longterm: 5.4.249 2023-06-28 [tarball] [pgp] [patch] [inc. patch] [view diff] [browse] [changelog]
longterm: 4.19.288 2023-06-28 [tarball] [pgp] [patch] [inc. patch] [view diff] [browse] [changelog]
longterm: 4.14.320 2023-06-28 [tarball] [pgp] [patch] [inc. patch] [view diff] [browse] [changelog]
linux-next: next-20230707 2023-07-07 [browse]
每一行都表示一个内核版本,包括版本号、发布日期和一些链接。例如,第一行表示主线版本 6.5-rc1
,发布日期为 2023-07-09
:
- 点击
tarball
链接下载该版本的源代码压缩包; - 点击
pgp
链接下载相应的 PGP 签名文件,可以用 PGP 工具或相应的软件验证下载的源代码压缩包的真实性和完整性; - 点击
patch
链接下载该版本相对于上一个版本的补丁; - 点击
view diff
链接查看该版本相对于上一个版本的差异; - 点击
browse
链接在线浏览该版本的源代码; - 点击
changelog
连接查看该版本相对于上一个版本的变更日志。