全面解析Linux主要構成
Linux曾今在微軟眼里什么都不是,過去了十年微軟已經正式的看待Linux了,本文為你詳細介紹Linux主要構成,為你在學習Linux主要構成時起一定的作用。Linux主要由存儲管理、進程管理、文件系統、進程間通信等幾部分組成,在許多算法及實現策略上,Linux借鑒了Unix的成功經驗,但也不乏自己的特色。
1.存儲管理
Linux采用頁式存儲管理機制,每個頁面的大小隨處理機芯片而異。例如,Intel 386處理機頁面大小可為4KB和2MB兩種,而Alpha處理機頁面大小可為8KB、16KB、32KB和64KB。頁面大小的選擇對地址變換算法和頁 表結構會有一定的影響,如Alpha的虛地址和物理地址的有效長度隨頁面尺寸的變化而變化,這種變化必將在地址變換和頁表項中有所反映。
在Linux中,每一個進程都有一個比實際物理空間大得多的進程虛擬空間,為了建立虛擬空間和物理空間之間的映射,每個進程還保留一張頁表,用于將本進 程空間中的虛地址變換成物理地址。頁表還對物理頁的訪問權限作出了規定,定義了哪些頁可讀寫,哪些頁是只讀頁,在進行虛實變換時,Linux將根據頁表中 規定的訪問權限來判定進程對物理地址的訪問是否合法,從而達到存儲保護的目的。
Linux存儲空間分配遵循的是不到有實際需要的時候 決不分配物理空間的原則。當一個程序加載執行時,Linux只為它分配了虛空間,只有訪問某一虛地址而發生了缺頁中斷時,才為它分配物理空間,這樣就可能 出現某些程序運行完成后,其中的一些頁從來就沒有裝進過內存。這種存儲分配策略帶來的好處是顯而易見的,因為它***限度地利用了物理存儲器。
盡管Linux對物理存儲器資源的使用十分謹慎,但還是經常出現物理存儲器資源短缺的情況。Linux有一個名為kswapd的進程專門負責頁面的換 出,當系統中的空閑頁面小于一定的數目時,kswapd將按照一定的淘汰算法選出某些頁面,或者直接丟棄(頁面未作修改),或者將其寫回硬盤(頁面已被修 改)。這種換出方式不同于較舊版本Unix的換出方式,它是將一個進程的所有頁全部寫回硬盤。相比之下,Linux的效率更高。
2.進程管理
在Linux中,進程是資源分配的基本單位,所有資源都是以進程為對象來進行分配的。 在一個進程的生命期內,它會用到許多系統資源,會用CPU運行其指令,用存儲器存儲其指令和數據,它也會打開和使用文件系統中的文件,直接或間接用到系統 中的物理設備,因此,Linux設計了一系列的數據結構,它們能準確地描述進程的狀態和其資源使用情況,以便能公平有效地使用系統資源。Linux的調度 算法能確保不出現某些進程過度占用系統資源而導致另一些進程無休止地等待的情況。
進程的創建是一個十分復雜的過程,通常的做法需為子 進程重新分配物理空間,并把父進程空間的內容全盤復制到子進程空間中,其開銷非常大。為了降低進程創建的開銷,Linux采用了 Copy?on?write技術,即不拷貝父進程的空間,而是拷貝父進程的頁表,使父進程和子進程共享物理空間,并將這個共享空間的訪問權限置為只讀。當 父進程和子進程的某一方進行寫操作時,Linux檢測到一個非法操作,這時才將要寫的頁進行復制。這一做法免除了只讀頁的復制,從而降低了開銷。
3.文件系統
Linux最重要的特征之一就是支持多個不同的文件系統,前面我們已經看到,Linux目前支持的文件系統多達十余種,隨著時間的推移,這一數目還在不斷增加。
在Linux中,一個分離的文件系統不是通過設備標識(如驅動器號或驅動器名)來訪問,而是把它合到一個單一的目錄樹結構中,通過目錄來訪問,這一點與 Unix十分相似。Linux用安裝命令將一個新的文件系統安裝到系統單一目錄樹的某一目錄下,一旦安裝成功,該目錄下的所有內容將被新安裝的文件系統所 覆蓋,當文件系統被卸下后,安裝目錄下的文件將會被重新恢復。
Linux最初的文件系統是Minix。該文件系統對文件限制過多,并 且性能低下,如文件名長度不能超過14個字符、文件大小不能超過64MB。為了解決這些問題,Linux的開發者們設計了一個Linux專用的文件系統 EXT。EXT對文件的要求放松了許多,但在性能上并沒有大的改觀,于是就有了后面的EXT2文件系統。EXT2文件系統是一個非常成功的文件系統,它無 論是對文件的限制還是在性能方面都大大優于EXT文件系統,所以,EXT2自從推出就一直是Linux最常用的文件系統。
為了支持多種文件系統,Linux用一個被稱為虛擬文件系統(VFS)的接口層將真正的文件系統同操作系統及系統服務分離開。VFS允許用戶同時透明地安裝多個不同的文件系統。
VFS掩蓋了不同文件系統之間的差異,使所有文件系統在操作系統和用戶程序看來都是等同的。4.進程間通信:
Linux提供了多種進程間的通信機制,其中,信號和管道是最基本的兩種。除此以外,Linux也提供System V的進程間通信機制,包括消息隊列、信號燈及共享內存。為了支持不同機器之間的進程通信,Linux還引入了BSD的Socket機制。希望本文的為你介紹的Linux主要構成,對你有所幫助。
【編輯推薦】