◆「カーネル(kernel)」について
カーネル(kernel)とは、オペレーティングシステム(OS)の基本機能の
役割を担うソフトウェア。
カーネルは、OSの中でも特に中核的なプログラムであり、ハードディスクや
メモリなど、コンピュータの資源管理を行なっている。
カーネルは、アプリケーションの実行を許可し、プロセス管理を行い、
また、安全なメモリへのアクセス管理や、コンピュータに接続された
周辺機器のデバイス管理を行う。
プロセス間の通信、割りこみ処理といった処理もカーネルによって行なわれてる。
例えばLinux系OSは、OSの中核である「カーネル」と、OSを構成する
「他のプログラム」から出来ている。
Linux系OSは無償というイメージがあるが、開発者のリーナス・トーバルズ氏が
無償で公開しているのは、カーネルの部分。
◆「カーネルモジュール(kernel module)」について
カーネルモジュールとは、オペレーティングシステム(OS)の中核部分である
カーネルに機能を追加するよう設計されたソフトウェア部品のこと。
単にカーネルモジュールといった場合はLinuxカーネルに追加できるプログラム
を指すことが多い。
カーネルはOSの基盤部分で、コンピュータを構成するCPUなどのハードウェアの
制御や実行プログラムの制御などを行っている。
通常、カーネルに機能を追加するにはカーネルのソースコードに追加部分の
コードを組み込んで全体を再構築する必要があるが、Linuxカーネルには稼働中の
カーネルに特定の形式のプログラムを追加して動作させる仕組みが内蔵されている。
この仕組みを利用して外部から追加するバイナリ(実行可能)形式のプログラムが
カーネルモジュールで、NIC(ネットワークインターフェースカード)など
コンピュータに内蔵あるいは接続された特定の機種のハードウェアを制御するための
デバイスドライバなどがカーネルモジュールとして提供される。
ドライバは機種ごとに固有であるため、すべての機種に対応しようとすると
膨大な数のプログラムを標準で組み込まなければならないが、実行時に外部から
追加できるようにしておくことで、ハードウェアのメーカーが自社製品向けの
ドライバを製品と共に提供することができる。
削除や入れ替え、更新なども全体の再構築や再起動を行わずにモジュール単位で
行うことができる。