• 可加載內核模塊

    編輯
    本詞條由“匿名用戶” 建檔。

    可加載內核模塊

    編輯

    在計算中,可加載內核模塊 (LKM) 是一個目標文件,其中包含用于擴展操作系統的運行內核或所謂的基本內核的代碼。 LKM 通常用于添加對新硬件(如設備驅動程序)和/或文件系統的支持,或用于添加系統調用。 當不再需要 LKM 提供的功能時,可以卸載它以釋放內存和其他資源

    當前大多數類 Unix 系統和 Microsoft Windows 都支持不同名稱的可加載內核模塊,例如 FreeBSD 中的內核可加載模塊 (kld)、macOS 中的內核擴展 (kext)(盡管正在放棄對第三方模塊的支持)、內核擴展 AIX 中的模塊、Windows NT 中的內核模式驅動程序和 VxWorks 中的可下載內核模塊 (DKM)。 它們也稱為內核可加載模塊(或 KLM),簡稱為內核模塊 (KMOD)。

    優勢

    編輯

    如果沒有可加載的內核模塊,操作系統將不得不將所有可能的預期功能直接編譯到基本內核中。 大部分功能將駐留在內存中而不被使用,從而浪費內存,并且需要用戶在每次需要新功能時重建并重新啟動基本內核。

    缺點

    編輯

    與靜態內核相比更喜歡模塊化內核的一個小批評是所謂的碎片懲罰。 基本內核總是通過其設置例程解壓縮到真正的連續內存中; 因此,基本內核代碼永遠不會碎片化。 一旦系統處于可以插入模塊的狀態,例如一旦安裝了包含模塊的文件系統,任何新的內核代碼插入都可能導致內核變得碎片化,從而引入輕微的性能損失 通過使用更多的 TLB 條目,導致更多的 TLB 未命中。

    在不同操作系統中的實現

    編輯

    Linux

    Linux 中的可加載內核模塊由 modprobe 命令加載(和卸載)。 它們位于 /lib/modules 或 /usr/lib/modules 中,并且自 2.6 版(以前的版本使用 .o 擴展名)以來具有擴展名 .ko(內核對象)。 lsmod 命令列出加載的內核模塊。 在緊急情況下,當系統由于例如故障而無法啟動時 損壞的模塊,可以通過修改內核引導參數列表來啟用或禁用特定模塊(例如,如果使用 GRUB,則在 GRUB 開始菜單中按 'e',然后編輯內核參數行)。

    許可證問題

    在 Linux 維護者看來,LKM 是內核的衍生作品。 Linux 維護者容忍專有模塊的分發,但允許將符號標記為僅適用于 GNU 通用公共許可證 (GPL) 模塊。

    加載專有或非 GPL 兼容模塊將在運行的內核中設置一個“污點”標志——這意味著維護者不太可能調查遇到的任何問題或錯誤。 LKM 有效地成為正在運行的內核的一部分,因此可以破壞內核數據結構并產生如果模塊確實是專有的則可能無法調查的錯誤。

    Linuxant 爭議

    2004 年,將專有設備驅動程序作為可加載內核模塊發布的咨詢公司 Linuxant 試圖在其 MODULE_LICENSE 中濫用空終止符,如以下代碼摘錄所示:

    MODULE_LICENSE("GPL\0for the files in the \"GPL\" directory; for others, only LICENSE file applicable");

    內核當時使用的字符串比較代碼試圖在模塊到達空字符 (\0) 時判斷該模塊是否為 GPLed 停止,因此誤認為該模塊聲明其許可證只是 GPL。

    自由系統

    FreeBSD 的內核模塊存儲在 /boot/kernel/ 中,用于隨操作系統分發的模塊,或者通常存儲在 /boot/modules/ 中,用于從 FreeBSD 端口或 FreeBSD 軟件包安裝的模塊,或者用于專有或其他二進制模塊。 FreeBSD 內核模塊通常有擴展名 .ko。 機器啟動后,它們可以使用 kldload 命令加載,使用 kldunload 卸載,并使用 kldstat 列出。 模塊也可以在內核啟動之前從加載程序加載,可以自動(通過 /boot/loader.conf)或手動加載。

    蘋果操作系統

    macOS 中的一些可加載內核模塊可以自動加載。 可加載內核模塊也可以通過 kextload 命令加載。 它們可以通過 kextstat 命令列出。

    內核模塊

    可加載內核模塊位于擴展名為 .kext 的包中。 操作系統提供的模塊存儲在 /System/Library/Extensions 目錄中; 第三方提供的模塊位于其他各種目錄中。

    網絡軟件

    NetWare 內核模塊稱為 NetWare 可加載模塊 (NLM)。 NLM 通過 LOAD 命令插入到 NetWare 內核中,并通過 UNLOAD 命令刪除; modules 命令列出當前加載的內核模塊。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/196276/

    (2)
    詞條目錄
    1. 可加載內核模塊
    2. 優勢
    3. 缺點
    4. 在不同操作系統中的實現
    5. Linux
    6. 許可證問題
    7. Linuxant 爭議
    8. 自由系統
    9. 蘋果操作系統
    10. 網絡軟件

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久