Linux 内核的职责

结论速览

  • 内核的核心作用是硬件抽象:应用通过 /dev/ttyS0 加 write() 使用串口,不需要知道基地址、寄存器偏移和 FIFO 深度。
  • 内核不只管硬件,还管软件资源:谁什么时候运行、能用哪些虚拟地址、占用多少 RAM、谁在等 I/O。
  • 写 HTTP 下载器不用自己实现 TCP/IP,socket 到 connect 背后是内核的协议栈和网卡驱动。
  • open/read/write 是统一接口,数据究竟来自 ext4、UBIFS、SquashFS 还是 tmpfs 由内核决定。

1. Kernel 是系统核心

Linux Kernel 负责管理硬件和系统资源。

主要模块包括:

1
2
3
4
5
6
7
8
9
10
11
CPU / 进程调度
内存管理
MMU
中断
定时器
设备驱动
网络协议栈
文件系统
系统调用
进程间通信
安全与权限

对于 MT7621,Kernel 可能初始化:

1
2
3
4
5
6
7
8
9
10
11
12
CPU
RAM
UART
GPIO
SPI
NAND / NOR
Ethernet
PHY
USB
PCIe
Timer
Interrupt Controller

2. Kernel 最重要的作用:硬件抽象

应用程序通常不直接操作寄存器。

例如串口应用:

1
2
int fd = open("/dev/ttyS0", O_RDWR);
write(fd, buf, len);

调用链:

1
2
3
4
5
6
7
8
9
10
11
应用程序
↓
open / write
↓
系统调用
↓
Linux 串口子系统
↓
MT7621 UART Driver
↓
UART Register

因此上层程序不需要知道:

1
2
3
4
5
UART 基地址
寄存器偏移
FIFO 深度
中断寄存器
波特率寄存器算法

这些由驱动处理。

3. Kernel 也管理软件资源

Kernel 不只是「驱动集合」。

例如两个程序同时运行:

1
2
程序 A
程序 B

Kernel 负责决定:

1
2
3
4
5
哪个进程什么时候运行
各自能访问哪些虚拟地址
谁占用多少 RAM
谁等待 I/O
谁被唤醒

这就是进程调度和内存管理。

4. 网络也是 Kernel 的重要能力

应用调用:

1
2
3
4
socket();
connect();
send();
recv();

背后由 Kernel 完成:

1
2
3
4
5
6
7
8
TCP
IP
ARP
路由
重传
分片
Ethernet
网卡驱动

所以应用写一个 HTTP 下载器,并不需要自己实现 TCP/IP。

5. 文件系统也是 Kernel 管理

应用调用:

1
2
3
4
open();
read();
write();
close();

Kernel 再决定数据实际来自:

1
2
3
4
5
6
7
ext4
UBIFS
SquashFS
tmpfs
procfs
sysfs
devtmpfs

上层 API 基本不变。

这就是 Linux 的抽象能力:

上层使用统一接口,底层由 Kernel 和驱动适配不同硬件。