背景回顾:大家已经有多年的操作系统使用经验,也知道 “操作系统” 是一门很重要的课程,但很可能无法回答好 “操作系统到底是什么”、“为什么重要” 这样的问题。我们将在一学期的时间里回答这些问题,并建立操作系统相关的基本概念、思想方法和编程技巧。
本讲内容:个人/课程简介、操作系统的发展历史,在 AI 时代的背景下回答三个问题:
在这个模拟器中,整个计算机系统的状态都被封装在一个结构体中 (包括内存!是的,的确有内存也封装在一起的 CPU,例如全志 D1s) :
struct CPUState {
// Processor internal state
uint32_t regs[32], csrs[CSR_COUNT];
// Memory state
uint8_t *mem;
uint32_t mem_offset, mem_size;
};
而你完全可以把 rv32ima_step
理解成是数学意义上的函数:它根据当前的 CPUState,计算出执行一条指令后的 CPUState。虽然我们的课程中不再强调硬件的知识,但在思考问题时,心中总是记得程序 (指令) 执行时有一个 “状态机模型” 能够帮助你理清思路。
在互联网/搜索引擎/大语言模型普及的时代,只要掌握基本概念、思路和 “提出问题” 的能力,就能极快地提升自己。试着对比 man tar、tldr tar 和使用 Prompt:
操作系统是软件和硬件之间的桥梁;因此我们 “找到” 一些合适的软件、一些相对简单的硬件,理解操作系统就会变得容易。现在,学习操作系统已经变得前所未有地简单,大家只要怀揣梦想、学会提问就可以了!
Take-away Messages: 操作系统是软件和硬件之间的桥梁;因此我们 “找到” 一些合适的软件、一些相对简单的硬件,理解操作系统就会变得容易——我们的课程通过讲解操作系统上的应用,帮助你实现 “编程” 的梦想。
课程网站 (首页上的信息、课程概述、参考书与参考资料、生存指南);教科书 Operating Systems: Three Easy Pieces:
延伸阅读 (如果有兴趣):Harley Hahn's Guide to Unix and Linux。
在你的操作系统上尝试运行课堂上的代码示例 (参考实验指南)。熟悉典型的命令行工具,在你愿意的时候,可以读一读与它们相关的 Tutorial 和手册 (我们强烈推荐你收藏上面这些工具的官方文档,并且在你空闲的时候借助 AI Copilot 读一读)。同时你也可以开始尝试定制你的工具 (例如课堂上的 fish 和 tmux 行为就与默认配置有一定区别),和自己的 AI 助手。