ファイルシステムAPI
このAPIは、ファイルシステムがカーネル内にあるものの、実際にはそのファイルシステムを使わずにドライバ型APIの別のファイルシステムを使用するものである。この手法はVFATとしてWindows 3.11以降のWindows 9x系で使われたものである。
しかし、このAPIは完全な文書が存在せず、サードパーティーはこのインタフェースを使用したファイルシステム開発に非常に苦労したという。
カーネルがファイルシステム開発者向けAPIを提供するだけでなく、ファイルシステム自身がカーネル空間に置かれる場合に「カーネル型API」と呼ぶ。
従来の手法ではファイルシステムのコードはカーネル内の各コードと複雑に絡み合っていたが、カーネル型のファイルシステムAPIではファイルシステムがカーネルに提供すべきインタフェースとカーネルがファイルシステムに提供するインタフェースが明確化されている。
これは、最もきれいな手法とは言えないが、従来の手法の持っていた欠点を解決している。
モジュール化されたカーネルでは、ファイルシステムも他のモジュールのように追加可能なモジュールとして扱われる(つまり、APIだけでなくABIも規定されて、オブジェクトファイルの形で追加することが可能)。モジュール化されていないカーネルではファイルシステムのコードを追加したときにはカーネルの再コンパイルが必要である(従って、ソースの公開されていないOSでは、OS開発業者がOEM供給を受けてファイルシステムを追加することになる)。
Linuxを含めたUnix系システムはこの手法を採用している。
MS-DOS(4.0以降)と互換OSでは、同様の手法でCD-ROMやネットワークファイルシステムをサポートしていた。カーネルにコードを追加するのではなく、カーネルの機能を利用したカーネル型APIである。ファイル関連のコールを全て捉えて、必要に応じて特定のファイルシステムドライバを呼び出し、ファイルシステムドライバは低レベルなBIOS機能を使って直接ディスクにアクセスしていた。