一台1978年设计的8088处理器,4.77MHz主频,256K内存,同时挂着五个窗口——一个笔记本、一个走秒的时钟、一个弹跳的小球、控制面板和任务管理器——CPU占用70%,内存用了147K。这不是模拟器里的炫技截图,官网说这套数字来自实际编译,"不是凭记忆写的"。

这个项目叫os8088,一个仿1984年Macintosh System 1桌面的图形操作系统,专为IBM PC XT这一级的老硬件写的。没有DOS,没有命令行,从软盘第一个扇区直接引导进图形界面。它最大的卖点,是官网自己点破的:它支持抢占式多任务,而1984年真正的Macintosh反而没有。

一个下午能读完的操作系统

os8088的骨架小得反常。512字节的引导扇区负责探测显卡、读取软盘;52,718字节的内核塞下了调度器、窗口管理器、VGA/Hercules/CGA三种显卡驱动、鼠标驱动、声音层、文件管理和任务管理器;全部代码加起来66,183行手写NASM汇编,没有C,没有链接器,没有运行时库。

它能认出VGA的640x480、16色模式,也能认出更老的Hercules单色720x348和CGA的640x200,开机时自动探测显示卡类型。串口鼠标跑在1200波特率上,拖窗口时先画一个像素级的橡皮筋外框,松手才真正重绘——这不是审美选择,是4.77MHz的CPU逼出来的取舍,1984年的苹果工程师也这么干过。

os8088 关键数字 52,718 内核字节数 66,183 手写汇编行数 256K 最低运行内存 18.2Hz 定时器抢占频率

官网还提到,有人把这套镜像写进实体软盘,在一台1981年的IBM 5150、一台Toshiba T1100 Plus和一台286上真机启动过,拍下了照片——如果属实,这套东西不只活在模拟器里。

抢占式多任务,不是苹果没做到,是没人这么配

os8088的调度原理很直白:定时器每秒触发18.2次,中断处理程序保存九个寄存器、切换栈指针、跳进下一个任务,大约三十条指令。两个时钟、两个弹跳球可以同时动,而你还能往笔记本里打字——1984年的System 1做不到,它一次只能跑一个应用;1987年的MultiFinder能同时跑多个,但靠应用自己让出CPU,是协作式的。

这段对比听起来像一次漂亮的历史翻案。但把镜头拉远一点,故事没那么单薄。Concurrent CP/M-86Concurrent DOSQNX、后来的DESQview,这些80年代的系统早就在同一级CPU上做出了软件抢占式调度——只是它们大多没穿Mac风格的皮肤。

抢占式多任务,谁先做到 1984 Mac 单任务 80年代CP/M-86 QNX 抢占,无GUI皮肤 1987 MultiFinder 协作式 os8088 抢占+Mac风GUI

所以准确的说法是:抢占式调度不是os8088的首创,苹果风格窗口也不是它的首创——1985年Digital Research的GEM桌面就在IBM PC上跑过重叠窗口和图标,直到苹果起诉、和解协议逼DR在PC版里砍掉了重叠窗口和桌面图标(Atari ST版本没受约束,保留了下来)。os8088真正稀缺的,是把这两样东西第一次缝在一起,还塞进了256K内存,用一个人手写的汇编实现。

工艺可以复刻历史,但复刻不等于首创。

没有保护模式,调度到头也只是调度

8086/8088没有保护模式,没有硬件内存隔离,没有特权级。这意味着所有程序和内核挤在同一个64K段里——这恰恰是os8088敢做抢占式切换的前提:上下文切换足够便宜,是因为大家共用同一块地址空间,不用切页表、不用换特权级。

  • 风险.程序之间没有真正的隔离,一个任务写坏内存,理论上能拖累整台机器,这是8086架构本身的天花板,不是os8088能绕开的问题。

官网自证,没有第三方

翻遍能查到的资料,os8088.com几乎是一座孤岛。没有独立的第三方报道,没有能索引到的代码仓库,也没有社区讨论帖——所有数字,内核大小、行数、任务槽数、抢占频率,目前只有官网自己说了算。同类的教育性项目OS-808x、面向8086到80286的类Unix内核ELKS都能在GitHub或SourceForge上找到公开代码和讨论,os8088还没有。

官网自述 vs 第三方验证 官网提供 内核字节数 汇编行数 抢占频率 真机截图 第三方验证 代码仓库索引 无 社区讨论帖 无 跑分复现 无 作者背景 未知

顺带说清一件容易搞混的事:检索时会跳出一堆关于"Book 8088"的评测和争议,涉及跑分、CGA/VGA兼容问题、BIOS版权纠纷——那是AliExpress上一款复古笔记本硬件,和os8088.com完全是两回事,别把两条线焊在一起。


抛开"打败苹果"这个诱人的叙事框架,os8088真正值得记一笔的,是它证明了另一件事:在C编译器、模拟器和AI辅助编程随手可得的今天,还有人愿意花力气,用一个人的手,把一整个图形桌面塞进一个能在一下午读完的代码量里。这更像一种系统编程美学的坚持,而不是历史地位的宣告。

  • 结论.这类项目的价值标尺不该是"有没有超越1984年",而应该是"有没有可被验证、可被复现的证据链";没有仓库、没有第三方复现之前,再漂亮的数字也只是一份自述。

《周易》讲"其兴也勃焉,其亡也忽焉",讲的是治乱兴衰;放在一个孤零零的极客项目上未免用力过猛,但那种"看起来很能打,细究才发现只是自己说自己能打"的落差,倒是相通的。等到有人真的把这66,183行代码读完、编译过、复现出那个147K内存占用的截图,这事才算真正立住。