![Linux系统概述课件_第1页](http://file4.renrendoc.com/view6/M02/2C/3A/wKhkGWeQ29SAIiMJAACk76BTUvw130.jpg)
![Linux系统概述课件_第2页](http://file4.renrendoc.com/view6/M02/2C/3A/wKhkGWeQ29SAIiMJAACk76BTUvw1302.jpg)
![Linux系统概述课件_第3页](http://file4.renrendoc.com/view6/M02/2C/3A/wKhkGWeQ29SAIiMJAACk76BTUvw1303.jpg)
![Linux系统概述课件_第4页](http://file4.renrendoc.com/view6/M02/2C/3A/wKhkGWeQ29SAIiMJAACk76BTUvw1304.jpg)
![Linux系统概述课件_第5页](http://file4.renrendoc.com/view6/M02/2C/3A/wKhkGWeQ29SAIiMJAACk76BTUvw1305.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux系統概述1.1Linux的特徵及組成
Linux系統是包含內核、系統工具、完整的開發環境和應用的類Unix操作系統。這個系統是由全世界各地的成千上萬的程式員設計和實現的。1984年,RichardStallman創立了GNU工程,其目標是開發一個完全免費的類Unix系統及其應用程式。1991年,芬蘭赫爾辛基大學一位名叫Linus
Torvalds的學生開始了開放源代碼的Linux雛形的設計。其目的是建立不受任何商品化軟體的版權制約的、全世界都能自由使用的Unix相容產品1.1Linux的特徵及組成
Linux系統是包含內核、系統工具、完整的開發環境和應用的類Unix操作系統。這個系統是由全世界各地的成千上萬的程式員設計和實現的。1984年,RichardStallman創立了GNU工程,其目標是開發一個完全免費的類Unix系統及其應用程式。1991年,芬蘭赫爾辛基大學一位名叫Linus
Torvalds的學生開始了開放源代碼的Linux雛形的設計。其目的是建立不受任何商品化軟體的版權制約的、全世界都能自由使用的Unix相容產品由於Linux是一套具有Unix全部功能的免費操作系統,它在眾多的軟體中佔有很大的優勢,為廣大的電腦愛好者提供了學習、探索以及修改電腦操作系統內核的機會1.1.1Linux的主要特性1開放性
開放性是指系統遵循遵循開放系統互連(OpenSystemsInterconnection,OSI)國際標準。凡遵循國際標準所開發的硬體和軟體,都能彼此相容,可方便地實現互連。2多用戶
多用戶是指系統資源可以被不同用戶各自擁有使用,即每個用戶對自己的資源(例如:檔、設備)有特定的許可權,互不影響。Linux和Unix都具有多用戶的特性。
1.1.1Linux的主要特性3多任務
多任務是現代電腦的最主要的一個特點。它是指電腦同時執行多個程式,而且各個程式的運行互相獨立。4良好的用戶介面
Linux向用戶提供了兩種介面:用戶介面和系統調用5設備獨立性
設備獨立性是指操作系統把所有外部設備統一當作成文件來看待,只要安裝它們的驅動程式,任何用戶都可以像使用檔一樣,操縱、使用這些設備,而不必知道它們的具體存在形式。
1.1.1Linux的主要特性6.豐富的網路功能
完善的內置網路是Linux的一大特點。Linux在通信和網路功能方面優於其他操作系統。7可靠的系統安全
Linux採取了許多安全技術措施,包括對讀、寫進行許可權控制、帶保護的子系統、審計跟蹤、核心授權等,這為網路多用戶環境中的用戶提供了必要的安全保障。
8良好的可移植性
可移植性是指將操作系統從一個平臺轉移到另一個平臺使它仍然能按其自身的方式運行的能力。
1.1.2Linux的組成
通常操作系統由內核和一些系統服務程式(命令解釋、庫檔、鏈接和編譯程序等)組成。內核是操作系統的靈魂,它為用戶進程提供了一個虛擬機介面。用戶進程可以並行運行、公平的佔用系統資源而互不干擾。1.
Linux內核
內核是系統的心臟,是運行程式和管理像磁片和印表機等硬體設備的核心程式。它從用戶那裏接受命令並把命令送給內核去執行。
2.
Linux
shell
shell是系統的用戶介面,提供了用戶與內核進行交互操作的一種介面。它接收用戶輸入的命令並把它送入內核去執行。
1.1.2Linux的組成3.
Linux檔結構/homebinprocusrbootlibdevetcvarzhengweiYMbinlibmantmplogrunspool1.1.2Linux的組成3.
Linux檔結構名稱
角色root
root檔系統中的內容包括:引導系統的必備檔,檔系統的掛裝資訊以及系統修復工具和備份工具等。/usr/usr檔系統中包含通常操作中不需要進行修改的命令程式檔、程式庫、手冊和其他文檔等。/var/var檔系統中包含經常變化的檔,例如印表機、郵件、新聞等的假脫機目錄、日誌檔、格式化後的手冊頁以及臨時檔等。
/homehome中包含用戶的主目錄,用戶的數據保存在其主目錄中
/proc
/proc檔系統並不保存在磁片上,相反,操作系統在內存中創建這一檔系統。
(1)root檔系統
root檔系統中包含一些關鍵檔,同時其內容也比較小。如果root檔系統被破壞,操作系統就無法正確引導。root檔系統中包含的檔和目錄見表1.2。表1.2root檔系統中的檔和目錄/vmlinuz
檔。系統的標準引導映像,通常以壓縮形式出現。
/bin
包含引導過程必需的命令,也可由普通用戶使用。/sbin和/bin类似,尽管其中的命令可由普通用户使用,但由于这些命令属于系统级命令,因此无特殊需求不使用其中的命令。/etc
包含與特定電腦相關的配置檔。/rootroot用戶的主目錄。/lib
root檔系統中的程式要使用的共用庫保存在該目錄中。表1.2root檔系統中的檔和目錄/lib/modules包含可裝載的內核模組。/dev
包含設備檔。/tmp包含臨時檔。引導後運行的程式應當在/var/tmp中保存文件,因为其中的可用空间大一些。/boot
包含引導裝載程式要使用的檔。內核映像通常保存在這個目錄中。因為多個內核映像會佔用很多磁片空間,因此可將該目錄放置在單獨的檔系統中。
/mnt臨時檔系統的掛裝點。/usr,/var,
/home,/proc其他檔系統的掛裝點。(2)/usr檔系統
/usr
檔系統中包含所有的程式檔以及聯機文檔,因此其內容通常很大。/usr檔系統中包含的檔和目錄見表1.3。表1.3/usr檔系統中的目錄/usr/X11R6
包含X窗口系統的所有檔。
/usr/X386
和/usr/X11R6类似,但包含X11的Release5。/usr/bin
絕大多數用戶命令。其他命令包含在/bin和/usr/local/bin中。/usr/sbin
root檔系統中不需要的系統管理命令。/usr/man/usr/info/usr/doc
分別包含手冊頁、GNUInfo文檔以及其他雜項文檔。/usr/include
C語言的頭檔。
/usr/lib
程式和子系統所使用的不變的數據檔。/usr/local
本地掛裝的軟體和其他檔的存放位置。
(3)/var檔系統
/var包含系統運行過程中經常發生變化的檔。/var檔系統中包含的目錄見表1.4。表1.4/var檔系統中的目錄/var/catman格式化手冊頁的高速緩存。/var/lib包含系統運行時經常改變的檔。
/var/local安裝/usr/local中的程序的可变数据。/var/lock包含鎖檔。
/var/log包含程式產生的日誌檔。
/var/run該目錄包含在下次引導之前有效的、和系統相關的資訊/var/spool
排隊任務的假脫機目錄
/var/tmp包含大的臨時檔,或者保存時間較長的臨時檔。(4)/proc檔系統
/proc檔系統並不保存在磁片上,操作系統在內存中創建這一檔系統。/proc檔系統中包含的檔和目錄見表1.5。表1.5/proc檔系統中的檔和目錄/proc/1該目錄中包含進程號為1的進程資訊。每個進程在/proc目录下有一个以自己的进程号为名称的目录。
/proc/cpuinfo
有關CPU名稱、型號、性能和類型的資訊。/proc/devices
當前內核中的設備驅動程式列表。
/proc/dma當前使用的DMA通道。
/proc/filesystems內核支持的檔系統。
/proc/interrupts當前使用的中斷資訊。/proc/ioports當前使用的I/O端口。/proc/kcore系統物理記憶體的映像。
4.
Linux實用工具
標準的Linux系統都有一套叫做實用工具的程式,它們是專門的程式,例如編輯器、執行標準的計算操作等。用戶也可以產生自己的工具。
1.2Linux內核的主要組成部分
操作系統一般由內核和一些系統程式組成,同時,還有一些應用程式幫助用戶完成特定任務。內核是操作系統的靈魂,它負責管理磁片上的檔、記憶體,負責啟動並運行程式,負責從網路上接收和發送數據包等等。
Linux內核主要是由進程調度、記憶體管理、虛擬檔系統、網路介面和進程間通信五部分組成。
(1)進程調度負責控制進程對CPU的訪問,調度程式使用一種策略確保所有的進程都能公平的訪問CPU,並且確保內核在任意時刻能執行必要的硬體操作。
(2)記憶體管理負責管理系統的物理記憶體,實現多進程安全享享電腦的記憶體。
1.2Linux
內核的主要組成部分
(3)虛擬檔系統通過將各種設備抽象為一種公共介面,從而遮罩了各種硬體設備的細節。虛擬檔系統可以分為邏輯檔系統和設備驅動程式兩部分。
(4)網路介面提供了對各種網路標準的存取和各種網路硬體的支持,實現了對各種網路標準和網路硬體的訪問。網路介面可分為網路協議和網路驅動程式。網路協議部分負責實現每一種可能的網路傳輸協議。網路設備驅動程式負責與硬體設備通訊,每一種可能的硬體設備都有相應的設備驅動程式。1.2Linux內核的主要組成部分
(5)進程間通信子系統實現了系統內部進程間的多種通信機制。這五個子系統互相依賴,但相對來說進程調度處在比較重要的地位。其他子系統需要掛起和恢復進程的運行都必須依靠進程調度子系統的參與。
1.2.1記憶體管理
對任何一臺電腦而言,其記憶體以及其他資源都是有限的。為了讓有限的物理記憶體滿足應用程式對內存的大需求量,Linux採用了稱為“虛擬記憶體”的記憶體管理方式。Linux將記憶體劃分為容易處理的“記憶體頁”,在系統運行過程中,應用程式對內存的需求大於物理記憶體時,Linux可將暫時不用的記憶體頁交換到硬碟上,這樣,空閒的記憶體頁可以滿足應用程式的記憶體需求,應用程式卻不會注意到記憶體交換發生。
Linux的記憶體管理子系統採用分頁方式管理和使用物理記憶體資源。它根據不同的晶片採用不同層次的頁表系統(例如Alpha採用三層頁表,Intel採用兩層頁表)實現了進程的邏輯地址空間到物理記憶體地址的映射。因此兩個進程可以訪問相同的地址空間而使用不同的物理記憶體。1.2.1記憶體管理1.2.1記憶體管理1.2.1記憶體管理
為了改善系統的運行性能,Linux內核採用了多種Cach技術:緩存Cach、頁面Cach、交換Cach和硬體Cach。緩存Cach:它中存儲的是塊設備驅動模組使用的緩存數據。緩存Cach大小固定,使用設備識別字和塊號進行標識。它能大大的提高內核對外設的訪問速度。頁面Cach:它被用來加快對磁片上影像和數據的訪問速度。它緩存一個檔中邏輯頁面的內容,使用檔和文件中的偏移進行標識。交換Cach:只有被修改的頁面才被再次寫入到交換區中,那些已經在交換區中有備份,而且沒有修改的頁面將被直接丟棄。這樣可以大大的提高虛存交換的速度。硬體Cach:用在進程中的地址轉換,將用過的虛擬地址到物理地址的轉換緩存起來,當需要進行地址轉換時,系統不是直接去找頁表,而是在緩存中找。由於Linux系統採用多級頁表系統,因此這種技術可以大大的加快進程運行速度。1.2.1記憶體管理
記憶體管理子系統由三個模組組成:體系結構相關模組、體系結構獨立模組和系統調用模組。
(1)體系結構相關模組:實現了一個物理記憶體管理硬體的虛擬介面。(2)體系結構獨立模組:該模組實現了進程地址空間映射和虛擬記憶體交換,負責決定那些記憶體頁交換到檔系統中去。(3)系統調用介面:該模組用來為用戶進程提供有限的訪問許可權。該模塊允許用戶分配和釋放存儲區,將記憶體影像到I/O檔上。1.2.2進程調度
進程實際是某特定應用程式的一個運行實體。在
Linux系統中,能夠同時運行多個進程,Linux通過在短的時間間隔內輪流運行這些進程而實現“多任務”。進程是系統分配資源的最小單位。一個進程就是一個運行實體。在Linux中,所有資源都是以進程為對象來進行分配的。Linux系統是一個多任務的系統,進程調度就是要保障各個進程能公平的使用系統的CPU資源。
1.2.2進程調度
Linux內核在保障進程運行效率的實現方面具有很多特點:(1)Linux設計了一系列的數據結構,它們能準確地描述進程的狀態和其資源使用情況,以便能公平有效地使用系統資源。Linux的調度演算法能確保不出現某些進程過度佔用系統資源而導致另一些進程無休止地等待的情況。這一方法從根本上保證了系統的高效和穩定。(2)Linux的進程創建採用了Copyonwrite技術,即不拷貝父進程的空間,而是拷貝父進程的頁表,使父進程和子進程共用物理空間,並將這個共用空間的訪問許可權置為只讀。當父進程和子進程的某一方進行寫操作時,Linux檢測到一個非法操作,這時才將要寫的頁進行複製。這一做法免除了只讀頁的複製,從而降低了開銷。
1.2.2進程調度
進程調度子系統可以分為四個模組:調度策略模組、體系結構相關模組、體系結構獨立模組和系統調用介面模組。(1)調度策略模組:該模組主要負責判斷哪個進程將訪問CPU。策略的制定必須保證所有進程可以得到比較公正的待遇。(2)體系結構相關模組:該模組被設計為將電腦特定體系結構抽象為一種公共介面。這些模組負責和CPU通信實現進程的掛起和運行。它們知道如何為進程保留那些寄存器和狀態資訊以及如何執行彙編代碼來實現進程的掛起和運行。(3)體系結構獨立模組:該模組和調度策略模組通信決定下一個該運行的進程,然後調用體系結構相關模組來恢復進程的運行。另外該模組還調用記憶體管理模組保證要運行的進程的記憶體得到的恢復。(4)系統調用介面模組:該模組只允許用戶進程訪問內核明確公佈的資源。這樣將用戶進程對內核的以來限制在一個很少變化的介面範圍內。
1.2.3設備驅動程式
設備驅動程式是Linux內核的主要部分。和操作系統的其他部分類似,設備驅動程式運行在高特權級的處理器環境中,從而可以直接對硬體進行操作,但正因為如此,任何一個設備驅動程式的錯誤都可能導致操作系統的崩潰。設備驅動程式實際控制操作系統和硬體設備之間的交互。設備驅動程式提供一組操作系統可理解的抽象介面完成和操作系統之間的交互,而與硬體相關的具體操作細節由設備驅動程式完成。一般而言,設備驅動程式和設備的控制晶片有關。例如,如果電腦硬碟是小型電腦系統介面(SmallComputerSystemInterface,SCSI)的硬碟,則需要使用SCSI驅動程式,而不是IDE(IntegratedDriveElectronics)驅動程式。1.2.4檔系統
Linux虛擬檔系統為用戶提供了一個一種公共的介面,而不需要瞭解物理設備或邏輯系統的細節。系統允許系統管理員將在任何物理設備上的邏輯檔系統掛接在檔目錄中。Linux支持幾種可執行檔格式。
Linux的虛擬檔系統由五個模組組成:設備驅動模組、設備獨立介面模組、邏輯檔系統模組、系統獨立介面模組和系統調用模組。
1.2.4檔系統
Linux虛擬檔系統為用戶提供了一個一種公共的介面,而不需要瞭解物理設備或邏輯系統的細節。系統允許系統管理員將在任何物理設備上的邏輯檔系統掛接在檔目錄中。Linux支持幾種可執行檔格式。
Linux的虛擬檔系統由五個模組組成:設備驅動模組、設備獨立介面模組、邏輯檔系統模組、系統獨立介面模組和系統調用模組。(1)設備驅動模組:該模組和具體的設備控制器相關。Linux支持大量的設備控制程式。(2)設備獨立介面模組:該模組提供了一種一致的設備視圖。(3)邏輯檔系統模組:針對不同的檔系統都有一個對應的邏輯檔系統模組。Linux主要採用EXT2(SecondExtendedFileSystem)檔系統。
1.2.4檔系統
(4)系統獨立介面模組:該模組提供了一種獨立於硬體和邏輯檔系統的統一視圖,它採用面向字元和麵向塊的檔介面來表示所有的資源。(5)系統介面模組:該模組限制了用戶對系統中功能的訪問保證了系統的安全。
1.2.5網路
TCP/IP協議是Internet的標準協議,同時也是事實上的工業標準。Linux的網路實現支持BSD套接字,支持全部的TCP/IP協議。Linux內核的網路部分由BSD套接字、網路協議層和網路設備驅動程式組成。
Linux網路介面子系統支持多種網路設備並支持各種網路協議,它將網路設備和協議的實現細節抽象化,使用戶不需要知道目前使用的網路設備和網路協議。
1.2.5網路Linux網路介面子系統由五個模組組成:網路設備驅動模組、設備獨立介面模組、網路協議模組、協議獨立介面模組和系統調用介面模組。
1.2.5網路Linux網路介面子系統由五個模組組成:網路設備驅動模組、設備獨立介面模組、網路協議模組、協議獨立介面模組和系統調用介面模組。(1)網路設備驅動模組:該模組針對各種網路設備進行編寫,它負責和硬體的通信工作。(2)設備獨立介面模組:該模組抽象了網路設備的實現細節,為子系統上層模組提供了一個一致的設備視圖。(3)網路協議模組:該模組中每個都實現了相應的網路傳輸協議。(4)網路協議獨立介面模組:該模組提供了一個與網路硬體和網路協議無關的介面,這樣內核可以在一個統一的視圖下訪問網路。(5)系統調用模組:該模組限制了用戶進程對子系統中各種功能的訪問。1.2.6其他
除上述主要組成部分之外,內核還包含一些一般性的任務和機制,這些任務和機制可使Linux內核的各個部分有效地組合在一起,它們是上述主要部分高效工作的必要保證。
Linux是單塊結構的操作系統。為了可方便地在內核中添加新的組件,Linux支持可動態裝載和卸載的模組,這樣可方便地在內核中添加新的組件或卸載不再需要的內核組件。1.2.6其他Linux提供了多種進程間的通信機制,其中,信號和管道是最基本的兩種。此外,Linux也提供SystemV的進程間通信機制,包括消息佇列、信號燈及共用記憶體。為了支持不同機器之間的進程通信,Linux還引入了BSD的Socket機制。1.2.6其他Linux提供了多種進程間的通信機制,其中,信號和管道是最基本的兩種。此外,Linux也提供SystemV的進程間通信機制,包括消息佇列、信號燈及共用記憶體。為了支持不同機器之間的進程通信,Linux還引入了BSD的Socket機制。
Linux內核採用了數據抽象技術。設備驅動程式、檔和網路協議等模組都作為一個獨立的模組存在,並且它們都支持一種公共的介面。1.2.6其他Linux內核還採用了分層的技術,將那些於硬體相關的模組和其他模組嚴格地分離,因此當系統移植到其他平臺時,不需要對內核做太大的修改。圖1.2說明了上述Linux內核的重要組成部分及其相互關係。圖1.2
Linux內核的重要組成部分
用戶級程式
系統調用介面虛擬檔系統管理記憶體管理器進程管理器抽象網路程式檔系統驅動程式TCP/IP協議驅程IDE硬碟驅動程式軟碟驅動程式IDE硬碟軟碟以太網卡驅動程式以太網卡1.3Linux內核分析
所有主要Linux發行版本(如Craftworks,Debian、Slackware和Redhat)都包含了源碼在內。Linux系統核心就是從這些源碼中構造出來的。
Linux核心代碼的版本編號很簡單。任何偶數編號的核心(如2.0.30)都是穩定的發行版而奇數編號的核心(如2.1.42)都是正在開發的核心。開發版的核心是試用版本,但具有最新的特徵並支持最新的設備。1.3.1核心源碼的組織
核心源碼的頂層是/usr/src/linux目錄,在此目錄下可以看到大量子目錄:
arch這個子目錄包含了所有體系結構相關的核心代碼。它還包含每種支持的體系結構的子目錄,如i386。
include這個目錄包括了用來重構核心的大多數include檔。對於每種支持的體系結構分別有一個子目錄。
init
此目錄包含核心啟動代碼。
mm此目錄包含了所有的記憶體管理代碼。與具體體系結構相關的記憶體管理代碼位於arch/mm目錄下,例如arch/i386/mm/fault.c。
1.3.1核心源碼的組織
drivers系統中所有的設備驅動都位於該目錄中。它又進一步劃分成幾類設備驅動,如block。
ipc此目錄包含了核心的進程間通訊代碼。
modules此目錄僅僅包含已建好的模組。
fs所有的檔系統代碼。它也被劃分成對應不同檔系統的子目錄,如vfat和ext2。
kernel主要核心代碼。同時與處理器結構相關代碼都放在arch/kernel目錄下。
net核心的網路部分代碼。
lib此目錄包含了核心的庫代碼。與處理器結構相關庫代碼被放在arch/lib/目錄下。
scripts此目錄包含用於配置核心的腳本檔(如awk和tk腳本)。1.3.2Linux內核源代碼的組成
閱讀核心某個部分經常要用到好幾個其他的相關檔,對於源代碼的閱讀,要想比較順利,事先最好對源代碼的知識背景有一定的瞭解。閱讀linux內核源代碼的基本要求是:
1、操作系統的基本知識。
2、對C語言比較熟悉,最好要有組合語言的知識和GNUC對標準C的擴展的知識的瞭解。另外,在閱讀之前還應該知道Linux內核源代碼的整體分佈情況。
Linux內核源代碼的組成如下1系統啟動與初始化在基於intel的系統上,Linux可以通過loadlin.exe或者LILO將核心載入記憶體並將控制傳遞給它。這部分程式位於arch/i386/kerneld/head.s。此檔完成一些處理器相關操作並跳轉到init/main.c中的main()例程。
2記憶體管理這部分代碼主要位於mm目錄裏,而與處理器結構相關部分在arch/mm中。頁面出錯處理代碼位於mm下的memory.c檔中,記憶體映射與頁面cache代碼位於filemap.c中。buffercache則在mm/buffer.c中實現,swapcache位於mm/swap_state.c和mm/swapfile.c中。Linux內核源代碼的組成3核心大多數通用代碼位於kernel目錄下,而處理器相關代碼被放在arch/kernel中。調度管理程式位於kernel/sched.c,fork代碼位於kernel/fork.c。底層部分處理及中斷處理的代碼位於include/linux/interrupt.h裏。在/linux/sched.h中可以找到task_struct的描敘。
4
PCIPCI偽設備驅動位於drivers/pci/pci.c且其系統通用定義放在include/linux/pci.h中。每個處理器結構具有特殊的PCIBIOS代碼,AlphaAXP的位於arch/alpha/kernel/bios32.c中。Linux內核源代碼的組成如下5進程間通訊進程間通訊所有代碼都在ipc目錄中。系統VIPC對象都包含一個ipc_perm結構,它在include/linux/ipc.h中描敘。系統V消息在ipc/msg.c中實現,共用記憶體在ipc/shm.c而信號燈位於ipc/sem.c中。管道在ipc/pipe.c中實現。
6中斷處理核心的中斷處理代碼總是與微處理器結構相關。Intel系統的中斷處理代碼位於arch/i386/kernel/irq.c中,其定義位於include/asm-i386/irq.h中。
Linux內核源代碼的組成如下7設備驅動
Linux核心源碼的大多數都是設備驅動。所有Linux的設備驅動源碼都放在drivers目錄中並分成以下幾類:
/block塊設備驅動包括IDE(在ide.c中)驅動。如果想尋找這些可包含檔系統的設備的初始化過程則應該在drivers/block/genhd.c中的device_setup()。當安裝一個nfs檔系統時不但要初始化硬碟還需初始化網路。塊設備包括IDE與SCSI設備。
/char此目錄包含字元設備的驅動,如ttys,串行口以及滑鼠。Linux內核源代碼的組成7設備驅動
Linux核心源碼的大多數都是設備驅動。所有Linux的設備驅動源碼都放在drivers目錄中並分成以下幾類:
/cdrom包含所有LinuxCDROM代碼。在這裏可以找到某些特殊的CDROM設備(如SoundblasterCDROM)。IDE介面的CD驅動位於drivers/block/ide-cd.c中而SCSICD驅動位於drivers/scsi/scsi.c中。
/pci它包含了PCI偽設備驅動源碼。這裏可以找到關於PCI子系統映射與初始化的代碼。另外位於arch/alpha/kernel/bios32.c中的AlphaAXPPCI補丁代碼也值得一讀。
Linux內核源代碼的組成7設備驅動
Linux核心源碼的大多數都是設備驅動。所有Linux的設備驅動源碼都放在drivers目錄中並分成以下幾類:
/scsi
這裏可以找到所有的SCSI代碼以及Linux支持的SCSI設備的設備驅動。
/net包含網路驅動源碼,如tulip.c中的DECChip21040PCI以太網驅動。
/sound所有的聲卡驅動源碼。
Linux內核源代碼的組成8檔系統
EXT2檔系統的源碼位於fs/ext2中,其數據結構定義位於include/linux/ext2_fs.h,ext2_fs_i.h以及ext2_fs_sb.h中。虛擬檔系統數據結構在include/linux/fs.h中描敘且其代碼在fs//中。buffercache和update核心後臺進程在fs/buffer.c中實現。
9網路網路代碼位於net目錄而大多數包含檔位於include/net中。BSD套介面代碼位於net/socket.c中。IPV4的INET套介面代碼位於net/ipv4/af_inet.c中。通用協議支撐代碼(包括sk_buff處理過程)位於net/core中,同時TCP/IP網路代碼位於net/ipv4中。網路設備驅動位於drivers/net中。
Linux內核源代碼的組成10核心模組核心模組代碼部分位於核心中部分位於modules包中。核心代碼位於kernel/modules.c且其數據結構與核心後臺進程kerneld消息位於include/linux/module.h和include/linux/kerneld.h目錄中。同時必要時需查閱include/linux/elf.h中的ELF檔格式。1.3.3Linux內核分析方法
Linux的最大的優點之一就是它的源碼公開。首先是可以從中學到很多的電腦的底層知識,如後面將講到的系統的引導和硬體提供的中斷機制等;其他,如虛擬存儲的實現機制、多任務機制、系統保護機制等等,這些都是非讀源碼不能體會的。其次是可以從操作系統的整體結構中,體會整體設計在軟體設計中的份量和作用,以及一些宏觀設計的方法和技巧:Linux的內核為上層應用提供一個與具體硬體不相關的平臺;同時在內核內部,它又把代碼分為與體系結構和硬體相關的部分,和可移植的部分;再例如,Linux雖然不是微內核的,但它把大部分的設備驅動處理成相對獨立的內核模組,這樣減小了內核運行的開銷,增強了內核代碼的模組獨立性。
1.3.3Linux內核分析方法
再是能從對內核源碼的分析中,體會到它在解決某個具體細節問題時的巧妙方法,如Linux通過Botoom_half機制來加快系統對中斷的處理。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit3 Weather A let's learn(说课稿)-2023-2024学年人教PEP版英语四年级下册001
- 2025写场地租赁合同范文
- 2025工程建设招标投标合同履约银行保证书
- Unit 1 Playtime Lesson 3(说课稿)-2023-2024学年人教新起点版英语二年级下册
- 2023九年级历史下册 第一单元 殖民地人民的反抗与资本主义制度的扩展第3课 美国内战说课稿 新人教版
- 2025泵车租赁合同
- 2024-2025学年高中历史 专题二 近代中国资本主义的曲折发展 2.1 近代中国民族工业的兴起说课稿1 人民版必修2
- 蔬菜物资发放方案
- 养生馆前台合同范例
- 代理经营店铺合同范例
- 九年级短跑2 公开课教学设计
- 平衡计分卡-化战略为行动
- 幼儿园小班下学期期末家长会PPT模板
- 矿山安全培训课件-地下矿山开采安全技术
- 【课件】DNA片段的扩增及电泳鉴定课件高二下学期生物人教版(2019)选择性必修3
- GB/T 6417.1-2005金属熔化焊接头缺欠分类及说明
- 2023年湖北成人学位英语考试真题及答案
- 《社会主义市场经济理论(第三版)》第七章社会主义市场经济规则论
- 《腰椎间盘突出》课件
- simotion轮切解决方案与应用手册
- 柴油发电机运行检查记录表格
评论
0/150
提交评论