从 UNIX 到 Linux

从 UNIX 到 Linux

2025 南京大学《操作系统原理》
从 UNIX 到 Linux

Evolution of the UNIX Time Sharing System

最早的版本甚至没有 fork

  1. Shell 关闭所有打开的文件,然后为 0, 1 fd 打开终端文件
  2. 从终端读取命令行
  3. 打开文件,把加载器代码复制到内存并执行 (相当于 exec)
  4. exit 会重新加载 shell
    • DMR 的文章
    • Takeaway message: 不要害怕 “不好”,大胆去做,并且持续改进

所以,从零开始做很重要

2025 南京大学《操作系统原理》
从 UNIX 到 Linux

Minix by Andrew S. Tanenbaum

Minix1 (1987)

  • UNIXv7 兼容
  • Linus 实现 Linux 的起点
  • 同时兼容 16-bit 和 32-bit
    • 真实展示 16-bit 编程

Minix2 (1997)

  • POSIX 兼容
  • 随书附有代码
2025 南京大学《操作系统原理》
从 UNIX 到 Linux

算是我 “梦开始的地方”

center

2025 南京大学《操作系统原理》
从 UNIX 到 Linux

年轻人的第一个 “全功能” 操作系统

Minix3 (2006): POSIX/NetBSD 兼容

  • 一度是世界上应用最广的操作系统 (Intel ME)

center

2025 南京大学《操作系统原理》
从 UNIX 到 Linux

25 Aug 1991, The Birthday of Linux

Hello, everybody out there using minix – I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones. This has been brewing since April, and is starting to get ready.

—— Linus Torvalds (时年 21 岁)

类似于 “我写了个加强版的 OSLab,现在与大家分享”

  • 发布在 comp.os.minix
    • (“百度贴吧”)
    • 因为还依赖 Minix 的工具链 (从零开始做东西是不现实的)
    • 跑的都是 GNU 的程序:gcc, bash, ...
  • 合适的人、合适的时间
2025 南京大学《操作系统原理》
从 UNIX 到 Linux

诞生了不少名场面

“The single worst company we've ever dealt with...”

center

2025 南京大学《操作系统原理》
从 UNIX 到 Linux

“Just for fun”

The story of an accidental revolutionary

Revolutionaries aren’t born. Revolutions can’t be planned. Revolutions can’t be managed. Revolutions happen....

—— David Diamond (本书作者)

教育部印发《关于加强高校有组织科研 推动高水平自立自强的若干意见》

  • 就推动高校充分发挥新型举国体制优势,加强有组织科研,全面加强创新体系建设,着力提升自主创新能力,更高质量、更大贡献服务国家战略需求作出部署。
  • “在人-机-物融合时代实现操作系统的弯道 (换道) 超车”
2025 南京大学《操作系统原理》
从 UNIX 到 Linux

“Linux is Obsolete” Debate

在 comp.os.minix 上关于 Linux 的讨论越来越多了

  • Andrew Tanenbaum 做出了 “官方回应”
    • 觉得 “太落后”
  • Linus 完全不服气
  • Ken Thompson 也参与了讨论
    • 他已经在 ~10 年前获得了图灵奖……
2025 南京大学《操作系统原理》
从 UNIX 到 Linux

后来大家知道的故事

center

  • Linux 2.0 引入多处理器 (Big Kernel Lock, 内核不能并行)
  • Linux 2.4 内核并行
  • 2002 年才引入 Read-Copy-Update (RCU) 无锁同步
  • 2003 年 Linux 2.6 发布,随云计算开始起飞
2025 南京大学《操作系统原理》
从 UNIX 到 Linux

Linux 的 “两面”

Kernel

  • 加载第一个进程
    • 相当于在操作系统中 “放置一个位于初始状态的状态机”
    • “Initramfs” 模式
  • 包含一些进程可操纵的操作系统对象
  • 除此之外 “什么也没有” (Kernel 就是一个 trap handler)

Linux Kernel 系统调用上的发行版和应用生态

  • 系统工具 coreutils, binutils, systemd, ...
  • 桌面系统 Gnome, xfce, Android
  • 应用程序 file manager, vscode, ...
2025 南京大学《操作系统原理》