Unix和Linux的故事

世界上有三大操作系統,Windows、Linux和Unix。安卓系統是基於Linux的,蘋果系統是基於Unix的。

據報道,全世界大部分的伺服器運行著Linux操作系統,其中99%的超級計算機都是使用Linux。

但是Linux系統又被稱為「類Unix系統」,所以,我們要先講講Unix操作系統的故事。


Unix也翻譯為「尤尼斯」,不過專業人士不會叫它的中文名。

Unix的作者,是肯·湯普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie),兩人也是C語言的設計者,在1983年共獲圖靈獎

。論貢獻,老湯在Unix開發中作用更大,里奇在C語言的設計中功勞更多。

虎老獅:C語言本紀(含C++)?

zhuanlan.zhihu.com圖標

1969年8月,在「貝爾實驗室」工作的老湯自己搗鼓了個操作系統玩遊戲——這個操作系統如此的不完善,以至於被嘲諷為eunuchs,太監的意思。老湯也不生氣,接下了這個發音,使用了更簡單的字母拼寫——U-N-I-X。

1970年,Unix基本完成,用的是彙編語言。

1973年,老湯和里奇用C語言重新編寫Unix,這使得Unix易讀易懂易修改,好用好使好移植。

易讀易懂易修改,好用好使好移植

貝爾實驗室一開始沒把Unix當回事兒,Unix本來就不是正式項目,也就沒想著拿它去賣錢。此後,不值錢的Unix被免費提供給大學使用,直接給源代碼。

正因為「易讀易懂易修改」,Unix很快成為操作系統課程的教學案例,並逐漸流行起來,各大學、公司對也對其進行各種各樣的改進和擴展,衍生出多種版本,並形成兩大流派,一支是商業派,另一支是非商業派。

  • 商業派,以AT&T公司為代表,不公開源碼,視源代碼為商業機密,甚至不準大學使用Unix源代碼。

  • 非商業派有個響亮的名字——BSD,叫作「伯克利軟體套件」(Berkeley Software Distribution),是加州大學伯克利分校開發的。BSD擁護軟體開源,鼓勵代碼共享。當然,在BSD版本上開發商業版也是允許的,比如蘋果的操作系統也是基於BSD UNIX,但蘋果的系統是閉源的。

老湯和里奇在一次操作系統的學術研討會上,發過一篇關於Unix的論文,這個引起了加州大學伯克利分校的鮑勃·法布瑞教授的興趣。鮑勃教授要了一份拷貝,Unix就傳入了伯克利大學。

Unix進了伯克利之後,很受歡迎,被各色人等擅自修改,逐漸得到完善和改進。伯克利大學也不把Unix歸為己有,本著學術交流的目的,把Unix到處傳播。他們也不收錢,誰想要給個磁帶就幫你複製一份,地址遠的把磁帶連同運費一起寄過來,拷貝完了給寄回去。

伯克利大學的師生對Unix做了很大的修改,其中有個主要貢獻者叫比爾·喬伊(Bill Joy),後來他創建了SUN公司,推出了著名的Java語言。

虎老獅:Java列傳?

zhuanlan.zhihu.com圖標

由於AT&T禁止大學使用Unix源代碼進行教學,Tanenbaum(坦嫩鮑姆)教授極為不滿,一怒之下編寫了個類似的系統,取名Minix——mini-Uinix的意思。這個操作系統非常簡單,代碼只有12000行,但是它直接導致了另外一個神級操作系統的誕生。

1991年,Linus Torvalds(林納斯·托瓦茲)從Minix得到靈感,開發出Linux。Unix的定位是「類Unix操作系統」——不是Unix,但類似Unix,往根上倒,還是Unix的思想,這就好比「天下武功出少林」的說法,Linux也是源自Unix。

林納斯痴迷計算機,最讓他亢奮的事情就是敲代碼,讀大學時,對《Unix操作系統》課程極度痴迷,因為當時Unix已經閉源了,他決定自己動手編寫一個操作系統,把課堂上學到的知識實踐起來。

他花了幾個月的時間,不分晝夜地敲代碼,也只寫了一個內核,不禁感嘆單槍匹馬地開發操作系統太難了,1991年9月,托瓦茲乾脆把自己的源代碼公開,取名Linux,版本號0.01,大小63KB,呼籲廣大黑客一起來改進。

Linux因為結構清晰、功能簡潔、源碼公開,一經發布即收受好評,隨機迅速走紅。

1993年10月,發布了11個版本

1993年12月,發布了10個版本

1994年1月,發布了14個版本

1994年2月,發布了11個版本

這比後來的各類軟體的所謂快速迭代快得多得多得多。

關於Linux,有一部紀錄片可以參考——《操作系統革命》,豆瓣評分8.6,B站上有中英雙語字幕的版本。提醒一下,由於是紀錄片,所以有點枯燥。

順便說一句,現在很火的版本管理軟體git,也是林納斯寫的,git的願意是「飯桶」。著名的github,是git分化出的一個商業版本。


推薦閱讀:

進程間通信
進程間通信的方式(四):信號量
修改shell最大並發數為dos做準備
如何運用DEAP-XP 1進行簡單的效率分析
快速入門 Linux 計劃任務

TAG:操作系統 | Linux | Unix |