目录

计算机系统实践

本仓库https://www.gitlink.org.cn/edu_open_resource/computer-systems-practice 课程主页(头歌 / educoder)https://gitlink.educoder.net/paths/fyka9x35 课程方向:计算机系统 — 操作系统 开课单位:湖南大学 · 头歌教研中心 · 超算开源社区

本仓库是头歌(educoder)平台 《计算机系统实践》 课程的 CCF GitLink 开源镜像版。课程内容、章节结构、实践项目均源自湖南大学教学团队在头歌平台发布的同名开放课程;本仓库的目的是为该课程提供一个 可在 GitLink 上托管、检索、协作、二次开发 的开源版本,方便师生在版本控制环境下跟踪学习进度、提交实验、积累教学资源。


1. 课程概述

计算机系统底层机制、编译原理与 CPU 体系结构是计算机类专业的核心实践方向。本课程以计算机系统核心知识的贯通实践为主线,涵盖数据位运算、指令集架构、CPU 设计与实现、编译器实现等关键知识。通过《深入理解计算机系统》经典实验、VSCPU 硬布线控制器设计、VSPM 自创原型机实现、miniCC 编译器全流程开发等层层递进的实操项目,帮助学生打通从高级语言代码到硬件执行的完整链路,培养底层系统思维与工程创新能力。

课程聚焦两大技术主线:

  1. 《深入理解计算机系统》经典实验 — 依托 CS:APP 课程的经典实验体系(Data Lab、Bomb Lab、Attack Lab、Cache Lab、Malloc Lab),由表及里、逐层递进地培养与夯实学习者的底层系统能力。
  2. 计算机系统核心知识的贯通实践 — 从指令集结构、RTL 描述、CPU 原型机设计到 VSPM 模拟器与 miniCC 编译器,覆盖从位运算到编译器、从逻辑门到处理器的完整链路。

整体而言,本课程从位运算到编译器、从逻辑门到处理器,层层递进构建起完整的计算机系统实践体系,帮助学习者全面掌握底层系统软件与 CPU 设计的核心能力,能够独立完成从编译器开发到处理器实现的全流程项目。


2. 课程统计

指标 数值
章节数 3
学习单元 13
实践关卡 107
视频资源 30
课件资源 16
学习人数 13,710
课程评分 ⭐ 5.0 / 5.0

3. 学习目标

学习者在完成本课程后,应当能够:

  1. 理解底层机制 — 掌握数据位运算、高速缓存原理、内存管理、指令流水线等核心机制;能针对软硬件协同设计需求分析指令集架构对 CPU 性能的影响;运用系统能力对计算机系统及嵌入式领域的复杂问题进行正确建模与分析。
  2. 独立开发软硬件模块 — 运用 Java 及编译原理知识完成编译器(词法/语法/语义分析到代码生成)或 CPU 原型机(数据通路、控制单元、微程序)等模块的设计与实现;理解编译器优化与硬件并行度的权衡关系;具备独立开发与调试软硬件系统的能力。
  3. 全链路工程落地 — 分析从高级语言程序到处理器指令执行的全链路工程问题,给出软硬件协同设计、编译器与 CPU 联合优化的解决方案,完成从需求分析、模块划分到系统集成的完整项目落地。

4. 适合的学习者

  • 本科生 / 研究生:希望系统性掌握计算机底层系统能力的计算机、软件工程、电子信息等相关专业学生
  • 社会自学者:对编译器开发、CPU 设计、软硬件协同技术感兴趣
  • 职场转型者:面向系统软件研发、芯片设计、嵌入式开发等领域寻求转型的人士

5. 实验环境

类别 工具 / 库
操作系统 Linux
编译工具链 GCC、Makefile、GDB
版本控制 Git
硬件描述 Verilog、FPGA 开发板
系统编程 C / C++ 编译器
编译器实现 Java、JavaCC

6. 教学团队

姓名 单位 身份 角色
杨科华 湖南大学 副教授 课程负责人
赵 欢 湖南大学 教 授 主讲教师
肖雄仁 湖南大学 副教授 主讲教师
佘兢克 湖南大学 副教授 主讲教师
黄丽达 湖南大学 副教授 主讲教师
刘 彦 湖南大学 副教授 主讲教师
彭亚琼 湖南大学 副教授 主讲教师
李海艳 头歌教研中心 部门管理者 教研支持
超算课程 超算开源社区 讲 师 社区支持

7. 课程结构

本课程共 3 章节 / 13 学习单元。每个学习单元在头歌平台对应一个独立的学习入口,下表已为每个单元生成直达链接。

第一章节 — 综合实践

本章以经典系统编程实验与编译器开发为核心,依托 Datalab、Bomb Lab、Attack Lab、Cache Lab 及 Malloc Lab 等 CS:APP 实验,从位运算、逆向工程到缓存模拟与内存分配,逐层深入程序底层行为与漏洞机理。

编号 单元名称 educoder 直达
1-1 课程实验 前往学习
1-2 拓展实验 前往学习

第二章节 — CPU 设计

本章围绕指令集架构、RTL 描述与 CPU 原型机设计展开,从指令格式、冯·诺依曼结构到 CPU 指令周期建立硬件抽象模型,通过 VSCPU 的硬布线控制与微程序控制器设计,逐步完成状态图分析、ALU、数据通路、控制单元及控制信号生成与验证;同时依托 VSPM 自创原型机,提供完整设计文档、递进实验 PPT 及 FPGA 板级演示,让学生亲手搭建可运行的处理器,并结合 8085 体系结构对比分析,培养从指令集设计到硬件实现的完整 CPU 工程能力。

编号 单元名称 educoder 直达
2-1 指令集结构及计算机硬件基本组成 前往学习
2-2 RTL 语言及其数字系统描述 前往学习
2-3 CPU 设计规范 前往学习
2-4 VSCPU 设计 前往学习
2-5 VSPM(自创原型机)的设计与实现 前往学习
2-6 拓展 — 简单 CPU 的缺点 & 8085 CPU 前往学习
2-7 * 本章课件 课件入口
2-8 * 本章讨论题 讨论题入口

* 2-7、2-8 为补充材料(课件包 / 讨论题),不计入 13 个打卡 Issue。

第三章节 — VSPM 与 miniCC

通过编译器、VSPM 模拟器的递进设计与优化,覆盖词法分析、语法分析、语义分析、中间代码生成与目标代码生成及指令级模拟执行的完整流程,帮助学生打通从源代码到可执行文件的编译—链接—执行全链路,夯实系统软件开发与调试能力。

编号 单元名称 educoder 直达
3-1 VSPM 1.0 前往学习
3-2 miniCC 1.0 前往学习
3-3 VSPM 2.0 前往学习
3-4 miniCC 2.0 前往学习
3-5 miniCC 3.0 前往学习

8. 实操演练

本课程秉持 “做中学 (Learning by Doing)” 原则,实验演练贯穿全部 13 个学习单元。所有实操围绕真实学习场景设计:

  • 位级实验(CS:APP Data Lab) — 受限的位级运算操作,深入理解 IEEE 754 与整数编码
  • 逆向工程(CS:APP Bomb Lab) — 静态分析 + 动态调试破解”二进制炸弹”
  • 漏洞利用(CS:APP Attack Lab) — 栈缓冲区溢出、ROP 攻击与内存安全
  • 缓存模拟(CS:APP Cache Lab) — 高速缓存模拟器的设计与实现
  • 内存管理(CS:APP Malloc Lab) — 动态内存分配器与堆管理
  • CPU 原型机(VSCPU / VSPM) — 从状态图到控制信号,硬布线 + 微程序控制器
  • 编译器(miniCC 1.0 → 3.0) — 从词法分析到目标代码生成的完整链路

核心要求:学习者需跟随章节进度,在 educoder 平台完成每个单元的全部实践关卡(合计 107 个关卡),并在本仓库提交对应的实操产出(代码、笔记、反思)。


9. 课程打卡指引

为记录学习成长轨迹,本课程采用 “Issue 评论打卡” 方式。学习者在完成每个学习单元后,请在对应 Issue 下方点击”添加评论”,提交学习心得与实操产出。

每个 Issue 模板均提供:

- 学习时长:XX 分钟
- 掌握程度:★★★☆☆
- 学习心得:...
- 实操截图:(可选)
- 相关链接:(educoder 关卡链接 / 个人代码仓库)

打卡 Issue 列表(与第 7 节单元表一一对应):

  • 【打卡】任务 1 — 1-1 课程实验
  • 【打卡】任务 2 — 1-2 拓展实验
  • 【打卡】任务 3 — 2-1 指令集结构及计算机硬件基本组成
  • 【打卡】任务 4 — 2-2 RTL 语言及其数字系统描述
  • 【打卡】任务 5 — 2-3 CPU 设计规范
  • 【打卡】任务 6 — 2-4 VSCPU 设计
  • 【打卡】任务 7 — 2-5 VSPM(自创原型机)的设计与实现
  • 【打卡】任务 8 — 2-6 拓展 — 简单 CPU 的缺点 & 8085 CPU
  • 【打卡】任务 9 — 3-1 VSPM 1.0
  • 【打卡】任务 10 — 3-2 miniCC 1.0
  • 【打卡】任务 11 — 3-3 VSPM 2.0
  • 【打卡】任务 12 — 3-4 miniCC 2.0
  • 【打卡】任务 13 — 3-5 miniCC 3.0

10. 文档导航


11. 共创与贡献

本课程仓库为开放共创模式,欢迎所有学习者参与贡献。

贡献方向

  • 补充各章节的实操笔记 / 经验总结 / 常见错误排查
  • 贡献优秀的学习案例(请确保已脱敏)
  • 分享好用的学习工具 / 调试技巧 / 教学视频
  • 修复各章节文档中的错漏之处
  • 提交新章节、新实验、新编译器版本的镜像

贡献方式

  • 通过仓库提交 Issue 进行提问、讨论或分享心得
  • 通过 Pull Request 提交文档改进或新增内容
  • 教学团队成员可通过直接推送方式更新主分支

12. 如何使用此仓库

  1. 渐进式学习:按照章节顺序推进,结合头歌平台视频与本仓库文档

  2. 完成闭环:每章学习后,在 educoder 平台完成实操关卡,并回到本仓库对应 Issue 打卡

  3. 资源获取:仓库 docs/ 目录下包含各章节的详细文稿与术语表

  4. 问题反馈:在仓库 Issues 中带图提交,便于团队与同学共同解答

  5. 本地克隆

    git clone https://www.gitlink.org.cn/edu_open_resource/computer-systems-practice.git
    cd computer-systems-practice

13. 技能标签

符号解析 · 重定位 · elf · 编译器 · Java · JavaCC · 一维指针 · 一维数组 · 函数 · bitAnd() · getByte() · conditional() · howManyBits() · bitCount() · logicalShift() · 拆弹小白 · 找规律 · 跳转表 · 递归 · 条件判断 · 数组 · 多重循环 · 解题大神 · ROP 攻击 · gdb 调试 · x86-64 汇编 · 内存优化 · 模拟器设计 · VSPM 1.0 · 四元组


14. 许可说明

本课程仓库尚未指定许可证。课程创建者可后续添加 LICENSE 文件。

推荐许可证选项

  • MIT License(宽松)
  • Apache 2.0(允许专利授权)
  • CC BY-SA 4.0(知识共享)
  • MulanPSL-2.0(中文开源)

本仓库中所有教学内容的原始版权归湖南大学教学团队与头歌(educoder)平台所有。本仓库仅作为该课程的开源镜像与协作入口,不替代头歌平台的官方学习环境。


15. 关联链接


课程仓库:https://www.gitlink.org.cn/edu_open_resource/computer-systems-practice 最后更新:2026-06-01

关于

计算机系统实践 - 头歌开源课程镜像仓库(CCF GitLink 版)

47.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号