1. 操作系统概述

背景回顾:大家已经有多年的操作系统使用经验,也知道 “操作系统” 是一门很重要的课程,但很可能无法回答好 “操作系统到底是什么”、“为什么重要” 这样的问题。我们将在一学期的时间里回答这些问题,并建立操作系统相关的基本概念、思想方法和编程技巧。

本讲内容:个人/课程简介、操作系统的发展历史,在 AI 时代的背景下回答三个问题:

  • (Why): 为什么要学操作系统?
  • (What): 到底什么是操作系统?
  • (How): 怎么学操作系统?

1.1 个人/课程简介

1.2 为什么学操作系统?

1.3 什么是操作系统?

在这个模拟器中,整个计算机系统的状态都被封装在一个结构体中 (包括内存!是的,的确有内存也封装在一起的 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。虽然我们的课程中不再强调硬件的知识,但在思考问题时,心中总是记得程序 (指令) 执行时有一个 “状态机模型” 能够帮助你理清思路。

1.4 怎样学操作系统?

在互联网/搜索引擎/大语言模型普及的时代,只要掌握基本概念、思路和 “提出问题” 的能力,就能极快地提升自己。试着对比 man tar、tldr tar 和使用 Prompt:

💬
Prompt: 这幅图 (tar 的漫画) 是什么意思?人工智能时代可能有什么变化?
💬
Prompt: 《操作系统》需要解压缩 “toybox-0.1.0.tar.bz2”,但是我是刚选课的新手,应该如何做?

操作系统是软件和硬件之间的桥梁;因此我们 “找到” 一些合适的软件、一些相对简单的硬件,理解操作系统就会变得容易。现在,学习操作系统已经变得前所未有地简单,大家只要怀揣梦想、学会提问就可以了!

1.5 总结

Take-away Messages: 操作系统是软件和硬件之间的桥梁;因此我们 “找到” 一些合适的软件、一些相对简单的硬件,理解操作系统就会变得容易——我们的课程通过讲解操作系统上的应用,帮助你实现 “编程” 的梦想。

📚阅读材料

课程网站 (首页上的信息、课程概述、参考书与参考资料、生存指南);教科书 Operating Systems: Three Easy Pieces:

  • Preface 前言
  • 第 1 章 - Dialogue on the Book
  • 第 2 章 - Introduction to Operating Systems

延伸阅读 (如果有兴趣):Harley Hahn's Guide to Unix and Linux

🖥️开始编程

在你的操作系统上尝试运行课堂上的代码示例 (参考实验指南)。熟悉典型的命令行工具,在你愿意的时候,可以读一读与它们相关的 Tutorial 和手册 (我们强烈推荐你收藏上面这些工具的官方文档,并且在你空闲的时候借助 AI Copilot 读一读)。同时你也可以开始尝试定制你的工具 (例如课堂上的 fish 和 tmux 行为就与默认配置有一定区别),和自己的 AI 助手。