複製鏈接
請複製以下鏈接發送給好友

Linux內核模塊

鎖定
儘管Linux是單塊內核(monolithic)的操作系統--這是説整個系統內核都運行於一個單獨的保護域中,但是linux內核是模塊化組成的,它允許內核在運行時動態地向其中插入或從中刪除代碼。這些代碼(包括相關的子線程、數據、函數入口和函數出口)被一併組合在一個單獨的二進制鏡像中,即所謂的可裝載內核模塊中,或簡稱為模塊。支持模塊的好處是基本內核鏡像儘可能的小,因為可選的功能和驅動程序可以利用模塊形式再提供。模塊允許我們方便地刪除和重新載入內核代碼,也方便了調試工作。而且當熱插拔新設備時,可通過命令載入新的驅動程序。
中文名
Linux內核模塊
類    型
動態可加載內核模塊

目錄

Linux內核模塊概念

首先什麼是內核模塊呢?這對於初學者無非是個非常難以理解的概念。內核模塊是Linux內核向外部提供的一個插口,其全稱為動態可加載內核模塊(Loadable Kernel Module,LKM),我們簡稱為模塊。Linux內核之所以提供模塊機制,是因為它本身是一個單內核(monolithic kernel)。單內核的最大優點是效率高,因為所有的內容都集成在一起,但其缺點是可擴展性和可維護性相對較差,模塊機制就是為了彌補這一缺陷。
模塊是具有獨立功能的程序,它可以被單獨編譯,但不能獨立運行。它在運行時被鏈接到內核作為內核的一部分在內核空間運行,這與運行在用户空間的進程是不同的。模塊通常由一組函數和數據結構組成,用來實現一種文件系統、一個驅動程序或其他內核上層的功能。
總之,模塊是一個為內核(從某種意義上來説,內核也是一個模塊)或其他內核模塊提供使用功能的代碼塊。

Linux內核模塊優缺點

利用內核模塊的動態裝載性具有如下優點:
·將內核映象的尺寸保持在最小,並具有最大的靈活性;
·便於檢驗新的內核代碼,而不需重新編譯內核並重新引導。
但是,內核模塊的引入也帶來了如下問題:
·對系統性能和內存利用有負面影響;
·裝入的內核模塊和其他內核部分一樣,具有相同的訪問權限,因此,差的內核模塊會導致系統崩潰;
·為了使內核模塊訪問所有內核資源,內核必須維護符號表,並在裝入和卸載模塊時修改這些符號表;
·有些模塊要求利用其他模塊的功能,因此,內核要維護模塊之間的依賴性。
·內核必須能夠在卸載模塊時通知模塊,並且要釋放分配給模塊的內存和中斷等資源;
·內核版本和模塊版本的不兼容,也可能導致系統崩潰,因此,嚴格的版本檢查是必需的。
儘管內核模塊的引入同時也帶來不少問題,但是模塊機制確實是擴充內核功能一種行之有效的方法,也是在內核級進行編程的有效途徑。 [1] 
參考資料