本來這篇文章我是跟在我的《黑客帝國》影評里的,但是因為太長,而且相對比較獨立,于是專門獨立出來一篇文章來講。
期望大家也把這種思想帶入到你們的架構設計工作當中,這才是我寫這篇文章的目的。大家千萬不要把我這篇文章看做是計算機歷史八卦。
(1)S/360
1964年,IBM發布了S/360大型機,這是一款真正意義上的現代計算機,如今所有的系統軟硬件,基本都能在這款計算機上看到雛形。當然,這款計算機的研發差點要了IBM的命,要不是小沃森是IBM創始人的親兒子,估計S/360這個項目早就被夭折了。這款計算機的研發之復雜性,有本經典的書特別有裨益,這就是我??闯P碌摹度嗽律裨挕?。
當時一臺大型機那得多昂貴啊,1964年的幾百萬美金啊。那要是讓一個個人來排隊獨占,那利用效率那得多低。
所以,IBM在1964年的S/360大型機的操作系統中,就引入了虛擬機的思想,實現了分時系統。S/360可以最多有15個虛擬機,可以使用CPU時鐘切片輪巡的方法,做到多用戶分時使用。
(2)Unix
當年的計算機產業界,可謂是白雪公主和七個小矮人。就連電氣廠商通用電氣、霍尼韋爾都研發設計生產計算機。
通用電氣為了和IBM競爭,聯合了麻省理工、貝爾實驗室,一起研發和OS/360競爭的操作系統,這就是Multics。大家都知道,S/360的研發都差點要了IBM的命,而計算機小矮人通用電氣才能有多少氣力來搞研發。所以隨著競爭的時間推移,通用電氣覺得在計算機這個行當無法和IBM競爭了,就打算退出計算機產業。所以也就停止了對Multics研發項目的資金支持。
這些貝爾實驗室Multics項目組的這幫人要失業啊。這幫人沒有新科研任務,也沒被貝爾實驗室開除,有點惶惶不可終日??偟酶慵虑槌鰜戆?。
Kenneth Thompson說:咱們貝爾實驗室主要以專利來考核,但是現在這個編寫專利的軟件太有問題了,我給重新編寫一個吧。
于是他先在這臺編寫專利的DEC的PDP-11小型機上開發了一個文檔編輯軟件。但是他又嫌DEC的操作系統太爛,性能啊、穩定性啊。大家都知道,大神們往往對這個世界看不慣,說要有光,于是光就有了。大神于是利用圣誕節假期、老婆回娘家的機會,寫了一個新的文件系統。為了讓這個新的文件系統被DEC PDP-11小型機能夠使用,他又寫了一個引導程序,讓DEC 小型機在啟動的時候能夠Load他的文件系統,這樣他的文件系統就接管了DEC小型機的操作系統。
(3)NT
被UNIX的鼻祖Kenneth Thompson罵為爛操作系統的,這個DEC操作系統的創始人叫卡特勒。
卡特勒后來在DEC干的郁悶,就被蓋茨挖到了微軟。
展開全文
當時微軟正在和IBM合作開發下一代PC操作系統。因為微軟和IBM在1980年就合作,IBM PC電腦上用的就是微軟的命令行DOS操作系統。但是IBM PC的競爭死對頭推出了圖形界面的操作系統,所以IBM也和微軟再次合作,想讓微軟搞出IBM PC機上的圖形界面操作系統。
咱們再說個題外話后再返回來。其實IBM在1980年找微軟搞IBM PC操作系統的時候,微軟一開始沒打算用DOS。微軟一開始是準備和SCO合作,把Unix服務器操作系統移植到PC機上,這就是XENIX??上?,這事搞砸了。蓋茨一看這生意要掉地上,于是趕快買了一個操作系統給IBM先上上去,這就是后來的DOS。
咱們話再說回來,有這兩個背景故事后,卡特勒就來微軟開發操作系統了。當時IBM的要求是開放兼容(這是IBM主打蘋果封閉性的一個打點),所以卡特勒就設計了一個C/S思想的操作系統內核,相當于內核之內核:對著下面的所有開放兼容的硬件(CPU),這個內核之內核是統一抽象的,對著上面的所有的應用層,這個內核之內核也是統一抽象的。
這個設計思想當時把微軟的人嚇的要死,因為要抽象這么多層,那當時PC機的CPU怎么能帶得動呢?
幸運的是,Intel當年沒掉鏈子,幾年間把x86級的CPU性能提高的蹭蹭的,NT終于在商業工程實踐中證明了這條路是可行的。
現在,NT內核已經成為了微軟所有操作系統的內核。
(4)VMWare
NT研發,內核研發負責人是卡特勒,但是項目經理是保羅馬里茨。
這個人一看,NT這種思想不就是IBM S/360虛擬機的設計思想么?居然在低性能的x86芯片上也能實現IBM大型機的玩法。
于是,保羅馬里茨就離開微軟,加入了成立不久的VMWare,擔任CEO。
大家以為VMWare是虛擬機的發明公司,其實不是,這得溯源到NT的商業工程實踐證明,還得溯源到IBM的S/360。
(5)Linux
整個世界的操作系統,有兩大主流分支,一支是類Unix,一支是NT的。而NT的創始人和Unix的創始人也是”相愛相殺“:我開發的DEC操作系統,被你自己編寫的Unix操作系統所替代,那么我就再開發一個NT。這是這兩個創始人大神的交集。
蘋果的操作系統的根源就來自BSD Unix。而Google的移動操作系統Android,內核是Linux。
Linux是Linus這個人在上大學的時候,老師講操作系統。操作系統課,學生要做作業。Linus這個人很感興趣,搞搞搞,覺得自己也能寫個操作系統,于是結合Unix操作系統的思想,重新發明了一遍輪子,開發出了Linux。
(6)操作系統哲學
我是個人感覺Kenneth Thompson和卡特勒這兩大神是有哲學思想的。
Unix之所以能流行,不僅和開源推廣、教學推廣相關,更是和Unix的設計哲學相關。Unix就是在高復雜的Multics項目失敗經驗教訓之上重新思考的。如何簡化?Kenneth的設計哲學就起作用了。
東方朱熹的哲學套路是:格物致知。在宋朝的時候,當時的新鮮事物還沒那么多,朱熹宣稱的是:世界上的萬物就那么多,我們只需要一個個去洞察,我們就能知道萬物的特性和發展規律。但是從宋朝到了明朝后期,大航海時代開啟了,資本主義萌芽開始了,新鮮事物太多了,這時候再格物致理,人的一生就無法窮盡了。所以王陽明覺得應該有一個通用大道理,后來就總結出來一條:人欲即天理。
而Kenneth設計Unix的哲學也很高明,為啥Multics那么復雜,就是因為Multics要考慮很多東西,如:鍵盤、屏幕、磁盤、打印機、網卡...。Unix是1970年發明、1974年推廣的。那時候計算機產業已經爆發了,很多新鮮技術都出現了,和王陽明面臨的萬物涌現時代很相似。所以一個操作系統要管理這么多新的東西,太復雜了。所以Kenneth說出了那句經典的哲學:萬物皆IO。
所以,別管是文件系統、磁盤、網卡、打印機、屏幕...,都是IO。用同一套IO方法:打開、讀取、寫入、關閉,就完全搞定。
Unix的可移植性是C語言提供的便利。但NT的可移植性設計,則是卡特勒的C/S設計哲學。IBM要求的是開放兼容,這也是無窮無盡的,怎么辦?
卡特勒進入哲學思考境界了。他想:操作系統的本質是什么?操作系統的本質是軟件來模擬計算機硬件。也就是說:操作系統其實就是個軟件計算機。
這就是虛擬機的思想了。
這也是后來云計算,用XEM和KVM這些開源虛擬機技術搭建云服務器的根源。
(7)黑客帝國計算機
黑客帝國有四個人:
1、矩陣這個虛擬數字世界的設計者:架構師
2、先知
3、墨菲斯
4、警察史密斯
黑客帝國其實描述的就是整個地球就是一個超級大計算機(這難道不是云計算最終極的愿景么?)。這個超級大計算機需要一個操作系統。這個操作系統的設計者就是架構師。
但這個操作系統,和Kenneth設計Unix一樣,需要一個引導程序。這個引導程序,在黑客帝國里面就是墨菲斯。墨菲斯在希臘神話中是夢神,專門是把人引導到夢中的。夢,不就是計算機的虛擬世界么(元宇宙,嘿嘿嘿)?
而先知,看似老在引導尼奧,但她并不是引導程序。她在計算機術語里的角色,應該是操作系統的進程管理程序。所以尼奧在《黑客帝國》第二集一開始被封在了虛擬世界里的車站,后來被先知的代理人Agent通過特殊權限跳出。這就是因為先知是操作系統的進程管理程序,她可以控制上層所有的進程。但她平時也不能老使用特殊權限來玩進程,否則這個操作系統很容易崩潰。
有警察史密斯,就是因為和尼奧在搏斗中發現了這個特殊權限。你想啊,他也不想操作系統一重啟,他這個進程就死了啊,所以他也想永生。但怎么永生?于是他就想到了利用這個特殊權限漏洞,把自己復制到計算機虛擬世界的各個角落,就像我們怕一個重要文件丟失了于是復制了很多份分開放在各個地方。這就自然而然成了病毒的本質。
如何殺死病毒后重新開啟一個干凈的操作系統,這就是尼奧的事了。
附錄:《 黑客帝國:夢中沒有錯與對 夢中有安也有危 》
延伸讀物:
《信息簡史》
《計算機簡史》
《Unix傳奇》
《觀止:NT研發歷程》
網友留言: