从晶体管到网络协议:补全底层认知的硬核路径
很多开发者在代码层面游刃有余,但一旦遇到性能瓶颈、内存泄漏或系统级崩溃,往往只能依赖文档搜索或盲目调参,缺乏对底层机制的直觉判断。这门课程解决的正是这种“知其然不知其所以然”的能力缺口。它不教你使用现成的框架或库,而是通过“造轮子”的方式,强制你理解计算机是如何从物理信号转化为可执行程序,再进一步支撑起网络服务的。适合那些已经具备一定编程基础,但感觉技术天花板触顶、渴望突破到架构师或底层开发领域的学习者。如果你连基本的变量作用域、指针操作都尚未掌握,建议先补齐基础语法;但如果你已经能写业务逻辑,只是对“为什么这样写更快”、“为什么崩溃”感到困惑,那么这里的内容能帮你打通任督二脉。建议的学习节奏与核心模块侧重
课程涵盖七大模块,贯通硬件、系统与应用层,但建议不要试图一口气吃下所有细节。对于大多数应用层开发者,重点应放在操作系统内核机制与网络协议栈实现这两块。首先,从 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 项






