半平米的梦想 ——《操作系统真象还原》背后的故事

看书、买书是我的家常便饭,渐渐总结出,人民邮电出版社(以下简称人邮)的书质量非常好,在我心中人邮相当于中国的O’Reilly。2014年7月中旬,我向人民邮电出版社的张涛编辑表达了写书之意,自此开始了与人邮的一段渊源。


半平米的创作空间

当初的写作环境就是0.5平米左右大小的空间:在床和墙壁之间的夹道上放了一个黄色的小凳子当桌子,一个蓝色的更小的凳子当椅子,伸开腿就把空间占满了。当初也觉得自己挺苦逼的,因此情不自禁就拍了照片。

11.jpg

 

书名的来历

你是不是想知道为什么不叫真相还原?正如本书前言所说,操作系统比较庞大,我们在课堂上学习它的时候,总是从局部上学习,并没有把各个局部贯穿起来。这让我联想到了盲人摸象,只摸到局部怎么能认识大象的全貌呢,因此我希望将局部组合为整体,让操作系统这个大象还原出本来面目。当初没想到,书名叫《操作系统真“象”还原》就不会引起误会了。

其实本书最初的封面是我女朋友设计的,如下所示。

22.jpg

其中的狗狗是我,兔子是她,还有一辆自行车,我经常骑着这辆单车带着她去图书馆。图中所表达的还是很明朗的,大象是个拼图,狗狗和兔子合力把散落的拼图拼成完整的大象,因此本书叫真象还原。

 

这本书是如何完成的?

我是一名运维工程师,目前运维行业显得很没技术含量,我很想改变这一点。比如开发人员经常让咱们帮我装各种软件,我很不喜欢这样的工作。他怎么不喊总监或CTO帮他装呢,原因很简单,在他心里我们就是干这个的,就像想清洁地面时要喊保洁阿姨一样。说白了虽然都是干技术工作的,但他们认为运维的技术能力不如他们,我想证明他们是错的。我心目中的运维工程师至少是全栈工程师,我希望这本书能帮到运维的同事。

这本书脱产写了19个月,之所以花了这么久,是因为传统上讲述操作系统的教材都比较枯燥,理论较多,而且很少有以实践为主题的专项书籍,大家看完此类教材后依然不会写操作系统。想学习操作系统的编写可又无从下手,但这种现象大量存在;而本书的使命是详细介绍理论,并且付诸于实践,一步步地向大家说明操作系统的编写过程和理论。因此,花费的时间必然很长。

辞职写书压力很大,大部分会发愁生活该怎么办。不说别处了,在北京你听说过有人饿死吗?我觉得很多困难都没有人们想象的那么大,大多数困难都是借口,主要是看你想不想做这件事。我同样也有压力,我是怕万一失败了,耽误了我女朋友怎么办,因此主要压力皆来自于自己。尽管几乎所有的外人对我这翻举动都嗤之以鼻,说我多大了还不着调等等,但我真的没往心里去。有句话说只有自己所爱的人才能影响自己,我爱我女朋友,她很支持我,如今她已经成为我的老婆。生活主要是靠之前的积蓄,花销也不大,租的是一间小屋子,吃喝也花不了多少钱。

 

从第0章开始

起初我想打造一本操作系统0基础书籍,在正式内容未开始之前把大伙儿一直存在疑惑但又找不到答案的问题写进来,这些虽是附加的内容,但都还以操作系统有关,单独成章便于大伙查询,就是想给大伙儿多点诚意吧,希望这本书有用。如果我带着很多疑惑,我是没法进行接下来的学习的,心里老惦记这些答案,我必须得马上搞定问题才行,因此我体贴地把很多同学都关注的问题一并列举。再者计算机中都是以索引0来表示真正意义上的第1个,因此第0章的存在就顺理成章了。

本书以实践为导向,以理论为基础,全面且细化的展示了一个操作系统从零到有的过程,最体贴的是,把操作系统高级课程中的锁、信号量、生产者消费者问题、管道、fork等等都以实际代码来展示出来,让读者不再对这些深奥的概念“发怵”,最后可以惊呼:操作系统不过如此。我扪心自问,这是一本非得让读者彻底明白的书,良心啊。

 

写给这本书的读者

先说一下本书不适合哪些人吧。那些已经懂计算机开发的人是不适合的,在高手眼里,本书的内容都不算什么,因此除高手之外都适合^_^。

有人觉得学习操作系统很耗精力,且并不会有直接的经济产出,好像性价比不高。但是,真正想学习操作系统的人是不会这么问的,没什么值不值得,就是想不想做,没有理由,全凭念想。就像人担心鸟总在天上飞,万一要掉下来怎么办,飞是鸟的天性,人不会飞,因此不理解。

学习操作系统,就像跳远一样,要想跳得远,肯定要往后退两步加助跑,我们就是在助跑。操作系统是个硬功,如果把硬功学会,上层应用在我们眼里就会坦露无疑。比如人看到电线着火,在外行人眼里顶多理解到一定是短路了,而内行人看到的是:电阻小,电流高速流动,相互碰撞产生摩擦, 摩擦生热导致电线着火,理解得更深入。再看,身边总有一些大牛的同事在公司建功立业,其实很多人在进公司之前就已经很牛逼了,坦白说他们是带着牛逼的本领来公司创收的,我相信他们之前为了“修行”也捱过寂寞。修行是残酷的,大师是寂寞的,修行之后,这一切都值得。

有人说这本书这么厚,看不完啊。书厚未必看得时间长,为什么厚?为了降低难度,本来一句话能解释清楚的我用了三句话,能不厚吗?看书的目的是把意思搞懂,虽然一句话变成了三句话,但读书的速度更快了,这不是省时间吗?


说点题外的,有些人说公司太忙了没时间学习,甚至觉得这样的公司过于剥削,对个人发展不利。但我想说,老板不是慈善家,他花钱雇你给他干活,你拿了人家钱了还要求人家给你更多的个人时间,于情于理都说不过去,因此,学习靠挤时间。我之前在百度那阵,有一段时间经常第二天凌晨4点下班,回去睡到11点再去公司上班,对于今天上班明天下班的我来说,还能挤挤时间学习呢。学习是自己的事,想学习的人,一定会创造条件来学习。

17 推荐
  • robertwang126 今年 01-12 14:45

    虽不是专业作这行的,但哥们的执行力值得学习,

    0
  • dhairoot 2016-12-04 21:07

    求给一支付宝二维码,我觉得这本书写的真是太棒了!另外想问问这本书有没有勘误表

    0
  • 江鸟丘山 2016-11-29 15:34

    十分佩服作者,我是一名学生,一直想写一个操作系统,周围的同学的觉得高端但是却觉得没什么发展,“有人觉得学习操作系统很耗精力,且并不会有直接的经济产出,好像性价比不高。但是,真正想学习操作系统的人是不会这么问的,没什么值不值得,就是想不想做,没有理由,全凭念想。就像人担心鸟总在天上飞,万一要掉下来怎么办,飞是鸟的天性,人不会飞,因此不理解。” 真心说的很好

    0
    • zhenggang
      zhenggang 2016-12-05 16:29

      哈哈,谢谢支持。

  • luolan 2016-07-15 21:48

    为什么不能直接打赏钱呢?就冲作者这精神

    0
  • descent 2016-06-04 16:24

    我是台灣的讀者,我已經買了書, 請問書中源代碼要去哪裡下載?

    謝謝。

    看到的你學習環境真是艱苦, 很是佩服。我自己是在一個很長的時間 (大概是一年) 上很 "悠閒" 的把一個 os kernel 完成。

    我覺得寫一個 os kernel 其實是很困難的事情, 並不會因為我已經完成了一個 os kernel 這件事情就變簡單了。我知道那是多辛苦的一件事情。

    http://descent-incoming.blogspot.tw/2012/09/simple-os-show-bmp.html

    網址可能被中國屏蔽了, 但我相信應該難不倒你。

    我的版本可以在 x86 保護模式下切換到繪圖模式, 這是我和大部份的教學 os kernel 最不同的地方, 也是我的得意之作。

    大部份都和你書中的相同, 只是我是用 gas at&t 來寫。那為什麼我還要買你這本這麼貴的書呢? 還特地從台灣購入 (台灣並不容易買到中國的書籍), 因為我覺得書中的內容應該還是有我可以參考的地方, 我只看了目錄就決定了。

    看到你書中的步驟, 就和我當時的步驟一樣, 連 bochs 也是一樣的方式, 從 source build 起, 看來 os kernel 練功的方法大家都很雷同。不過我很堅持在真實機器測試, 在我的經驗中, 有時候在模擬器可以執行, 但真實機器是失敗的, 我吃了好多苦頭才解決。

    另外現在的 pc 已經是 uefi 了, 講述 MBR 其實已經過時了, 我在這部份有些成果, 不過還是無法寫出一個 uefi loader 來載入我的 kernel, 還有好多要努力。

    我頭大的是書中 source code 到底在哪裡? 麻煩你了。給個下載的連結。

    2
    • zhenggang
      zhenggang 2016-07-15 22:41

      uefi已经有本书来讲啦,你可以参考下。书上有推荐个qq群,上面有代码,另外代码在https://github.com/elephantos/elephant.git

zhenggang
zhenggang V5

1.4K经验值

《操作系统真象还原》作者

相关技术

相关图书

  • 操作系统真象还原

    作者: 郑钢

    大学及研究生都有操作系统课程,这类人群具有很高的学术能力,但书中讲的过于抽象与晦涩,以至于很多学生对…

    5813 13 50

    • 纸质版 ¥108.00¥84.24
    • 电子书 ¥64.00
    • 纸质版+电子书 ¥86.00

相关文章