ソフトウェアの中で最も中核となるのがカーネルと呼ばれる部分です。コンピュータで何らかの処理をするときには、ユーザはアプリケーションに対して操作をすることが多いです。そして、そのアプリケーションはOSの機能を利用して様々な処理を行います。OSはハードウェアに対して様々な処理を要求します。

このような階層構造ができているのですが、OSの中にも階層構造はできています。OSというと、WindowsやMacOSなど、グラフィカルなものをイメージする人も多いのではないでしょうか。最近ではデスクトップやGUIなどの環境をOSに統合するのが普通ですから、たとえばLinuxのディストリビューションの中には、いろいろなものが統合されていて、それ単体で機能するものもあります。ですから、OSという概念が少し肥大化していると考えられます。

本来のOSという言葉は、ハードウェアを制御するソフトウェアという意味で、現在で言うところのカーネルと同じ意味で使われていたと考えられます。カーネルはOSのソフトウェアの一部で、具体的にはメモリやCPU、入出力機器を制御する働きを持っています。カーネルを通していろいろな命令を出すことによって、直接的に命令を出すことが必要ありませんから、いろいろなハードウェアを抽象化していると言ってもよいでしょう。ハードウェアといろいろなソフトウェアが通信するための機能を提供しているとも考えられます。

この意味で、カーネルは最も基本的なソフトウェアと考えられるのです。