Unit/Linux歷史及相關(guān)概念

歡迎來到Unix的世界

很多人都用了很多年的Unix(其實更熟悉的是叫Linux)烂琴,也接觸到Unix世界中的各種概念滚澜,比如GCC粗仓、GNU、BSD设捐、POSIX借浊、GPL等等,也大都知道一些傳奇的如雷貫耳的人物萝招,比如Ken Thompson蚂斤、Dennis Ritchie、Linus Torvalds槐沼、Richard Stallman等曙蒸。但是這些概念是怎么發(fā)展和相互關(guān)聯(lián)的,以及這些人物是怎么書寫歷史傳奇的岗钩,相信能說清楚的人并不多纽窟。這里就專門匯總一下這些信息,供大家參考兼吓。

另外臂港,了解這些歷史本身也是非常有趣的。看起來各種雜亂無章审孽、瑣碎紛繁的點點滴滴县袱,最后還是擋不住歷史的潮流,演化出了如今精彩紛呈的現(xiàn)實世界(包括有名的Mac OS瓷胧、IOS显拳、Android等),而這和人類歷史的發(fā)展竟如此相像~

Unix

下圖是對Unit的歷史的一個簡單匯總搓萧,參考了coolshell上的一篇文章UNIX 40年:UNIX年鑒。如果對其詳細歷史有興趣的話宛畦,可以去這里看看Unix History(那個白色的橫條是一個很殘暴的PDF文件瘸洛,作者牛逼到爆)

Unit重大歷史事件

上圖中有幾個重要信息:

  • BSD誕生于1978年,是基于其在1974年收到的Unit的源碼拷貝次和,后面很多重要的發(fā)布版本都是源于BSD
  • 1988年為了統(tǒng)一Unit的標準亂象反肋,IEEE提出了POSIX標準
  • 1991年,Linux誕生踏施,但其本身只是一個操作系統(tǒng)的內(nèi)核石蔗,不包含任何的配套軟件
  • 1992年,Linux內(nèi)核被整合近了GNU畅形,GNU+Linux內(nèi)核养距,這才是大家常用的Linux系統(tǒng),實際上應(yīng)該叫GNU/Linux
  • 2001年日熬,Mac OS誕生棍厌,其基于Mach操作系統(tǒng),Mach系統(tǒng)又是基于BSD竖席,但是替換了其中的Unix內(nèi)核

Linux

下面的發(fā)展簡史摘自Linux發(fā)展歷史耘纱,做了少部分改動

Linux操作系統(tǒng)的誕生、發(fā)展和成長過程始終依賴著五個重要支柱:UNIX 操作系統(tǒng)毕荐、MINIX 操作系統(tǒng)束析、GNU計劃、POSIX 標準和Internet 網(wǎng)絡(luò)憎亚。员寇。

  • 1981 年IBM公司推出微型計算機IBM PC

  • 1991年,GNU計劃已經(jīng)開發(fā)出了許多工具軟件虽填,最受期盼的GNU C編譯器已經(jīng)出現(xiàn)丁恭,GNU的操作系統(tǒng)核心HURD一直處于實驗階段,沒有任何可用性斋日,實質(zhì)上也沒能開發(fā)出完整的GNU操作系統(tǒng)牲览,但是GNU奠定了Linux用戶基礎(chǔ)和開發(fā)環(huán)境

  • 1991年初,林納斯·托瓦茲開始在一臺386sx兼容微機上學(xué)習(xí)minix操作系統(tǒng)。1991年4月第献,林納斯·托瓦茲開始醞釀并著手編制自己的操作系統(tǒng)

  • 1991 年4 月13 日在comp.os.minix 上發(fā)布說自己已經(jīng)成功地將bash 移植到了minix 上贡必,而且已經(jīng)愛不釋手、不能離開這個shell軟件了

  • 1991年7月3日庸毫,第一個與Linux有關(guān)的消息是在comp.os.minix上發(fā)布的(此時還不存在Linux這個名稱)

  • 1991年的10月5日仔拟,林納斯·托瓦茲在comp.os.minix新聞組上發(fā)布消息,正式向外宣布Linux內(nèi)核的誕生

  • 1993年飒赃,大約有100余名程序員參與了Linux內(nèi)核代碼編寫/修改工作利花,其中核心組由5人組成,此時Linux 0.99的代碼大約有十萬行载佳,用戶大約有10萬左右

  • 1994年3月炒事,Linux1.0發(fā)布,代碼量17萬行蔫慧,當時是按照完全自由免費的協(xié)議發(fā)布挠乳,隨后正式采用GPL協(xié)議

  • 1995年1月,Bob Young創(chuàng)辦了RedHat(小紅帽)姑躲,以GNU/Linux為核心睡扬,集成了400多個源代碼開放的程序模塊,搞出了一種冠以品牌的Linux黍析,即RedHat Linux,稱為Linux"發(fā)行版"卖怜,在市場上出售

  • 1996年6月,Linux 2.0內(nèi)核發(fā)布橄仍,此內(nèi)核有大約40萬行代碼韧涨,并可以支持多個處理器。此時的Linux 已經(jīng)進入了實用階段侮繁,全球大約有350萬人使用

  • 1998年2月虑粥,以Eric Raymond為首的一批年輕的"老牛羚骨干分子"終于認識到GNU/Linux體系的產(chǎn)業(yè)化道路的本質(zhì),并非是什么自由哲學(xué)宪哩,而是市場競爭的驅(qū)動娩贷,創(chuàng)辦了"Open Source Intiative"(開放源代碼促進會)"復(fù)興"的大旗,在互聯(lián)網(wǎng)世界里展開了一場歷史性的Linux產(chǎn)業(yè)化運動

  • 2001年1月锁孟,Linux 2.4發(fā)布彬祖,它進一步地提升了SMP系統(tǒng)的擴展性,同時它也集成了很多用于支持桌面系統(tǒng)的特性:USB品抽,PC卡(PCMCIA)的支持储笑,內(nèi)置的即插即用,等等功能

  • 2003年12月圆恤,Linux 2.6版內(nèi)核發(fā)布突倍,相對于2.4版內(nèi)核2.6在對系統(tǒng)的支持都有很大的變化

其系統(tǒng)的進化是這樣的:

  • 1969.9 UNICS(Unix)
  • 1971.11 Unix Time Sharing System Edition Version V1
  • 1972.6 V2 -> 1973.2 V3 ->1973.11 V4 -> 1974.6 V5 -> 1975 V6 -> 1979 V7
  • 1987 Minix V1.0發(fā)布,基于Unit Time Sharing System V7
  • 1991.8.1 Linux 0.0.1發(fā)布,基于Minix系統(tǒng)

GNU

GNU(GNU's Not Unix)項目是1984年由Richard Stallman發(fā)起的一個開源項目羽历,該項目的目標是開發(fā)出一個完整的類Unix系統(tǒng)焊虏,其源代碼能夠不受限制地被修改和傳播。GNU項目開發(fā)出了一個包含Unix操作系統(tǒng)所有的主要部件的環(huán)境秕磷,除了內(nèi)核(內(nèi)核是由Linux項目獨立發(fā)展而來的)诵闭。GNU環(huán)境包括EMACS編輯器、GCC編譯器澎嚣、GDB調(diào)試器疏尿、匯編器、鏈接器币叹、處理二進制文件的工具以及其他一些部件润歉。

GNU為什么沒有包含Unix內(nèi)核,是因為GNU的開發(fā)策略颈抚。GNU計劃是開發(fā)一個與Unix兼容的操作系統(tǒng),在Unix系統(tǒng)內(nèi)核已經(jīng)非常完善的情況下嚼鹉,優(yōu)先開發(fā)周邊的應(yīng)用程序贩汉,等自己的內(nèi)核開發(fā)出來之后,直接替換掉內(nèi)核即可锚赤。待大部分應(yīng)用程序已經(jīng)開發(fā)完畢的時候匹舞,GNU開始開發(fā)自己的內(nèi)核,即GNU Hurd线脚。但是GNU Hurd一直處于試驗階段赐稽,沒有任何可用性,而這時剛好遇到了Linux的橫空出世(1991.8.1 Linux發(fā)布0.0.1版浑侥,GNU Hurd1991.5月發(fā)布)姊舵。Linux作為內(nèi)核,配合GNU豐富的應(yīng)用程序寓落,很自然的就結(jié)合在了一起括丁,成為了風(fēng)靡全球的GNU/Linux系統(tǒng)。

實際上市面上所有的Linux發(fā)行版其實都應(yīng)該叫做GNU/Linux發(fā)行版伶选,關(guān)于GNU的詳細信息可以參考官網(wǎng)GNU Operating System

POSIX

Portable Operating System Interface of Unix的縮寫史飞,定義了一套標準接口 - 操作系統(tǒng)為應(yīng)用程序提供的接口。由于Unix系統(tǒng)的開放性仰税,到了1988年构资,各種Unix系統(tǒng)滿天飛,在一個系統(tǒng)上正常工作的應(yīng)用程序不能移植到另一個系統(tǒng)上陨簇,這種不可移植性還往往還被大Unix廠商作為自己的賣點吐绵,極大地分裂和違背了Unix的初衷。為了統(tǒng)一這種亂象,出現(xiàn)了幾種標準:AT&T成立了Unix international標準組織拦赠,幾大廠商(DEC巍沙、HP、IBM等)成立了開放軟件基金會(OSF, Open Software Foundation)荷鼠,而IEEE則發(fā)布了POSIX標準句携,這些標準的目的都是為了統(tǒng)一Unix的接口標準(但實際上,POSIX標準并不局限于Unix系統(tǒng))允乐。

POSIX標準意在期望獲得源碼級別的軟件可移植性矮嫉,即為一個POSIX兼容的操作系統(tǒng)編寫的程序,可以在任何其它POSIX兼容的操作系統(tǒng)上編譯執(zhí)行牍疏。

BSD

Berkeley Software Distribution蠢笋,伯克利軟件套件。

AT&A的貝爾實驗室在1971年發(fā)布了第一版的Unix Time Sharing System鳞陨,到了1975年已經(jīng)發(fā)布到第6版昨寞。1974年,加州大學(xué)伯克利分校(Berkeley)獲取到一份Unix的源碼拷貝厦滤,在此基礎(chǔ)上做一些學(xué)術(shù)上的研究援岩。1978年,Berkeley的Bill Joy掏导,基于AT&T的Unix V6享怀,增加了一些自己的附件軟件,打包在一起發(fā)布了一個版本趟咆,這個版本就是第一版的BSD添瓷。

1984年,Berkeley發(fā)布了第四版的BSD值纱,該版本是世界上第一個支持TCP/IP的Unix發(fā)行版(同年鳞贷,Bill Joy成立了SUN公司)

BSD有幾個比較有名的“分支”系統(tǒng):

  • FreeBSD,主打高性能和易用性
  • OpenBSD计雌,主打安全性悄晃,很多銀行系統(tǒng)和重要機構(gòu)的系統(tǒng)都是基于OpenBSD
  • NetBSD,被設(shè)計為幾乎可用在任何架構(gòu)上凿滤,支持非常多的體系結(jié)構(gòu)
  • DragonFly BSD妈橄,適用于多線程環(huán)境的操作系統(tǒng),如計算機集群
  • Darwin/Mac OS X翁脆,Mac OS X基于Darwin操作系統(tǒng)眷蚓,而Darwin基于BSD。蘋果在BSD的基礎(chǔ)上開發(fā)了MAC OS X和IOS(內(nèi)核使用開源的BSD代碼反番,其它大部分是閉源的Mac OS代碼)沙热,類似于谷歌在Linux基礎(chǔ)上開發(fā)Android

在今天叉钥,提到BSD,并非指任何一個BSD的衍生版本篙贸,而是指類Unix操作系統(tǒng)的一個分支的總稱投队。

System V

Unix操作系統(tǒng)在操作風(fēng)格上主要分為System V和BSD。System V由AT&T發(fā)布爵川,1983年發(fā)布了第一個版本敷鸦,直到1998年發(fā)布了第四個版本,也是最經(jīng)典的一個版本寝贡,簡稱SVR4扒披。1985年,AT&A發(fā)布了SVID(SystemV Interface Definition)圃泡,希望統(tǒng)一Unix的接口標準(目標和POSIX類似)碟案。

MacOS

MacOS最終可以追溯到BSD分支,其大致演化過程為:

BSD4.2(1983.9) -> Mach(1986) -> NeXTSTEP 1.0(1989.9) -> Mac OS X 10.0(2001.3)

1986年颇蜡,Rick Rashid及其同事在Carnegie Mellon大學(xué)創(chuàng)造了Mach操作系統(tǒng)的第一個版本价说,用于取代BSD的Unix內(nèi)核。

2001年风秤,Apple 發(fā)布 Mac OS X熔任,這是一個基于Mach內(nèi)核和BSD開發(fā)的桌面操作系統(tǒng)。

Android

Android系統(tǒng)是基于Linux系統(tǒng)發(fā)展而來的唁情。在Linux的內(nèi)核上運行了一個Java虛擬機(最開始叫Dalvik虛擬機,后面改為Android Run Time甫匹,ART虛擬機)甸鸟,由虛擬機來解釋執(zhí)行用java代碼編寫的應(yīng)用程序。

開源

從Unix誕生開始兵迅,就伴隨著開源的概念抢韭。開源全稱是Open Source,是開放源代碼的意思恍箭,也就意味著開放刻恭,任何人都可以得到程序的源代碼。但是開源并不意味著免費(雖然大部分都是免費)扯夭,也是受限于版權(quán)限制的鳍贾,只是這些版權(quán)相對閉源來說要開放寬松了很多。在版權(quán)限制范圍內(nèi)交洗,可以基于源代碼做修改并重新發(fā)行骑科,甚至收費。開源的本質(zhì)是在開放构拳,是接納咆爽、包容和發(fā)展梁棠,求同存異,互利共贏斗埂。

許可證

開源并非是無限制的開放符糊,也是有版權(quán)的,這些版權(quán)的聲明就是開源許可證呛凶。比較常見的許可證有:GPL男娄、BSD、Apache把兔、MIT沪伙、LGPL、Mozilla等县好。下圖根據(jù)網(wǎng)上搜索的信息簡單整理了一下各許可證的主要許可范圍围橡,從圖中可以看到MIT許可證是最寬松的,而GPL是相對比較嚴格的缕贡。

許可證協(xié)議

下面分別簡單介紹上面幾種許可證的特點:

  • GPL翁授,GNU General Public License,其主要特點在于其“傳染性”晾咪,只要軟件中有使用了GPL協(xié)議的產(chǎn)品收擦,包括直接引用源代碼或者引用修改后的衍生代碼,則該軟件也必須采用GPL協(xié)議谍倦,開源和免費塞赂,不允許衍生代碼作為商業(yè)軟件發(fā)布和銷售。Linux和大部分GNU產(chǎn)品都是采用的GPL協(xié)議昼蛀。

  • LGPL宴猾,GNU Library or “Lesser” General Public License,允許商業(yè)軟件通過引用類庫的方式使用LGPL產(chǎn)品叼旋,而不需要公開軟件的源代碼仇哆。新增的代碼不需要采用LGPL協(xié)議,但是修改的代碼則必須采用LGPL協(xié)議夫植。LGPL協(xié)議的開源代碼很適合作為第三方類庫被商業(yè)軟件引用讹剔,但不適合希望以LGPL協(xié)議代碼為基礎(chǔ),通過修改和衍生的方式做二次開發(fā)的商業(yè)軟件采用详民。使用LGPL協(xié)議的比較有名的產(chǎn)品有JBoss延欠、Hibernate、FCKeditor等

  • BSD阐斜,Berkeley Software Distribution衫冻,BSD開源協(xié)議是一個給于使用者很大自由的協(xié)議≮顺觯基本上使用者可以自由的使用隅俘,修改源代碼邻奠,也可以將修改后的代碼作為開源或者專有軟件再發(fā)布。

    當使用了BSD協(xié)議的代碼为居,或者以BSD協(xié)議代碼為基礎(chǔ)做二次開發(fā)自己的產(chǎn)品時碌宴,需要滿足三個條件:

    • 如果再發(fā)布的產(chǎn)品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協(xié)議
    • 如果再發(fā)布的只是二進制類庫/軟件蒙畴,則需要在類庫/軟件的文檔和版權(quán)聲明中包含原來代碼中的BSD協(xié)議
    • 不可以用開源代碼的作者/機構(gòu)名字和原來產(chǎn)品的名字做市場推廣

    很多公司企業(yè)在選擇開源軟件的時候都首選BSD協(xié)議贰镣,因為可以完全控制這些第三方的代碼,而且在必要的時候可以進行修改或者二次開發(fā)膳凝。使用BSD協(xié)議的比較有名的產(chǎn)品有nginx碑隆、CruiseControl、Redis等

  • MIT蹬音,MIT License上煤,是最為寬松的協(xié)議,這個協(xié)議唯一的條件就是在修改后的代碼或者發(fā)行包包含原作者的許可信息著淆,比較適用商業(yè)軟件劫狠。使用MIT協(xié)議的產(chǎn)品如jquery、Node.js等

  • Apache License永部,是著名的非盈利開源組織Apache采用的協(xié)議独泞。該協(xié)議和BSD類似,同樣鼓勵代碼共享和尊重原作者的著作權(quán)苔埋,同樣允許代碼修改懦砂,再發(fā)布(作為開源或商業(yè)軟件)。需要滿足的條件也和BSD類似:

    • 需要給代碼的用戶一份Apache Licence
    • 如果你修改了代碼组橄,需要在被修改的文件中說明
    • 在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協(xié)議孕惜,商標,專利聲明和其他原來作者規(guī)定需要包含的說明
    • 如果再發(fā)布的產(chǎn)品中包含一個Notice文件晨炕,則在Notice文件中需要帶有Apache Licence。你可以在Notice中增加自己的許可毫炉,但不可以表現(xiàn)為對Apache Licence構(gòu)成更改
  • MPL瓮栗,Mozilla Public License,允許免費重發(fā)布瞄勾、免費修改费奸,但要求修改后的代碼版權(quán)歸軟件的發(fā)起者。這種授權(quán)維護了商業(yè)軟件的利益进陡,它要求基于這種軟件的修改無償貢獻版權(quán)給該軟件愿阐。這樣,圍繞該軟件的所有代碼的版權(quán)都集中在發(fā)起開發(fā)人的手中趾疚。但MPL允許修改和無償使用缨历,對鏈接沒有要求以蕴。

還有其它形形色色的開源協(xié)議,詳情可以參考Various Licenses and Comments about Them

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辛孵,一起剝皮案震驚了整個濱河市丛肮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌魄缚,老刑警劉巖宝与,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異冶匹,居然都是意外死亡习劫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門嚼隘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诽里,“玉大人,你說我怎么就攤上這事嗓蘑⌒胨粒” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵桩皿,是天一觀的道長豌汇。 經(jīng)常有香客問我,道長泄隔,這世上最難降的妖魔是什么拒贱? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮佛嬉,結(jié)果婚禮上妨猩,老公的妹妹穿的比我還像新娘。我一直安慰自己檩禾,他們只是感情好场躯,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著湾揽,像睡著了一般瓤逼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上库物,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天霸旗,我揣著相機與錄音,去河邊找鬼戚揭。 笑死诱告,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的民晒。 我是一名探鬼主播精居,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼锄禽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了箱蟆?” 一聲冷哼從身側(cè)響起沟绪,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎空猜,沒想到半個月后绽慈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡辈毯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年坝疼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谆沃。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡钝凶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出唁影,到底是詐尸還是另有隱情耕陷,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布据沈,位于F島的核電站哟沫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏锌介。R本人自食惡果不足惜嗜诀,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望孔祸。 院中可真熱鬧隆敢,春花似錦、人聲如沸崔慧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惶室。三九已至匣屡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拇涤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工誉结, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鹅士,地道東北人。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓惩坑,卻偏偏與公主長得像掉盅,于是被迫代替她去往敵國和親也拜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容