技術ノート 特徴 Linux カーネルとは何ですか?またその機能は何ですか?

Linux カーネルとは何ですか?またその機能は何ですか?

Linux カーネルとは何ですか?またその機能は何ですか?

1,300 万行を超えるコードを含む Linux カーネルは世界最大のオープンソース プロジェクトの 1 つですが、カーネルとは何で、何に使用されるのでしょうか?

では、カーネルとは何でしょうか?

Linux カーネルとは何ですか?またその機能は何ですか?

カーネルは、コンピュータのハードウェアと接続する、簡単に交換可能なソフトウェアの最下位レベルです。 「ユーザー モード」で実行されているすべてのアプリケーションを物理ハードウェアに至るまでインターフェイスし、サーバーと呼ばれるプロセスがプロセス間通信 (IPC) を使用して相互に情報を取得できるようにする役割を果たします。

Linux カーネルとは何ですか?またその機能は何ですか?

さまざまな種類のカーネル

もちろん、カーネルを構築するにはさまざまな方法があり、カーネルを最初から構築する場合はアーキテクチャ上の考慮事項があります。一般に、ほとんどのカーネルは、モノリシック、マイクロカーネル、ハイブリッドの 3 つのタイプのいずれかに分類されます。 Linux はモノリシック カーネルですが、OS X (XNU) と Windows 7 はハイブリッド カーネルを使用します。後で詳しく説明できるように、3 つのカテゴリについて簡単に説明します。

画像提供: アップタウン ポップコーン

マイクロカーネル

マイクロカーネルは、CPU、メモリ、IPC など、必要なものだけを管理するアプローチを採用しています。コンピュータ内のその他のほとんどすべてのものはアクセサリとみなされ、ユーザー モードで処理できます。マイクロカーネルには移植性という利点があります。オペレーティング システムが同じ方法でハードウェアにアクセスしようとする限り、ビデオ カードやオペレーティング システムを変更しても心配する必要がないからです。また、マイクロカーネルは、メモリとインストール領域の両方のフットプリントが非常に小さく、特定のプロセスのみがスーパーバイザ モードのような高い権限を持たないユーザー モードで実行されるため、より安全になる傾向があります。

長所

  • 携帯性
  • 設置面積が小さい
  • メモリ使用量が小さい
  • 安全

短所

  • ハードウェアはドライバーを通じてより抽象化されます
  • ドライバーがユーザーモードであるため、ハードウェアの反応が遅くなる可能性があります
  • プロセスは情報を取得するためにキューで待機する必要があります
  • プロセスは待機せずに他のプロセスにアクセスできません

モノリシックカーネル

モノリシック カーネルは、CPU、メモリ、IPC だけでなく、デバイス ドライバー、ファイル システム管理、システム サーバー呼び出しなども含むため、マイクロカーネルの反対です。モノリシック カーネルは、プログラムがメモリや実行中の別のプロセスから情報を取得する必要がある場合、それにアクセスするためのより直接的なラインがあり、処理を完了するためにキューで待つ必要がないため、ハードウェアへのアクセスやマルチタスク処理に優れている傾向があります。ただし、スーパーバイザ モードで実行するものが増えると、適切に動作しない場合にシステムがダウンする可能性のあるものが増えるため、問題が発生する可能性があります。

長所

  • プログラムのハードウェアへのより直接的なアクセス
  • プロセス間の通信が容易になる
  • デバイスがサポートされている場合は、追加のインストールなしで動作するはずです
  • プロセッサ時間のためのキューがないため、プロセスの反応が速くなります。

短所

  • 設置面積が大きい
  • メモリ占有量が大きい
  • すべてがスーパーバイザ モードで実行されるため、安全性が低い

Flickr の schoschie 経由の画像

ハイブリッドカーネル

ハイブリッド カーネルには、ユーザー モードで実行するものとスーパーバイザ モードで実行するものを選択する機能があります。多くの場合、デバイス ドライバーやファイルシステム I/O などはユーザー モードで実行され、IPC やサーバーの呼び出しはスーパーバイザー モードに保たれます。これにより、両方の長所が得られますが、ドライバーの責任はすべてハードウェア メーカーにあるため、多くの場合、ハードウェア メーカーのさらなる作業が必要になります。また、マイクロカーネルに固有の遅延の問題がいくつか発生する可能性があります。

長所

  • 開発者は、ユーザー モードで実行するものとスーパーバイザー モードで実行するものを選択できます。
  • モノリシックカーネルよりもインストールフットプリントが小さい
  • 他のモデルに比べて柔軟性が高い

短所

  • マイクロカーネルと同じプロセスラグが発生する可能性がある
  • デバイスドライバーは(通常は)ユーザーが管理する必要があります
Linux カーネルとは何ですか?またその機能は何ですか?

Linux カーネル ファイルはどこにありますか?

Ubuntu では、カーネル ファイルは /boot フォルダーに保存され、vmlinuz-version と呼ばれます。 vmlinuz という名前は、60 年代にカーネルを単に「unix」と呼んでいた 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 の初期にかなりの議論 が行われた設計機能であり、モノリシック カーネルが固有に持つのと同じ設計上の欠陥のいくつかを依然として抱えています。

これらの欠陥を回避するために Linux カーネル開発者が行ったことの 1 つは、実行時にロードおよびアンロードできるカーネル モジュールを作成することでした。これは、カーネルの機能をその場で追加または削除できることを意味します。これは、低レベルの仮想化などのサーバー プロセスを実行するモジュールを組み込むことで、カーネルにハードウェア機能を追加するだけでなく、場合によってはコンピューターを再起動することなくカーネル全体を置き換えることもできます。

再起動せずに Windows Service Pack にアップグレードできるとしたら…を想像してみてください。

Linux カーネルとは何ですか?またその機能は何ですか?

カーネルモジュール

Windows に利用可能なすべてのドライバーがすでにインストールされており、必要なドライバーをオンにするだけで済むとしたらどうなるでしょうか?これは本質的に、カーネル モジュールが Linux に対して行うことです。カーネル モジュールは、ローダブル カーネル モジュール (LKM) とも呼ばれ、利用可能なメモリをすべて消費することなく、すべてのハードウェアでカーネルの機能を維持するために不可欠です。

通常、モジュールは、デバイス、ファイル システム、システム コールなどの機能をベース カーネルに追加します。 LKM にはファイル拡張子 .ko が付いており、通常は /lib/modules ディレクトリに保存されます。モジュール式の性質のため、menuconfig コマンドを使用して起動中にモジュールをロードするかロードしないように設定するか、/boot/config ファイルを編集することで、 カーネルを簡単にカスタマイズ できます。また、modprobe を使用してオンザフライでモジュールをロードおよびアンロードすることもできます。指示。

サードパーティ製のクローズド ソース モジュールは、Ubuntu などの一部のディストリビューションで利用できますが、モジュールのソース コードが利用できないため、デフォルトではインストールされない場合があります。ソフトウェアの開発者 (nVidia、ATI など) はソース コードを提供せず、独自のモジュールを構築し、配布に必要な .ko ファイルをコンパイルします。これらのモジュールは ビールのように無料ですが、音声のように無料ではない ため、一部のディストリビューションには含まれていません。これは、保守者がフリーでないソフトウェアを提供することでカーネルを「汚す」と考えているためです。

カーネルは魔法ではありませんが、コンピュータが適切に動作するためには完全に不可欠です。 Linux カーネルは、カーネル レベルでドライバーが含まれており、多くの機能が「すぐに使える」ようにサポートされているため、OS X や Windows とは異なります。ソフトウェアとハ​​ードウェアがどのように連携するのか、またコンピュータの起動にどのようなファイルが必要なのかについて、もう少し詳しく知っていただければ幸いです。

カーネル.org

ingridtaylar による画像

「Linux カーネルとは何ですか?またその機能は何ですか?」に関するベスト動画選定!

その61 18行のLinuxカーネルモジュールを作ってみる
【10分で解説】BIOS・カーネル・シェルが何か説明できますか?【OSの仕組みの絵本】