Linux系統(tǒng)概述課件_第1頁
Linux系統(tǒng)概述課件_第2頁
Linux系統(tǒng)概述課件_第3頁
Linux系統(tǒng)概述課件_第4頁
Linux系統(tǒng)概述課件_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Linux系統(tǒng)概述1.1Linux的特徵及組成

Linux系統(tǒng)是包含內(nèi)核、系統(tǒng)工具、完整的開發(fā)環(huán)境和應(yīng)用的類Unix操作系統(tǒng)。這個系統(tǒng)是由全世界各地的成千上萬的程式員設(shè)計和實現(xiàn)的。1984年,RichardStallman創(chuàng)立了GNU工程,其目標(biāo)是開發(fā)一個完全免費的類Unix系統(tǒng)及其應(yīng)用程式。1991年,芬蘭赫爾辛基大學(xué)一位名叫Linus

Torvalds的學(xué)生開始了開放源代碼的Linux雛形的設(shè)計。其目的是建立不受任何商品化軟體的版權(quán)制約的、全世界都能自由使用的Unix相容產(chǎn)品1.1Linux的特徵及組成

Linux系統(tǒng)是包含內(nèi)核、系統(tǒng)工具、完整的開發(fā)環(huán)境和應(yīng)用的類Unix操作系統(tǒng)。這個系統(tǒng)是由全世界各地的成千上萬的程式員設(shè)計和實現(xiàn)的。1984年,RichardStallman創(chuàng)立了GNU工程,其目標(biāo)是開發(fā)一個完全免費的類Unix系統(tǒng)及其應(yīng)用程式。1991年,芬蘭赫爾辛基大學(xué)一位名叫Linus

Torvalds的學(xué)生開始了開放源代碼的Linux雛形的設(shè)計。其目的是建立不受任何商品化軟體的版權(quán)制約的、全世界都能自由使用的Unix相容產(chǎn)品由於Linux是一套具有Unix全部功能的免費操作系統(tǒng),它在眾多的軟體中佔有很大的優(yōu)勢,為廣大的電腦愛好者提供了學(xué)習(xí)、探索以及修改電腦操作系統(tǒng)內(nèi)核的機(jī)會1.1.1Linux的主要特性1開放性

開放性是指系統(tǒng)遵循遵循開放系統(tǒng)互連(OpenSystemsInterconnection,OSI)國際標(biāo)準(zhǔn)。凡遵循國際標(biāo)準(zhǔn)所開發(fā)的硬體和軟體,都能彼此相容,可方便地實現(xiàn)互連。2多用戶

多用戶是指系統(tǒng)資源可以被不同用戶各自擁有使用,即每個用戶對自己的資源(例如:檔、設(shè)備)有特定的許可權(quán),互不影響。Linux和Unix都具有多用戶的特性。

1.1.1Linux的主要特性3多任務(wù)

多任務(wù)是現(xiàn)代電腦的最主要的一個特點。它是指電腦同時執(zhí)行多個程式,而且各個程式的運行互相獨立。4良好的用戶介面

Linux向用戶提供了兩種介面:用戶介面和系統(tǒng)調(diào)用5設(shè)備獨立性

設(shè)備獨立性是指操作系統(tǒng)把所有外部設(shè)備統(tǒng)一當(dāng)作成文件來看待,只要安裝它們的驅(qū)動程式,任何用戶都可以像使用檔一樣,操縱、使用這些設(shè)備,而不必知道它們的具體存在形式。

1.1.1Linux的主要特性6.豐富的網(wǎng)路功能

完善的內(nèi)置網(wǎng)路是Linux的一大特點。Linux在通信和網(wǎng)路功能方面優(yōu)於其他操作系統(tǒng)。7可靠的系統(tǒng)安全

Linux採取了許多安全技術(shù)措施,包括對讀、寫進(jìn)行許可權(quán)控制、帶保護(hù)的子系統(tǒng)、審計跟蹤、核心授權(quán)等,這為網(wǎng)路多用戶環(huán)境中的用戶提供了必要的安全保障。

8良好的可移植性

可移植性是指將操作系統(tǒng)從一個平臺轉(zhuǎn)移到另一個平臺使它仍然能按其自身的方式運行的能力。

1.1.2Linux的組成

通常操作系統(tǒng)由內(nèi)核和一些系統(tǒng)服務(wù)程式(命令解釋、庫檔、鏈接和編譯程序等)組成。內(nèi)核是操作系統(tǒng)的靈魂,它為用戶進(jìn)程提供了一個虛擬機(jī)介面。用戶進(jìn)程可以並行運行、公平的佔用系統(tǒng)資源而互不干擾。1.

Linux內(nèi)核

內(nèi)核是系統(tǒng)的心臟,是運行程式和管理像磁片和印表機(jī)等硬體設(shè)備的核心程式。它從用戶那裏接受命令並把命令送給內(nèi)核去執(zhí)行。

2.

Linux

shell

shell是系統(tǒng)的用戶介面,提供了用戶與內(nèi)核進(jìn)行交互操作的一種介面。它接收用戶輸入的命令並把它送入內(nèi)核去執(zhí)行。

1.1.2Linux的組成3.

Linux檔結(jié)構(gòu)/homebinprocusrbootlibdevetcvarzhengweiYMbinlibmantmplogrunspool1.1.2Linux的組成3.

Linux檔結(jié)構(gòu)名稱

角色root

root檔系統(tǒng)中的內(nèi)容包括:引導(dǎo)系統(tǒng)的必備檔,檔系統(tǒng)的掛裝資訊以及系統(tǒng)修復(fù)工具和備份工具等。/usr/usr檔系統(tǒng)中包含通常操作中不需要進(jìn)行修改的命令程式檔、程式庫、手冊和其他文檔等。/var/var檔系統(tǒng)中包含經(jīng)常變化的檔,例如印表機(jī)、郵件、新聞等的假脫機(jī)目錄、日誌檔、格式化後的手冊頁以及臨時檔等。

/homehome中包含用戶的主目錄,用戶的數(shù)據(jù)保存在其主目錄中

/proc

/proc檔系統(tǒng)並不保存在磁片上,相反,操作系統(tǒng)在內(nèi)存中創(chuàng)建這一檔系統(tǒng)。

(1)root檔系統(tǒng)

root檔系統(tǒng)中包含一些關(guān)鍵檔,同時其內(nèi)容也比較小。如果root檔系統(tǒng)被破壞,操作系統(tǒng)就無法正確引導(dǎo)。root檔系統(tǒng)中包含的檔和目錄見表1.2。表1.2root檔系統(tǒng)中的檔和目錄/vmlinuz

檔。系統(tǒng)的標(biāo)準(zhǔn)引導(dǎo)映像,通常以壓縮形式出現(xiàn)。

/bin

包含引導(dǎo)過程必需的命令,也可由普通用戶使用。/sbin和/bin類似,盡管其中的命令可由普通用戶使用,但由于這些命令屬于系統(tǒng)級命令,因此無特殊需求不使用其中的命令。/etc

包含與特定電腦相關(guān)的配置檔。/rootroot用戶的主目錄。/lib

root檔系統(tǒng)中的程式要使用的共用庫保存在該目錄中。表1.2root檔系統(tǒng)中的檔和目錄/lib/modules包含可裝載的內(nèi)核模組。/dev

包含設(shè)備檔。/tmp包含臨時檔。引導(dǎo)後運行的程式應(yīng)當(dāng)在/var/tmp中保存文件,因為其中的可用空間大一些。/boot

包含引導(dǎo)裝載程式要使用的檔。內(nèi)核映像通常保存在這個目錄中。因為多個內(nèi)核映像會佔用很多磁片空間,因此可將該目錄放置在單獨的檔系統(tǒng)中。

/mnt臨時檔系統(tǒng)的掛裝點。/usr,/var,

/home,/proc其他檔系統(tǒng)的掛裝點。(2)/usr檔系統(tǒng)

/usr

檔系統(tǒng)中包含所有的程式檔以及聯(lián)機(jī)文檔,因此其內(nèi)容通常很大。/usr檔系統(tǒng)中包含的檔和目錄見表1.3。表1.3/usr檔系統(tǒng)中的目錄/usr/X11R6

包含X窗口系統(tǒng)的所有檔。

/usr/X386

和/usr/X11R6類似,但包含X11的Release5。/usr/bin

絕大多數(shù)用戶命令。其他命令包含在/bin和/usr/local/bin中。/usr/sbin

root檔系統(tǒng)中不需要的系統(tǒng)管理命令。/usr/man/usr/info/usr/doc

分別包含手冊頁、GNUInfo文檔以及其他雜項文檔。/usr/include

C語言的頭檔。

/usr/lib

程式和子系統(tǒng)所使用的不變的數(shù)據(jù)檔。/usr/local

本地掛裝的軟體和其他檔的存放位置。

(3)/var檔系統(tǒng)

/var包含系統(tǒng)運行過程中經(jīng)常發(fā)生變化的檔。/var檔系統(tǒng)中包含的目錄見表1.4。表1.4/var檔系統(tǒng)中的目錄/var/catman格式化手冊頁的高速緩存。/var/lib包含系統(tǒng)運行時經(jīng)常改變的檔。

/var/local安裝/usr/local中的程序的可變數(shù)據(jù)。/var/lock包含鎖檔。

/var/log包含程式產(chǎn)生的日誌檔。

/var/run該目錄包含在下次引導(dǎo)之前有效的、和系統(tǒng)相關(guān)的資訊/var/spool

排隊任務(wù)的假脫機(jī)目錄

/var/tmp包含大的臨時檔,或者保存時間較長的臨時檔。(4)/proc檔系統(tǒng)

/proc檔系統(tǒng)並不保存在磁片上,操作系統(tǒng)在內(nèi)存中創(chuàng)建這一檔系統(tǒng)。/proc檔系統(tǒng)中包含的檔和目錄見表1.5。表1.5/proc檔系統(tǒng)中的檔和目錄/proc/1該目錄中包含進(jìn)程號為1的進(jìn)程資訊。每個進(jìn)程在/proc目錄下有一個以自己的進(jìn)程號為名稱的目錄。

/proc/cpuinfo

有關(guān)CPU名稱、型號、性能和類型的資訊。/proc/devices

當(dāng)前內(nèi)核中的設(shè)備驅(qū)動程式列表。

/proc/dma當(dāng)前使用的DMA通道。

/proc/filesystems內(nèi)核支持的檔系統(tǒng)。

/proc/interrupts當(dāng)前使用的中斷資訊。/proc/ioports當(dāng)前使用的I/O端口。/proc/kcore系統(tǒng)物理記憶體的映像。

4.

Linux實用工具

標(biāo)準(zhǔn)的Linux系統(tǒng)都有一套叫做實用工具的程式,它們是專門的程式,例如編輯器、執(zhí)行標(biāo)準(zhǔn)的計算操作等。用戶也可以產(chǎn)生自己的工具。

1.2Linux內(nèi)核的主要組成部分

操作系統(tǒng)一般由內(nèi)核和一些系統(tǒng)程式組成,同時,還有一些應(yīng)用程式幫助用戶完成特定任務(wù)。內(nèi)核是操作系統(tǒng)的靈魂,它負(fù)責(zé)管理磁片上的檔、記憶體,負(fù)責(zé)啟動並運行程式,負(fù)責(zé)從網(wǎng)路上接收和發(fā)送數(shù)據(jù)包等等。

Linux內(nèi)核主要是由進(jìn)程調(diào)度、記憶體管理、虛擬檔系統(tǒng)、網(wǎng)路介面和進(jìn)程間通信五部分組成。

(1)進(jìn)程調(diào)度負(fù)責(zé)控制進(jìn)程對CPU的訪問,調(diào)度程式使用一種策略確保所有的進(jìn)程都能公平的訪問CPU,並且確保內(nèi)核在任意時刻能執(zhí)行必要的硬體操作。

(2)記憶體管理負(fù)責(zé)管理系統(tǒng)的物理記憶體,實現(xiàn)多進(jìn)程安全享享電腦的記憶體。

1.2Linux

內(nèi)核的主要組成部分

(3)虛擬檔系統(tǒng)通過將各種設(shè)備抽象為一種公共介面,從而遮罩了各種硬體設(shè)備的細(xì)節(jié)。虛擬檔系統(tǒng)可以分為邏輯檔系統(tǒng)和設(shè)備驅(qū)動程式兩部分。

(4)網(wǎng)路介面提供了對各種網(wǎng)路標(biāo)準(zhǔn)的存取和各種網(wǎng)路硬體的支持,實現(xiàn)了對各種網(wǎng)路標(biāo)準(zhǔn)和網(wǎng)路硬體的訪問。網(wǎng)路介面可分為網(wǎng)路協(xié)議和網(wǎng)路驅(qū)動程式。網(wǎng)路協(xié)議部分負(fù)責(zé)實現(xiàn)每一種可能的網(wǎng)路傳輸協(xié)議。網(wǎng)路設(shè)備驅(qū)動程式負(fù)責(zé)與硬體設(shè)備通訊,每一種可能的硬體設(shè)備都有相應(yīng)的設(shè)備驅(qū)動程式。1.2Linux內(nèi)核的主要組成部分

(5)進(jìn)程間通信子系統(tǒng)實現(xiàn)了系統(tǒng)內(nèi)部進(jìn)程間的多種通信機(jī)制。這五個子系統(tǒng)互相依賴,但相對來說進(jìn)程調(diào)度處在比較重要的地位。其他子系統(tǒng)需要掛起和恢復(fù)進(jìn)程的運行都必須依靠進(jìn)程調(diào)度子系統(tǒng)的參與。

1.2.1記憶體管理

對任何一臺電腦而言,其記憶體以及其他資源都是有限的。為了讓有限的物理記憶體滿足應(yīng)用程式對內(nèi)存的大需求量,Linux採用了稱為“虛擬記憶體”的記憶體管理方式。Linux將記憶體劃分為容易處理的“記憶體頁”,在系統(tǒng)運行過程中,應(yīng)用程式對內(nèi)存的需求大於物理記憶體時,Linux可將暫時不用的記憶體頁交換到硬碟上,這樣,空閒的記憶體頁可以滿足應(yīng)用程式的記憶體需求,應(yīng)用程式卻不會注意到記憶體交換發(fā)生。

Linux的記憶體管理子系統(tǒng)採用分頁方式管理和使用物理記憶體資源。它根據(jù)不同的晶片採用不同層次的頁表系統(tǒng)(例如Alpha採用三層頁表,Intel採用兩層頁表)實現(xiàn)了進(jìn)程的邏輯地址空間到物理記憶體地址的映射。因此兩個進(jìn)程可以訪問相同的地址空間而使用不同的物理記憶體。1.2.1記憶體管理1.2.1記憶體管理1.2.1記憶體管理

為了改善系統(tǒng)的運行性能,Linux內(nèi)核採用了多種Cach技術(shù):緩存Cach、頁面Cach、交換Cach和硬體Cach。緩存Cach:它中存儲的是塊設(shè)備驅(qū)動模組使用的緩存數(shù)據(jù)。緩存Cach大小固定,使用設(shè)備識別字和塊號進(jìn)行標(biāo)識。它能大大的提高內(nèi)核對外設(shè)的訪問速度。頁面Cach:它被用來加快對磁片上影像和數(shù)據(jù)的訪問速度。它緩存一個檔中邏輯頁面的內(nèi)容,使用檔和文件中的偏移進(jìn)行標(biāo)識。交換Cach:只有被修改的頁面才被再次寫入到交換區(qū)中,那些已經(jīng)在交換區(qū)中有備份,而且沒有修改的頁面將被直接丟棄。這樣可以大大的提高虛存交換的速度。硬體Cach:用在進(jìn)程中的地址轉(zhuǎn)換,將用過的虛擬地址到物理地址的轉(zhuǎn)換緩存起來,當(dāng)需要進(jìn)行地址轉(zhuǎn)換時,系統(tǒng)不是直接去找頁表,而是在緩存中找。由於Linux系統(tǒng)採用多級頁表系統(tǒng),因此這種技術(shù)可以大大的加快進(jìn)程運行速度。1.2.1記憶體管理

記憶體管理子系統(tǒng)由三個模組組成:體系結(jié)構(gòu)相關(guān)模組、體系結(jié)構(gòu)獨立模組和系統(tǒng)調(diào)用模組。

(1)體系結(jié)構(gòu)相關(guān)模組:實現(xiàn)了一個物理記憶體管理硬體的虛擬介面。(2)體系結(jié)構(gòu)獨立模組:該模組實現(xiàn)了進(jìn)程地址空間映射和虛擬記憶體交換,負(fù)責(zé)決定那些記憶體頁交換到檔系統(tǒng)中去。(3)系統(tǒng)調(diào)用介面:該模組用來為用戶進(jìn)程提供有限的訪問許可權(quán)。該模塊允許用戶分配和釋放存儲區(qū),將記憶體影像到I/O檔上。1.2.2進(jìn)程調(diào)度

進(jìn)程實際是某特定應(yīng)用程式的一個運行實體。在

Linux系統(tǒng)中,能夠同時運行多個進(jìn)程,Linux通過在短的時間間隔內(nèi)輪流運行這些進(jìn)程而實現(xiàn)“多任務(wù)”。進(jìn)程是系統(tǒng)分配資源的最小單位。一個進(jìn)程就是一個運行實體。在Linux中,所有資源都是以進(jìn)程為對象來進(jìn)行分配的。Linux系統(tǒng)是一個多任務(wù)的系統(tǒng),進(jìn)程調(diào)度就是要保障各個進(jìn)程能公平的使用系統(tǒng)的CPU資源。

1.2.2進(jìn)程調(diào)度

Linux內(nèi)核在保障進(jìn)程運行效率的實現(xiàn)方面具有很多特點:(1)Linux設(shè)計了一系列的數(shù)據(jù)結(jié)構(gòu),它們能準(zhǔn)確地描述進(jìn)程的狀態(tài)和其資源使用情況,以便能公平有效地使用系統(tǒng)資源。Linux的調(diào)度演算法能確保不出現(xiàn)某些進(jìn)程過度佔用系統(tǒng)資源而導(dǎo)致另一些進(jìn)程無休止地等待的情況。這一方法從根本上保證了系統(tǒng)的高效和穩(wěn)定。(2)Linux的進(jìn)程創(chuàng)建採用了Copyonwrite技術(shù),即不拷貝父進(jìn)程的空間,而是拷貝父進(jìn)程的頁表,使父進(jìn)程和子進(jìn)程共用物理空間,並將這個共用空間的訪問許可權(quán)置為只讀。當(dāng)父進(jìn)程和子進(jìn)程的某一方進(jìn)行寫操作時,Linux檢測到一個非法操作,這時才將要寫的頁進(jìn)行複製。這一做法免除了只讀頁的複製,從而降低了開銷。

1.2.2進(jìn)程調(diào)度

進(jìn)程調(diào)度子系統(tǒng)可以分為四個模組:調(diào)度策略模組、體系結(jié)構(gòu)相關(guān)模組、體系結(jié)構(gòu)獨立模組和系統(tǒng)調(diào)用介面模組。(1)調(diào)度策略模組:該模組主要負(fù)責(zé)判斷哪個進(jìn)程將訪問CPU。策略的制定必須保證所有進(jìn)程可以得到比較公正的待遇。(2)體系結(jié)構(gòu)相關(guān)模組:該模組被設(shè)計為將電腦特定體系結(jié)構(gòu)抽象為一種公共介面。這些模組負(fù)責(zé)和CPU通信實現(xiàn)進(jìn)程的掛起和運行。它們知道如何為進(jìn)程保留那些寄存器和狀態(tài)資訊以及如何執(zhí)行彙編代碼來實現(xiàn)進(jìn)程的掛起和運行。(3)體系結(jié)構(gòu)獨立模組:該模組和調(diào)度策略模組通信決定下一個該運行的進(jìn)程,然後調(diào)用體系結(jié)構(gòu)相關(guān)模組來恢復(fù)進(jìn)程的運行。另外該模組還調(diào)用記憶體管理模組保證要運行的進(jìn)程的記憶體得到的恢復(fù)。(4)系統(tǒng)調(diào)用介面模組:該模組只允許用戶進(jìn)程訪問內(nèi)核明確公佈的資源。這樣將用戶進(jìn)程對內(nèi)核的以來限制在一個很少變化的介面範(fàn)圍內(nèi)。

1.2.3設(shè)備驅(qū)動程式

設(shè)備驅(qū)動程式是Linux內(nèi)核的主要部分。和操作系統(tǒng)的其他部分類似,設(shè)備驅(qū)動程式運行在高特權(quán)級的處理器環(huán)境中,從而可以直接對硬體進(jìn)行操作,但正因為如此,任何一個設(shè)備驅(qū)動程式的錯誤都可能導(dǎo)致操作系統(tǒng)的崩潰。設(shè)備驅(qū)動程式實際控制操作系統(tǒng)和硬體設(shè)備之間的交互。設(shè)備驅(qū)動程式提供一組操作系統(tǒng)可理解的抽象介面完成和操作系統(tǒng)之間的交互,而與硬體相關(guān)的具體操作細(xì)節(jié)由設(shè)備驅(qū)動程式完成。一般而言,設(shè)備驅(qū)動程式和設(shè)備的控制晶片有關(guān)。例如,如果電腦硬碟是小型電腦系統(tǒng)介面(SmallComputerSystemInterface,SCSI)的硬碟,則需要使用SCSI驅(qū)動程式,而不是IDE(IntegratedDriveElectronics)驅(qū)動程式。1.2.4檔系統(tǒng)

Linux虛擬檔系統(tǒng)為用戶提供了一個一種公共的介面,而不需要瞭解物理設(shè)備或邏輯系統(tǒng)的細(xì)節(jié)。系統(tǒng)允許系統(tǒng)管理員將在任何物理設(shè)備上的邏輯檔系統(tǒng)掛接在檔目錄中。Linux支持幾種可執(zhí)行檔格式。

Linux的虛擬檔系統(tǒng)由五個模組組成:設(shè)備驅(qū)動模組、設(shè)備獨立介面模組、邏輯檔系統(tǒng)模組、系統(tǒng)獨立介面模組和系統(tǒng)調(diào)用模組。

1.2.4檔系統(tǒng)

Linux虛擬檔系統(tǒng)為用戶提供了一個一種公共的介面,而不需要瞭解物理設(shè)備或邏輯系統(tǒng)的細(xì)節(jié)。系統(tǒng)允許系統(tǒng)管理員將在任何物理設(shè)備上的邏輯檔系統(tǒng)掛接在檔目錄中。Linux支持幾種可執(zhí)行檔格式。

Linux的虛擬檔系統(tǒng)由五個模組組成:設(shè)備驅(qū)動模組、設(shè)備獨立介面模組、邏輯檔系統(tǒng)模組、系統(tǒng)獨立介面模組和系統(tǒng)調(diào)用模組。(1)設(shè)備驅(qū)動模組:該模組和具體的設(shè)備控制器相關(guān)。Linux支持大量的設(shè)備控制程式。(2)設(shè)備獨立介面模組:該模組提供了一種一致的設(shè)備視圖。(3)邏輯檔系統(tǒng)模組:針對不同的檔系統(tǒng)都有一個對應(yīng)的邏輯檔系統(tǒng)模組。Linux主要採用EXT2(SecondExtendedFileSystem)檔系統(tǒng)。

1.2.4檔系統(tǒng)

(4)系統(tǒng)獨立介面模組:該模組提供了一種獨立於硬體和邏輯檔系統(tǒng)的統(tǒng)一視圖,它採用面向字元和麵向塊的檔介面來表示所有的資源。(5)系統(tǒng)介面模組:該模組限制了用戶對系統(tǒng)中功能的訪問保證了系統(tǒng)的安全。

1.2.5網(wǎng)路

TCP/IP協(xié)議是Internet的標(biāo)準(zhǔn)協(xié)議,同時也是事實上的工業(yè)標(biāo)準(zhǔn)。Linux的網(wǎng)路實現(xiàn)支持BSD套接字,支持全部的TCP/IP協(xié)議。Linux內(nèi)核的網(wǎng)路部分由BSD套接字、網(wǎng)路協(xié)議層和網(wǎng)路設(shè)備驅(qū)動程式組成。

Linux網(wǎng)路介面子系統(tǒng)支持多種網(wǎng)路設(shè)備並支持各種網(wǎng)路協(xié)議,它將網(wǎng)路設(shè)備和協(xié)議的實現(xiàn)細(xì)節(jié)抽象化,使用戶不需要知道目前使用的網(wǎng)路設(shè)備和網(wǎng)路協(xié)議。

1.2.5網(wǎng)路Linux網(wǎng)路介面子系統(tǒng)由五個模組組成:網(wǎng)路設(shè)備驅(qū)動模組、設(shè)備獨立介面模組、網(wǎng)路協(xié)議模組、協(xié)議獨立介面模組和系統(tǒng)調(diào)用介面模組。

1.2.5網(wǎng)路Linux網(wǎng)路介面子系統(tǒng)由五個模組組成:網(wǎng)路設(shè)備驅(qū)動模組、設(shè)備獨立介面模組、網(wǎng)路協(xié)議模組、協(xié)議獨立介面模組和系統(tǒng)調(diào)用介面模組。(1)網(wǎng)路設(shè)備驅(qū)動模組:該模組針對各種網(wǎng)路設(shè)備進(jìn)行編寫,它負(fù)責(zé)和硬體的通信工作。(2)設(shè)備獨立介面模組:該模組抽象了網(wǎng)路設(shè)備的實現(xiàn)細(xì)節(jié),為子系統(tǒng)上層模組提供了一個一致的設(shè)備視圖。(3)網(wǎng)路協(xié)議模組:該模組中每個都實現(xiàn)了相應(yīng)的網(wǎng)路傳輸協(xié)議。(4)網(wǎng)路協(xié)議獨立介面模組:該模組提供了一個與網(wǎng)路硬體和網(wǎng)路協(xié)議無關(guān)的介面,這樣內(nèi)核可以在一個統(tǒng)一的視圖下訪問網(wǎng)路。(5)系統(tǒng)調(diào)用模組:該模組限制了用戶進(jìn)程對子系統(tǒng)中各種功能的訪問。1.2.6其他

除上述主要組成部分之外,內(nèi)核還包含一些一般性的任務(wù)和機(jī)制,這些任務(wù)和機(jī)制可使Linux內(nèi)核的各個部分有效地組合在一起,它們是上述主要部分高效工作的必要保證。

Linux是單塊結(jié)構(gòu)的操作系統(tǒng)。為了可方便地在內(nèi)核中添加新的組件,Linux支持可動態(tài)裝載和卸載的模組,這樣可方便地在內(nèi)核中添加新的組件或卸載不再需要的內(nèi)核組件。1.2.6其他Linux提供了多種進(jìn)程間的通信機(jī)制,其中,信號和管道是最基本的兩種。此外,Linux也提供SystemV的進(jìn)程間通信機(jī)制,包括消息佇列、信號燈及共用記憶體。為了支持不同機(jī)器之間的進(jìn)程通信,Linux還引入了BSD的Socket機(jī)制。1.2.6其他Linux提供了多種進(jìn)程間的通信機(jī)制,其中,信號和管道是最基本的兩種。此外,Linux也提供SystemV的進(jìn)程間通信機(jī)制,包括消息佇列、信號燈及共用記憶體。為了支持不同機(jī)器之間的進(jìn)程通信,Linux還引入了BSD的Socket機(jī)制。

Linux內(nèi)核採用了數(shù)據(jù)抽象技術(shù)。設(shè)備驅(qū)動程式、檔和網(wǎng)路協(xié)議等模組都作為一個獨立的模組存在,並且它們都支持一種公共的介面。1.2.6其他Linux內(nèi)核還採用了分層的技術(shù),將那些於硬體相關(guān)的模組和其他模組嚴(yán)格地分離,因此當(dāng)系統(tǒng)移植到其他平臺時,不需要對內(nèi)核做太大的修改。圖1.2說明了上述Linux內(nèi)核的重要組成部分及其相互關(guān)係。圖1.2

Linux內(nèi)核的重要組成部分

用戶級程式

系統(tǒng)調(diào)用介面虛擬檔系統(tǒng)管理記憶體管理器進(jìn)程管理器抽象網(wǎng)路程式檔系統(tǒng)驅(qū)動程式TCP/IP協(xié)議驅(qū)程IDE硬碟驅(qū)動程式軟碟驅(qū)動程式IDE硬碟軟碟以太網(wǎng)卡驅(qū)動程式以太網(wǎng)卡1.3Linux內(nèi)核分析

所有主要Linux發(fā)行版本(如Craftworks,Debian、Slackware和Redhat)都包含了源碼在內(nèi)。Linux系統(tǒng)核心就是從這些源碼中構(gòu)造出來的。

Linux核心代碼的版本編號很簡單。任何偶數(shù)編號的核心(如2.0.30)都是穩(wěn)定的發(fā)行版而奇數(shù)編號的核心(如2.1.42)都是正在開發(fā)的核心。開發(fā)版的核心是試用版本,但具有最新的特徵並支持最新的設(shè)備。1.3.1核心源碼的組織

核心源碼的頂層是/usr/src/linux目錄,在此目錄下可以看到大量子目錄:

arch這個子目錄包含了所有體系結(jié)構(gòu)相關(guān)的核心代碼。它還包含每種支持的體系結(jié)構(gòu)的子目錄,如i386。

include這個目錄包括了用來重構(gòu)核心的大多數(shù)include檔。對於每種支持的體系結(jié)構(gòu)分別有一個子目錄。

init

此目錄包含核心啟動代碼。

mm此目錄包含了所有的記憶體管理代碼。與具體體系結(jié)構(gòu)相關(guān)的記憶體管理代碼位於arch/mm目錄下,例如arch/i386/mm/fault.c。

1.3.1核心源碼的組織

drivers系統(tǒng)中所有的設(shè)備驅(qū)動都位於該目錄中。它又進(jìn)一步劃分成幾類設(shè)備驅(qū)動,如block。

ipc此目錄包含了核心的進(jìn)程間通訊代碼。

modules此目錄僅僅包含已建好的模組。

fs所有的檔系統(tǒng)代碼。它也被劃分成對應(yīng)不同檔系統(tǒng)的子目錄,如vfat和ext2。

kernel主要核心代碼。同時與處理器結(jié)構(gòu)相關(guān)代碼都放在arch/kernel目錄下。

net核心的網(wǎng)路部分代碼。

lib此目錄包含了核心的庫代碼。與處理器結(jié)構(gòu)相關(guān)庫代碼被放在arch/lib/目錄下。

scripts此目錄包含用於配置核心的腳本檔(如awk和tk腳本)。1.3.2Linux內(nèi)核源代碼的組成

閱讀核心某個部分經(jīng)常要用到好幾個其他的相關(guān)檔,對於源代碼的閱讀,要想比較順利,事先最好對源代碼的知識背景有一定的瞭解。閱讀linux內(nèi)核源代碼的基本要求是:

1、操作系統(tǒng)的基本知識。

2、對C語言比較熟悉,最好要有組合語言的知識和GNUC對標(biāo)準(zhǔn)C的擴(kuò)展的知識的瞭解。另外,在閱讀之前還應(yīng)該知道Linux內(nèi)核源代碼的整體分佈情況。

Linux內(nèi)核源代碼的組成如下1系統(tǒng)啟動與初始化在基於intel的系統(tǒng)上,Linux可以通過loadlin.exe或者LILO將核心載入記憶體並將控制傳遞給它。這部分程式位於arch/i386/kerneld/head.s。此檔完成一些處理器相關(guān)操作並跳轉(zhuǎn)到init/main.c中的main()例程。

2記憶體管理這部分代碼主要位於mm目錄裏,而與處理器結(jié)構(gòu)相關(guān)部分在arch/mm中。頁面出錯處理代碼位於mm下的memory.c檔中,記憶體映射與頁面cache代碼位於filemap.c中。buffercache則在mm/buffer.c中實現(xiàn),swapcache位於mm/swap_state.c和mm/swapfile.c中。Linux內(nèi)核源代碼的組成3核心大多數(shù)通用代碼位於kernel目錄下,而處理器相關(guān)代碼被放在arch/kernel中。調(diào)度管理程式位於kernel/sched.c,fork代碼位於kernel/fork.c。底層部分處理及中斷處理的代碼位於include/linux/interrupt.h裏。在/linux/sched.h中可以找到task_struct的描敘。

4

PCIPCI偽設(shè)備驅(qū)動位於drivers/pci/pci.c且其系統(tǒng)通用定義放在include/linux/pci.h中。每個處理器結(jié)構(gòu)具有特殊的PCIBIOS代碼,AlphaAXP的位於arch/alpha/kernel/bios32.c中。Linux內(nèi)核源代碼的組成如下5進(jìn)程間通訊進(jìn)程間通訊所有代碼都在ipc目錄中。系統(tǒng)VIPC對象都包含一個ipc_perm結(jié)構(gòu),它在include/linux/ipc.h中描敘。系統(tǒng)V消息在ipc/msg.c中實現(xiàn),共用記憶體在ipc/shm.c而信號燈位於ipc/sem.c中。管道在ipc/pipe.c中實現(xiàn)。

6中斷處理核心的中斷處理代碼總是與微處理器結(jié)構(gòu)相關(guān)。Intel系統(tǒng)的中斷處理代碼位於arch/i386/kernel/irq.c中,其定義位於include/asm-i386/irq.h中。

Linux內(nèi)核源代碼的組成如下7設(shè)備驅(qū)動

Linux核心源碼的大多數(shù)都是設(shè)備驅(qū)動。所有Linux的設(shè)備驅(qū)動源碼都放在drivers目錄中並分成以下幾類:

/block塊設(shè)備驅(qū)動包括IDE(在ide.c中)驅(qū)動。如果想尋找這些可包含檔系統(tǒng)的設(shè)備的初始化過程則應(yīng)該在drivers/block/genhd.c中的device_setup()。當(dāng)安裝一個nfs檔系統(tǒng)時不但要初始化硬碟還需初始化網(wǎng)路。塊設(shè)備包括IDE與SCSI設(shè)備。

/char此目錄包含字元設(shè)備的驅(qū)動,如ttys,串行口以及滑鼠。Linux內(nèi)核源代碼的組成7設(shè)備驅(qū)動

Linux核心源碼的大多數(shù)都是設(shè)備驅(qū)動。所有Linux的設(shè)備驅(qū)動源碼都放在drivers目錄中並分成以下幾類:

/cdrom包含所有LinuxCDROM代碼。在這裏可以找到某些特殊的CDROM設(shè)備(如SoundblasterCDROM)。IDE介面的CD驅(qū)動位於drivers/block/ide-cd.c中而SCSICD驅(qū)動位於drivers/scsi/scsi.c中。

/pci它包含了PCI偽設(shè)備驅(qū)動源碼。這裏可以找到關(guān)於PCI子系統(tǒng)映射與初始化的代碼。另外位於arch/alpha/kernel/bios32.c中的AlphaAXPPCI補(bǔ)丁代碼也值得一讀。

Linux內(nèi)核源代碼的組成7設(shè)備驅(qū)動

Linux核心源碼的大多數(shù)都是設(shè)備驅(qū)動。所有Linux的設(shè)備驅(qū)動源碼都放在drivers目錄中並分成以下幾類:

/scsi

這裏可以找到所有的SCSI代碼以及Linux支持的SCSI設(shè)備的設(shè)備驅(qū)動。

/net包含網(wǎng)路驅(qū)動源碼,如tulip.c中的DECChip21040PCI以太網(wǎng)驅(qū)動。

/sound所有的聲卡驅(qū)動源碼。

Linux內(nèi)核源代碼的組成8檔系統(tǒng)

EXT2檔系統(tǒng)的源碼位於fs/ext2中,其數(shù)據(jù)結(jié)構(gòu)定義位於include/linux/ext2_fs.h,ext2_fs_i.h以及ext2_fs_sb.h中。虛擬檔系統(tǒng)數(shù)據(jù)結(jié)構(gòu)在include/linux/fs.h中描敘且其代碼在fs//中。buffercache和update核心後臺進(jìn)程在fs/buffer.c中實現(xiàn)。

9網(wǎng)路網(wǎng)路代碼位於net目錄而大多數(shù)包含檔位於include/net中。BSD套介面代碼位於net/socket.c中。IPV4的INET套介面代碼位於net/ipv4/af_inet.c中。通用協(xié)議支撐代碼(包括sk_buff處理過程)位於net/core中,同時TCP/IP網(wǎng)路代碼位於net/ipv4中。網(wǎng)路設(shè)備驅(qū)動位於drivers/net中。

Linux內(nèi)核源代碼的組成10核心模組核心模組代碼部分位於核心中部分位於modules包中。核心代碼位於kernel/modules.c且其數(shù)據(jù)結(jié)構(gòu)與核心後臺進(jìn)程kerneld消息位於include/linux/module.h和include/linux/kerneld.h目錄中。同時必要時需查閱include/linux/elf.h中的ELF檔格式。1.3.3Linux內(nèi)核分析方法

Linux的最大的優(yōu)點之一就是它的源碼公開。首先是可以從中學(xué)到很多的電腦的底層知識,如後面將講到的系統(tǒng)的引導(dǎo)和硬體提供的中斷機(jī)制等;其他,如虛擬存儲的實現(xiàn)機(jī)制、多任務(wù)機(jī)制、系統(tǒng)保護(hù)機(jī)制等等,這些都是非讀源碼不能體會的。其次是可以從操作系統(tǒng)的整體結(jié)構(gòu)中,體會整體設(shè)計在軟體設(shè)計中的份量和作用,以及一些宏觀設(shè)計的方法和技巧:Linux的內(nèi)核為上層應(yīng)用提供一個與具體硬體不相關(guān)的平臺;同時在內(nèi)核內(nèi)部,它又把代碼分為與體系結(jié)構(gòu)和硬體相關(guān)的部分,和可移植的部分;再例如,Linux雖然不是微內(nèi)核的,但它把大部分的設(shè)備驅(qū)動處理成相對獨立的內(nèi)核模組,這樣減小了內(nèi)核運行的開銷,增強(qiáng)了內(nèi)核代碼的模組獨立性。

1.3.3Linux內(nèi)核分析方法

再是能從對內(nèi)核源碼的分析中,體會到它在解決某個具體細(xì)節(jié)問題時的巧妙方法,如Linux通過Botoom_half機(jī)制來加快系統(tǒng)對中斷的處理。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論