跳转至

计算机系统基础 - 戴海鹏,汪亮

基本信息

  • 课程号: 22000100
  • 任课教师: 戴海鹏,汪亮
  • 上课专业: 信计,计科

评价 1

评价者信息

Tag:保研;Rank 5%;2023 Fall修课

Score:94

分班

该课程分为:大班、拔尖班两个体系,两者在实验上有显著区别。大班的实验为 x86 平台的大班 PA,难度较低;拔尖班的实验为 RISCV 平台的主线 PA,相比于大班难度较高。具体区别见:2024 PA 手册 的 FAQ 部分。

关于老师

大班 ICS 推荐实验为汪亮老师的班。汪亮老师讲课逻辑清晰,熟悉实验框架;待人温和、乐于解答同学疑惑,也会在某些不确定答案的问题上与同学长时间探讨。理论课老师是谁并不重要,但理论课知识比较重要。

前置知识

C 语言

课程内容

课程内容主要涵盖:

  • 计算机硬件基础(对应 PA1)
  • ELF 文件结构(对应 Lab)
  • ISA 与 x86 基础指令(对应 PA2)
  • 层次存储系统(对应 PA3)
  • IO(对应 PA4)

作业、考试与得分

课程的主体部分是 Lab 与 PA:

  • Lab 是 CSAPP 的实验改版,旨在建立对 ELF 文件运行过程的概念。共有 3 个 Lab,每个完成约需要 6 小时。
  • PA(Programming Assignment)可见 2024 PA 手册,任务是从 CPU 开始模拟一个完整的最小 x86 计算机系统,并最终在其上运行一个小游戏。
  • (笔者为 C 系语言的熟练使用者)大班 PA 有 4 个部分,其中 PA1 与 PA4 任务较少(PA4 主体部分由于难度较高被设为选做),约需 5 小时;PA2 与 PA3 为主体部分,各自分设 3 个子任务,平均每个子任务的完成并完全搞懂时间约为 8 小时。完整的 PA 共耗时 60 小时左右。
  • 如果只追求 PA 的通过,耗时会少很多。但相应地,你会失去对框架代码的了解,和对计算机系统的深入理解机会。

除此之外,有一些理论课的动笔作业,量不是很大,难度非常基础。

考试只与理论课相关,题型与作业的重合度很高。但时间很紧,期末考试普遍得分不高(80 左右)。综合 PA 得分(大部分人获得了 PA 满分)基本有 90 左右。

工作量

实验工作量见上一节。

期末考试的复习点很碎,完整过一遍搞明白大约 3~6 小时。

学习指南

这门课推荐的打开方式是: 上理论课建立基本概念 → 通过作业搞懂理论课知识 → 通过Lab/自己动手在机器上实验深入理解理论课知识 → 完成 PA;后面的每次实操都是在加深对理论概念的理解。

这门课讲的就是 x86,而 x86 的机器就在你手上;遇到任何不懂的,与其直接提问寻求帮助,不如自己先写个小 demo 做实验。

其他

这是一门付出很大、收获很大的课程,能为之后实操 Linux 和 OS 实验奠定坚实基础。在 NJU 的课程体系里,ICS 与 OS 共同构成了一般意义上完整的「操作系统」课程。NJU 将这两门课拆开,分别设计了高难度的实验(PA、jyyOS),是为了让同学们能够经受更完备、更严苛的毒打,成长为一个更合格的“科班”程序员。因此请珍惜实验机会,尽量不要主动借鉴网络上现成的代码;即使借鉴也务必搞清楚前因后果。

这门课的内容会在之后各种场合反复出现,例如:考研 408、保研笔试面试、找工作面试、日常 Linux 运维、故障 bug 排查……推荐所有人群选修并高质量完成实验。

如何贡献

请查看评价指南了解如何评价课程!

评论