Linux カーネルは、コンピュータのハードウェアと接続する、簡単に置き換え可能なソフトウェアの最下位レベルです。カーネルは、「ユーザー モード」で実行されているすべてのアプリケーションを物理ハードウェアに接続し、プロセスが相互にアクセスできるようにする役割を担っています。 -プロセス通信から接続し、相互に情報を取得します。
#この記事の動作環境: linux5.9.8 システム、Dell G3 コンピューター。
1,300 万行を超えるコードを含む Linux カーネルは、世界最大のオープンソース プロジェクトの 1 つです。
それでは、カーネルとは何でしょうか?
カーネルは、コンピュータのハードウェアと接続する、簡単に交換可能なソフトウェアの最下位レベルです。これは、「ユーザー モード」で実行されているすべてのアプリケーションを物理ハードウェアに接続する役割を果たし、プロセス (サーバーと呼ばれます) がプロセス間通信 (IPC) を使用して相互に情報を取得できるようにします。
さまざまなタイプのカーネル
もちろん、カーネルを構築するさまざまな方法と、カーネルを最初から構築する場合のアーキテクチャ上の考慮事項があります。一般に、ほとんどのカーネルは、モノリシック、マイクロカーネル、ハイブリッドの 3 つのタイプのいずれかに分類されます。 Linux はモノリシック カーネル ですが、OS X (XNU) と Windows 7 はハイブリッド カーネルを使用します。 。
モノリシック カーネル
モノリシック カーネルは、CPU、メモリ、IPC だけでなく、デバイス ドライバー、ファイル システム管理、システム サーバーも含まれるという点で、マイクロカーネルの逆です。電話などモノリシック コアは、プログラムがメモリや実行中の別のプロセスから情報を取得する必要がある場合、タスクの完了をキューで待つ代わりに、より直接的にアクセスできるラインがあるため、ハードウェアへのアクセスやマルチタスクに優れている傾向があります。ただし、ハイパーバイザー モードで実行されるものが増えるほど、誤った動作をした場合にクラッシュする可能性が増えるため、問題が発生する可能性があります。
利点
プログラムのハードウェアへのより直接的なアクセス
プロセス間の通信相互の通信が容易になります
「いいえ」の場合デバイスがサポートされている場合は、追加のインストールが必要です 大規模な領域
大量のメモリ使用量
すべてが管理者モードで実行されるため、あまり安全ではありません
Linux カーネル ファイルはどこにありますか?
Ubuntu のカーネル ファイルは /boot フォルダーに保存され、vmlinuz-version という名前が付けられます。 vmlinuz という名前は Unix の世界に由来しており、60 年代にはカーネルを「unix」と呼んでいました。そのため、Linux は 90 年代に初めて開発されたときにカーネルを「linux」と呼び始めました。
仮想メモリがマルチタスク機能を容易にするために開発されたとき、カーネルが仮想メモリをサポートしていることを示すために、ファイルの前に「vm」が付けられました。しばらくの間、Linux カーネルは vmlinux と呼ばれていましたが、カーネルが大きすぎて使用可能なブート メモリに収まらなくなったため、カーネル イメージが圧縮され、zlib 圧縮を使用して圧縮されていることを示すために末尾の x が az に変更されました。この圧縮は常に使用されるわけではなく、多くの場合、代わりに LZMA または BZIP2 が使用されます。一部のカーネルでは、単に zImage と呼ばれます。バージョン番号は ABCD 形式で、AB は 2.6、C はバージョン、D はパッチまたはホットフィックスを表します。
/boot にあります。その他の非常に重要なファイルは、initrd.img-version、system.map-version、config-version という名前のフォルダー内にあります。 initrd ファイルは、実際のカーネル ファイルを抽出して実行するための小さな RAM ディスクとして使用されます。 system.map ファイルは、カーネルが完全にロードされる前のメモリ管理に使用され、構成ファイルは、カーネルのコンパイル時にカーネル イメージにロードするオプションとモジュールをカーネルに指示します。Linux カーネル アーキテクチャ
Linux カーネルはモノリシック カーネルであるため、他のタイプのカーネルと比較して、占有面積が最も大きく、複雑さも最も大きくなります。これは、Linux の初期にかなりの議論を引き起こした設計機能であり、モノリシック カーネルに固有の同じ設計上の欠陥のいくつかに今でも悩まされています。
Linux カーネル開発者がこれらの欠陥に対処するために行ったことの 1 つは、実行時にロードおよびアンロードできるカーネル モジュールを作成することです。これは、実行時にカーネルに機能を追加または削除できることを意味します。これは、サーバー プロセス (低レベルの仮想化など) を実行するモジュールを組み込んでカーネルにハードウェア機能を追加するだけでなく、場合によってはコンピューターを再起動することなく、カーネル全体を置き換えることもできます。
再起動せずに Windows Service Pack にアップグレードできるかどうか想像してみてください...
カーネル モジュールWindows に利用可能なドライバーがすべてインストールされており、必要なドライバーを開くだけでよい場合はどうすればよいでしょうか?これは基本的に、カーネル モジュールが Linux に対して行うことです。カーネル モジュールは、ロード可能なカーネル モジュール (LKM) とも呼ばれ、利用可能なメモリをすべて消費することなく、すべてのハードウェアでカーネルを実行し続けるために重要です。
モジュールは通常、デバイス、ファイル システム、システム コールなどの機能をベース カーネルに追加します。 LKM にはファイル拡張子 .ko が付いており、通常は /lib/modules ディレクトリに保存されます。カーネルはモジュール式であるため、起動時に menuconfig コマンドを使用してロードするモジュールまたはロードしないモジュールを設定するか、/boot/config ファイルを編集することでカーネルを簡単にカスタマイズできます。また、 modprobe コマンドを使用してモジュールを動的にロードおよびアンロードすることもできます。
サードパーティおよびクローズドソースのモジュールは、一部のディストリビューション (Ubuntu など) で利用できますが、モジュールのソース コードが利用できないため、デフォルトではインストールされない場合があります。ソフトウェアの開発者 (nVidia、ATI など) はソース コードを提供しませんが、独自のモジュールを構築し、配布に必要な .ko ファイルをコンパイルします。これらのモジュールはビールでは無料ですが、音声では無料ではないため、一部のディストリビューションにはこれらのモジュールが含まれていません。これは、保守者がフリーでないソフトウェアを提供することでカーネルを「汚す」と考えているためです。
カーネルは魔法ではありませんが、コンピュータが適切に機能するためには不可欠です。 Linux カーネルは、カーネル レベルのドライバーが含まれており、「すぐに使える」多くの機能をサポートするという点で、OS X や Windows とは異なります。ソフトウェアとハードウェアがどのように連携するのか、またコンピュータの起動に必要なファイルについてさらに詳しく学んでいただければ幸いです。
以上がLinuxカーネルとはどういう意味ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。