计算机系统基础习题课 (2020 秋季学期)

截止日期

Hard Deadline (所有实验作业): 2021 年 1 月 24 日 23:59:59 (以服务器时间为准)。

期末考试时可以提交书面作业;如忘记带可以交给助教 (计算机楼 315,杨嘉文)


课程简介

大家在数字电路里都实现过“状态机”,例如一个计数器内部存储了数字 $x$,每次按下开关执行 $x\leftarrow (x+1)\bmod 3$。计算机系统基础这门课 (以及实验部分) 最重要的 take-away message,就是告诉大家日常使用的计算机本质上也是这么一个状态机。在实验课中,我们会用代码严谨地带大家理解这样的 “状态机” 的状态定义、状态转换,以及与外界的交互方式。

实验课首先承担了大家对 “系统编程” 能力的训练,大家会熟悉 Linux 命令行工具的使用,在将命令行工具变成大家日常生活一部分的同时,完成一系列的编程实验。

理解一个系统的最佳实践就是去实现它。因此在本课程的 PA 部分,你将会在框架代码的基础上实现一个 x86 全系统模拟器 NEMU,它不仅能运行各类测试程序,甚至还可以运行操作系统和 “仙剑奇侠传”。模拟过硬件的执行,自然就能深 (痛) 入 (苦) 理解计算机系统了。

  • 计算机系/匡亚明学院:周四 16:10-18:00 仙 I-103
  • 人工智能学院:周五 14:00-16:00 仙 II-117
  • 任课教师:蒋炎岩 <jyy@nju.edu.cn> 视频回看
  • 助教:欧先飞 <ouxianfei@smail.nju.edu.cn>、屈道涵 <whuqdh@126.com>
  • 顾问:余子濠 <yuzihao@ict.ac.cn> (万恶之源、PA 作者)

课程资料

  1. The Missing Course of Your CS Education | PA0: 开发环境配置
  2. C 语言拾遗 (1): 机制 | PA1: 监视器
  3. C 语言拾遗 (2): 编程实践 | HW1: 数据的机器级表示 | Lab1: 大整数运算
  4. NEMU 框架选讲 (1): 编译运行 | PA2: 模拟指令执行
  5. NEMU 框架选讲 (2): 代码导读
  6. 数据的机器级表示 | HW2: 程序的机器级表示 | Lab2: x86-64 内联汇编
  7. x86-64 选讲
  8. 链接与加载选讲 (基础班) | PA3: 中断和异常
  9. AbstractMachine 选讲 | HW3: 程序的链接
  10. I/O 设备选讲 | Lab3: 性能分析
  11. 调试:理论与实践
  12. 系统编程与基础设施 | HW4: 层次结构存储系统
  13. 中断与分时多任务 | Lab4: 缓存模拟器 | PA4: 分时多任务
  14. 虚拟存储选讲
  15. “造轮子” 的方法与乐趣
  16. 复习 & 答疑