任务调度器的生存挑战
我们习惯了在界面冻结或应用程序陷入"无响应"状态时咒骂操作系统。看起来在十几个程序之间分配CPU时间和内存是一项简单的任务。但如果你就是坐在任务管理器前的那个人呢?
开发者Pier-Luc Brault的You're the OS!项目将计算机科学的核心概念变成了一款硬核街机游戏。在这里,你就是系统内核。你的目标是手动分配内存、切换进程上下文、处理I/O中断。慢了几秒钟——愤怒的用户就会按下重启键。

游戏玩法
系统队列在屏幕上不断旋转。每个进程都需要CPU时间、RAM中的一块空间,或者来自磁盘的响应。
你必须同时关注多个参数:
- 就绪运行线程队列的负载。
- RAM页面的分配和清理。
- 阻塞程序执行的I/O请求。
- 用户的耐心值,它会随着每个空闲周期而消耗。
如果你让一个任务在等待模式中停留太久,进程就会开始"沸腾"。一旦用户的耐心耗尽,游戏就会以崩溃重启结束。
为什么程序员要扮演操作系统
除了纯粹的游戏乐趣之外,这个项目还提供了对我们在Tanenbaum教材中通常视为抽象概念的实际理解。
1. 调度算法的亲身体验
你会实时感受到为什么像时间片轮转(Round Robin)或公平份额(Fair Share)这样的算法要这样设计。当你手动尝试避免饥饿情况时——一个重型后台线程完全堵塞了流水线,而小型交互式用户点击却毫无响应地挂起。
2. 自定义场景的沙盒
仓库中包含沙盒模式。你可以用Python描述自己的工作负载配置:设置任务生成强度、所需内存量和I/O操作类型。这将游戏变成了一个压力测试台。
3. 自动化和机器人编写的API
桌面版最有趣的部分是能够用代码而不是手动来控制系统。仓库中包含automation/skeleton.py模块,你可以通过它连接自己的调度器脚本。
你用Python编写资源分配算法,运行模拟,看看你的调度器在游戏事件生成器面前能坚持多少个周期。
运行和技术细节
该项目使用Python和Pygame库编写,网页版编译为WebAssembly。你可以在GitHub Pages或itch.io上直接在浏览器中游玩。
如果你想通过自动化API编写机器人,需要在本地运行项目。
仓库声明了严格的版本要求:作者使用Python 3.14和包管理器pipenv。为了隔离,最好直接使用pyenv:
# Клонируем проект
git clone https://github.com/plbrault/youre-the-os.git
cd youre-the-os
# Устанавливаем зависимости
pipenv sync --dev
# Запуск десктопной версии
pipenv run desktop
# Запуск собственного скрипта автоматизации
pipenv run auto automation/your_bot.py
要构建自定义沙盒配置,只需在src/sandbox/目录中创建一个文件,然后运行命令:
pipenv run sandbox sandbox.myConfig
值得一试吗
如果你在教操作系统基础课程,正在寻找周末锻炼大脑的方式,或者想用Python编写自己的调度器机器人,这个项目绝对值得花半小时运行一下。它会让你很快意识到自己的渺小,并清楚地解释为什么创建可靠的任务管理器曾经让工程师们花费了数十年时间。
相关项目