Linux核心模組

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

概念,優缺點,

概念

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

優缺點

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

相關詞條

熱門詞條

聯絡我們