官术网_书友最值得收藏!

1.2 Linux操作系統與其他操作系統

在Linux操作系統的發展過程中,有兩個操作系統對它產生了深遠的影響,一個是Windows操作系統,另一個是GNU操作系統。Windows操作系統有著直觀、易用的操作方式,普通用戶也能夠很快上手使用。盡管Linux操作系統發展速度很快,但是在個人計算機領域,它還只是一個“挑戰者”。

Linux操作系統本身并沒有搭載任何應用程序,它僅實現了操作系統的核心功能。GNU操作系統則有很多應用程序,開發人員便將這些程序移植到Linux操作系統上,這樣就構成了一款“完整的”操作系統,有很多用戶將它稱作GNU/Linux操作系統。本節將簡要介紹Windows和GNU操作系統,描述它們各自的發展歷程,以及它們和Linux操作系統之間既競爭又合作的關系,使讀者能夠更全面地了解Linux操作系統發展過程中的機遇和挑戰。

1.2.1 Windows操作系統

對大多數計算機用戶而言,Windows操作系統是他們接觸并使用的第一個操作系統。Windows操作系統占據著桌面操作系統85%以上的用戶份額。相比而言,Linux操作系統在桌面操作系統端的占有率只有2%左右。這足以說明Windows操作系統的成功,客觀上講,Windows操作系統也是PC機普及化的一個重要“功臣”。

Windows操作系統是用戶友好型操作系統,它的圖形界面簡單直觀、易于上手,不需要很專業的系統知識也可以使用它。Windows操作系統主要通過鼠標和鍵盤來控制,對很多程序(軟件)的操作都可以通過鼠標點擊來完成。同時,Windows操作系統的界面(如圖1-11所示)非常符合普通用戶的操作習慣(更確切地說,Windows操作系統培養了目前用戶的操作習慣),用戶體驗很好。另外,Windows操作系統由微軟公司官方提供重要的支持和服務。

圖1-11 Windows操作系統的界面

Windows操作系統的誕生,和微軟公司的另一個操作系統—— MS-DOS有著緊密的聯系。MS-DOS是微軟公司為IBM公司的PC機設計的操作系統,最早發布于1981年,后來微軟公司又分別在1983年和1984年發布了它的升級版MS-DOS 2.0和MS-DOS 3.0。隨著因特爾公司80x86芯片的升級,MS-DOS的功能已經不能完全發揮芯片的作用,因此微軟公司決定在MS-DOS上開發一個圖形用戶界面,后來MS-DOS就發展成了Windows操作系統。最初的Windows操作系統需要運行在MS-DOS上,直到1993年Windows NT的發布,它才發展成為一個獨立且完整的32位操作系統。事實上,除了較早的Window 95和Windows 98等系統,從Windows 2000開始的操作系統都是基于Windows NT開發的,如用戶熟知的Windows XP、Windows Vista、Windows 7、Windows 10、Windows 11等。

Windows操作系統有著極其龐大的用戶基礎,這是因為基于Windows操作系統的軟件(如辦公軟件、開發軟件、工業軟件、游戲娛樂軟件)眾多,盡管其中有不少是商業付費軟件,但這也保證了軟件質量的穩定和可靠。對Linux操作系統而言,基于Linux操作系統的軟件數量也很豐富,但大多數軟件都是開源的自由軟件,其中有不少軟件是基于命令行界面的軟件,需要通過各種命令來控制,會提高用戶上手的難度。當然,用戶常用的軟件基本上都開發了圖形界面的版本,而且能在開源的前提下保證軟件的安全和可靠。

在對計算機硬件平臺的支持上,Windows操作系統會隨著新版本的發布而對計算機硬件提出更高的要求,如Windows Vista對計算機的性能、內存、硬盤空間等的要求都要比Windows XP高得多,這也引來了不少用戶的質疑。然而,Linux操作系統將所有相關的硬件檢測轉入內核,也正是由于這個獨特之處,可以讓它兼容Windows標準下更老的硬件和外圍設備,較低性能的硬件也能流暢地運行Linux操作系統。當然,在這個方面,微軟公司也在積極改進,如目前流行的Windows 10在性能上有較大提升,但是Windows 10對硬件的要求和Windows 7幾乎一致。

和所有商業化的軟件一樣,Windows操作系統的更新速度完全依賴于微軟公司,當系統出現漏洞或安全問題時,需要通過微軟公司發布的補丁程序來解決問題,有時候可能會存在較長的等待時間。在這段時間內,系統風險會比較大,但用戶可以采用的辦法并不多。由于Linux操作系統擁有開源軟件,因此幾乎每時每刻都有用戶在研究和更新系統代碼。一旦發現系統漏洞,用戶就會及時提交補丁程序,在第一時間內保證系統穩定、可靠。正因為如此,Linux內核的更新速度也很頻繁,目前一般每隔9~10周就會更新一次版本,除了必要的系統修補,還會增加新的功能。

在桌面領域和服務器領域,Windows操作系統和Linux操作系統的占有率完全不同。在桌面領域,Windows操作系統占據著絕對的市場份額,Linux操作系統只能算是競爭者和新秀。不管是國內外的公司、教育機構還是個人用戶,基本上都使用Windows操作系統,目前Windows操作系統的各個版本累計占據了大部分桌面操作系統的市場份額,而Linux操作系統的市場份額則微乎其微。然而,在服務器領域則恰恰相反,Linux操作系統占據了超過80%的市場份額,而Windows操作系統的市場份額大約只占12%。在企業成本的壓縮和國家政策的引導下,Linux操作系統的服務器市場份額還會繼續增長。開源軟件的影響力還會在全世界繼續擴大,Linux操作系統本身的質量還在不斷升級,因此不管是桌面領域還是服務器領域,Linux操作系統都會受到用戶越來越多的關注。

與Windows操作系統的直觀、易用不同,Linux操作系統假定用戶知道自己想要什么,也明白自己在做什么,并且會為自己的行為負責,相當一部分用戶會慢慢學會思考,按自己的意志行事,并對自己的行為負責。當然,操作系統各有長短,沒有絕對的好與壞。這兩款偉大的操作系統都值得我們去使用,如今使用Windows操作系統已經成為我們的日常,與此同時,我們也應該鼓起勇氣去嘗試學習使用和研究Linux操作系統。

從相互對立到相互合作

曾幾何時,微軟公司預測Linux操作系統只會起到一些有限的作用。但是在1998年11月,微軟公司的秘密備忘錄《鬼節前夕》被披露,它對Linux操作系統的真實認識引起了社會極大反響。該備忘錄高度評價了Linux操作系統的市場份額、性能和可靠性,指出:“Linux操作系統代表的是一種非常優秀的類UNIX操作系統,被廣泛地應用在關鍵業務領域,由于Linux操作系統具有開放的特性,因此它將超過其他操作系統?!薄霸谌藗冝D移至Linux操作系統后,會發現他們所需要的所有應用程序幾乎都已經被免費提供了,包括Web服務器、POP客戶端、郵件服務器和文本編輯器等?!薄癓inux操作系統在個人設置、可用性、可靠性、擴展性等性能方面的表現均超過了Windows NT(現在常用的Windows XP、Windows 7、Windows 10以及最新發布的Windows 11均是基于Windows NT內核的)?!痹趥渫浿校④浌疽渤姓J:“以Linux操作系統為代表的自由軟件在短期內已經對微軟公司的收入構成威脅。長期來說,這種自由交流思想的開發模式將極大地打擊微軟公司?!?/p>

很長一段時間以來,微軟公司將Linux操作系統視為競爭對手,一直打壓與抑制Linux操作系統的發展。比爾·蓋茨(Bill Gates)之后的繼任者,史蒂夫·鮑爾默(Steve Ballmer)對Linux操作系統的態度更不友好,他將Linux操作系統形容為“惡性腫瘤”,還認為Linux社區侵犯了微軟公司的知識產權,致使公司遭受損失。但是隨著Linux操作系統的發展以及影響力的不斷壯大,微軟公司對Linux操作系統的態度發生了大轉變。

2014年,微軟公司新上任的總裁薩蒂亞·納德拉(Satya Nadella)第一次公開表示了微軟公司對Linux操作系統和開源世界的喜愛:“微軟愛Linux?!边@句話不再是一句虛言,在此之后,微軟公司參與到Linux內核的貢獻中去,投身于開源社區,成為GitHub上對其貢獻人數最多的組織。不僅如此,微軟公司還成立了.Net基金會來推進開源項目,并推出了開源開發工具、跨平臺的Web和云平臺代碼編輯器Visual Studio Code等。微軟甚至在Windows 10中添加了Linux子系統WSL(Windows Subsystem for Linux),方便Linux開發人員和用戶直接在Windows操作系統中使用Linux命令行等實用工具。鑒于命令行的獨特優勢(很多開發人員和用戶使用Linux操作系統的主要原因之一就是Linux操作系統有命令行),微軟公司還推出了自己的終端(Terminal),整合了以前的PowerShell和cmd命令行工具,簡化了開發人員的工作流程。添加了WSL的Windows終端支持emoji表情,如圖1-12所示。

圖1-12 添加了WSL的Windows終端支持emoji表情

不過,盡管Windows操作系統和Linux操作系統相互學習,但兩個操作系統的不少用戶和開發人員之間還是處于相互對立的姿態。時至今日,很多使用Windows操作系統和Linux操作系統的用戶時?!皠Π五髲垺?,在網上“開戰”,極力美化自己所使用的操作系統,對另一個操作系統則無盡嘲弄。實際上,這兩個操作系統都是非常優秀的操作系統,兩者各有優點,也各有自身的不足。就連托瓦茲的第一臺計算機安裝和使用的都是微軟公司的DOS操作系統(后來和Linux操作系統共同安裝成為雙系統),而且他承認自己是微軟幻燈片制作軟件PowerPoint(PPT)的發燒友。因此,作為普通用戶,完全沒有必要排斥任何一個操作系統,而更應該包容和學習使用多種不同的操作系統,學會利用不同操作的特點來提高工作效率。

1.2.2 GNU操作系統

托瓦茲所實現的操作系統,并不是一個大家認為的“完整”的操作系統,它只是操作系統內核(Linux Kernel),也就是操作系統的核心,負責管理計算機硬件資源、控制應用程序和系統進程等。由于操作系統內核本身不包含任何應用程序和系統工具,因此很多開發人員就把現成的軟件和程序添加到Linux操作系統中,這樣操作系統才可用。

事實上,大部分的軟件和程序都來自GNU操作系統。GNU操作系統也被稱為GNU計劃或GNU工程,他是由理查德·斯托曼(Richard Stallman,RMS)創建的。20世紀70年代初,斯托曼在大學畢業后曾任職于麻省理工學院人工智能實驗室,他在那里主要為操作系統開發軟件。實驗室的工作氛圍輕松,大家都是編程高手,經常相互分享各自的程序代碼。但是到了20世紀80年代初,斯托曼的同事們幾乎都被其他公司挖走了,他再也不能和別人分享程序代碼了。此時,大量軟件公司成立,對軟件(尤其是對操作系統)的版權保護也越來越嚴格。這讓斯托曼意識到軟件的自由共享不僅對自己來說很重要,對其他開發人員來說也非常重要。因此,他決定創建一個自由組織(一開始組織內僅有他一人)來編寫可以共享的自由軟件。編寫軟件需要依靠操作系統,但由于當時他連不受版權保護的可用的操作系統都沒有,于是他的計劃是先創建一個自由的操作系統,這個計劃就是GNU工程。

GNU的名字來源于“GNU's Not UNIX”的首字母縮寫,其目的是創建一個自由的類UNIX操作系統,該項目正式開始于1984年1月。斯托曼認為,他應該先從操作系統的各個組件(以及必要的應用程序)入手,這樣會相對容易。因此,他就跳過操作系統內核,先編寫系統各類組件的代碼。斯托曼投入了他幾乎所有能用的時間,編寫了一個文本編輯器GNU Emacs和一個C語言編譯器GNU GCC。這兩個軟件的質量不錯,得到了用戶的一致好評,也給斯托曼帶來了經濟收入,他用這些收入成立了自由軟件基金會(FSF),這樣可以吸引愛好者們一起來實現GNU工程。在成立了自由軟件基金會后,軟件的開發速度加快了,他們開發了很多大型軟件,如C程序庫、Bash程序等。1990年前后,許多GNU操作系統的模塊和軟件都已經齊全了—— 大多數是由基金會成員開發的,一些現成的自由軟件也會被包含進來,然而操作系統的核心(內核)卻依然缺失。因此,斯托曼決定開始開發最重要也是最困難的組件—— GNU操作系統的內核(GNU Hurd),GNU Hurd的標識如圖1-13所示。GNU Hurd采用微內核的設計理念,是運行在Mach之上的服務程序的集合,主要實現網絡通信、文件系統以及訪問控制等功能。不過,由于GNU Hurd的設計理念非常先進,而且斯托曼非常追求完美,導致開發進度過于緩慢。直到1996年,第一個可以工作的GNU Hurd(測試版)才正式發布。截至目前,它依然還沒有正式版(有人戲稱,直到人類文明毀滅之后,GNU Hurd的正式版才能發布)。此時,Linux操作系統的內核已經相當成熟了。

圖1-13 GNU Hurd的標識

2016年12月,GNU Hurd 0.9發布了,這是目前最新的版本,依然還是測試版本。盡管GNU Hurd 0.9的功能仍然不完善,更不適合產品級應用,而且它的部分功能還要依賴Linux的實現方式,但是自由軟件基金會的成員們并沒有放棄,他們還在繼續完善和開發GNU Hurd,因為他們認為GNU Hurd內核能填補斯托曼“自由軟件”信念所缺少的最后一點空缺。

盡管GNU操作系統還沒有最終完成,但是GNU操作系統的理念始終如一,那就是實現一個包含100%自由軟件的類UNIX操作系統。按照斯托曼的說法,GNU操作系統“給予用戶自由”。為了確保這一點,斯托曼還在律師的幫助下,撰寫并發布了GNU通用公共許可證(General Public License,GPL),用以保護軟件“自由”的版權,很多軟件開發人員用GPL來保護自己發布的軟件。

斯托曼現在依然是自由軟件基金會的領導者之一,他是自由軟件的“斗士”,也是自由軟件運動的精神領袖。同時,他又是一個偉大的理想主義者,為了軟件真正的“自由”,他從不妥協,他認為只有“自由軟件(Free Software)”才能代表他的理念,哪怕是“開源軟件”也不行。

微內核與單內核

目前,很多操作系統都有一個單內核(monolithic kernel,也稱為宏內核),操作系統的基本功能由內核提供,包括進程和線程管理、文件系統、設備驅動、網絡和存儲管理等。典型情況是內核本身也是作為進程實現的,內核服務共享相同的地址空間。微內核(micro kernel)讓內核執行一些最基本的功能,如基本調度和進程間通信等,其他服務由守護進程(也稱為服務器)提供,這些進程和其他應用程序都在用戶態下運行。單內核操作系統主要有UNIX操作系統和Linux操作系統等。微內核操作系統主要有基于Windows NT的操作系統(Windows XP、Windows 7、Windows 10等)、Minix操作系統和GNU操作系統等。微內核在設計上更為先進,采用微內核設計可以讓內核的功能開發和守護進程分開,這樣就可以為應用程序的特定需求定制服務程序,使得開發更為簡單和靈活。單內核是整體式設計,只要修改了內核中的任何一個部分,在生效前,所有的模塊都要重新鏈接和安裝,因此修改和維護會相對困難。早在Linux操作系統發布初期,Minix操作系統的開發人員安德魯教授曾評價道:“Linux操作系統已經過時”“單內核在整體設計上是有害的”。而托瓦茲則展開反擊,回復道:“我承認微內核的設計更為先進,但是Linux操作系統的各方面性能都優于Minix操作系統”。這場辯論由兩人開始,很多技術專家、開發愛好者逐漸加入其中。最后,這場“戰爭”隨著托瓦茲的主動道歉而停止。

至于兩者到底孰優孰劣,也許UNIX操作系統的主要設計者肯·湯普森的評價最為中肯,他說:“如果從設計的眼光來審視,我們用的許多(即便說不上絕大多數)軟件都是過時的。但是對廣大用戶來說,他們可能不怎么關心自己用的操作系統內部的設計是不是過時的,他們更關心的是性能和用戶級的兼容性??偟膩碚f,我還是贊同“微內核可能會是未來的潮流”這樣的說法。但是,我覺得還是實現一個單內核的系統更容易些。當然,在改動的過程中單內核也更容易變成一團糟。”事實上,由于Linux內核在后續的升級中采用了動態鏈接等技術,內核中的模塊(如文件系統、設備驅動等)都可以被動態加載,這樣在給某個模塊修改代碼時就不會影響內核的其他組件,大大減輕了維護的難度,這讓作為單內核的Linux操作系統也具備了部分微內核系統的優點。

自由軟件與開源軟件

自由軟件的興起主要源于理查德·斯托曼領導的自由軟件運動,他的自由軟件基金會就是這個運動的一個產物。自由軟件的英文名稱是“free software”,由于“free”一詞在英文中有免費的意思,很多人認為自由軟件就是免費軟件,但斯托曼對此的真正定義是“自由(freedom)”,與價格無關,因此自由軟件可以被銷售。自由軟件代表“給予用戶自由的軟件”。自由軟件運動是一項思想運動,強調用戶擁有如何使用軟件的自由,即軟件可以自由地運行、自由地復制、自由地修改、自由地再發行。這里的“自由”和價格無關,而是指所有用戶使用軟件都是自由的。自由軟件運動也是一項社會運動,它提倡“軟件”這一產品應該是被免費分享的,自由地使用軟件(包含修改和再分享軟件)是每個人的權利,然而“專有軟件”破壞了這種權利。

自由軟件運動反對軟件的知識產權,也反對用軟件著作權或軟件專利把軟件的源代碼保護起來,據為己有。反感于著作權(copyright)這個形式,斯托曼創造了“版權開放(copyleft)”,用來保護自由軟件,同時也是自由軟件必備的“版權”。GPL就是版權開放的具體表達,GPL保障用戶能夠享有運行、復制、獲取軟件源代碼以及修改源代碼的自由。當然版權開放也要求改進源代碼后的軟件依然是自由軟件,要繼續向社會發行和傳播,只有這樣,軟件才能永遠是自由軟件。

自由軟件運動代表著斯托曼的理想和信念,但是它也比較極端和理想化,有著濃重的個人色彩。因為新用戶越來越難理解自由軟件的理念,所以部分志愿者開始使用開源軟件來代替自由軟件,并在1998年成立了開放源代碼促進會(Open Source Initiative,OSI)來開展開源軟件運動。盡管斯托曼對這個概念并不認可,但是開源軟件卻更多地被人們所接受,因為開源軟件在關注軟件開源和自由發布的同時,更注重開發人員、用戶、公司和機構之間的信任和合作關系,希望他們能夠為開源軟件的開發而努力。由于開源軟件的限制條件更少,因此開源軟件更能保障多方權利。

其實在不刻意追求細節的前提下,開源軟件和自由軟件的差異微乎其微,它們都給予了軟件自由傳播(即軟件共享)和開放源代碼的權利,因此在本書中,默認“自由軟件”和“開源軟件”是相同含義。為了保留敘述的準確性,這兩個詞語在書中都會被用到。不過斯托曼和他領導的自由軟件基金會并沒有認可“開源軟件”這個詞語,而是依然保持“自由軟件”的稱呼。因為他們認為兩者的價值觀完全不同。開源軟件只關注軟件的質量和功能,卻避開了自由、社區以及部分原則;而自由軟件則尊重用戶的自由,保護自由的權利。因此只有“自由軟件”或“自由軟件運動”才能真正代表斯托曼的理念。

主站蜘蛛池模板: 海盐县| 温宿县| 辰溪县| 广平县| 班玛县| 深圳市| 洛宁县| 鄢陵县| 新津县| 宜君县| 蓬安县| 翼城县| 常山县| 都江堰市| 博白县| 广州市| 图木舒克市| 镇坪县| 渝中区| 平罗县| 芦溪县| 武宣县| 龙海市| 林州市| 扎赉特旗| 沧州市| 托里县| 祁阳县| 商都县| 孟津县| 威信县| 涞水县| 浦东新区| 武安市| 勐海县| 沾化县| 正定县| 南华县| 合水县| 禄丰县| 秦皇岛市|