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