カーネルの役割
カーネルは、OSの中枢となるソフトウェアです。
システム全体のリソースを管理し、ハードウェア・ソフトウェア間のやりとりを管理します。
以前の記事でも紹介しましたが、カーネルが行っている動作は主に下記2つです。
・アプリケーションからの要求(システムコール)に応える
・ハードウェアからの応答をアプリケーションに伝える
上図のようにカーネルはアプリケーションとハードウェアの中間に位置し、アプリケーション、およびハードウェアからの要求があれば、何らかの動作を行います。
カーネルを中間の位置に置くことによるメリットは大きいです。
もしカーネルがなければアプリケーションがハードウェアを直接制御することになります。
世の中には無数のハードウェアが市場に出回っていますので、これは非常に非現実的です。
例えば、ワープロソフトで作成したドキュメントをプリンタで印刷したい場合、プリンタメーカーはたくさんありますし、機種も様々に存在しているので、ワープロソフトがそれら全てのプリンタに対応させるのは、とんでもなく大変です。
しかし、カーネルが間に入ることで、カーネルがプリンタ機種による差を吸収してくれるので、ワープロソフトは接続されているプリンタの機種を気にする必要がなくなります。
そして何より、カーネルは「システムの保護」という観点で大いに活躍してくれています。
アプリケーションにはバグはつきものです。
バグが与える影響範囲がそのアプリケーション内で収まれば良いのですが、ほかのアプリケーションにも影響を与えたり、最悪システム全体が落ちてしまうという事態も十分に考えれられます。
カーネルは、アプリケーションのバグ、あるいは悪意のある動作からシステムを守り、全体の安全性を向上に大いに貢献してくれているというわけです。