【図解】Linuxカーネルとは?シェルとの違いやバージョンの確認方法も解説

Linux
スポンサーリンク
はづき
はづき

こんにちは!はづきです

文系から一部上場IT企業に就職し、エンジニアをやっています

「Linux学習でみかける”カーネル”って何のことだろう。。」

今回は「Linuxカーネルとは」といった疑問を解決するためにLinuxカーネルについて解説します

カーネルはOSというソフトウェアを構成するプログラムの1つです。プロセス管理やハードウェアのリソース管理など、OSの中核を担っています

『そもそもLinuxって何??OSって何??』という人もわかるように基礎知識から解説しますので安心してください

「Linuxとは何か?」についての詳しい解説はこちら

※この記事は初心者向けに平易に解説しています。正確な理解をしたい人は専門書・専門家をあたっていただければと思います。また、この記事の情報におけるCPの動作結果については自己責任でお願いします。

※本サイトにはプロモーション・広告が含まれています(はづきのブログより)

スポンサーリンク

前提知識:LinuxとはOSの1種

Linuxカーネルの前に、前提知識としてLinuxとは何かを解説します

LinuxはOSの種類の1つです

OSはハードウェアとソフトウェアの仲介をするソフトウェアで、アプリケーションからハードウェアの使用要求を受けたときに適切なハードウェアに接続します

例えば、ゲームアプリが記憶装置を使いたい場合はOSに依頼をして、OSがハードディスクなどの記憶装置(ハードウェア)と連携します

LinuxはOSの中でも歴史が長く、安価で動作が軽量なことからサーバ用のコンピュータに導入されることが多いです。また、WindowsやMacOSと異なりコマンドで操作するCUI操作が基本になります

「LinuxとOSについて」の詳しい解説はこちら

Linuxカーネルとは

"Linux"は、広義では"LinuxOS"、狭義では"Linuxカーネル"を指します

ここでは、狭義でのLinuxカーネルについて解説していきます

カーネルはOSを構成するプログラムの1つ

カーネルは、OSというソフトウェアを構成するプログラムの1つです

OSの構成は具体的に以下のようなプログラムによって成り立っています。カーネルはその中の1つという位置づけですね

  1. ブートローダ
  2. デーモン
  3. デスクトップマネージャ
  4. アプリケーション
  5. シェル
  6. カーネル

カーネルは、LinuxやWindowsなどのOSの種類を決定するOSの核(Kernel)となる部分になります。OSとして機能するための重要な役割を担っています

カーネルの役割

カーネルの主な役割として、プロセス管理とメモリ管理/デバイス管理について解説します

プロセス管理とは、プログラムの実行単位を1プロセスとして扱い、プログラムの実行などに必要なメモリの割り当てを行うことを指します

例えば、Linuxにmkdirコマンドを入力して実行すると、「ディレクトリを作成する」というプロセスが生成されます。そして、この処理に必要なメモリ領域を確保することで、他の処理によってディレクトリ作成の処理が阻害されることがないようにします

メモリ管理/デバイス管理は、OSのアプリケーションとハードウェアの仲介という機能を実行するための役割です

OSがアプリケーションから画面表示やデータの保存等の依頼を受けると、ディスプレイやハードディスクなどの適切なハードウェアを割り当てます

以上がカーネルの代表的な役割です

カーネルとシェルの関係

Linux学習の中でカーネルと同じくらい見かける言葉として「シェル」があります

シェルもカーネルと同様にOSを構成するプログラムの1つです。ここから先はカーネルと比較をしながらシェルについて解説していきます

シェルがコマンドを受け取りカーネルが実行する

シェルは、カーネルのインターフェースとなるソフトウェアで、ユーザとカーネルの橋渡しをしています

そのため、ユーザは直接カーネルを操作することはできません

以下の例で、シェルとカーネルの役割についてみてみましょう

  1. ユーザからターミナル(※1)を通してコマンドを受け取る
  2. コマンド名に該当する処理の実行ファイルを探す
  3. 実行ファイルをもとに処理を実行する
  4. 実行結果をユーザに返す

このうち1、2、4はシェルが、3はカーネルが担当しています。カーネルは基本的にはユーザが入力したコマンドの実行処理のみを担当しており、その他の処理はシェルが行います

※ターミナルとは、ユーザがコマンドを入力する黒い画面のことです

シェルとカーネルを分ける理由

シェルとカーネルで処理を分けている理由には以下があります

  • ユーザがカーネルを直接操作できないことで、カーネルの破損を防ぐ
  • 処理ごとにプログラムを分けることでエラーや高負荷によるクラッシュの影響範囲を低減する
  • シェルの種類の切り替えが可能になり、目的ごとに柔軟な操作ができる

カーネルはOSの中でも核となる重要なプログラムです。ここに人の手が加わらないようにシェルを挟む、というのがシェルとカーネルを分ける主な目的だと思われます

また、シェルは種類が複数ありそれぞれ機能が異なります。近年はbashが主流ですが、いまでも用途に応じて使い分けられています

Linuxカーネルのバージョンの確認方法

Linuxカーネルの確認するためのコマンドとして、「uname」コマンドがあります

WindowsPCでLinuxの環境構築をしたい方はこちら

以下で、実際の実行例を確認してみましょう

hazukiblog@hazukiBlog:~$ uname -v
#1 SMP Fri Jan 27 02:56:13 UTC 2023
hazukiblog@hazukiBlog:~$ uname -s
Linux
hazukiblog@hazukiBlog:~$

「-v」はカーネルのバージョンを確認するためのオプションです

ここで表示されているのは「#1 SMP」のカーネルが「Fri Jan 27 02:56:13 UTC 2023」にコンパイルされたということを指しています

SMPは和名で「対象型マルチプロセッシング」と呼び、1台のコンピュータに複数のCPUがあるときに処理を等しく分担させる処理方式を指します。UTC(Coordinated Universal Time)は「協定世界時」という世界で使われる標準時です。これはGMT(グリニッジ標準時)と同じ時間を指しています

「-s」はカーネルの名前を表示するコマンドです

ここでは、「Linux」と出力されています。これが「カーネルとしてのLinux」を狭義のLinuxと呼ぶ理由です(広義ではLinuxOS全体を指してLinuxと呼びます)。

まとめ

この記事ではLinuxカーネルについて解説しました

  • カーネルはOSを構成するプログラムの1つ
  • ユーザから直接操作はできないため、シェルを介して操作する
  • カーネルは処理の実行やハードウェア/メモリ管理等を担当する

カーネルについてざっくりイメージできているとLinux学習がはかどると思います

今回の解説でLinuxの理解が進めば幸いです

おしまい

コメント

タイトルとURLをコピーしました