子牙手寫操作系統(tǒng)
不知道正在閱讀本文的你,是否是因?yàn)橄胱约簞?dòng)手寫一個(gè)操作系統(tǒng)。我覺得可能每個(gè)程序員都有個(gè)操作系統(tǒng)夢,或許是想親自動(dòng)手寫出來一個(gè),或許是想徹底吃透操作系統(tǒng)的知識。不論是為了滿足程序員們自帶的成就感,還是為了面試找工作時(shí)能更深入地和面試官探討。
那寫一個(gè)操作系統(tǒng)究竟有多難呢?我結(jié)合自己的經(jīng)歷給大家講一講。
寫一個(gè)操作系統(tǒng)有多難
先說一句廢話:會(huì)者不難,難者不會(huì)。
冷啟動(dòng)
對于零基礎(chǔ)的人,甚至是計(jì)算機(jī)知識零基礎(chǔ)的人來說,難。難點(diǎn)并不在于操作系統(tǒng)的代碼量本身,而在于任何一個(gè)事物發(fā)展初期都會(huì)遇到的困境,冷啟動(dòng)。
我不知道應(yīng)該看哪本書作為入門書籍,甚至不知道應(yīng)該看書還是看網(wǎng)絡(luò)上的文章,還是找一個(gè)領(lǐng)路者帶你入門,甚至還在被一些討論自己做一個(gè)操作系統(tǒng)到底有沒有意義這個(gè)問題糾結(jié)著。
?

好多人在這個(gè)冷啟動(dòng)時(shí)期,就被弄得沒脾氣了。
你可能比較幸運(yùn),找到了一本入門書籍,剛好作者的文筆和思路比較對你的胃口,于是度過了冷啟動(dòng)時(shí)期。
但你也可能不太幸運(yùn),找了一本難讀的書籍,或者是優(yōu)秀的作品但剛好不對你的胃口,于是就從入門到放棄了。
我當(dāng)時(shí)的第一本啟蒙書籍,是《30 天自制操作系統(tǒng)》,好多人的第一本可能也是這個(gè),因?yàn)闀臉?biāo)題就直戳了當(dāng)?shù)貙懥?自制操作系統(tǒng)?這幾個(gè)字,而且一看哇 30 天就能搞定,一下讓好多不敢跨出第一步的人有了信心。
這本書會(huì)把讀者當(dāng)作完全沒有計(jì)算機(jī)基礎(chǔ)的小白,所以很多地方非常友好,跟著它走一遍完全可以讓你度過冷啟動(dòng)時(shí)期了。
但這本書同樣也有讓人想中途放棄的一些點(diǎn),比如我就很煩這些地方。一個(gè)是它從官網(wǎng)上下載的源碼是日語注釋的,搞的當(dāng)時(shí)我好多地方還找我朋友幫我翻譯。另一個(gè)是他用的工具都是這個(gè)作者自己寫的,這固然比較牛逼,但我就想難不成做操作系統(tǒng)連個(gè)現(xiàn)成的業(yè)界常用的工具也沒有么,我學(xué)了你的工具也沒有普適性啊。再有就是作者后面的篇幅花好多時(shí)間講圖形界面要怎么做,怎么在屏幕上畫一個(gè)個(gè)方框作為窗口,還想互不影響。這個(gè)因人而異吧,我是覺得不必花費(fèi)如此大的篇幅,這不是想寫操作系統(tǒng)的人的痛點(diǎn)所在。