Skip to main content

Linuxカーネルとは?

Linuxカーネルを読んで改めて知るプロセスとスレッドの違い (六月 2026)

Linuxカーネルを読んで改めて知るプロセスとスレッドの違い (六月 2026)
Anonim

臨時のユーザーやハードコアのファンにとって、Linuxはオペレーティングシステムです。しかし、純粋主義者のために、 "Linux"というタイトルは、オペレーティングシステムを動かすカーネル用に予約されています。 Linuxカーネルが何であるか興味があれば、新しいユーザーに目を向けてその質問に答えよう。

モード

カーネルについて説明する前に、「ユーザーモード」と「カーネルモード」という用語を理解することが重要です。ユーザーモードは、実行コードがハードウェアまたは参照メモリに直接アクセスする能力を持たない場合です。ハードウェアとメモリにアクセスするには、ユーザーモードで実行しているコードがシステムアプリケーションプログラミングインターフェイス(API)に命令を委任する必要があります。カーネルモードは、実行中のコードがすべてのハードウェアに無制限にアクセスできる状態で、オペレーティングシステムの最も信頼できる機能用に予約されています。

カーネルとは何ですか?

すべてのオペレーティングシステムにはカーネルがあります。 Windows、macOS、iOS、Android、Chrome OS、Linuxにはそれぞれ低レベルのシステムがあり、すべてのアプリケーションとコンピュータの物理ハードウェアとのインタフェースを担当します。カーネルがなければ、あなたのアプリケーションは物理的なコンピュータを利用することができません。 Firefox、Chrome、LibreOffice、MS Office、Outlookなどのアプリは動作しません。カーネルはまた、プロセス間通信(IPC)と呼ばれるものを使用して、プロセスが情報を交換することを可能にする責任を負う。

(一般的に言えば)3種類のカーネルがあります。

  • モノリシックカーネルこれらのカーネルには、CPU、メモリ、IPC、デバイスドライバ、ファイルシステム管理、およびシステムサーバコールが含まれます。また、無料のシステムメモリをアプリケーションに渡す責任もあります。これらのタイプのカーネルは、通常、ハードウェアとマルチタスクにアクセスする際に優れています。
  • マイクロカーネル:マイクロカーネルは最小限のアプローチをとり、CPU、メモリ、およびIPCのみを管理します。
  • ハイブリッドカーネル:ハイブリッドカーネルには、ユーザーモードまたはカーネルモードのどちらで実行するかを決める機能があります。これは両方の世界のベストを提供しますが、実行中のコードとハードウェアの間のインターフェイスに役立つドライバを作成するためには、ハードウェアメーカーからはるかに多くが必要です。

LinuxはオープンソースMonolithic Kernelを使用しますが、macOSとWindowsはどちらもハイブリッドカーネルを使用します。 Linuxカーネルは1991年にLinus Torvaldsによって考案されました。今日まで、Torvalds氏は引き続きLinuxカーネルの主要開発者であり、世界中の開発者がLinuxカーネルに貢献しています。実際、1000社以上の企業から約10,000人の開発者がLinuxカーネルに寄与していると推定されています(2005年に追跡が開始されて以来)。

カーネルはどこにありますか?

ターミナルウィンドウを開いてコマンドを実行すると ls / boot、あなたは呼ばれるファイルを見るでしょう vmlinuz-VERSION (VERSIONはリリース名または番号です)。 vmlinuzファイルは実際のブート可能なLinuxカーネルで、 "z"はカーネルが圧縮されていることを示します。したがって、vmlinuxの代わりにvmlinuzがあります。

その/ bootディレクトリには、initrd.img-VERSION、system.map-VERSION、config-VERSION(VERSIONは名前またはリリース番号のいずれか)などの他の重要なカーネルファイルがあります。これらの他のファイルは、次の目的で使用されます。

  • initrd:実際のカーネルファイルを抽出して実行する小さなRAMディスクとして使用されます。
  • system.map:カーネルをロードする前のメモリ管理に使用されます。
  • 設定:ロードするオプションとモジュールをカーネルに指示します。

モジュール

モジュールがなければ、カーネルは多用されません。モジュールは、すべてのシステムメモリを消費することなく、ハードウェアとの通信に必要なドライバを効果的に有効にします。モジュールは、周辺機器との通信、ファイルシステムの管理、セキュリティなど、カーネルに機能を追加します。次のコマンドを使用して、モジュールをカーネルにリストアップ、追加、および削除することができます。

  • lsmod 現在ロードされているすべてのカーネルモジュールが一覧表示されます。
  • insmod 実行中のカーネルにカーネルモジュールをロードします。
  • rmmod 実行中のカーネルからモジュールをアンロードします。

したがって、いくつかの簡単なコマンドの助けを借りれば、Linuxカーネルは非常に柔軟になります。

現在のカーネル

この記事を書いている時点では、安定したLinuxカーネルは4.18.5ですが、すべてのLinuxディストリビューションに最新のカーネルが含まれるとは限りません。実際、アップデートされたElementary OSのデスクトップディストリビューションはカーネル4.15.0-30を実行します。その数字は何を意味しますか? Elementary OS上の最新のカーネルの場合は、次のことを意味します。

  • 4はメジャーバージョンです
  • 15はマイナーバージョンです
  • 0〜30は改訂版です

kernel.orgからさまざまなバージョンのLinuxカーネルをダウンロードしてコンパイルすることもできます。 Linuxカーネルのコンパイルは、自分が何をやっているかを本当に知っている人にとって最も残された作業です。不適切にコンパイルされたカーネルは、システムを起動不能にする可能性があります。したがって、このレベルでコードをコンパイルするという挑戦的な作業に飛び込む準備ができていない限り、選択したディストリビューションに付属のデフォルトのカーネルを使用してください。