路径 — C 开发
本路径面向系统编程、嵌入式开发、内核与驱动开发、高性能计算等底层工程方向。以 C 语言为核心工具,深入操作系统与计算机体系结构,建立从源代码到晶体管级的完整认知。
每学一个概念都用代码验证,每理解一个机制都追溯到汇编或内核源码。最终目标是能在没有魔法帮助的环境 (裸金属、嵌入式 RTOS、自研内核) 下独立完成系统级开发。
目标受众
| 维度 | 描述 |
|---|---|
| 目标 | 系统软件工程师、嵌入式开发、内核/驱动工程师、HPC/性能工程师 |
| 前置 | C 语言基本语法 (至少完成 Phase 1) |
| 适用人群 | 想深入理解计算机底层运行机制的学生和工程师,对”为什么程序这么快/这么慢”有执念的人 |
| 建议周期 | 6-10 个月 (取决于深度) |
Phase 1: C 语言入门 (建议 2 周)
完成后可先做少量简单练习巩固语法。
Phase 2: C 语言深化 (建议 3 周)
Phase 3: 数据结构 (建议 5 周,用 C 实现)
主线按 DSA 学习路线 推进:
Phase 0 — 数组与字符串基础:
Phase 1 — 线性结构与排序:
Phase 2 — 核心数据结构:
Phase 3 — 进阶:
选学:
C 语言底层参考 (手写实现):
Phase 4: 深入底层 — 操作系统与计算机原理 (建议 3 周)
数据结构讲述”容器怎么做”,深入底层回答”为什么这样做”。建议学完数据结构的 Phase 1(容器/链表/栈/队列)之后进入本 Phase,再回去继续数据结构 Phase 2-3。
操作系统 (教程索引):
- A 操作系统概述 — 用户态/内核态、中断、系统调用
- B 进程管理 — 进程内存布局、栈段与堆段、上下文切换
- F 内存管理 — 虚拟内存、页表、缺页中断流程、TLB
- G 内存分配器 — malloc/free/realloc 实现原理、ptmalloc 架构、碎片
以上四篇为衔接数据结构的核心篇目,其余可选:
- C 线程与并发 — 原子操作、缓存一致性、伪共享
- D CPU调度 — 就绪队列、CFS 与红黑树
- E 同步与死锁 — 锁、信号量、死锁
- H 文件系统 — inode、VFS、描述符
- I 进程间通信 — 管道、共享内存、信号
计算机原理 (教程索引):
- B 缓存层级 — cache line、空间局部性、cache miss 的代价、伪共享
- A 数据表示 — 二进制补码、字节序(大小端)、内存对齐、浮点表示
- C CPU架构 — 流水线、分支预测、乱序执行、SIMD
以下可选:
Phase 5: 算法技巧 (建议 3 周)
- 顺序结构
- 分支
- 循环
- 数组
- 函数与结构体
- 排序应用
- 暴力枚举
- 二分查找
- 二分答案
- 前缀和
- 差分
- 双指针
- 滑动窗口
- 贪心
- 递推与递归
- BFS
- 动态规划
- 字符串
- 模拟与高精度
- 下标技巧
- 图论算法
- 连通性
- 概率与期望
- 优化
Phase 6: 汇编基础 (建议 2 周)
Phase 7: 系统内核 (建议 4 周)
C 标准库参考 (按需查阅)
容器类库:
功能类库:
推荐阅读物
- The C Programming Language (K&R)
- Understanding the Linux Kernel
- Linux Kernel Development (Robert Love)
- Computer Systems: A Programmer’s Perspective (CS:APP)
- Advanced Programming in the UNIX Environment (APUE)
- The Linux Programming Interface
语言官方文档
- ISO C Standard: https://www.open-std.org/jtc1/sc22/wg14/
- GNU C Library Manual: https://www.gnu.org/software/libc/manual/
- Linux Kernel Documentation: https://docs.kernel.org/
- GCC Online Documentation: https://gcc.gnu.org/onlinedocs/