2

Linux カーネル モジュールを使用することの欠点を理解しようとしています。それを使用する利点を理解しています。つまり、ベース システムを再コンパイルして再起動することなく、実行中のシステムにコードを動的に挿入できることです。この強力な利点を考えると、カーネル コードのほとんどは、ベース カーネルの一部としてではなく、カーネル モジュールとして使用する必要があると推測していましたが、そうではないようです。かなりの量のコア サス システム (メモリ管理やルート ドライブで使用されるファイル システムなど) は、依然としてベース カーネルとして使用されます。

考えられる理由の 1 つは、カーネル モジュールがブート プロセスの非常に遅い段階で読み込まれるため、コア機能をベース カーネルに配置する必要があることです。私が読んだもう1つの理由は、断片化についてでした。

カーネルモジュールがメモリの断片化を引き起こす理由がよくわかりませんでした。誰か説明してもらえますか? カーネルモジュールを使用することの他の欠点はありますか?

4

1 に答える 1

2

Linux カーネル モジュールを使用することの欠点を理解しようとしています。それを使用する利点を理解しています。つまり、ベース システムを再コンパイルして再起動することなく、実行中のシステムにコードを動的に挿入できることです。

これは便利な場合もありますが、モジュールが存在する主な理由ではありません。それらの主な目的は、常にメモリに常駐するのではなく、常に必要なカーネル コードをオンデマンドでロードできるようにすることです。

かなりの量のコア サス システム (メモリ管理やルート ドライブで使用されるファイル システムなど) は、依然としてベース カーネルとして使用されます。

これは、すべてのカーネル コンポーネントをモジュールとして構成できるわけではないためです。オンデマンドでコードをロードすることが理にかなっているものだけです。たとえば、メモリ管理はモジュール化されていません。(そして、モジュールをロードするために必要だからです!)

(あなたの2番目の例は実際には間違っています。ルートファイルシステムに使用されるファイルシステムは、initrdで利用可能な場合、モジュールとして構成できます。)

カーネルモジュールがメモリの断片化を引き起こす理由がよくわかりませんでした。誰か説明してもらえますか?

それらは、少なくとも重要な程度ではありません。カーネル モジュールは小さい傾向があるため、それらが引き起こす断片化は最小限に抑えられます。

于 2013-02-20T06:10:42.910 に答える