自由軟件和開源協(xié)議.我在Linus 系列的上一篇文章中提到了系統(tǒng)調(diào)用,有讀者問,System Call(系統(tǒng)調(diào)用)和 Library Function(庫函數(shù))到底有什么區(qū)別呢?我在這簡單回答一下。
我在Linus 系列的上一篇文章中提到了系統(tǒng)調(diào)用,有讀者問,System Call(系統(tǒng)調(diào)用)和 Library Function(庫函數(shù))到底有什么區(qū)別呢?我在這簡單回答一下。
操作系統(tǒng)的進(jìn)程空間分為內(nèi)核空間和用戶空間,不同的空間需要不同的執(zhí)行權(quán)限。其中系統(tǒng)調(diào)用運行在內(nèi)核空間,庫函數(shù)運行在用戶空間。系統(tǒng)調(diào)用是通向操作系統(tǒng)本身的接口,面向設(shè)備驅(qū)動程序和硬件,屬于底層調(diào)用,一般不具備可移植性。庫函數(shù)是更高層次的接口,面向應(yīng)用開發(fā),通過執(zhí)行系統(tǒng)調(diào)用滿足應(yīng)用軟件的需求,并降低系統(tǒng)開銷。
為了更好的理解這個問題,大家可以想象一個場景:你和你的小伙伴被空投到敵占區(qū),抵達(dá)目標(biāo)后,你通過對講機呼叫小伙伴:
「土豆土豆,我是地瓜,請掩護(hù)我!」
「土豆收到,土豆收到,可我特么種你前頭了,怎么掩護(hù)你啊?」
這種類型的通信,可以看作是庫函數(shù)調(diào)用。
等摸清楚了敵人的軍火庫坐標(biāo),想干掉它得申請硬件資源,這時候要呼叫總部:
「洞拐洞拐,我是地瓜,請向我開炮」
「洞拐明白,洞拐明白,你小子等著一起飛上天吧」
這是系統(tǒng)調(diào)用。
之所以這么設(shè)計,主要是為了: 1、分層架構(gòu);2、避免把系統(tǒng)調(diào)用直接暴露在敵人面前;3、提高性能;4、增加應(yīng)用層的可移植性。
大致如此。這個系列中會涉及一些技術(shù)話題,但大都淺顯易懂,高手不屑一閱。有不明白的初學(xué)者或非 IT 朋友想弄明白的,Google 一下大致也能七七八八,實在不明白,提出來,我再用類似的方式給大家說說。
講了 Linus,有讀者說,給介紹介紹自由軟件和開源協(xié)議吧,講講這個。不過為了防止 Linus 系列成坑,我會繼續(xù)寫下去的,直到完成這個系列,請組織監(jiān)督,請群眾放心。
什么是自由軟件呢?根據(jù)自由軟件基金會的定義,自由軟件(Free Software)是一種可以不受限制地自由使用、復(fù)制、研究、修改和分發(fā)的軟件。不受限制正是自由軟件重要的本質(zhì)。注意:其定義與是否收取費用無關(guān),自由軟件不一定是免費軟件(整理自維基百科)。
自由軟件運動的創(chuàng)始人是理查德·斯托曼,他的成絕不輸于李納斯。這位奇才出生于1953年,那是個計算機大師扎堆出生的年代。20年后他正式成長為一個理想主義者和自由軟件斗士,并開始了偉大的、光榮的、作死也不會死的戰(zhàn)斗人生,他以個人對抗整個業(yè)界,他的對手不是人或公司,而是所有封閉的軟件公司,比如蘋果、微軟、Oracle、IBM等等。他到目前為止的成有三,個個牛逼二五:
1、開發(fā)了Emacs編輯器。Emacs不用介紹了,號稱神的編輯器。 2、GNU通用公共許可證(GPL),這是世界上采用為廣泛的自由軟件許可證。 3、Copyleft,所有的GNU程序都應(yīng)遵循“Copyleft”原則,你可以復(fù)制、修改、出售自由軟件,但是源代碼相關(guān)的改動都必須公開,所有用戶都可以獲得改動后的源碼。Copyleft保證了自由軟件傳播的延續(xù)性。
這些成保障了自由軟件世界的繁榮昌盛和長治久安,同時催生了一系列的工具軟件和函數(shù)庫,比如文本編輯器、編譯器、調(diào)試工具、Web 服務(wù)器等等,但 GNU 唯獨沒有開發(fā)出操作系統(tǒng)內(nèi)核,可能是天意使然,在這個節(jié)骨眼上,李納斯開發(fā)的 Linux 內(nèi)核橫空出世了,并終采用了GPL 協(xié)議,以完全自由、免費的方式發(fā)布,從此,GNU 算是功德圓滿了,自由、開源和共享的精神一直延續(xù)到了。自由軟件服務(wù)了千家萬戶,在這樣一個信息共享的時代,我們每個人都或多或少的受益于斯托曼、李納斯和自由軟件的貢獻(xiàn)。
隨著自由軟件的蓬勃發(fā)展,GPL 也根據(jù)開發(fā)者的需求和軟件技術(shù)的發(fā)展衍生出諸多版本,目前世界上有上百種開源協(xié)議,常用的有GPL、LGPL、Apache、MIT、BSD 等,如何搞明白這些協(xié)議對開發(fā)者來說十分困難,我根據(jù)網(wǎng)絡(luò)資料畫了一張關(guān)系圖,大致解釋了這幾個流行的開源協(xié)議的關(guān)系和區(qū)別,感興趣的看看的題圖即可。
自由軟件除了自由開放之外,還隱含著公民的隱私不受侵犯的含義。隨著社會的發(fā)展,網(wǎng)絡(luò)信息監(jiān)控和審查越來越嚴(yán)重,偉大防火墻、實名制、審查制度等等,無一不包含著控制和壟斷的意味。這更加凸顯處自由軟件的意義。斯托曼說,「我們的社會正越來越依賴計算機,我們使用的軟件對保證未來社會的自由至關(guān)重要。自由軟件使我們能夠控制我們使用的技術(shù),讓技術(shù)造福個人和社會,而不是讓技術(shù)被商業(yè)公司或政府控制,用來限制或監(jiān)視我們。」
很多軟件人員使用自由軟件更容易從經(jīng)濟角度關(guān)注免費的問題,事實上另一個Free與我們更加息息相關(guān)!
這個世界很多人覺得從未去爭取過什么,活的也還不錯。但真實的原因是,有很多類似理查德·斯托曼這樣的人一直在風(fēng)口飛翔,他們是一群特立獨行的豬……