计算机系统基础
授课学院
计算机学院
课程学习内容
计算机系统基础,也就是 ICS,是计算机学院的镇院神课。简单来说,这门课是教我们C语言程序是如何一步步在计算机上运行起来的,其内容涵盖以下板块:
-
数据的底层表示:计算机是如何用
0和1表示整数、浮点数和字符的?为什么x + y < x在计算机里可能是真的? -
程序的机器级代码:通过汇编语言(x86-64, RISCV),你将亲眼看到 C 语言的
if、loop、function在 CPU 指令集层面是如何被精准执行的。 -
存储器层次结构:探索 CPU 缓存(Cache)、内存与磁盘之间的速度鸿沟;学习如何编写“对缓存友好”的代码,让程序的性能提升数倍。
-
异常控制流与系统调用:理解操作系统如何通过进程切换实现“并发”;探索信号处理(Signal)以及
fork()是如何创造出“双胞胎”进程的;如何利用中断实现I/O。
“只有理解了系统,你才能真正掌控代码。”
课程配套实验:PA(Programming Assignment)
通过 NEMU(NJU Emulator),从零开始徒手搭建出一个能跑操作系统的模拟计算机。
-
PA1:实现一个简易的调试器(Monitor),学会用寄存器和内存的角度审视程序。
-
PA2:赋予机器灵魂。亲手实现几十个指令(ISA),让 NEMU 真正能“读懂”代码。
-
PA3:穿越虚实的屏障。挑战内存管理与地址转换。理解虚拟内存是如何在硬件层面保护程序的。
-
PA4:见证现代文明。在 NEMU 上构建一个最简单的操作系统,支持多任务切换、异常处理、系统调用等。
课程评价
作为计算机学院的 5 学分大课,这门课程知识含量极高,授课与配套实验质量极高、编程作业难度非常高。PA 实验的难度与工管院的所有编程实验难度都不在一个级别,可以锻炼同学们复杂编程项目的编程能力。
如果你不想只写写简单的算法题和玩具软件,这门课是入门系统级编程的好选择(选了就要好好学,否则有挂科风险)。
虽然是计院大二的课,但如果是跨专业,推荐大三再选。
上课指南
这门课一般在每年秋冬学期开课。2025年的课程分为两个班,两个班课上的授课内容相同,但是实验作业不同。苏丰老师班做的是 x86 版本的 PA 实验,唐杰老师班做的是 RISCV 版本的 PA 实验。两个班的 Lab 作业也不同。苏老师班的实验统一在学校服务器上做,唐老师班是在自己的电脑上做(需要自己配Linux环境,但可以vibe coding)。
我是在唐老师班上的。
成绩构成
期末考试 50%、实验作业 40%、作业 10%。
授课风格
课上不点名、不要求回答问题,知识量大。