从晶体管到网络协议:补全底层认知的硬核路径

很多开发者在代码层面游刃有余,但一旦遇到性能瓶颈、内存泄漏或系统级崩溃,往往只能依赖文档搜索或盲目调参,缺乏对底层机制的直觉判断。这门课程解决的正是这种“知其然不知其所以然”的能力缺口。它不教你使用现成的框架或库,而是通过“造轮子”的方式,强制你理解计算机是如何从物理信号转化为可执行程序,再进一步支撑起网络服务的。适合那些已经具备一定编程基础,但感觉技术天花板触顶、渴望突破到架构师或底层开发领域的学习者。如果你连基本的变量作用域、指针操作都尚未掌握,建议先补齐基础语法;但如果你已经能写业务逻辑,只是对“为什么这样写更快”、“为什么崩溃”感到困惑,那么这里的内容能帮你打通任督二脉。

建议的学习节奏与核心模块侧重

课程涵盖七大模块,贯通硬件、系统与应用层,但建议不要试图一口气吃下所有细节。对于大多数应用层开发者,重点应放在操作系统内核机制与网络协议栈实现这两块。首先,从 Verilog 构建 CPU 入手并非要你成为芯片设计师,而是为了理解指令集、寄存器与流水线概念,这直接关联到后续优化循环与理解编译器优化的底层逻辑。接着,开发 Wind_OS 操作系统环节至关重要,它涵盖了进程管理、内存分配与文件系统操作,这些是理解 Linux 系统行为的关键。建议先啃透 OS 部分,再过渡到基于 Linux 实现 Web 服务器,最后通过自研关系数据库与 TCP/IP 协议栈实战,将底层能力应用到具体业务场景中。不要忽视“晶体管”这一起点,虽然抽象,但它建立了从 0/1 到逻辑门的最初认知闭环,是后续所有模块的逻辑基石。

学完后你能独立解决什么,资料如何配合

学完这门课,你不应再将自己定位为“调用 API 的人”,而是能独立分析系统瓶颈、编写高并发服务器内核模块、甚至调试驱动层问题的工程师。你应当能回答以下问题:当一个 Web 服务器响应缓慢时,如何判断是 CPU 指令执行问题、内存分配碎片化问题,还是网络包处理延迟?当数据库查询慢时,是索引结构选错了,还是底层 B+ 树遍历的效率受限?你能画出从键盘输入到屏幕显示的全链路数据流向,并指出其中可优化的环节。资料包中的代码与实验文件是练习的载体,不要只看不练。建议每完成一个模块(如 CPU 构建或 OS 内核开发),立即在本地环境复现并修改参数观察结果,例如故意制造死锁或内存溢出,再尝试修复。这种“破坏-修复”的练习比单纯阅读代码更能形成肌肉记忆。最终,你的目标不是复现课程项目,而是具备一种通用的底层思维:面对任何技术黑盒,都能通过层层下钻,找到控制其行为的关键变量。

课程介绍

重构计算机专业课,带你手写四大核心模块,硬核筑基,。底层能力缺失 = 技术天花板触顶!当面临性能调优、核心崩溃等硬核场景时,缺乏系统认知的开发者将举步维艰。熟练掌握计算机底层原理更是晋升高级开发、架构师的重要门槛!课程通过 “造轮子式”全流程实践,从晶体管起步→用Verilog构建CPU→开发Wind_OS操作系统→基于Linux实现Web服务器→自研关系数据库→在Wind_OS上实现TCP/IP协议栈,七大模块贯通硬件→系统→应用层,助你硬核筑基,轻松突破技术天花板。

课程目录

├── 第1章 先导片/
│ ├── [110M] 1-1为什么要学习计算机基础?
│ ├── [437M] 1-2课程内容介绍和项目演示
│ └── [486M] 1-3课程部分章节节选试看
├── 第2章 组成原理之:运算器的实现/
│ ├── [ 91M] 2-1组成原理上课程内容介绍
│ ├── [135M] 2-2计算机系统概述
│ ├── [ 55M] 2-3门电路实现
│ ├── [ 69M] 2-4加法器实现
│ └── [ 76M] 2-5乘除法器实现
├── 第3章 组成原理之:存储器的实现/
│ ├── [126M] 3-1寄存器存储器实现
│ ├── [ 13M] 3-2存储器层次结构
│ ├── [108M] 3-3随机存储器SRAM,DRAM,DDR工作原理
│ ├── [ 91M] 3-4高速缓存Cache工作原理
│ └── [ 90M] 3-5辅助存储器,磁盘SSD,RAID工作原理
├── 第4章 组成原理之:CPU的实现/
│ ├── [100M] 4-1cpu指令设计
│ ├── [ 73M] 4-2ALU实现
│ ├── [ 83M] 4-3CPU的实现
│ └── [ 82M] 4-4Computer的实现
├── 第5章 组成原理之:中央处理器和外围设备/
│ ├── [109M] 5-1单周期多周期处理器
│ ├── [ 10M] 5-2中断或异常处理
│ ├── [ 69M] 5-3流水线技术
│ ├── [ 30M] 5-4流水线冒险
│ ├── [ 49M] 5-5并行计算机技术
│ └── [ 41M] 5-6输入输出设备
├── 第6章 组成原理之:结合汇编学习C语言/
│ ├── [ 63M] 6-1组成原理下课程内容介绍
│ ├── [161M] 6-2汇编和C语言结构
│ ├── [ 88M] 6-3常见x86汇编指令介绍
│ ├── [ 50M] 6-4×86指令的格式
│ ├── [ 69M] 6-5C语言函数外
│ ├── [221M] 6-6C语言函数
│ ├── [105M] 6-7C语言语句
│ ├── [ 57M] 6-8C语言运算符
│ ├── [ 75M] 6-9C语言printf函数
│ ├── [101M] 6-10预处理宏定义
│ ├── [ 82M] 6-11整数详解
│ ├── [201M] 6-12整数加减乘除
│ ├── [182M] 6-13类型转换规则
│ ├── [238M] 6-14浮点数
│ ├── [131M] 6-15浮点fpu指令
│ ├── [142M] 6-16浮点sse指令
│ ├── [296M] 6-17指针数组字符串
│ ├── [289M] 6-18结构体联合体枚举
│ ├── [188M] 6-19csapp的data-bomb-attack实验
│ └── [319M] 6-20链接详解
├── 第7章 操作系统之:内核加载执行流程/
│ ├── [ 79M] 7-1i386分段机制
│ ├── [137M] 7-2bootloader加载流程
│ ├── [250M] 7-3内核加载执行
│ ├── [180M] 7-4内核输入输出实现
│ └── [238M] 7-5内核打印函数调用堆栈
├── 第8章 操作系统之:物理内存和中断异常管理/
│ ├── [103M] 8-1操作系统课程内容介绍
│ ├── [150M] 8-2i386分页机制
│ ├── [126M] 8-3i386分页实现
│ ├── [ 95M] 8-4物理内存管理初始化流程
│ ├── [201M] 8-5物理内存管理初始化流程实现
│ ├── [165M] 8-6物理内存分配算法
│ ├── [124M] 8-7物理内存分配算法实现
│ ├── [110M] 8-8中断异常管理
│ ├── [254M] 8-9中断处理代码实现
│ └── [105M] 8-10外部中断使能代码实现
├── 第9章 操作系统之:进程和线程实现/
│ ├── [292M] 9-1内核线程实现
│ ├── [362M] 9-2用户进程实现
│ ├── [118M] 9-3系统调用的实现
│ ├── [118M] 9-4fork系统调用实现
│ └── [ 73M] 9-5wait_exit系统调用实现
├── 第10章 操作系统之:虚拟内存分配/
│ ├── [ 83M] 10-1缺页异常处理
│ ├── [ 65M] 10-2fork写时复制实现
│ ├── [175M] 10-3malloc_free函数实现
│ └── [181M] 10-4页面置换算法介绍及实现
├── 第11章 操作系统之:进程调度和同步互斥/
│ ├── [ 80M] 11-1进程调度算法
│ ├── [123M] 11-2时间片轮转调度算法实现
│ ├── [ 64M] 11-3sleep系统调用实现
│ ├── [226M] 11-4多处理器系统实现
│ ├── [ 49M] 11-5多处理器调度简介
│ ├── [ 68M] 11-6同步互斥自旋锁信号量原子操作介绍
│ ├── [126M] 11-7自旋锁和信号量的实现
│ ├── [138M] 11-8用户态线程实现
│ └── [ 72M] 11-9进程间通信实现
├── 第12章 操作系统之:文件系统/
│ ├── [ 23M] 12-1文件系统介绍
│ ├── [ 91M] 12-2文件系统实现
│ ├── [134M] 12-3文件系统制作代码实现讲解
│ ├── [336M] 12-4文件系统加载的流程
│ ├── [130M] 12-5应用程序读写文件的接口
│ ├── [112M] 12-6大文件支持
│ ├── [ 55M] 12-7main函数参数传递实现
│ └── [127M] 12-8管道pipe的实现
├── 第13章 操作系统之:图形界面实现/
│ ├── [118M] 13-1GUI图形用户界面实现
│ ├── [150M] 13-2桌面程序启动流程
│ ├── [180M] 13-3edit图形应用程序启动流程中文显示
│ └── [ 89M] 13-4鼠标移动,窗口切换移动流程
├── 第14章 Linux程序设计之:shell和进程操作接口/
│ ├── [ 89M] 14-1linux课程内容介绍
│ ├── [ 15M] 14-2linux简介
│ ├── [151M] 14-3linux库函数使用
│ ├── [186M] 14-4shell和环境变量
│ ├── [ 82M] 14-5shell语句和函数
│ ├── [234M] 14-6正则表达式
│ └── [154M] 14-7进程操作接口
├── 第15章 Linux程序设计之:文件操作和信号处理/
│ ├── [122M] 15-1文件操作接口
│ ├── [ 69M] 15-2目录操作接口
│ ├── [169M] 15-3字符编码
│ ├── [175M] 15-4C语言宽字符
│ ├── [894M] 15-5信号使用和实现介绍
│ ├── [128M] 15-6终端介绍
│ ├── [407M] 15-7进程组和会话
│ └── [282M] 15-8信号实验
├── 第16章 Linux程序设计之:手写web服务器/
│ ├── [ 71M] 16-1网络编程接口socket介绍
│ ├── [ 74M] 16-2http协议,web_client,web_server实现
│ ├── [131M] 16-3epoll接口介绍
│ ├── [300M] 16-4epoll实现高并发web_server
│ ├── [173M] 16-5最小堆优先队列实现web_server定时器
│ └── [175M] 16-6get,post参数解析
├── 第17章 Linux程序设计之:静态库和动态库/
│ ├── [132M] 17-1静态库链接
│ ├── [235M] 17-2共享库查找和命名规则
│ ├── [270M] 17-3动态库链接
│ ├── [ 55M] 17-4位置无关可执行文件PIE
│ └── [234M] 17-5linux设备驱动介绍
├── 第18章 算法与数据结构之:排序算法/
│ ├── [134M] 18-1算法课程内容介绍
│ ├── [ 50M] 18-2算法分析简介
│ ├── [190M] 18-3基本数据结构链表,栈,队列
│ ├── [103M] 18-4基本算法思想递归,二分查找,回溯,贪心,分治
│ ├── [160M] 18-5冒泡,选择,插入,希尔排序算法
│ ├── [103M] 18-6归并排序算法
│ ├── [ 92M] 18-7快速排序算法
│ ├── [117M] 18-8二叉堆优先队列
│ ├── [106M] 18-9堆排序算法
│ └── [ 74M] 18-10桶排序,计数排序,基数排序算法
├── 第19章 算法与数据结构之:查找算法/
│ ├── [119M] 19-1数组和链表实现符号表
│ ├── [ 19M] 19-2二叉树
│ ├── [ 87M] 19-3二叉搜索树
│ ├── [ 53M] 19-4AVL树
│ ├── [178M] 19-5红黑树
│ ├── [128M] 19-6散列表
│ ├── [100M] 19-7跳表
│ └── [ 49M] 19-8布隆过滤器
├── 第20章 算法与数据结构之:图算法/
│ ├── [ 43M] 20-1并查集Union-Find动态连通分量
│ ├── [144M] 20-2无向图深度和广度优先搜索
│ ├── [111M] 20-3连通分量,无环图,二分图
│ ├── [121M] 20-4有向图,拓扑排序,强连通分量
│ ├── [279M] 20-5最小生成树,Prim算法,Kruskal算法
│ ├── [268M] 20-6最短路径,Dijkstra算法,Bellman-Ford算法
│ └── [ 91M] 20-7Astar寻路算法
├── 第21章 算法与数据结构之:字符串算法/
│ ├── [174M] 21-1字符串排序算法
│ ├── [ 75M] 21-2单词查找树Tries树
│ ├── [ 71M] 21-3三向单词查找树
│ ├── [131M] 21-4暴力和KMP子字符串查找算法
│ ├── [ 35M] 21-5KMP子字符串查找算法版本2
│ ├── [112M] 21-6BoyerMoore,RabinKarp子字符串查找算法
│ └── [120M] 21-7AC自动机
└── 第22章 算法与数据结构之:动态规划和压缩算法/
├── [ 91M] 22-1正则表达式实现
├── [161M] 22-2霍夫曼压缩算法
├── [100M] 22-3LZW压缩算法
├── [184M] 22-4动态规划算法
├── [ 85M] 22-5碰撞检测,后缀数组
└── [150M] 22-6最大流问题
├── 第23章 数据库之:SQL语句和数据库设计/
│ ├── [175M] 23-1数据库课程内容介绍
│ ├── [114M] 23-2数据库系统介绍关系模型,关系代数
│ ├── [238M] 23-3常用sql语句介绍
│ ├── [173M] 23-4sql练习
│ └── [ 77M] 23-5数据库设计,范式
├── 第24章 数据库之:存储管理和sql解析实现/
│ ├── [ 10M] 24-1数据库管理系统层次结构
│ ├── [ 80M] 24-2存储管理页管理,元数据,缓冲区管理
│ ├── [203M] 24-3存储管理实现元组,系统目录
│ ├── [331M] 24-4页和缓冲区管理实现
│ ├── @www.
│ ├── [175M] 24-5加载元数据信息,创建删除表sql语句解析执行
│ ├── [284M] 24-6增删改查sql语句解析执行
│ └── [307M] 24-7连接,聚合,分组,排序sql语句解析执行
├── 第25章 数据库之:索引实现/
│ ├── [ 58M] 25-1索引概念聚集索引,主索引,静态哈希,动态哈希
│ ├── [ 75M] 25-2B+树特性,B+树增删改查过程
│ ├── [340M] 25-3B+树查找实现
│ ├── [228M] 25-4B+树插入和删除实现
│ └── [144M] 25-5sql中使用索引
├── 第26章 数据库之:查询优化/
│ ├── [120M] 26-1查询优化概念,查询优化步骤
│ ├── [252M] 26-2简单嵌套,块嵌套,索引嵌套,hash连接算法
│ ├── [181M] 26-3排序归并连接算法,外部归并排序算法
│ ├── [196M] 26-4查询优化实现直方图,选择性因子,连接基数计算
… 其余 60 项略,目录共 260 项