Linuxカーネルに1,500万行以上のコードがあるのはなぜですか? [閉鎖]

Linuxカーネルに1,500万行以上のコードがあるのはなぜですか? [閉鎖]

この完全なコードベースの内容は何ですか?

プロセッサアーキテクチャのサポート、セキュリティ、仮想化を理解していますが、600,000行を超えるとは想像できません。

ドライバがカーネルコードベースに含まれる過去と現在の理由は何ですか?

この1,500万本を超えるラインには、すべてのハードウェアのすべてのドライバが含まれていますか?では、なぜドライバがハードウェアIDで自動的に検出され、インストールされる別のパッケージではなくカーネルに組み込まれていますか?

コードベースのサイズは、ストレージ容量が制限されているか、メモリが制限されているデバイスに問題がありますか?

これらすべてが組み込まれている場合、スペースが限られたARMデバイスのコアサイズが膨らんでいるように見えます。前処理が多い行を削除しましたか?クレイジーだと言うかもしれませんが、私が理解しているカーネルの役割を実行するためにそれほど多くのロジックを必要とするマシンは想像できません。

絶えず成長しているように見える特性のため、今から50年以上後にそのサイズが問題になるという証拠はありますか?

ドライバを含むということは、ハードウェアが作成されるにつれてドライバも大きくなることを意味します。

編集する:これがカーネルの本質だと思う人にとっては、いくらかの研究の終わりにこれがいつもそうではないことに気づきました。コアはCarnegie Mellon Universityほど大きくはありません。マイクロカーネルMachは、「通常10,000行未満のコード」の例としてリストされています。

ベストアンサー1

~によるとクローク3.13で実行されているLinuxには約1,200万行のコードがあります。

  • 700万ドライバーLOC/
  • アーチ/ 200万LOC/
  • カーネルにはLOC/が139,000個しかありません。

lsmod | wc私のDebianノートブックにはランタイムにロードされた158個のモジュールが表示されるので、動的にモジュールをロードすることはハードウェアをサポートする一般的な方法です。

make menuconfigコンパイルするコード(より重要なのは、コンパイルするコード)を選択するための強力な構成システム(例:)いいえコンパイル)。組み込みシステムは、.config関心のあるハードウェアサポート(カーネルに組み込まれているハードウェアまたはロード可能モジュールのサポートを含む)でのみ独自のファイルを定義します。

おすすめ記事