缘起最初是在过年回家的高铁上,在知乎上看到了这篇文章:将Go程序跑在裸机上,大致想法是通过实现一遍系统接口,来接管 golang 程序的各种系统调用和中断之类的。感觉这个想法十分有趣。作者还用 golang 写了一个 x86 os:eggos,完成度相当之高。由于是从底层魔改了 golang 的运行时,用户程序完全无感知,所以各种 golang 的第三方库都可以直接使用。作者甚至实现了一个支持 TCP/IP 的协议栈,使得一些网络库可以直接使用。看的我心潮澎湃。搜了搜一些前人的工作,发现这个想法很早就被人提出来过。2018 年 OSDI 会议上就有一篇论文,讲述了使用高级语言实现操作系统的好处...