Proto: A Guided Journey through Modern OS Construction (SOSP 2025)

一句话总结:Proto 是跑在 Raspberry Pi 3B 上的 <10K SLoC 教学 OS,把完整系统拆成 5 个渐进原型,支持 DOOM ~60 FPS、视频播放 ~26 FPS,用”appealing apps”重新点燃学生对 OS 课程的兴趣。

问题

OS 课在北美顶校已从必修降为选修(top-30 里 20 所不再必修),学生对系统软件兴趣下滑。传统教学 OS(xv6、Pintos、Nachos、GeekOS、Embedded Xinu、EGOS-2000)偏 headless,只能跑终端程序,缺乏真正能”展示、把玩、带出教室”的完整体验;而用 Linux 做 OS 课则让学生只能改一小块 CPU 调度,失去”从零构建整个系统”的成就感。作者认为今天的 OS 教学缺了 UNIX 因 Space Travel、WWW、TeX 最初服务个人创作的那份激情。

核心方法

Proto 不是新研究内核,而是一套围绕四条教学原则的**增量原型(incremental prototyping)**课程框架:(P1) appealing apps —— 以 3D 动画、视频游戏、音乐/视频播放、DOOM、LiteNES Mario 仿真、区块链矿工为驱动,framebuffer/USB/audio 作一等公民;(P2) demonstrability —— 目标硬件 Raspberry Pi 3B(ARM Cortex-A53 四核 + 1GB + Game HAT 640p 屏幕/电池/按键),可带走做演示;(P3) incremental prototyping —— 把 OS 拆成 5 个 self-contained 原型,每个都能跑、每个对应一组 app;(P4) minimum viable implementations —— 新功能只有直接服务目标 app 才纳入。

系统架构类似 xv6,单体内核;用户态 EL0、内核态 EL1;每个 user app 独立地址空间(4KB 页),内核用 1MB block 映射;28 个 syscall(任务管理、文件系统、线程同步);支持 USB HID 键盘、GPIO、PWM 音频、SD 卡 ext2-like ramdisk + FAT32 分区;window manager 支持多窗口 + 焦点输入分发。Proto 先完整实现,再分解成 5 个 prototype,让课堂按 app 驱动逐步构建。

关键结果

  • 内核 <10K SLoC,与 xv6 量级相当
  • DOOM ~60 FPS、MPEG-1 视频 ~26 FPS,与同硬件 Linux/FreeBSD 相当
  • kernel microbenchmark 与 xv6 相当,功耗 <4 W、单次充电可用几小时
  • 用户研究:大多数学生认为 P1-P4 原则直接改善了学习体验、激发了对 systems software 的热情
  • 开源:https://github.com/fxlin/uva-os-main

相关