“如果不能在一個月內寫出作業系統,那你就是個笨蛋!”

qwer1030274531發表於2021-10-27

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

  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界可能會走上另外一條道路。

  ————————————————

  版權宣告:本文為CSDN博主「碼農翻身」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。

  原文連結:https://blog.csdn.net/coderising/article/details/120963730


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30239065/viewspace-2839590/,如需轉載,請註明出處,否則將追究法律責任。

相關文章