ZHANG Jun
Linux是一種自由和開放源碼的類Unix操作系統。目前存在著許多不同的Linux,但它們都使用了Linux內核。Linux可安裝在各種計算機硬件設備中,從手機、平板電腦、路由器和視頻游戲控制臺,到臺式計算機、大型機和超級計算機。Linux是一個領先的操作系統,世界上運算最快的10臺超級計算機運行的都是Linux操作系統[1]。Linux一詞的誕生之初僅僅代表的是Linux操作系統的內核,但是,隨著Linux操作系統內核的不斷發展,Linux一詞代表的是Linux操作系統,并不僅僅局限于內核。Linux得名于計算機業余愛好者Linus Torvalds。
Linux操作系統誕生與1981年,同一年,IBM公司推出享譽全球的微型計算機IBM PC。到1991年,GNU計劃已經開發出了許多工具軟件,其中包括有名的emacs編輯系統、bash shell程序、gcc系列編譯程序、gdb調試程序等等。這些軟件為Linux 操作系統的開發創造了一個合適的環境,是Linux 能夠誕生的基礎之一。GNU計劃旨在開發一個類似Unix的操作系統,并且該操作系統是完全免費的、開源的。但是Linux內核的發展并不是很順利,Gnu C編譯器的誕生也沒有加快免費的GNU 操作系統的誕生,MINIX操作系統在發展的過程中已經有了版權,但是這種操作系統是有償的,并不是免費的。對于Linux操作系統而言,已經發展到關鍵階段,自1991年以來,Linus Torvalds便著手編制屬于自己的操作系統,隨著研究的深入,Linux操作系統不僅改變了傳統的操作系統的編程模式,還成為了目前微軟操作系統的最強大的競爭對手。
操作系統的誕生是圍繞著計算機的軟件以及硬件而發展的,Linux操作系統的誕生的目的便是用于和硬件進行通信,并為使用者提供服務的最底層的支撐軟件,計算機的軟件以及硬件是相互關聯的,絕不能分割開。一個完整的計算機是由許多個硬件部件組成的,比如,處理器、內存、外圍輸入輸出設備、硬盤等一些列電子設備。但是,這些硬件沒有得到軟件的支撐,硬件是毫無意義的。使得這些硬件能夠投入工作的軟件便是操作系統,操作系統也可以理解為硬件使能的軟件,Linux操作系統中的操作系統指的是“內核”或者“核心”,一個完整的Linux內核主要有以下幾個主要部分組成:文件系統、網絡通信、存儲管理系統、系統調用、CPU和進程管理以系統初始化引導等。
操作系統的分析需要明確操作系統的體系架構,因此,分析操作系統不能僅僅局限于某一個角度、分析操作系統的其中的一個目標便是能夠使得我們能夠更加清晰理解操作系統的源碼。Linux內核從架構上得到創新,實現了技術性比較強的體系架構屬性。一方面,Linux內核是由很多個子系統組成的,另外一個方面,Linux操作系統將所有的服務集成與內核一體中,因此,Linux內核又是一個完整的整體。這些與微內核的體系架構存在著諸多不同之初,微內核先是會為用戶提供一些簡便的、使用頻率高的服務,比如輸入輸出、內存管理以及通信等,但是,微內核卻將具體的服務都嵌入到微內核層中。隨著Linux內核的不斷發展,Linux內核已經發展的非常穩定,并且在內存的使用以及CPU的使用上面大大提高了效率。此外,Linux內核具備非常好的移植特性,Linux內核編譯通過之后便可以運行在不同類型的CPU處理器中以及體系架構不同的平臺上。
Linux的研發團隊可以稱之為Linux社區,他們主要負責開發以及規范Linux內核,并將內核的版本控制成唯一的。但是,實際中的Linux操作系統中的內核的版本則指的是Linux內核的版本號。Linux1.0是Linux內核的第一版,誕生于1994年3月14日,從此之后,Linux內核版本便會不斷被更新。Linux內核為了能夠友好的與Copyright相對照,特將已經發展標準的GNU許可協議修改為Copyleft。通用的公共許可(GPL)授權用戶可以拷貝、修改以及銷售帶有Copyleft的應用程序,或者Copyright應用程序,但是,必須確保應用程序可以進一步的進行拷貝、修改以及銷售,同時,也必須確保其余的用戶也可以無償的獲取最新的內核源碼。實踐證明。通用的公共許可(GPL)在Linux內核發展的過程中起到了非常大的作用,GPL不僅將Linux帶入了商業化的階段,還使得Linux編程人員更加團結,不斷的誘惑新的系統愛好者加入到Linux中。一個Linux內核主要由下面幾個子系統組成:
系統調用接口:系統調用接口簡稱SCI,SCI主要是為執行從用戶空間到內核的一系列的函數調用提供特殊的機制。SCI主要依賴于操作系統的體系架構,SCI的實現源碼主要存放在文件路徑./linux/kernel中,而依賴的體系架構源碼則存放在./linux/arch中;進程管理,進程管理子系統的主要工作是執行相關的進程操作。通常情況下,進程管理在內核中也稱之為線程管理,主要代表的是單獨的CPU虛擬化。進程這個術語一般情況下在用戶空間叫的比較多,但是Linux內核并沒有將進程與線程兩個概念分別開來、Linux內核中新的進程的創建方式是通過SCI提供的應用程序編程接口(API),通過提供的API,用戶可以通過執行kill、exit命令停止相關進程,并可以在進程與進程之間實現同步與通信,通信機制主要有signal或者POSIX機制。進程管理個工作還需要負責處理不同進程之間如何共享CPU的需求的操作。因此,O(1)調度程序便隨著Linux內核的誕生而被研究出來,該算法是一種全新的調度算法,無論目前競爭CPU的進程有多少個,O(1)調度程序算法均可以在固定的世間中進行操作,可以理解為調度進程的時間是固定的,不會因為競爭CPU的進程是數量而變化。O(1)調度程序算法還可以支持多種CPU處理器(稱為對稱多處理器或SMP)。進行管理的源碼部分主要在內核的文件系統中的./linux/kernel文件中,而依賴于體系結構的源代碼則存放在./linux/arch中。
內存管理:內存管理是Linux內核管理的非常重要的資源。Linux內核為了提高整個操作系統的效率,虛擬內存交由硬盤進行管理,其管理方式則是按照內存中的區、塊、頁的方式,最小的管理方式便是頁。Linux內核不僅對可用內存進行管理,還管理著虛擬內存映射以及物理映射所采用的硬件機制進行管理,整個linux內核管理的內存要高于4KB緩沖區。Linux內存管理模式采用的是抽象4KB的緩沖區,比如采用slab分配器,其基數便是這4KB緩沖區,接著從中分配結構,并及時的跟蹤內存頁的使用情況,比如哪些頁面是壞頁,哪些頁面已經寫滿以及哪些頁面是空的、可用的等。這樣便可以使得操縱系統能夠根據頁的使用情況對內存進行動態適時調整。文件系統路徑./linux/mm中存放著內存管理的相關的程序源碼。
虛擬文件系統:虛擬文件系統簡稱為VFS,是Linux內核中相對比較重要的一個子系統,主要作用是為內核的文件系統提供通用的抽象接口,存在與文件系統與SCI之間,可以理解為二者之間的交換層,VFS上面便是文件系統與用戶之間,比如為用戶提供類似open、close等函數的一個通用API抽象。VFS下面則是文件系統的抽象,主要是定義了API抽象函數的實現形式。文件系統的源碼存放在./linux/fs文件中。
Linux操作系統是免費的、開源的,因此,Linux操縱系統為測試新的協議提高了一個優秀的平臺。Linux操作系統集成了市面上通用的網絡協議,不僅支持TCP/IP網絡傳輸協議,還支持GbE級別以上的高速網絡傳輸協議。Linux內核是以模塊的形式進行編譯的,是動態的,用戶可以根據需要對內核中的軟件組件進行刪除以及添加操作,Linux內核又稱之為動態可加載內核。Linux內核最為獨特的一點便是Linux內核還可以嵌入到其余的操作系統中運行,實現了在操作系統中運行操作系統的模式。目前,Linux內核為了擴充運用,在內核中為用戶空間添加了一個全新的應用接口,稱為KVM—基于內核的虛擬機,KVM允許別的非Linux的操作系統在啟用了KVM的內核之上運行,惟一的限制是底層處理器必須支持新的虛擬化指令。
Linux操作系統的應用遍及各個領域,目前一些國家正在將其電子政務系統向Linux平臺遷移。中國政府在Linux領域一直給予極大的支持,出臺了一系列加強Linux軟件標準建設的一系列重要舉措,這些重要舉措是:成立Linux軟件標準工作組、建立國家Linux公共服務平臺體系和出臺軟件政府采購管理辦法。標準工作組致力突破重大應用瓶頸,目前在推廣Linux應用中,標準問題已經成為當務之急。任何一項新技術發展到一定程度,如果沒有統一的標準就沒有了方向。最終的目標是讓Linux與Windows精確兼容[3],所謂精確兼容,就是使用Linux的效果要與Windows非常接近,在有限應用,如桌面Office、Email、瀏覽器等應用中,Linux與原來的Windows能夠很好地銜接,這就是標準。
公共平臺服務中小企業,Linux的標準非常重要,而建立Linux評測體系和公共服務也同等重要,從政府的角度出發,目前正在建立一個國家Linux公共服務平臺,為廣大中小企業創造更好的創新環境。據介紹,這個公共服務平臺是非盈利機構,由政府建立,為中小企業創新提供服務。此外,電腦及信息家電的操作系統支配所有的運算功能,Linux操作系統應用的相關領域包括個人使用的PC、企業使用的服務器、信息家電功能運算、以及企業軟件開發等,此外,Linux操作系統除了影響個人的使用習慣外,也因為價格、功能、以及市場占有率等因素,深深影響企業、個人使用的意愿、投資成本,甚至相關的軟、硬件信息產業。
在信息家電嵌入式操作系統方面,Linux操作系統應用的非常廣泛,Linux操作系統的特性正好符合IA產品的操作系統小、穩定、即時與多工等需求,許多世界大廠包括新力、IBM等紛紛在其IA中采用Linux。各個國家正在全力發展Linux系統,使得Linux系統后勢看好,能夠逐漸與Windows并駕其驅。
計算機操作系統是一切軟件運行的最基本平臺,在計算機系統軟、硬件之間起到承上啟下的作用,是軟、硬件溝通的橋梁,操作系統的研發工作需要對計算機的硬件非常熟悉,同時也需要非常高的可發技術水平,是計算機軟件的核心技術,掌握了操作系統的技術,也就掌握了軟件的核心技術,這不僅對于我國軟件人才的培養是十分重要,也能進一步促進整個軟件產業健康全面的發展。Linux系統的源代碼是公開的、開放的,任何人只要有興趣都可以進行全面深入的研究,并在此基礎上開發相應的軟、硬件產品,促進整個計算機產業研究和技術的發展。
[1] 曾樹洪, 劉衛國. Linux內核搶占的實現機制分析[J]. 惠州學院學報, 2008, 6.
[2] 鄒勇, 王青, 李明樹. Linux內核的實時支持的研究與實現[J]. 計算機研究與發展, 2002, 39(4): 466-472.
[3] BOVETDP, MARCOC. 深入理解 Linux內核析[M]. 北京:中國電力出版社, 2007: 192-212 .