计算机基础实战课 · 深度学习指南(细化版)

作者:彭东(手写 CPU 系列)| 真实结构:42 讲正文 + 加餐/福利(共 61 个文件) 定位:以「手写一颗 RISC-V mini CPU」为主线,把计算机底层串起来——不是泛泛讲概念,而是让你真的看懂「代码怎么变成电路、怎么跑起来」。


一、这门课到底讲什么

很多「计算机基础」课只是画个冯·诺依曼结构图就完事,这门课不一样——它让你亲手写一颗 CPU:从硬件描述语言(Verilog)到指令架构(RISC-V),一步步实现取指、译码、执行、访存、写回五级流水线,最后跑通 Hello World。

学完这条主线,再往上层走:C 语言、内存、进程、文件系统、浏览器原理,你会发现全部「通了」。


二、真实讲次大纲(按模块)

模块 1:指令集与 CPU 设计(第 1–13 讲)

讲次核心知识点课程原案例
01CISC vs RISC 的由来复杂指令集 vs 精简指令集的历史
02RISC 特性;RISC-V 为什么是「半导体的 Linux」开源指令集的红利
03–04硬件语言筑基(Verilog);代码怎么生成电路从 Verilog 到门电路
05RISC-V 指令架构优势精简、模块化、可扩展
06–11手写 CPU 五级流水线:取指→译码→执行→访存→写回mini CPU 完整实现
12–13QEMU 构建、跑通 RISC-V 的 Hello World真实跑起来

模块 2:从高级语言到机器指令(第 14–22 讲)

讲次核心知识点
14–15C 语言怎么抽象执行逻辑;编译器「搬砖」日常
16–22RISC-V 指令精讲:算术、跳转、原子、加载、访存指令的实现与调试

模块 3:内存与进程(第 23–32 讲)

讲次核心知识点课程原案例
23–24内存地址空间;虚拟内存与物理内存地址的三种产生方式
25–27堆与栈;延迟分配三种机制;Linux 应用内存管理堆栈区别
28进程调度:应用为什么能「并行」时间片与调度
29–30进程间通信(Linux IPC)管道、消息队列、共享内存
31–32IO Cache、IO 调度;Linux 如何管外设外设通信

模块 4:文件系统(第 33–36 讲)

讲次核心知识点
33iotop / iostat 命令背后的原理
34–36文件与文件系统;Linux 如何存放文件(inode、目录、挂载)

模块 5:浏览器原理与内功心法(第 37–42 讲)

讲次核心知识点
37–38浏览器为什么要多进程模型;进程通信与网络渲染
39源码解读:V8 执行 JS 代码全过程
40–41内核和后端通用的设计思想(内功心法)
42性能调优:eBPF 与调优方法

三、必须吃透的核心知识点

  1. 五级流水线:CPU 不是「做完一条再做下一条」,而是像流水线一样同时处理多条指令的不同阶段。取指、译码、执行、访存、写回五个阶段并行——这是 CPU 能「每秒几十亿条指令」的根本原因。

  2. 虚拟内存:每个程序都以为独占一整块内存,其实是操作系统用「页表」把虚拟地址映射到物理地址。这正是阶段一《内存知识》要深入的主题,两门课互为表里。

  3. 进程调度:为什么你同时开浏览器、听歌、写代码,感觉它们在「同时」跑?因为 CPU 在极短的时间片里快速切换进程。

  4. 内功心法(第 40–41 讲是精华):内核和后端通用的设计思想——分层、抽象、缓存、异步。学完你会发现「Linux 内核」和「你的后端服务」用的是同一套设计哲学。


四、引发思考

  1. RISC 和 CISC 的本质区别?为什么手机(ARM,RISC)和服务器(x86,CISC)走了不同路线,现在又在「精简」上殊途同归?
  2. 手写 CPU 时,「译码」模块到底在做什么?为什么说它是「把 0/1 翻译成动作」的关键?
  3. 虚拟内存解决了哪两个问题?(隔离 + 超卖)没有它,多进程会怎样?
  4. 堆和栈的区别,除了「大小、方向」,在「分配速度」和「生命周期」上还有什么本质不同?
  5. 浏览器为什么用「多进程」而不是「多线程」?(一个标签页崩溃不拖垮整个浏览器)

五、学完自测

  • 能画出 CPU 五级流水线,并说出每一级干什么
  • 能解释「虚拟地址 → 物理地址」的映射过程
  • 能说出进程调度为什么让程序「看起来在并行」
  • 能说清「文件系统」和「块设备」的分层关系

配套建议:先读本课建立「从电路到进程」的全景,再精读《编程高手必学的内存知识》把内存这块吃透。