第1节 什么是 Kernel?
上一章我们说过:
很多人认为:Linux = 操作系统。
其实更准确地说:Linux 最初只是一个 Kernel(内核)。
那么什么叫内核?先来看一个例子。
假设你的电脑只有:
CPU
内存
SSD
键盘
鼠标
显示器
这些都是:硬件(Hardware)
但是这些硬件有一个共同特点:它们不会主动工作。
例如:
CPU不知道:
现在应该算什么?
SSD不知道:
现在应该读取哪个文件?
网卡不知道:
现在应该发送哪个数据包?
它们都需要:
有人指挥。
这个指挥者。
就是:
Kernel(内核)。
可以把 Kernel 理解成什么?
很多书会说:
Kernel 是资源管理器。
这句话没错。
但是不够直观。
我更喜欢一个比喻。
假设一家大型物流仓库。
里面有:
100个工人
1000个货架
几十辆叉车
很多传送带
每天:
几万件货物进出。
如果没有管理者。
会发生什么?
工人:
不知道搬哪个。
叉车:
不知道去哪。
货架:
没人管理。
整个仓库:
直接瘫痪。
所以。
需要一个总调度。
例如:
张三
去A区
↓
李四
去B区
↓
叉车1
搬这个货
↓
叉车2
搬那个货
这个总调度。
就是:
Kernel。
第2节 Kernel 每天都在干什么?
它几乎什么都管。
最重要的是五件事。
第一件:管理 CPU
假设:
你打开:
Chrome
微信
QQ
音乐播放器
CPU只有一个。
Kernel怎么办?
它会:
CPU
↓
Chrome
0.001秒
↓
QQ
0.001秒
↓
微信
0.001秒
↓
音乐
0.001秒
不停切换。
速度快到:
你感觉:
它们一起运行。
实际上。
不是。
Kernel一直在:
安排谁先运行。
所以:
Kernel其实像:
CPU 的交通警察。
第二件:管理内存(RAM)
例如:
Chrome:
需要:
2GB
VS Code:
需要:
1GB
微信:
500MB
游戏:
8GB
如果:
大家都想要:
100GB。
怎么办?
Kernel负责:
分配。
释放。
回收。
整理。
如果Kernel不会管理内存。
电脑早就崩了。
第三件:管理硬盘
例如:
你双击:
照片.jpg
真正发生的是:
图片查看器
↓
Kernel
↓
SSD
↓
读取数据
↓
返回图片
注意。
图片查看器。
不能直接控制SSD。
必须经过:
Kernel。
第四件:管理设备
例如:
插入:
USB
Kernel马上发现:
新设备来了。
然后:
加载驱动。
建立连接。
让Windows。
或者Linux。
可以访问它。
所以:
驱动程序。
很多时候:
其实属于:
Kernel的一部分。
第五件:管理网络
例如:
浏览器访问:
https://example.com
浏览器:
其实只是说:
我要访问这个网址。
真正:
建立TCP连接。
发送数据。
接收数据。
全部都是:
Kernel完成。
所以:
Linux网络性能为什么强?
因为:
Linux Kernel。
网络模块非常优秀。
第3节 为什么程序不能直接控制硬件?
很多新手都会问:
既然Chrome想读取文件。
为什么不能:
直接控制SSD?
答案:
安全。
想象一下。
如果每个程序都能:
直接操作硬盘。
会怎样?
例如:
病毒。
直接:
删除整个SSD
根本没人管。
或者:
两个程序。
同时写:
同一个文件。
数据直接乱掉。
所以:
必须:
统一管理。
也就是:
Kernel。
所有程序。
必须先申请。
Kernel同意。
才能操作。
这就是:
系统调用(System Call)
第4节 什么是系统调用(System Call)?
这是整个 Linux 最重要的概念之一。
程序不能直接控制硬件。
所以。
它必须:
向Kernel申请。
例如:
程序:
我要打开文件
Kernel:
可以
然后:
Kernel读取。
再返回。
整个过程:
程序
↓
System Call
↓
Kernel
↓
SSD
以后。
你会看到:
open()
read()
write()
close()
这些。
都是:
系统调用。
几乎所有软件。
每天都在用。
只是:
你感觉不到。
第5节 Linux 和 Windows 的 Kernel 有什么区别?
很多人第一次学 Linux。
都会问:
Windows是不是也有Kernel?
答案:
有。
Windows:有自己的Kernel。
Linux:有Linux Kernel。
macOS:有自己的Kernel。
Android:也是Linux Kernel。
所以,Android其实和Linux关系非常近。
只是,手机厂商在Linux Kernel上,开发了自己的手机系统。
所以,如果你以后研究:安卓Root、Magisk、Termux,都会发现很多Linux知识,完全通用。
第6节 Ubuntu、Debian 到底是什么?
现在终于能回答上一章留下的问题了。
很多人说:
我要安装 Linux。
实际上。
安装的是:
Ubuntu
或者:
Debian
它们都不是Kernel。
它们是:
Linux 发行版(Distribution)
什么叫发行版?
可以理解成:一个已经组装好的 Linux 系统。
例如:
Linux Kernel
+
Shell
+
软件包管理器
+
系统工具
+
默认配置
+
很多常用软件
组合在一起。
就变成:Ubuntu。
如果换另一套组合。
就是:Debian。
所以它们最大的区别通常不是Kernel。
而是:
围绕 Kernel 的生态和默认配置。
第7节 本章最重要的一张图
这是以后你要一直记住的结构:
你(User)
│
▼
应用程序(Chrome、微信)
│
System Call(系统调用)
│
▼
Linux Kernel(内核)
├── CPU 管理
├── 内存管理
├── 磁盘管理
├── 网络管理
└── 设备管理
│
▼
硬件(Hardware)
以后你学 Docker、数据库、Nginx、Python、AI 服务,它们全部都运行在内核之上。
本章总结
只需要牢牢记住六句话:
- Kernel(内核)是操作系统最核心的部分。
- 所有程序都必须通过 Kernel 才能操作硬件。
- 程序向 Kernel 请求服务的过程,叫系统调用(System Call)。
- Kernel 负责管理 CPU、内存、磁盘、网络和设备。
- Windows、Linux、macOS 都有自己的内核。
- Ubuntu、Debian 等发行版,是"Linux 内核 + 一系列工具和软件"的组合。
学习提示
从这一章开始,你会发现我们已经不是在学 Linux,而是在学现代操作系统是如何工作的。这也是为什么很多程序员、运维工程师和网络工程师都会花时间理解这些基础,因为它们几乎适用于所有操作系统。
下一章(第3章) 我们将进入你真正开始和 Linux 交互的地方:
Shell 和 Terminal 到底有什么区别?为什么大家总把它们混为一谈?
学完这一章,你第一次打开那个"黑窗口"时,就会知道每输入一个命令,系统内部到底发生了什么。