3. 硬件视角的操作系统 🌶️

程序就是状态机。我们 “写 C 程序" 其实是在描述状态的迁移,而我们写的状态机会被编译器翻译成二进制指令序列。但我们的程序乃至操作系统,要想运行在计算机硬件上,还有一些 “我们不知道的约定”。

本讲内容 (科普性质):计算机系统的状态机模型:什么是计算机 (硬件) 系统、计算机硬件和程序员之间是如何约定的,以及什么是操作系统内核。

💬
Prompt: 学校为我们提供了计算服务,但有限流。我打算用实验室全部同学的账号做一个前端,实现 load balance,请求先提交到我的服务器,然后我再用不同的身份去请求学校的服务。如何做?
💬
Prompt: 我在命令行中使用 gdb 调试。如果你是一位专业人士,有更好的方法和建议吗?尽可能全面。

3.1 硬件视角的操作系统

3.2 固件:硬件和操作系统之间的桥梁

3.3 加载操作系统

💬
Prompt: 《操作系统》课要求我编译 OpenSBI,并弄清楚编译过程。但 Makefile 太复杂了,我没有头绪,有什么好办法吗?

3.4 总结

Take-away Messages: 计算机系统是严格的数学对象:没有魔法;系统的一切行为都是可观测、可理解的。处理器是无情执行指令的机器,其 Reset 后的行为也被明确规定。Reset 后,Firmware 开始运行,随后加载操作系统。厂商逐渐形成了 Firmware Specification 的共识(如 IBM PC “兼容机”、UEFI 等)。为支持工业级软件,这一过程相当复杂,即便是 “最简单” 的 OpenSBI 也包含大量代码。但有了 AI,你无需再为此担忧!

🖥️你的 AI 助手

如果你错过了课程最后部分的彩蛋,你应该观看一下视频回看——我应该已经说服你实现一个自己的 ag 工具 (和使用 UNIX Philosophy 了),而不是用 chat.nju.edu.cn 的 “原始” 方式了 😊。