close

「如果不能在一個月內寫出操作系統,那你就是個笨蛋!」——說這話的人似乎就是個瘋子,不過這確實是我當年的心理感受。

01

伯克利大學播下的種子

上世紀70年代,我坐在伯克利的一間教室中,上巴特勒·蘭普森教授的操作系統課。

當時的我不可能知道, 巴特勒·蘭普森會獲得1992年圖靈獎,他的頭上會籠罩上一堆耀眼的光環:

著名的XEROX PARC研發中心的創建者

第一個個人計算機Alto的研發者

激光打印機,WYSIWYG(所見即所得),以太網(Ethernet),局域網(Local Area Network)等重要發明的參與者。

我非常清楚地記得,蘭普森在課上講述了CTSS——世界上第一個分時操作系統——然後以他獨特的方式問道:

「有沒有人不能在一個月內寫出CTSS?!」

沒人舉手。

我也不敢舉手,因為我覺得如果你不能在一個月內寫出操作系統,那你就是個笨蛋。

蘭普森在我心裡埋下了一顆種子。

02

去荷蘭當教授

博士畢業以後,我面臨一個選擇:去工業界還是留在學術界?這時我想起了一件事:

有一年暑假,我去IBM實習(當然,是為了賺點錢),有一天我穿了一件顏色「不合適」的襯衫上班,我的同事告訴我這麼穿是不對的,還提出了「改進建議」, 從那時開始,我就覺得不適合在企業界做事了。

我的妻子是荷蘭人,於是我就和她一起移居到了荷蘭,在阿姆斯特丹的Vrije大學教書。其中有一門課就是操作系統。

70年代Unix剛剛流行起來,AT&T最初把Unix和源碼都提供給大學和科研機構,所以使用Unix進行教學是非常自然的選擇。

當時John Lions寫了一本非常知名的書《萊昂氏UNIX源代碼分析》。

這本書真是一行一行地解釋Unix源碼,受到大家的熱烈歡迎!

可AT&T有些「精打細算」的人不喜歡這樣,他們覺得:讓全世界的學生來「圍觀」偉大的Unix源碼是個非常可怕的主意,於是 Unix V7附帶了一個License : 不能把V7 用於教學!

我認為這可能是IT公司犯的最傻的錯誤!

我想起了蘭普森說的一個月寫個操作系統的話,我為什麼自己不寫一個呢?

03

操作系統的泥潭

我很喜歡阿姆斯特丹,這是一座宜人、寧靜的城市,我很喜歡這裡的天氣,一年中大部分時間都是灰濛濛的,下着毛毛細雨,很適合在室內和溫暖的電腦呆在一起。

我開始寫一個和Unix V7兼容的操作系統,具體花了多長時間我有點記不清了,但是即將完成的時候,我和你們一樣,遇到了一個難以復現的巨大Bug:它運行15分鐘以後就會崩潰!

這真是讓人大傷腦筋!無奈之下,我就寫了一個具備跟蹤調試功能的PC模擬器,讓操作系統在這個模擬器中運行,每次崩潰,我就會查看最近的10萬行指令,看看到底發生了什麼。

PC模擬器花費了我相當多的時間,如果我有商業頭腦的話,應該把它做成產品,因為這就是未來的VMWare啊!

終於有一天,我的操作系統可以完美地在模擬器上運行了,永不崩潰。

趕緊移到真正的硬件上執行,讓我崩潰的是,它又開始間歇性地罷工了!

誰說一個月就能寫個操作系統?!

就在我要放棄的時候,我的一個學生羅伯特告訴我:當Intel CPU變熱的時候,會產生15號中斷 。

而我並沒有捕獲這個中斷,因為CPU手冊上並沒有提到它。

感謝羅伯特,他把我從泥潭中拉來出來,我只需要加上一小段代碼,操作系統就可以穩定運行了。

我決定把操作系統叫做Mini UNIX ,簡稱Minix。

04

寫書

Minix可以穩定工作以後,我就決定像Lions那樣,寫一本書,這樣就Minix就可以用來教學了。

這本書的每一章都有三個部分:

1. 講述操作系統每個組件的通用設計原則

2. 這些原則是如何應用到Minix中的,以及關鍵的數據結構

3. 對源代碼的詳細描述

書名就叫做:

如果你想獲得源代碼的話,可以從出版社Prentice Hall 單獨購買,售價 69 美元, 包括10張軟盤。

69美元價格不便宜,但是也只是略高於製造成本,考慮到1987年Unix的大學教育許可證是300美元,商業許可證是28000美元,Minix第一次將一個類Unix的操作系統的成本降低到了學生可以接受到的水平。

在發布後的幾個月內,Minix成為了一個狂熱的產品,擁有自己的USENET新聞組comp.os.minix,其中有40000名訂閱者。

許多人開始纏着我改進它, 我每天都要收到200封電子郵件,內容大都是:「我需要一個偽終端,這周五就要!」,我的回答通常是:

「No」!

因為我想讓Minix保持簡單,這樣學生們可以理解,我不希望Minix變成一個像Unix那樣複雜的用於生產環境的系統。

並且當時Unix的一個分支BSD非常穩定、成熟,有龐大的社區和追隨者,所以我也沒想讓Minix進入這一市場,可是後來AT&T認為BSD侵犯了版權,對它發起了一場訴訟, 花了幾年的功夫,這嚴重阻礙了BSD的發展。

在這幾年中,有個叫Linus的芬蘭小伙子購買了Minix源碼,在上面玩得不亦樂乎,最後折騰出了一個全新的操作系統Linux, 伴隨着互聯網的大潮,全世界程序員都參與開發, Linux迅速發展起來,填補了免費Unix的空缺。

Linux的故事參見《Linus : 我財務自由後,我卻失眠了!》

05

意外之喜

Minix的獨特之處就是「微內核」:操作系統只有很小部分功能運行在核心態,大部分功能文件系統、內存管理等都運行在用戶態。

這樣,當某一部分出錯的時候,可以輕鬆恢復。甚至在不停機的情況下,就可以完成操作系統組件的升級。

這種特性對於高可靠的系統特別重要,如航空電子系統、噴氣式戰鬥機、醫院的呼吸機——系統失敗就意味着有人死亡,其中大多數都是微內核。

前些年,有Intel的工程師聯繫我,問了我一些技術問題,還想讓我對Minix 3進行一些針對性修改,後來我們就沒有聯繫了。

沒想到, 後來爆出一個大新聞, 從2008年開始,Intel 居然把Minix用到了它的CPU的ME(Management Engine)管理引擎當中。

這個ME相當於一個小型、低功耗電腦系統,運行在Ring -3 (Windows, Linux等運行在Ring 0), 我的Minix就駐紮在這裡。

運行在Ring -3 的Minix 有一個網絡堆棧、文件系統、很多驅動程序、甚至還有一個Web服務器!

聽起來是不是很可怕?怪不得Google努力地從自家服務器中移除Minix。

不管如何,MINIX現在可能是世界上使用最廣泛的x86電腦操作系統了。

06

蝴蝶的翅膀

根據混沌理論,亞馬遜的一隻蝴蝶煽動翅膀,就可能引起美國海岸的一場颶風。

如果當年羅伯特沒有偶然地告訴我15號中斷,就不可能有Minix。如果沒有Minix,Linux也就不復存在。這樣基於Linux的Android 也可能不存在, 現在蘋果和三星的市值可能大為不同, IT界可能會走上另外一條道路。

我是Andrew S. Tanenbaum。

你可能沒有直接使用過Minix,但是應該讀過我寫的書:

(完)

我的新書《半小時漫畫計算機》京東、噹噹熱銷中,五折優惠,不容錯過,長按二維碼即可購買

另外,沒有看過第一本《碼農翻身》的小夥伴可以考慮下兩本套裝,都是5折,點擊閱讀原文即可購買。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()