计算机系统基础习题课 (2022 秋季学期)
课程简介
大家在数字电路里都实现过“状态机”,例如一个计数器内部存储了数字 $x$,每次按下开关执行 $x\leftarrow (x+1)\bmod 3$。计算机系统基础这门课 (以及实验部分) 最重要的 take-away message,就是告诉大家日常使用的计算机本质上也是这么一个状态机。在实验课中,我们会用代码严谨地带大家理解这样的 “状态机” 的状态定义、状态转换,以及与外界的交互方式。
实验课首先承担了大家对 “系统编程” 能力的训练,大家会熟悉 Linux 命令行工具的使用,在将命令行工具变成大家日常生活一部分的同时,完成一系列的编程实验。
理解一个系统的最佳实践就是去实现它。因此在本课程的 PA 部分,你将会在框架代码的基础上实现一个 RISC-V 全系统模拟器 NEMU,它不仅能运行各类测试程序,甚至还可以运行操作系统和 “仙剑奇侠传”。模拟过硬件的执行,自然就能深 (痛) 入 (苦) 理解计算机系统了。
- 计算机系/匡亚明学院:周四 第5-6节 仙II-404 1-16周
- 人工智能学院:周五 第5-6节 仙II-404 1-16周
- 任课教师:王慧妍<why@nju.edu.cn>
- 荣誉顾问:蒋炎岩 <jyy@nju.edu.cn>、余子濠 <yuzihao@ict.ac.cn> (PA 作者)
- 助教:刘瀚之 <jm233333@outlook.com>、陈楚阳 <chuyangchen2018@outlook.com>
课程资料
- The Missing Course of Your CS Education [slides]
- C 语言拾遗1:机制 [slides]
- C 语言拾遗2:编程实践 [slides]
- NEMU 框架选讲1:编译运行 [slides]
- NEMU 框架选讲2:代码导读 [slides]
- 数据的机器级表示 [slides]
- x86-64 选讲 [slides]
- 调试:理论与实践[slides]
- 链接与加载选讲 [slides]
- I/O设备选讲 [slides]
- 系统编程与基础设施 [slides]
- 程序优化选讲[slides]
- 中断与分时多任务[slides]
- 虚拟存储选讲[slides]
- “造轮子”的方法和乐趣[slides]
- 复习&答疑[slides]
实验布置
关于期末实验的通知:
Hard Deadline2 (所有实验作业):2023年1月29日23:59:59,由于助教查重及批改需要时间,过期后不允许提交,所有补交的PA计80%系数(此次整体查重将于1-2天迅速处理,请届时及时关注课程网站)。
Hard Deadline1 (所有实验作业):2023年1月15日23:59:59,在此日期前补提交PA3和PA4计90%系数,其他PA按原计划计80%系数。
PA3和PA4实验,在原设置Deadline前提交(PA3在2022年12月22日前,PA4在2023年1月15日前),可计110%系数,奖励按原要求完成此两次实验。
考虑到学生突然离校及返乡路程需要时间,PA3原设ddl延期至12月22日,PA4保持不变。
PA奖励分可补充到PA或Lab得分,满分封顶,不可补充考试部分。
第三轮抄袭检测结果已公布,请相关同学根据情况邮件联系任课老师。
PA大作业
- PA0: 环境安装与配置 (已截止,DDL: 2022年9月20日23:59:59 (extended))
- PA1: 监视器 (已截止,DDL:2022年10月13日23:59:59 (extended))
- PA2: 模拟指令运行(已截止,DDL:2022年11月20日23:59:59)
- PA3: 中断与异常(已截止,DDL:2022年12月22日23:59:59)
- PA4: 分时多任务(已截止,DDL:2023年1月15日23:59:59)
Lab小作业
每次实验前,请仔细阅读实验须知/提交方法。
- Lab1: 大整数运算(已截止,DDL: 2022年10月16日23:59:59)
- Lab2: x86-64内联汇编(已截止,DDL:2022年11月13日23:59:59)
- Lab3: 性能调优(已截止,DDL:2022年12月4日)
- Lab4: 缓存模拟器(已截止,DDL:2022年12月25日)