第3期 | PS 那一行——把不可移植写进宣言
一、Linux 线
帖子最耐读的不是正文,是 PS
正文很谦虚:一个爱好,不大,不专业,想要反馈。可 PS 里连着三个技术决断,一个比一个硬——"没有一行 Minix 代码",干净重写,不背历史包袱;"多线程的文件系统",架构选择;"NOT portable",大写,几乎是喊出来的。
"多线程的文件系统"到底指什么?Linus 在 0.01 版发布说明里自己解释了:这是"不用消息传递"的直接后果。Minix 的文件系统是个独立的服务器进程,所有请求排队走消息传递,一次只办一件。Linux 把文件系统塞进内核,多个进程的读写就能真正并发。他原话说,这样"复杂得多,但好得多"——代价认了,好处也要。
"NOT portable"更狠。0.01 的进程切换用的是 386 的硬件任务切换:一条 ljmp 指令跳进 TSS(任务状态段),CPU 自己把寄存器、页目录全换掉。省事,飞快,但把命押在了一块芯片上。Minix 从 8088 起家、移植过多个平台,新闻组里的人理所当然会问移植性——他用大写先把话堵死:不,我用尽了 386 的每一种特性。
《硅谷之火》里写 Homebrew 俱乐部的聚会:极客们抱着自制电脑来,往布告板上贴一张纸。comp.os.minix 就是 1991 年的布告板,Linus 这封帖子就是那张纸——只不过这张纸上,顺手写下了一份技术路线图。
然后历史开了个玩笑:写下"probably never will support anything other than AT-harddisks"的人,造出了人类史上移植面最广的操作系统,从路由器到超算,从手表到空间站。而那条被押上全部身家的硬件任务切换,在 1999 年的 Linux 2.2 里被软件切换取代。拐杖用完,就扔掉。
"NOT portable"写进宣言,三十年后它成了最 portable 的东西——Escher 画里那种不可能的楼梯,现实里走通了。
先借硬件的力走路,学会之后把拐杖扔了。这句话,1991 年 8 月就写好了。
二、原生 AI OS 线
如果 AI 的 OS 先出现,它的 PS 会写什么
大概是:"It is NOT instruction-portable (uses tensor cores etc)"。
姿态是通的:不为抽象而抽象,把命押在真正的算力主体上。今天的算力主体不是顺序指令流,是向量阵列——SIMT、Tensor Core 矩阵乘、attention。Linus 当年用 TSS 复用线性指令流;原生 AI OS 该按张量阵列的占用率来调度,而不是按时间片切指令流。旧抽象与新硬件的错位,从第一行宣言就要面对。
但"帖子"本身会变。Linus 的帖子写给人看,征集的是人的意见;AI 时代的宣言帖是可执行的契约——能力清单(张量形状、显存分层、互联拓扑)本身就是接口规范,读它的不是人,是 agent。反馈回路也不再是"欢迎建议但不保证实现",而是 fork、跑分、自动回传:帖子发出的那一刻,测试已经开始了。
离落地还差几步:agent 要读契约,得先有一门统一的契约语言;跑分要可信,得有隔离的执行沙箱;结果要可用,得解决"谁为 agent 的结论背书"。这三样今天都还没有——这正是现在能动手的地方。
三、现在动手线:今晚就把 1991 年的反馈回路复刻一遍
打开你 3090 上的本地模型,把下面这段提示词贴进去:
"你是 1991 年 8 月 comp.os.minix 新闻组的读者,刚读完下面这封帖子。请以当时人的口吻回答:1)你最想要的三个功能;2)两个最尖锐的质疑。不要用后见之明,不要提后来发生的事。
帖子正文:(把附录的英文帖子全文贴在这里)"
可观察的现象:它大概率会质疑"不可移植"——而这正是 1992 年 1 月 Tanenbaum 那封著名檄文"Linux is obsolete"的核心论点之一。三十多年后,一个跑在本地的模型能复刻出当年新闻组里的反对声,说明这场争论不是偶然,是结构性的:每一次"押注单一硬件"的宣言,都会撞上"可移植"的质疑。看模型复刻得像不像,本身就是一次验证。
顺手再做一步:用 Linus 的句式,给 xuanora 的研判层写一段一句话宣言——具体硬件(RK3588 边缘盒)+诚实的边界+想要的反馈。宣言的写法,本身就是产品定义。
觉 然 小 注
"一切有为法,如梦幻泡影。"硬件任务切换是 Linus 当年最硬的赌注,八年后他亲手扔掉。不执着于自己的得意之作,大概是写操作系统的人最难的一课。
附:帖子原文(1991 年 8 月 25 日,comp.os.minix;北京时间已是 26 日),可复制去做实验——
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. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).
I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them:-)
Linus (torvalds@kruuna.helsinki.fi)
PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have:-(.
· · ·