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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

8良好的可移植性

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

1.1.2Linux的組成

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

Linux內(nèi)核

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

2.

Linux

shell

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

1.1.2Linux的組成3.

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

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

角色root

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

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

/proc

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

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

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

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

/bin

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

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

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

包含設(shè)備檔。/tmp包含臨時(shí)檔。引導(dǎo)後運(yùn)行的程式應(yīng)當(dāng)在/var/tmp中保存文件,因?yàn)槠渲械目捎每臻g大一些。/boot

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

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

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

/usr

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

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

/usr/X386

和/usr/X11R6類(lèi)似,但包含X11的Release5。/usr/bin

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

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

分別包含手冊(cè)頁(yè)、GNUInfo文檔以及其他雜項(xiàng)文檔。/usr/include

C語(yǔ)言的頭檔。

/usr/lib

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

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

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

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

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

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

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

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

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

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

/proc/cpuinfo

有關(guān)CPU名稱(chēng)、型號(hào)、性能和類(lèi)型的資訊。/proc/devices

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

/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實(shí)用工具

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

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

操作系統(tǒng)一般由內(nèi)核和一些系統(tǒng)程式組成,同時(shí),還有一些應(yīng)用程式幫助用戶(hù)完成特定任務(wù)。內(nèi)核是操作系統(tǒng)的靈魂,它負(fù)責(zé)管理磁片上的檔、記憶體,負(fù)責(zé)啟動(dòng)並運(yùn)行程式,負(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)程對(duì)CPU的訪(fǎng)問(wèn),調(diào)度程式使用一種策略確保所有的進(jìn)程都能公平的訪(fǎng)問(wèn)CPU,並且確保內(nèi)核在任意時(shí)刻能執(zhí)行必要的硬體操作。

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

1.2Linux

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

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

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

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

1.2.1記憶體管理

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1.2.4檔系統(tǒng)

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

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

1.2.4檔系統(tǒng)

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

1.2.5網(wǎng)路

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

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

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

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

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

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

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

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

用戶(hù)級(jí)程式

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

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

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

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

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

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

init

此目錄包含核心啟動(dòng)代碼。

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

1.3.1核心源碼的組織

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

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

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

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

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

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

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

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

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

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

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

Linux內(nèi)核源代碼的組成如下1系統(tǒng)啟動(dòng)與初始化在基於intel的系統(tǒng)上,Linux可以通過(guò)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中。頁(yè)面出錯(cuò)處理代碼位於mm下的memory.c檔中,記憶體映射與頁(yè)面cache代碼位於filemap.c中。buffercache則在mm/buffer.c中實(shí)現(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ū)動(dòng)位於drivers/pci/pci.c且其系統(tǒng)通用定義放在include/linux/pci.h中。每個(gè)處理器結(jié)構(gòu)具有特殊的PCIBIOS代碼,AlphaAXP的位於arch/alpha/kernel/bios32.c中。Linux內(nèi)核源代碼的組成如下5進(jìn)程間通訊進(jìn)程間通訊所有代碼都在ipc目錄中。系統(tǒng)VIPC對(duì)象都包含一個(gè)ipc_perm結(jié)構(gòu),它在include/linux/ipc.h中描敘。系統(tǒng)V消息在ipc/msg.c中實(shí)現(xiàn),共用記憶體在ipc/shm.c而信號(hào)燈位於ipc/sem.c中。管道在ipc/pipe.c中實(shí)現(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ū)動(dòng)

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

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

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

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

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

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

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

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

/scsi

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

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

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

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核心後臺(tái)進(jìn)程在fs/buffer.c中實(shí)現(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處理過(guò)程)位於net/core中,同時(shí)TCP/IP網(wǎng)路代碼位於net/ipv4中。網(wǎng)路設(shè)備驅(qū)動(dòng)位於drivers/net中。

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論