计算机系统基础实验选修课 (2024 秋季学期)
由于本人出差,第四周课(9月24日)调整至周二(9月23日)上午3-4节上课,上课地点为逸夫楼B-104,麻烦相互通知!
本年度为首次软件学院开设本课程(计算机系统基础实验选修,即PA实验课),相应课程内容及授课方式会根据软院课程设计有所调整。
课程为选修课,但课程实验压力大(足够困难但也能够带来足够训练与提升),请同学们评估自身课程压力,谨慎选择!(合理劝退一波>_<)
原AI学院及匡院授课问题请联系刘杰老师<liujie@nju.edu.cn>。
课程简介
大家在数字电路里都实现过“状态机”,例如一个计数器内部存储了数字 $x$,每次按下开关执行 $x\leftarrow (x+1)\bmod 3$。计算机系统基础这门课 (以及实验部分) 最重要的 take-away message,就是告诉大家日常使用的计算机本质上也是这么一个状态机。在实验课中,我们会用代码严谨地带大家理解这样的 “状态机” 的状态定义、状态转换,以及与外界的交互方式。
实验课首先承担了大家对 “系统编程” 能力的训练,大家会熟悉 Linux 命令行工具的使用,在将命令行工具变成大家日常生活一部分的同时,完成一系列的编程实验。
理解一个系统的最佳实践就是去实现它。因此在本课程的PA 部分,你将会在框架代码的基础上实现一个 RISC-V 全系统模拟器 NEMU,它不仅能运行各类测试程序,甚至还可以运行操作系统和 “仙剑奇侠传”。模拟过硬件的执行,自然就能深 (痛) 入 (苦) 理解计算机系统了。
- 软件学院:周三 第5-6节 仙1-206 1-17周
- 任课老师:王慧妍<why@nju.edu.cn>[授课视频]
- 荣誉顾问:蒋炎岩<jyy@nju.edu.cn> 余子濠<yuzihao@ict.ac.cn>(PA作者)
- 助教组:
- 查重助教:李晗 <hanli@smail.nju.edu.cn> 鲁思成 <502024330035@smail.nju.edu.cn>
- 答疑助教:晁宇豪 <221240013@smail.nju.edu.cn> 周越洋 <1035711820@qq.com>
课程资料
- The Missing Course of Your CS Education [slides]
- Linux and C语言拾遗初探 [slides]
- C 语言拾遗:机制与实践 [slides]
- 框架代码选讲1:编译运行 [slides]
- 框架代码选讲2:代码导读 [slides]
- 数据的机器级表示 [slides]
- ABI与内联汇编 [slides]
- I/O设备 [slides]
- 链接与加载 [slides]
- 系统编程与基础设施 [slides]
- 调试和经验分享[分享1-李晗][分享2-晁宇豪][分享3-周越洋]
- 中断与分时多任务[slides]
- 程序性能优化选讲[slides]
- 虚拟存储选讲[slides]
- “造轮子”的方法和乐趣[slides]
实验布置
第三轮抄袭检测结果已公布,请相关同学根据情况邮件联系任课老师(无联系则按默认情况处理)。
PA大作业
DDL仅代表bonus计分截点,所有实验过时间均可继续提交算分,Hard Deadline后(暂定2024年1月22日23:59:59)停止所有提交,
- PA0: 环境安装与配置 (DDL: 2024年9月22日23:59:59)
- PA1: 监视器 (DDL: 2024年10月20日23:59:59)
- PA2: 模拟指令运行 (DDL: 2024年11月23日23:59:59 (extended))
- PA3: 中断与异常 (DDL: 2024年12月29日23:59:59)
- PA4: 分时多任务 (DDL: 2024年1月22日23:59:59)
Lab小作业
每次实验前,请仔细阅读[实验须知/提交方法]。
- Lab1: 大整数运算(DDL: 2024年10月27日23:59:59)
- Lab2: x86-64内联汇编(DDL: 2024年11月23日23:59:59 (extended))
- Lab3: 性能调优(DDL:2024年12月8日23:59:59)
- Lab4: 缓存模拟器(DDL:2024年12月22日23:59:59)