第2章 Linux 的心脏——Kernel(内核)
第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需要2GBVS Code需要1GB微信500MB游戏8GB如果大家都想要100GB。怎么办Kernel负责分配。释放。回收。整理。如果Kernel不会管理内存。电脑早就崩了。第三件管理硬盘例如你双击照片.jpg真正发生的是图片查看器 ↓ Kernel ↓ SSD ↓ 读取数据 ↓ 返回图片注意。图片查看器。不能直接控制SSD。必须经过Kernel。第四件管理设备例如插入USBKernel马上发现新设备来了。然后加载驱动。建立连接。让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 到底有什么区别为什么大家总把它们混为一谈学完这一章你第一次打开那个黑窗口时就会知道每输入一个命令系统内部到底发生了什么。