子牙手写操作系统
不知道正在阅读本文的你,是否是因为想自己动手写一个操作系统。我觉得可能每个程序员都有个操作系统梦,或许是想亲自动手写出来一个,或许是想彻底吃透操作系统的知识。不论是为了满足程序员们自带的成就感,还是为了面试找工作时能更深入地和面试官探讨。
那写一个操作系统究竟有多难呢?我结合自己的经历给大家讲一讲。
写一个操作系统有多难
先说一句废话:会者不难,难者不会。
冷启动
对于零基础的人,甚至是计算机知识零基础的人来说,难。难点并不在于操作系统的代码量本身,而在于任何一个事物发展初期都会遇到的困境,冷启动。
我不知道应该看哪本书作为入门书籍,甚至不知道应该看书还是看网络上的文章,还是找一个领路者带你入门,甚至还在被一些讨论自己做一个操作系统到底有没有意义这个问题纠结着。

好多人在这个冷启动时期,就被弄得没脾气了。
你可能比较幸运,找到了一本入门书籍,刚好作者的文笔和思路比较对你的胃口,于是度过了冷启动时期。
但你也可能不太幸运,找了一本难读的书籍,或者是优秀的作品但刚好不对你的胃口,于是就从入门到放弃了。
我当时的第一本启蒙书籍,是《30 天自制操作系统》,好多人的第一本可能也是这个,因为书的标题就直戳了当地写了 自制操作系统 这几个字,而且一看哇 30 天就能搞定,一下让好多不敢跨出第一步的人有了信心。
这本书会把读者当作完全没有计算机基础的小白,所以很多地方非常友好,跟着它走一遍完全可以让你度过冷启动时期了。
但这本书同样也有让人想中途放弃的一些点,比如我就很烦这些地方。一个是它从官网上下载的源码是日语注释的,搞的当时我好多地方还找我朋友帮我翻译。另一个是他用的工具都是这个作者自己写的,这固然比较牛逼,但我就想难不成做操作系统连个现成的业界常用的工具也没有么,我学了你的工具也没有普适性啊。再有就是作者后面的篇幅花好多时间讲图形界面要怎么做,怎么在屏幕上画一个个方框作为窗口,还想互不影响。这个因人而异吧,我是觉得不必花费如此大的篇幅,这不是想写操作系统的人的痛点所在。