积累沉淀

待山花烂漫,化茧成蝶

操作系统-南大

前言:南大操作系统课程是蒋岩炎老师主讲,他在B站公开了课程,讲的非常强。在B站搜南京大学计算机操作系统就可找到。

P1: 操作系统概述 (操作系统的历史;学习建议)

1. (Why): 为什么要学操作系统?

重走从无到有的发现过程

  • 基本思想、基本方法、里程碑、走过的弯路
  • 最终目的:应用/创新
  • 操作系统带你补完编程的技术体系
  • 具有编写一切 “能写出来” 程序的能力 (具备阅读论文的能力)

2. (What): 到底什么是操作系统?

1
2
3
4
Operating System: A body of software, in fact, that is responsible for making it   
easy to run programs (even allowing you to seemingly run many at the same time),
allowing programs to share memory, enabling programs to interact with devices,
and other fun stuff like that. (OSTEP)

理解操作系统:

理解硬件(计算机)和软件(程序)的发展历史, 夹在中间的就是操作系统

  • 1950s的操作系统
  • 操作(operate)任务(jobs)的系统(system)
  • 批处理系统 = 程序自动切换+库函数API
  • Disk Operating System(DOS)
  • 操作系统开始出现设备,文件,任务等对象和API

今天的操作系统

  • 通过虚拟化硬件资源为程序运行提供服务的软件。

3. (How): 怎么学操作系统?

学习操作系统:现代方法

  1. 读得懂的教科书和阅读材料
  1. 问题驱动,用代码说话
  • Demo 小程序,各类系统工具(strace, gdb,…)的使用
  • xv6-risv, AbstractMachine
  • RTFM, STFW,, RTFSC(F can be a colorful word)

4. Prerequisites

计算机专业学生必须具备的核心素质。

  • 是一个合格的操作系统用户
  • 会 STFW/RTFM 自己动手解决问题
  • 不怕使用任何命令行工具
  • vim, tmux, grep, gcc, binutils, …
  • 不怕写代码
  • 能管理一定规模 (数千行) 的代码
  • 能在出 bug 时默念 “机器永远是对的、我肯定能调出来的”
  • 然后开始用正确的工具/方法调试

5. 学术诚信 (Academic Integrity)

Academic integrity 不是底线,而是 “自发的要求”

  • 对 “不应该做的事情” 有清楚的认识
  • 不将代码上传到互联网
  • 主动不参考别人完成的实验代码
  • 不使用他人测试用例 (depends)
  • 有些行为可能使你得到分数,但失去应有的训练

一些过去的例子

6. 成为 Power User

感到 Linux/PowerShell/… 很难用?

  • 没有建立信心、没有理解基本逻辑
    • 计算机科学自学指南
    • 没有找对材料/没有多问 “能不能再做点什么”
    • Baidu v.s. Google/Github/SO v.s. ChatGPT
    • 没有用对工具 (man v.s. tldr; 该用 IDE 就别 Vim)
    • 过了入门阶段,都会好起来
  • 本章代码请参考github: 操作系统-南大-part_01

P2: 应用视角的操作系统 (程序的状态机模型;编译优化)

本讲内容:指令序列和高级语言的状态机模型;回答以下问题:

  • 什么是软件 (程序)?
  • 如何在操作系统上构造最小/一般/图形界面应用程序?
  • 什么是编译器?编译器把一段程序翻译成什么样的指令序列才算 “正确”?
Buy me a coffee please.