はじめに
カーネルとシェルについてまとめてみました。
カーネルとは
カーネルとは、OSの核になる部分、つまりOSそのもののことです。Linuxの場合、カーネルはKernel 4.18.0のように表記されます。Kernelの後に付いている番号が、カーネルのバージョンを表しています。
Linuxのようなオープンソースの世界では、異なるバージョンのカーネルが世界中に存在しています。Windowsのようにメーカーがサポートしてくれるわけではないので、システムの管理者が、自身の判断で最も安定しているカーネルを選択する必要があります。
シェルとは
シェルは、ユーザーの命令をカーネルに伝える機能を持っています。カーネルはハードウェアと密接に関係しており、ユーザーの命令を直接理解する能力がありません。そこで、シェルという窓口を通して、命令をカーネルに伝える必要があります。
シェルはユーザーとLinuxカーネルの橋渡しを行う
なぜカーネルとシェルが分かれているのか
「はじめからLinuxカーネルの中に、シェルのような、キーボードからコマンド操作できる機能を取り込んでおけばよいのに。そうすれば、わざわざシェルなんてものを別に用意する必要もないだろう」と思った方もいるでっしょう。なぜカーネルとシェルが別々に提供されているのでしょうか。これは、以下のようにLinuxカーネルとシェルを分離しておいた方がよい点が多々あるためです。
・Linuxカーネルいは手を入れずに、シェルだけを自分好みのものに変更することができる
・Linux以外のOS(FreeBSDやNetBSD、Solarisなど)を利用する際も、シェルが移植されていれば操作を同様に行うことができる
・シェルがエラーや高負荷状態になってクラッシュしたとしても、OS本体であるLinuxカーネルへの影響を最小限に抑えることができる
ここには、Linuxの「1つのプログラムには、1つのことをうまくやらせる」という考え方を見て取ることができます。1つのプログラムにあれもこれもと機能を詰め込まず、機能ごとにプログラムを分離しておくことが、ソフトウェア開発においては重要なことなのです。
おわりに
ここまで読んでいただきありがとうございます!
参考文献
・Linuxの絵本 サーバーOSが楽しくわかる9つの扉 単行本(ソフトカバー) – 2020/1/20
株式会社アンク (著) p.8-9
・新しいLinuxの教科書 三宅 英明 (著), 大角 祐介 (著) p.27
・「パソコンを使う動物」のイラスト素材
https://www.ac-illust.com/main/search_result.php?word=%E8%89%B6%E7%BE%8E&search_word=%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3%E3%82%92%E4%BD%BF%E3%81%86%E5%8B%95%E7%89%A9&page=0