Oracle Solaris カーネルは、システムリソースを管理するプログラムです。カーネルはシステムハードウェアからアプリケーションを隔離し、入出力 (I/O) 管理、仮想メモリー、スケジューリングなどの重要なシステムサービスをアプリケーションに提供します。カーネルは、必要なときにメモリーに動的にロードされるオブジェクトモジュールから構成されます。
Oracle Solaris カーネルは論理的に 2 つの部分に分割できます。カーネルと呼ばれる最初の部分は、ファイルシステム、スケジューリング、および仮想メモリーを管理します。I/O サブシステムと呼ばれる 2 番目の部分は物理コンポーネントを管理します。
カーネルは、アプリケーションがシステムコールを介してアクセスできるインタフェースのセットを提供します。システムコールについては、リファレンスドキュメントコレクション(Intro (2)を参照) の第 2 セクションに説明があります。一部のシステムコールは、デバイスドライバを呼び出して入出力を実行するために使用されます。デバイスドライバはロード可能なカーネルモジュールであり、カーネルの残りの部分をデバイスハードウェアから隔離しながら、データ転送を管理します。オペレーティングシステムとの互換性を確保するため、デバイスドライバはマルチスレッド化、仮想メモリーアドレス指定、32 ビットと 64 ビット両方の操作などの機能に対応できる必要があります。
次の図はカーネルを示しています。カーネルモジュールはアプリケーションプログラムからのシステムコールを処理します。I/O モジュールはハードウェアと通信します。
図 2-1 Oracle Solaris カーネル
カーネルは次の機能を通してデバイスドライバへのアクセスを提供します。
デバイスからドライバへのマッピング。カーネルはデバイスツリーを維持管理します。ツリー内の各ノードは仮想デバイスまたは物理デバイスを表します。カーネルはデバイスノード名を、システムにインストールされているドライバのセットと照合し、各ノードをドライバにバインドします。アプリケーションからデバイスにアクセスできるようになるのは、ドライバのバインドが存在する場合のみです。
DDI/DKI インタフェース。DDI/DKI (デバイスドライバインタフェース/ドライバカーネルインタフェース) インタフェースは、ドライバと、カーネル、デバイスハードウェア、およびブート/構成ソフトウェアとの間の対話処理を標準化します。これらのインタフェースは、カーネルからのドライバの独立を維持し、特定マシンでの継続的なオペレーティングシステムのリリース全体にわたってドライバの移植性を向上させます。
LDI。LDI (階層化ドライバインタフェース) は DDI/DKI の拡張機能です。カーネルモジュールは LDI によってシステム内のその他のドライバにアクセスできます。LDI を使用すると、カーネルによって現在使用されているデバイスを特定することもできます。Chapter 14, Layered Driver Interface (LDI)を参照してください。