“如果不能在一個月內寫出作業系統,那你就是個笨蛋!” ——說這話的人似乎就是個瘋子,不過這確實是我當年的心理感受,
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折,點擊閱讀原文即可購買,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/337701.html
標籤:其他
上一篇:Cloud ? 構建Docker倉庫Harbor程序詳解(組態檔全參決議注釋)
下一篇:基于是stm32的串口通信
