次のページ 前のページ 目次へ

2. Coda ファイルシステムサービス用のコール

Coda ファイ ルシステムサービス要求のサービスは、Coda ファイルにアクセスするプロセス P で起こります。それは OS のカーネルへトラップするシステムコールを 行います。Unix コンテキストにおけるカーネルにトラップするようなコールの 例は read, write, open, close, create, mkdir, rmdir, chmod など です。Win32 環境にも同様のコールは存在し、CreateFile と名付けら れています。

一般にオペレーティングシステムは要求をバーチャルファイルシステム (VFS) 層で扱います。この層は NT では I/O マネージャ、Windows 95 では IFS マネー ジャと呼ばれます。VFS の役割は、要求を部分的に処理し、その要求の残りのサー ビスを行う特定のファイルシステムを見つけることです。通常は、パス中の情報 は正しい FS ドライバを見つけるのに役立ちます。時として多くの前処理の後で、 VFS が FS ドライバがエクスポートしているルーチンの呼び出しを開始する場合 もあります。ここが要求のファイルシステム固有な処理を開始する地点で、ここ で Coda 固有のカーネルコードが動き始めます。

Coda 用 FS 層はいくつかのインターフェースを公開し実装しなければなりませ ん。まず第一に、VFS は Coda FS 層への必要なコールをすべて行えなければな らないので、Coda FS ドライバはオペレーティングシステムで使える形式で、 VFS インターフェースを公開しなければなりません。これらはオペレーティング システム間で著しく異なりますが、オブジェクトを読む/書く、作成する、削除 する、ための機構といった機能で分かれます。Coda FS 層は、呼び出しによる VFS 要求や、キャッシュマネージャ Venus から依頼される多くのかなり明確な サービスを、サービスします。Venus からの応答が FS ドライバに返された場合、 VFS コールのサービスを続けて、カーネルの VFS への応答を伴い終了します。 最後に VFS 層はプロセスへ返ります。

この設計の結果、FS ドライバに公開された基本インターフェースは、メッセー ジトラフィックの管理を Venus にさせるようにしなければなりません。特に Venus はメッセージの受け取りおよび発行、新しいメッセージの到着の通知を受 けることができなければなりません。メッセージを待っていない場合やメッセー ジを処理している場合でも、Venus は他のタスクに注意を払わなければならない ので、通知は Venus をブロックしない仕組みになっていなければなりません。

さらに、FS 層は、ユーザプロセスと Venus 間の pioctl インターフェースと呼 ばれる特別なコミュニケーションパスを提供します。pioctl インターフェース は、Venus に管理される永続的なキャッシュに関する詳細な情報を要求するよう な、Coda 固有のサービスのために使われます。これはカーネルの関与を最小限 にします。呼び出しているプロセスを識別し、Venus へ情報を渡します。Venus が応答する時、応答は修正されずに呼び出し元に返されます。

最後に、Venus は、カーネル FS ドライバが特定のサービスの結果をキャッシュ することを許します。これは過度のコンテキストスイッチを回避させ、結果的に 効率的なシステムにしています。しかしながら、Venus は、例えばキャッシュさ れた情報をフラッシュもしくは置きかえなければならないという情報をネットワー クから得るかもしれません。そのような場合には Venus はキャッシュ内をフラッ シュあるいは更新する要求を Coda FS 層に downcall します。カーネル FS ド ライバはこのような要求を同期して扱います。

これらのインターフェースの中で、VFS インターフェースおよびメッセージを発 行、受け取る、通知を受ける機構はプラットフォーム固有です。VFS 層にエキス ポートされたコールの説明は行いませんが、メッセージ交換の仕組みに必要なこ とは述べます。


次のページ 前のページ 目次へ