2013-02-20 113 views
2

我想了解使用Linux內核模塊的缺點。 我明白使用它的好處: 能夠動態地將代碼插入正在運行的系統,而無需重新編譯並重新啓動基本系統。鑑於這種強大的優勢,我猜測大多數內核代碼應該作爲內核模塊而不是基本內核的一部分,但似乎並非如此。大量的核心sus系統(如內存管理,或根驅動器使用的文件系統)仍然作爲基礎內核。linux內核模塊的缺點?

我能想到的一個原因是內核模塊在啓動過程中加載非常晚,因此核心功能必須在基本內核中運行。我讀到的另一個原因是關於碎片。

我真的不明白爲什麼內核模塊導致內存碎片,請問有人能解釋一下嗎?使用內核模塊還有其他缺點嗎?

+0

這是一個很好的問題http://unix.stackexchange.com/ – Paolo 2013-02-20 06:09:05

+0

感謝@Guandalino,感動了它。 – spa 2013-02-20 14:52:54

回答

2

我想了解使用Linux內核模塊的缺點。我瞭解使用它的好處:能夠動態​​地將代碼插入正在運行的系統,而無需重新編譯並重新啓動基本系統。

這雖然偶爾有用,但它不是模塊存在的主要原因。他們的主要目的是讓內核代碼不是總是需要按需加載,而不是始終駐留在內存中。

大量的核心sus系統(如內存管理,或根驅動器使用的文件系統)仍然作爲基礎內核。

這是因爲並非所有內核組件都可以配置爲模塊;只有按需加載代碼纔有意義。例如,內存管理不是模塊化的,因爲它永遠不會出現。 (由於它是需要加載的模塊!)

(你的第二個例子其實是錯誤的。用於根文件系統的文件系統可以配置爲一個模塊如果它是在一個initrd可用。)

我真的不明白爲什麼內核模塊導致內存碎片,請問有人能解釋一下嗎?

他們沒有,至少沒有任何重要的程度。內核模塊往往很小,所以它們造成的碎片很少。