工具内核
数据库、浏览器、消息队列等复杂软件内部的”内核”——存储引擎、渲染引擎、调度引擎。
为什么学”工具内核”
大多数工具软件不是”操作系统”, 但它们都包含一个”内核”——例如 SQLite 的 VDBE 虚拟机和 B-Tree 存储层, Nginx 的 epoll 事件循环和状态机。这些内核的设计原则与操作系统内核高度同构: 资源管理 (内存/磁盘/网络)、并发控制 (锁/MVCC)、虚拟化 (VDBE 字节码/Blink Layout)、调度 (事件循环/帧循环)。
文件索引
| 文件 | 内容 | C/C++ 关联 |
|---|---|---|
| SQLite内核 | tokenizer→parser→codegen, VDBE 虚拟机, B-Tree 存储, Pager+WAL, OS 抽象层 | [[../../ISSUES |
| Redis内核 | ae 事件循环, SDS/skiplist/dict, RDB+AOF 持久化, 主从复制 | [[../../ISSUES |
| MySQL内核 | InnoDB: B+Tree, MVCC, buffer pool, redo/undo log, 隔离级别; 查询优化器 | [[../../ISSUES |
| Chromium渲染内核 | Blink 渲染管线: HTML→DOM→Layout→Paint→Composite, V8 集成, GPU 合成 | [[../../ISSUES |
| Kafka核心 | 不可变追加日志, 分区, 消费者组 offset 管理, ISR 复制 | [[../../ISSUES |
| Nginx事件驱动内核 | master+worker 进程模型, epoll 事件循环, HTTP 阶段状态机, 共享内存 | [[../../ISSUES |
阅读路径
SQLite内核 → Redis内核 → MySQL内核 → Nginx事件驱动内核 → Kafka核心 → Chromium渲染内核
- 从最简单的 SQLite (单文件嵌入式) 开始, 理解存储内核的基础
- 然后看 Redis (内存存储), 理解事件循环和数据结构的融合
- 再到 MySQL (磁盘存储 + 事务), 理解 ACID
- 然后进入网络: Nginx (事件驱动 + HTTP), Kafka (分布式日志)
- 最后是 Chromium (渲染 + V8 集成), 综合应用
相关模块
- [[|系统内核]] — 文件系统、并发、进程模型
- C 与 Rust 的内核新时代 — 系统编程语言的演进