结论速览
- 内核的核心作用是硬件抽象:应用通过
/dev/ttyS0加write()使用串口,不需要知道基地址、寄存器偏移和 FIFO 深度。 - 内核不只管硬件,还管软件资源:谁什么时候运行、能用哪些虚拟地址、占用多少 RAM、谁在等 I/O。
- 写 HTTP 下载器不用自己实现 TCP/IP,
socket到connect背后是内核的协议栈和网卡驱动。 open/read/write是统一接口,数据究竟来自 ext4、UBIFS、SquashFS 还是 tmpfs 由内核决定。
1. Kernel 是系统核心
Linux Kernel 负责管理硬件和系统资源。
主要模块包括:
1 | CPU / 进程调度 |
对于 MT7621,Kernel 可能初始化:
1 | CPU |
2. Kernel 最重要的作用:硬件抽象
应用程序通常不直接操作寄存器。
例如串口应用:
1 | int fd = open("/dev/ttyS0", O_RDWR); |
调用链:
1 | 应用程序 |
因此上层程序不需要知道:
1 | UART 基地址 |
这些由驱动处理。
3. Kernel 也管理软件资源
Kernel 不只是「驱动集合」。
例如两个程序同时运行:
1 | 程序 A |
Kernel 负责决定:
1 | 哪个进程什么时候运行 |
这就是进程调度和内存管理。
4. 网络也是 Kernel 的重要能力
应用调用:
1 | socket(); |
背后由 Kernel 完成:
1 | TCP |
所以应用写一个 HTTP 下载器,并不需要自己实现 TCP/IP。
5. 文件系统也是 Kernel 管理
应用调用:
1 | open(); |
Kernel 再决定数据实际来自:
1 | ext4 |
上层 API 基本不变。
这就是 Linux 的抽象能力:
上层使用统一接口,底层由 Kernel 和驱动适配不同硬件。