(57)【要約】【課題】オペレーティング・システム区画内のプロセス間通信を提供すること。【解決手段】グローバル・ゾーンと１つまたは複数の非グローバル・ゾーンに区画された単一カーネル・インスタンス・オペレーティング・システムでプロセス間通信を制御する方法。本方法は、単一カーネル・インスタンスによって制御されるグローバル・オペレーティング・システム環境で他の非グローバル・ゾーンのプロセスからプロセスを分離するための非グローバル・ゾーンを確立する。第１の要求に応じて、第１の要求を行うプロセスの非グローバル・ゾーンに対応する一意の識別子を有する通信オブジェクトを作成する。第２の要求に応じて、第２の要求を行うプロセスが通信オブジェクトの一意の識別子と一致する一意の識別子を有する非グローバル・ゾーンに関連付けられていると判定されると、第２の要求を行うプロセスに対して通信オブジェクトを使用して通信を開始する。【選択図】図１
2004334893.tif 000002
【特許請求の範囲】
【請求項１】
単一オペレーティング・システム・カーネル・インスタンスによって制御されるグローバル・オペレーティング・システム環境で他の非グローバル・ゾーンのプロセスからプロセスを分離するための、一意のゾーン識別子を有する非グローバル・ゾーンを確立するステップと、
通信オブジェクトを作成する第１の要求を、非グローバル・ゾーンに関連して実行する第１のプロセスから受信するステップと、
第１の要求の受信に応じて、第１のプロセスの一意のゾーン識別子を有する通信オブジェクトを作成するステップと、
その通信オブジェクトを使用して通信を開始するための第２の要求を第２のプロセスから受信するステップと、
第２の要求の受信に応じて、第２のプロセスが通信オブジェクトの一意のゾーン識別子を有する非グローバル・ゾーンに関連付けられているか否かを判定するステップと、
第２のプロセスが通信オブジェクトの一意のゾーン識別子を有する非グローバル・ゾーンに関連付けられていない場合、第２の要求を拒否するステップと
を含む方法。
【請求項２】
第２のプロセスが通信オブジェクトの同じ一意のゾーン識別子を有する非グローバル・ゾーンに関連付けられている場合、第２の要求を許可するステップをさらに含む請求項１に記載の方法。
【請求項３】
通信オブジェクトがオブジェクト識別子を有しており、
通信オブジェクトを作成するステップが、
通信オブジェクト識別子を有する通信オブジェクトを作成するステップと、
要求側プロセスのゾーン識別子を通信オブジェクトに関連付けるステップと、
第１のプロセスを含んでいる非グローバル・ゾーンで通信オブジェクトを管理するための構造に通信オブジェクト識別子とゾーン識別子とを記憶させ、
それによって、第１の非グローバル・ゾーンの第１の通信オブジェクトと第２の非グローバル・ゾーンの第２の通信オブジェクトとが同じ通信オブジェクト識別子を使用することを可能にするステップと
をさらに含む請求項１に記載の方法。
【請求項４】
通信オブジェクト識別子は、アドレス、ソケット識別子、ポート、フレックス・アドレス、セマフォー識別子、メッセージ待ち行列識別子、共有メモリ・セグメント識別子、パイプ、ストリーム識別子の少なくとも１つを含んでいる請求項３に記載の方法。
【請求項５】
他の非グローバル・ゾーンのプロセスからプロセスを分離するために非グローバル・ゾーンを確立するステップが、
非グローバル・ゾーンを作成するステップと、
一意の識別子を非グローバル・ゾーンに関連付けるステップと、
非グローバル・ゾーンに関連付けられた通信オブジェクトに関する情報を管理するためにデータ構造を作成するステップと
をさらに含む請求項１に記載の方法。
【請求項６】
通信オブジェクトを使用して通信を開始するための要求を第２のプロセスから受信するステップが、第２の非グローバル・ゾーンの受信側プロセスと通信するために第１の非グローバル・ゾーンの要求側プロセスから要求を受信するステップを含み、方法が、
要求側プロセスが属している非グローバル・ゾーンを示すゾーン識別子を含む、要求側プロセスに対する信任状を検索するステップと、
信任状に基づいて、非グローバル・ゾーン境界を越えて受信側プロセスと通信することが要求側プロセスに許可されていることを検証するステップと、
要求側プロセスが許可されている場合、グローバル・オペレーティング・システム環境を介して要求側プロセスと受信側プロセスの間に通信パスを確立するステップと
をさらに含む請求項１に記載の方法。
【請求項７】
通信オブジェクトが、ループバック移送プロバイダ、セマフォー、共有メモリ・セグメント、メッセージ待ち行列、イベント・チャネルの少なくとも１つを含む請求項１に記載の方法。
【請求項８】
単一オペレーティング・システム・カーネル・インスタンスによって制御されるグローバル・オペレーティング・システム環境で他の非グローバル・ゾーンのプロセスからプロセスを分離するための非グローバル・ゾーンを確立するステップと、
ある非グローバル・ゾーンのプロセスによってアクセス可能なポイントでグローバル・オペレーティング・システム環境のグローバル・ファイル・システムにファイル・システムをマウントするステップと、
非グローバル・ゾーンのファイル・システムのファイル・システム位置を確立するステップと、
ファイル・システム位置内に通信オブジェクトを確立するステップと、
ファイル・システム位置に対するアクセス許可を確立するステップと、
通信オブジェクトを使用して通信を開始するための要求を第１のプロセスから受信するステップと、
要求の受信に応じて、通信オブジェクトのファイル・システム位置にアクセスすることが第１のプロセスに許可されているか否かを判定するステップと、
通信オブジェクトのファイル・システム位置にアクセスすることが第１のプロセスに許可されていない場合、要求を拒否するステップと
を含む方法。
【請求項９】
第１の通信オブジェクトと第２の通信オブジェクトが、パイプ、ストリーム、ソケット、ＰＯＳＩＸプロセス間通信、ドア・インターフェースの少なくとも１つを利用する請求項８に記載の方法。
【請求項１０】
通信オブジェクトを使用して通信を開始するための要求を第１のプロセスから受信するステップが、第２の非グローバル・ゾーンの第２のプロセスと通信するための要求を第１の非グローバル・ゾーンの第１のプロセスから受信するステップを含み、方法が、
第１のプロセスが属している非グローバル・ゾーンを示すゾーン識別子を含む、第１のプロセスに対する信任状を検索するステップと、
信任状に基づいて、非グローバル・ゾーン境界を越えて第２のプロセスと通信することが第１のプロセスに許可されていることを検証するステップと、
第１のプロセスが許可されている場合、第１のプロセスと第２のプロセスの間に通信パスを確立するステップと
をさらに含む請求項８に記載の方法。
【請求項１１】
第１の非グローバル・ゾーンの第１のプロセスが、イベント・チャネルとドア・インターフェースの少なくとも１つを使用して第２の非グローバル・ゾーンの第２のプロセスと通信する請求項１０に記載の方法。
【請求項１２】
グローバル・オペレーティング・システム環境で他の非グローバル・ゾーンのプロセスからプロセスを分離するための非グローバル・ゾーンを確立するステップと、
第１の要求に応じて、第１の要求を行うプロセスの非グローバル・ゾーンに対応する一意の識別子を有する通信オブジェクトを作成するステップと、
第２の要求を行うプロセスが通信オブジェクトの一意の識別子と一致する一意の識別子を有する非グローバル・ゾーンに関連付けられていると判定された場合、第２の要求に応じて、第２の要求を行うプロセスに対する通信オブジェクトを使用して通信を開始するステップと
を含む方法。
【請求項１３】
１つまたは複数のプロセッサに、単一オペレーティング・システム・カーネル・インスタンスによって制御されるオペレーティング・システム環境で、一意のゾーン識別子を有する他の非グローバル・ゾーンのプロセスからプロセスを分離するための非グローバル・ゾーンを確立させる命令と、
１つまたは複数のプロセッサに、通信オブジェクトを作成するための第１の要求を、非グローバル・ゾーンに関連して実行する第１のプロセスから受信させる命令と、
１つまたは複数のプロセッサに、第１の要求の受信に応じて、第１のプロセスの一意のゾーン識別子を有する通信オブジェクトを作成させる命令と、
１つまたは複数のプロセッサに、通信オブジェクトを使用して通信を開始するための第２の要求を第２のプロセスから受信させる命令と、
１つまたは複数のプロセッサに、第２の要求の受信に応じて、第２のプロセスが通信オブジェクトの一意のゾーン識別子を有する非グローバル・ゾーンに関連付けられているか否かを判定させる命令と、
１つまたは複数のプロセッサに、第２のプロセスが通信オブジェクトの一意のゾーン識別子を有する非グローバル・ゾーンに関連付けられてない場合、第２の要求を拒否させる命令と
を含むコンピュータ可読媒体。
【請求項１４】
１つまたは複数のプロセッサに、第２のプロセスが通信オブジェクトの同じ一意のゾーン識別子を有する非グローバル・ゾーンに関連付けられている場合、第２の要求を許可させる命令をさらに含む請求項１３に記載のコンピュータ可読媒体。
【請求項１５】
通信オブジェクトがオブジェクト識別子を有しており、
１つまたは複数のプロセッサに通信オブジェクトを作成させる命令が、
１つまたは複数のプロセッサに、通信オブジェクト識別子を有する通信オブジェクトを作成させる命令と、
１つまたは複数のプロセッサに、要求側プロセスのゾーン識別子を通信オブジェクトに関連付けさせる命令と、
１つまたは複数のプロセッサに、第１のプロセスを含んでいる非グローバル・ゾーンで通信オブジェクトを管理するために構造に通信オブジェクト識別子とゾーン識別子とを記憶させ、
それによって、第１の非グローバル・ゾーンの第１の通信オブジェクトと第２の非グローバル・ゾーンの第２の通信オブジェクトとに同じ通信オブジェクト識別子を使用することを可能にさせる命令と
をさらに含む請求項１３に記載のコンピュータ可読媒体。
【請求項１６】
通信オブジェクト識別子が、アドレス、ソケット識別子、ポート、フレックス・アドレス、セマフォー識別子、メッセージ待ち行列識別子、共有メモリ・セグメント識別子、パイプ、ストリーム識別子の少なくとも１つを含む請求項１５に記載のコンピュータ可読媒体。
【請求項１７】
１つまたは複数のプロセッサに、他の非グローバル・ゾーンのプロセスからプロセスを分離するために非グローバル・ゾーンを確立させる命令が、
１つまたは複数のプロセッサに非グローバル・ゾーンを作成させる命令と、
１つまたは複数のプロセッサに一意の識別子を非グローバル・ゾーンに関連付けさせる命令と、
１つまたは複数のプロセッサに、非グローバル・ゾーンに関連付けられる通信オブジェクトに関する情報を管理するためにデータ構造を作成させる命令と
をさらに含む請求項１３に記載のコンピュータ可読媒体。
【請求項１８】
１つまたは複数のプロセッサに、通信オブジェクトを使用して通信を開始するための要求を第２のプロセスから受信させる命令が、１つまたは複数のプロセッサに、第２の非グローバル・ゾーンの受信側プロセスと通信するために第１の非グローバル・ゾーンの要求側プロセスから要求を受信させる命令を含み、コンピュータ可読媒体が、
１つまたは複数のプロセッサに、要求側プロセスが属している非グローバル・ゾーンを示すゾーン識別子を含む、要求側プロセスに対する信任状を検索させる命令と、
１つまたは複数のプロセッサに、信任状に基づいて、非グローバル・ゾーン境界を越えて受信側プロセスと通信することが要求側プロセスに許可されていることを検証させる命令と、
１つまたは複数のプロセッサに、要求側プロセスが許可されている場合、グローバル・オペレーティング・システム環境を介して要求側プロセスと受信側プロセスの間に通信パスを確立させる命令と
をさらに含む請求項１３に記載のコンピュータ可読媒体。
【請求項１９】
通信オブジェクトが、ループバック移送プロバイダ、セマフォー、共有メモリ・セグメント、メッセージ待ち行列、およびイベント・チャネルの少なくとも１つを含む請求項１３に記載のコンピュータ可読媒体。
【請求項２０】
１つまたは複数のプロセッサに、単一オペレーティング・システム・カーネル・インスタンスによって制御されるグローバル・オペレーティング・システム環境で他の非グローバル・ゾーンのプロセスからプロセスを分離するための非グローバル・ゾーンを確立させる命令と、
１つまたは複数のプロセッサに、ある非グローバル・ゾーンのプロセスによってアクセス可能なポイントでグローバル・ゾーン・オペレーティング・システム環境のグローバル・ファイル・システムにファイル・システムをマウントさせる命令と、
１つまたは複数のプロセッサに、非グローバル・ゾーンのファイル・システムにファイル・システム位置を確立させる命令と、
１つまたは複数のプロセッサに、ファイル・システム位置内に通信オブジェクトを確立させる命令と、
１つまたは複数のプロセッサに、ファイル・システム位置に対するアクセス許可を確立させる命令と、
１つまたは複数のプロセッサに、通信オブジェクトを使用して通信を開始するための要求を第１のプロセスから受信させる命令と、
１つまたは複数のプロセッサに、要求の受信に応じて、通信オブジェクトのファイル・システム位置にアクセスすることが第１のプロセスに許可されているか否かを判定させる命令と、
１つまたは複数のプロセッサに、通信オブジェクトのファイル・システム位置にアクセスすることが第１のプロセスに許可されていない場合、要求を拒否させる命令と
を含むコンピュータ可読媒体。
【請求項２１】
第１の通信オブジェクトと第２の通信オブジェクトが、パイプ、ストリーム、ソケット、ＰＯＳＩＸプロセス間通信、およびドア・インターフェースの少なくとも１つを利用する請求項２０に記載のコンピュータ可読媒体。
【請求項２２】
１つまたは複数のプロセッサに、通信オブジェクトを使用して通信を開始するための要求を第１のプロセスから受信させる命令が、１つまたは複数のプロセッサに、第２の非グローバル・ゾーンの第２のプロセスと通信するための要求を第１の非グローバル・ゾーンの第１のプロセスから受信させる命令を含み、コンピュータ可読媒体が、
１つまたは複数のプロセッサに、第１のプロセスが属している非グローバル・ゾーンを示すゾーン識別子を含む、第１のプロセスに対する信任状を検索させる命令と、
１つまたは複数のプロセッサに、信任状に基づいて、非グローバル・ゾーン境界を越えて第２のプロセスと通信することが第１のプロセスに許可されていることを検証させる命令と、
１つまたは複数のプロセッサに、第１のプロセスが許可されている場合、第１のプロセスと第２のプロセスの間に通信パスを確立させる命令と
をさらに含む請求項２０に記載のコンピュータ可読媒体。
【請求項２３】
第１の非グローバル・ゾーンの第１のプロセスが、イベント・チャネルとドア・インターフェースの少なくとも１つを使用して第２の非グローバル・ゾーンの第２のプロセスと通信する請求項２２に記載のコンピュータ可読媒体。
【請求項２４】
１つまたは複数のプロセッサに、グローバル・オペレーティング・システム環境で他の非グローバル・ゾーンのプロセスからプロセスを分離するための非グローバル・ゾーンを確立させる命令と、
１つまたは複数のプロセッサに、第１の要求に応じて、第１の要求を行うプロセスの非グローバル・ゾーンに対応する一意の識別子を有する通信オブジェクトを作成させる命令と、
１つまたは複数のプロセッサに、第２の要求を行うプロセスが通信オブジェクトの一意の識別子と一致する一意の識別子を有する非グローバル・ゾーンに関連付けられていると判定された場合、第２の要求に応じて、通信オブジェクトを使用して通信を開始させる命令と
を含むコンピュータ可読媒体。
【請求項２５】
単一オペレーティング・システム・カーネル・インスタンスによって制御されるグローバル・オペレーティング・システム環境で、一意のゾーン識別子を有する他の非グローバル・ゾーンのプロセスからプロセスを分離するための非グローバル・ゾーンを確立する手段と、
通信オブジェクトを作成するための第１の要求を、非グローバル・ゾーンに関連して実行する第１のプロセスから受信する手段と、
第１の要求の受信に応じて、第１のプロセスの一意のゾーン識別子を有する通信オブジェクトを作成する手段と、
通信オブジェクトを使用して通信を開始するための第２の要求を第２のプロセスから受信する手段と、
第２の要求の受信に応じて、第２のプロセスが通信オブジェクトの一意のゾーン識別子を有する非グローバル・ゾーンに関連付けられているか否かを判定する手段と、
第２のプロセスが通信オブジェクトの一意のゾーン識別子を有する非グローバル・ゾーンに関連付けられてない場合、第２の要求を拒否する手段と
を含む装置。
【請求項２６】
単一オペレーティング・システム・カーネル・インスタンスによって制御されるグローバル・オペレーティング・システム環境で他の非グローバル・ゾーンのプロセスからプロセスを分離するための非グローバル・ゾーンを確立する手段と、
ある非グローバル・ゾーンのプロセスによってアクセス可能なポイントでグローバル・オペレーティング・システム環境のグローバル・ファイル・システムにファイル・システムをマウントする手段と、
非グローバル・ゾーンのファイル・システムのファイル・システム位置を確立する手段と、
ファイル・システム位置内に通信オブジェクトを確立する手段と、
ファイル・システム位置に対するアクセス許可を確立する手段と、
通信オブジェクトを使用して通信を開始するための要求を第１のプロセスから受信する手段と、
要求の受信に応じて、通信オブジェクトのファイル・システム位置にアクセスすることが第１のプロセスに許可されているか否かを判定する手段と、
通信オブジェクトのファイル・システム位置にアクセスすることが第１のプロセスに許可されていない場合、要求を拒否する手段と
を含む装置。
【請求項２７】
グローバル・オペレーティング・システム環境で他の非グローバル・ゾーンのプロセスからプロセスを分離するための非グローバル・ゾーンを確立する手段と、
第１の要求に応じて、第１の要求を行うプロセスの非グローバル・ゾーンに対応する一意の識別子を有する通信オブジェクトを作成する手段と、
第２の要求に応じて、第２の要求を行うプロセスが通信オブジェクトの一意の識別子と一致する一意の識別子を有する非グローバル・ゾーンに関連付けられていると判定された場合、第２の要求を行うプロセスに対して通信オブジェクトを使用して通信を開始する手段と
を含む装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、参照によりその全体を本明細書に組み込んだＡｎｄｒｅｗ  Ｇ．Ｔｕｃｋｅｒらによる「ＯＰＥＲＡＴＩＮＧ  ＳＹＳＴＥＭ  ＶＩＲＴＵＡＬＩＺＡＴＩＯＮ」という名称の２００３年５月９日出願の仮出願第６０／４６９，５５８号の特典を請求する。
【背景技術】
【０００２】
現代のコンピューティング・システムの多くは、完全には活用されていないコンピューティング資源を含む。これらのコンピューティング資源をより活用することによって、より大きな容量とコストの削減を得る潜在的な機会をこれらのシステムの所有者に提供できる。
【０００３】
活用を改善する問題に対処するために、単一ハードウェア・プラットフォームへ複数のアプリケーションを統合することを含めていくつかの方法を使用することができる。統合方式は、通常、より少ないハードウェア・プラットフォームでより多くの機能を達成するためにハードウェアの単一ユニットに複数のアプリケーションを共存させるように試みている。その目的に様々なコンピューティング資源管理技術を使用することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしこのようなコンピューティング資源管理の拡張は、単一プラットフォーム上で複数のアプリケーションの同時実行から発生するセキュリティや管理上の問題に対処しなければならない。例えば、複数の「信用できない」関係者、すなわち例えば市場の競争相手に属するウェブ・サーバ・アプリケーションが単一ハードウェア・プラットフォームに共同配置された場合、どちらの関係者も自分の関係者の個人情報に他の関係者がアクセスすることには不満である。アクセスが制御されていないと、例えばネットワーク接続、ＤＡＳＤ、出力装置などのハードウェア資源やファイル・システム資源、通信資源を割り当てて、使用するための機構を含むいくつかのコンピュータ・システム機能が、別の関係者の情報またはアプリケーションにアクセスするために、ある信用のない関係者によって使用される可能性がある。したがって、システム資源関連のタスクを実行する上でユーザが相互に信頼していない環境で、システム管理者は、多大な時間と費用で危機的なシステム資源の関与する各アクションを実行する責任を負わされる可能性がある。
【０００５】
統合技術から発生した利用とセキュリティ問題に対する１つの取り組み方は、単一プラットフォームで複数のマシン画像を効果的に作成して、複数の論理区画（ＬＰＡＲ）または仮想区画（ＶＰＡＲ）間でマシン資源を分割することである。このような論理区画による取り組み方は、潜在的に、異なるマシン画像に基づいたアプリケーションの間が完全に分離される可能性がある。しかし論理区画による取り組み方では複数の問題が発生する。このような取り組み方は、オペレーティング・システム・カーネルのような特権プログラムを分離するためにハードウェア・サポートの実装（追加特権レベルの導入のような）を必要とする場合がある。また、論理区画は、システム管理者が論理区画の構成、および論理区画間の資源割り当てを管理することを必要とする場合がある。
【０００６】
別の可能な取り組み方では、単一ハードウェア・プラットフォーム上で同時に実行されるオペレーティング・システム画像の１つまたは複数のインスタンスが、複数の「仮想マシン」を提供する。このような取り組み方では、各仮想マシンは、仮想マシンで実行中のプログラムに対して第２の仮想マシンで実行中の他のプログラムから分離させる別のオペレーティング・システム・インスタンスであってよい。このような仮想マシンによる取り組み方はアプリケーション間を分離させているが、このような取り組み方によって他の問題が発生する可能性がある。例えば、いくつかのアプリケーション用の全体のオペレーティング・システムの複数のインスタンスを有することは必要でも望ましくもない。様々なオペレーティング・システム画像に対する管理、運営の複雑さは、より簡素な取り組み方を有利に評価する場合がある。
【０００７】
別の取り組み方は、複数のオペレーティング・システム機能への区画化を実施することである。例えば、階層ファイル・システムを利用するいくつかのオペレーティング・システムは、特定プロセスへのファイル・システム・アクセスを制限することによって区画化のレベルを提供する機能を含む。しかしこのような機構は欠点も有している。例えば、ファイル・システム名前空間のプロセスの可視性は多くの実施形態でファイル・システムの単一サブツリーに限られる。したがって、区画化は、通常、プロセスまたはネットワーク接続空間には拡大せず、他の可能なプロセスによって監視および干渉を行う。
【０００８】
さらにまた別の取り組み方は、システム資源の区画化された割り当て、すなわち、ファイル・システム、ネットワーク機能などに対してプロセスとその子孫（すなわち、親と子）を制限することである。この取り組み方では、「Ｊａｉｌ」と称されるこのような区画に入れられたプロセスは、割り当てられたシステム資源へのアクセス権は持っているが、Ｊａｉｌ外部のファイル、プロセス、またはネットワーク・サービスへの可視性もアクセス権も有しない。Ｊａｉｌによる取り組み方でも同様に複数の問題が発生する。通常、ＪａｉｌはＪａｉｌが作成されたプロセスから離れた独立した存在を有しない。すなわち、Ｊａｉｌを作成するプロセス（および、あるならばその子孫）が一度終了すると、そのＪａｉｌは終了する。同様に、第２のプロセスはＪａｉｌに「加わる」ことができない。
【課題を解決するための手段】
【０００９】
一部の実施態様では、本発明は、グローバル・ゾーンと１つまたは複数の非グローバル・ゾーンに区画されたオペレーティング・システム環境でプロセス間通信を管理する技術を提供する。非グローバル・ゾーンは、単一オペレーティング・システム・カーネル・インスタンスの制御下で他の非グローバル・ゾーンに関連付けられたプロセスからプロセスが分離されている。一実施態様では、非グローバル・ゾーンのプロセス間通信オブジェクトを分離するためにキー・ベースの名前空間を使用する。別の実施態様では、非グローバル・ゾーンのプロセス間通信を分離するために、情報交換を求めるプロセスに対してランデブー・ポイントとして働く１つまたは複数のファイル・システム位置を使用する。さらなる実施態様では、キー・ベースの名前空間技術とファイル・システム位置技術の組み合わせを使用することもできる。さらに別の実施態様では、分離させるために他のタイプの機構を使用することがもきる。
【００１０】
キー・ベースの名前空間技術を利用する一実施態様では、各通信オブジェクトの状態は非グローバル・ゾーンごとに別々のデータ構造の中に維持される。一実施態様では、各通信オブジェクトの状態は非グローバル・ゾーンごとに割り当てられたカーネル常駐データ構造に維持することができる。プロセスや通信オブジェクトは、それらに関連付けられたキーを有する。キーはプロセスまたは通信オブジェクトが常駐する非グローバル・ゾーンを示す。一実施態様では、プロセスのキーは、そのプロセスが常駐する非グローバル・ゾーンの一意の識別子である。一実施態様では、通信オブジェクトのキーは、通信オブジェクトを作成するプロセスのキーである。別のプロセスとのプロセス間通信セッションを確立することを求めるプロセスは、プロセス間通信パスを確立することを求める要求を処理するカーネル常駐プロセスにキーを提示する。カーネル常駐プロセスは、要求側プロセスのキーが、カーネル常駐データ構造を使用して要求されたプロセス間通信パスに対する通信オブジェクトのキーと一致することを検証する。
【００１１】
ファイル・システム・ベースの技術を利用する一実施態様では、各通信オブジェクトの状態は各非グローバル・ゾーンの別々のファイル・システム位置で維持される。一実施態様では、プロセス間通信パスを確立することを求めるプロセスは、特定のファイル・システム位置を「ランデブー」ポイントとして使用する。プロセス間通信を使用することが許可されているプロセスは、プロセスが常駐する非グローバル・ゾーンの特定ファイル・システム位置内に記憶されている通信オブジェクトへのアクセス許可が与えられる。非グローバル・ゾーン内のプロセスは非グローバル・ゾーンに割り当てられたファイル・システムの一部にアクセスすることしか許可されていないので、特定のファイル・システム位置をプロセス間通信用のランデブー・ポイントとして使用することにより、一部の実施態様は非グローバル・ゾーン境界内のプロセス間通信を分離できる。
【００１２】
一部の実施態様では、ゾーン間プロセス間通信が提供される。一実施態様では、カーネル常駐プロセスが別の非グローバル・ゾーン内の別のプロセス（「受信側プロセス」）とプロセス間通信を開始することを求めているプロセス（「要求側プロセス」）の信任状を検索するためのインターフェースが提供される。カーネル常駐プロセスは、要求側プロセスが非グローバル・ゾーン境界を越えて別のプロセスと通信することが許可されていることを検証するために信任状を使用する。要求側プロセスが許可されている場合、要求側プロセスと受信側プロセスの間に通信パスを確立することができる。一実施態様では、グローバル・オペレーティング・システム環境に常駐するプロセスを使用して通信パスが確立される。
【００１３】
通信オブジェクトは、プロセス間通信を提供するために使用される移送（トランスポート）媒体に関連付けられたオブジェクトを含んでいる。一部の実施態様では、通信オブジェクトは、ループバック移送プロバイダ、セマフォー、共有メモリ・セグメント、メッセージ待ち行列、イベント・チャネル、パイプ、ストリーム、ソケット、ＰＯＳＩＸ  Ｉｎｔｅｒ−Ｐｒｏｃｅｓｓ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓインターフェース、ドア・インターフェースの１つまたは複数を含んでいる。一実施態様では、通信オブジェクトは関連付けられた通信オブジェクト識別子を有するが、これはアドレス、ソケット識別子、ポート、フレックス・アドレス、セマフォー識別子、メッセージ待ち行列識別子、共有メモリ・セグメント識別子、パイプ識別子、ストリーム識別子の１つまたは複数を含んでいる。本発明の実施態様は、これらのタイプの通信移送媒体に限定されない。当業者には容易に理解されるように、本発明の他の実施態様では多くの他のタイプの通信移送媒体を既存および将来予想されるあらゆるものを使用することができる。
【００１４】
これらおよび他の技術を使用することにより、一部の実施態様は非グローバル・ゾーン内のプロセス間通信を分離させることができる。一部の実施態様は、１つまたは複数の非グローバル・ゾーンの通信オブジェクトが干渉なしに同一識別子を有する機能を提供することができる。選択実施態様はゾーン間プロセス間通信を提供することができる。
【発明を実施するための最良の形態】
【００１５】
図１は本発明の一実施形態を実施することのできる代表的オペレーティング・システム環境の機能ブロック図である。
【００１６】
図２Ａは本発明の一実施形態の図１のオペレーティング・システム環境の通信オブジェクト管理の代表例の機能ブロック図である。
【００１７】
図２Ｂは本発明の一実施形態の図２Ａのオペレーティング・システム環境でのキー・ベースの名前空間を使用した代表的プロセス間通信機構の機能ブロック図である。
【００１８】
図２Ｃは本発明の一実施形態の図２Ａのオペレーティング・システム環境でのファイル・システムを使用した代表的プロセス間通信機構の機能ブロック図である。
【００１９】
図３Ａから図３Ｉは本発明の一実施形態の動作を示す動作流れ図である。
【００２０】
図４は本発明の一実施形態の１つまたは複数の構成要素を実施するために使用することのできる代表的コンピュータ・システムのハードウェア・ブロック図である。
【００２１】
システム概要
ある実施形態では、本発明は、グローバル・ゾーンと１つまたは複数の非グローバル・ゾーンに区画された単一カーネル・インスタンス・オペレーティング・システムでプロセス間通信を制御するための技術を提供する。一実施形態ではある方法が提供される。その方法は、単一カーネル・インスタンスによって制御されるグローバル・オペレーティング・システム環境で他の非グローバル・ゾーンのプロセスからプロセスを分離するための非グローバル・ゾーンを確立することを含む。この方法は、第１の要求に応じて、第１の要求を行っているプロセスの非グローバル・ゾーンに対応する一意の識別子を有する通信オブジェクトを作成することを含む。この方法は、第２の要求に応じて、第２の要求を行っているプロセスが通信オブジェクトの一意の識別子と一致する一意の識別子を有する非グローバル・ゾーンに関連付けられていると判定された場合、通信オブジェクトを使用して第２の要求を行っているプロセスへの通信を開始することを含む。
【００２２】
別の態様では、本発明は一実施形態で、単一オペレーティング・システム・カーネル・インスタンスによって制御されるグローバル・オペレーティング・システム環境で動作する方法を提供する。この方法は、他の非グローバル・ゾーンのプロセスからプロセスを分離するために非グローバル・ゾーンを確立することを含む。各非グローバル・ゾーンは一意のゾーン識別子を有している。通信オブジェクトを作成することを求める第１の要求を非グローバル・ゾーンに関連して実行している第１のプロセスから受信することが、いくつかの実施形態の方法に含まれる。この方法は、第１の要求の受信に応じて、通信オブジェクトを作成することを含む。通信オブジェクトは、それに関連付けられた第１のプロセスの一意のゾーン識別子を有している。通信オブジェクトを使用して通信を開始することを求める第２の要求を第２のプロセスから受信することもこの方法の一部である。この方法は、第２の要求の受信に応じて、第２のプロセスが通信オブジェクトの一意のゾーン識別子を有する非グローバル・ゾーンに関連付けられているか否かを判定し、第２のプロセスが通信オブジェクトの一意のゾーン識別子を有する非グローバル・ゾーンに関連付けられていない場合に第２の要求を拒否することを含む。
【００２３】
別の態様では、本発明は一実施形態で方法を提供する。この方法は、単一オペレーティング・システム・カーネル・インスタンスによって制御されるグローバル・オペレーティング・システム環境の他の非グローバル・ゾーンのプロセスからプロセスを分離するために非グローバル・ゾーンを確立することを含む。ある非グローバル・ゾーンのプロセスによってアクセスすることのできるポイントに、グローバル・オペレーティング・システム環境のグローバル・ファイル・システムにファイル・システムを設けることを、この方法に含めることができる。この方法は、ファイル・システム位置を非グローバル・ゾーンのファイル・システムに確立することを含む。ファイル・システム位置内に通信オブジェクトを確立することもこの方法の一部とすることができる。この方法は、ファイル・システム位置に対するアクセス許可を確立することをさらに含む。通信オブジェクトを使用して通信を開始することを求める要求を第１のプロセスから受信することをこの方法の一部とすることができる。また、この方法は、この要求の受信に応じて、第１のプロセスが通信オブジェクトのファイル・システム位置にアクセスすることが許可されているか否かを判定し、第１のプロセスが通信オブジェクトのファイル・システム位置にアクセスすることが許可されていない場合にその要求を拒否することも含む。
【００２４】
別の態様では、本発明は一実施形態で、ゾーン間プロセス間通信方法を提供する。この方法は、第２の非グローバル・ゾーン内の受信側プロセスと通信するために第１の非グローバル・ゾーン内の要求側プロセスから要求を受信することを含む。要求側プロセスに対する信任状を検索することをこの方法に含めることができる。一実施形態では、この信任状は、受信側プロセスが含まれている非グローバル・ゾーンを示すゾーン識別子を含んでいる。この方法は、要求側プロセスがゾーン境界を越えて受信側プロセスと通信することが許可されていることを信任状に基づいて検証することを含む。さらにこの方法は、要求側プロセスが許可されている場合に、グローバル・オペレーティング・システム環境を介して要求側プロセスと受信側プロセスの間に通信パスを確立することを含む。
【００２５】
別の態様では、本発明は、一部の実施形態で、上記した方法を遂行するよう構成されているコンピュータ装置や、コンピューティング・システム、コンピュータ可読媒体を包含する。
【００２６】
ある実施形態は、単一カーネル・インスタンスによって制御される１つまたは複数の非グローバル・ゾーンに区画されているオペレーティング・システム環境における非グローバル・ゾーン境界内にプロセス間通信機能を隔離することができる。ある実施形態は、非グローバル・ゾーン内のプロセスに対してゾーン境界を強制しながら、これらのプロセスが相互に通信できるようにする。いくつかの実施形態は、異なる非グローバル・ゾーンのプロセスが相互にプロセス間通信を確立できるようにＡＰＩまたは他のインターフェースを提供することができる。
【００２７】
概要
図１は、本発明の一実施形態によるオペレーティング・システム（ＯＳ）環境１００の機能ブロック図である。ＯＳ環境１００は、例えば図４に示すコンピュータ・システム４００のような汎用コンピュータ・システムでＯＳを実行することにより導き出される。説明のために、ＯＳはカリフォルニア州、サンタクララのＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ社製Ｓｏｌａｒｉｓと仮定する。しかし、本明細書で教示される概念は、限定はしないが、Ｕｎｉｘ（登録商標）、Ｌｉｎｕｘ、Ｗｉｎｄｏｗｓ（登録商標）、ＭａｃＯＳ（商標）などを含めていかなるＯＳにも適用することができることに留意されたい。
【００２８】
図１に示すように、ＯＳ環境１００は、グローバル・ゾーン１３０と０または１つ以上の非グローバル・ゾーン１４０を含む、１つまたは複数のゾーン（本明細書では区画とも称する）からなる。グローバル・ゾーン１３０は、ＯＳがブートされ、実行された際に作成される汎用ＯＳ環境であり、非グローバル・ゾーン１４０が作成された場合にはプロセスを実行することのできるディフォルト・ゾーンとして働く。グローバル・ゾーン１３０では、適切な権利と特権を持っている管理者および／またはプロセスは、一般的にいかなるタスクでも実行し、ＯＳが実行されるコンピュータ・システムで使用可能ないかなるデバイス／資源にもアクセスすることができる。したがって、グローバル・ゾーン１３０では、管理者はコンピュータ・システム全体を管理することができる。一実施形態では、管理者が非グローバル・ゾーン１４０を構成し、管理するためにプロセスを実行するのはグローバル・ゾーン１３０の中である。
【００２９】
非グローバル・ゾーン１４０は、ＯＳ環境１００の別の異なる区画を表している。非グローバル・ゾーン１４０の目的の１つは分離させることである。一実施形態では、限定はしないがプロセス１７０、１つまたは複数のファイル・システム１８０、１つまたは複数の論理ネットワーク・インターフェース１８２を含めて、複数のエンティティを分離するために非グローバル・ゾーン１４０が使用される。この分離により、１つの非グローバル・ゾーン１４０で実行されるプロセス１７０は、いかなる他のゾーンのプロセスにもアクセスしたり、影響を与えたりすることはできない。同様に、非グローバル・ゾーン１４０のプロセス１７０は、別のゾーンのファイル・システム１８０にアクセスしたり、影響を与えたりすることも、別のゾーンのネットワーク・インターフェース１８２にアクセスしたり、影響を与えたりすることもできない。したがって、非グローバル・ゾーン１４０のプロセス１７０は、そのゾーンのプロセスとエンティティにアクセスし、影響を与えることに限定される。この方法で分離されて、各非グローバル・ゾーン１４０は仮想のスタンドアロン・コンピュータのように振舞う。異なる非グローバル・ゾーン１４０のプロセス１７０は相互にアクセスしたり影響を与えたりすることはできないが、これらはそれぞれの論理ネットワーク・インターフェース１８２を介してネットワーク接続経由で相互に通信できるということに留意されたい。これは、別のスタンドアロン・コンピュータでプロセスが相互に通信する方法に類似している。
【００３０】
互いに分離された非グローバル・ゾーン１４０を有することが多くのアプリケーションでは望ましい場合がある。例えば、ＯＳの単一のインスタンスを実行中の単一コンピュータ・システムを使用して異なる競合相手（例えば、競合するウェブサイト）のアプリケーションをホストする場合、競合相手のデータやプロセスを別の競合相手のデータやプロセスから分離することが望ましい。この方法で、情報が競合相手間で漏洩することがないよう保証することができる。ＯＳ環境１００を非グローバル・ゾーン１４０に区画し、競合相手のアプリケーションを別の非グローバル・ゾーン１４０でホストすることは、この分離を達成する１つの可能な方法である。
【００３１】
一実施形態では、各非グローバル・ゾーン１４０を別々に管理する。より具体的には、特定の非グローバル・ゾーン１４０にゾーン管理者を割り当て、そのゾーン管理者にその非グローバル・ゾーン１４０の様々な形態を管理するための権利と特権を付与することが可能である。このような権利と特権により、ゾーン管理者はその非グローバル・ゾーン１４０内のプロセスや他のエンティティに影響を与える管理タスクをいくつでも実行することができる。しかし、ゾーン管理者はいかなる他の非グローバル・ゾーン１４０またはグローバル・ゾーン１３０のいずれにも変更したり影響を与えたりすることはできない。したがって、上記の例では、各競合相手は自身のゾーン、すなわちアプリケーションの自身の独自のセットを管理することはできるが、他の競合相手のアプリケーションを変更したり影響を与えたりすることはできない。一実施形態では、非グローバル・ゾーン１４０が他のゾーンに影響を与えることを防止するために、非グローバル・ゾーン１４０のエンティティは、一般に、コンピュータ・システムの物理デバイスのどれにでもアクセスし、またはそれを制御することは許可されない。
【００３２】
非グローバル・ゾーン管理者とは反対に、適切な権利と特権を持っているグローバル・ゾーン管理者は、ＯＳ環境１００やコンピュータ・システムのすべての形態を全体的に管理することができる。したがって、グローバル・ゾーン管理者は、例えば物理デバイスにアクセスし、それを制御し、システム資源を割り当て、それを制御し、動作パラメータ等を確立することなどができる。グローバル・ゾーン管理者は、非グローバル・ゾーン１４０内のプロセスやエンティティにアクセスし、これを制御することもできる。
【００３３】
一実施形態では、ゾーン境界の強制はカーネル１５０によって実行される。より具体的には、ある非グローバル・ゾーン１４０のプロセス１７０が別のゾーン（非グローバルまたはグローバル）のプロセス１７０、ファイル・システム１８０、ネットワーク・インターフェース１８２にアクセスし、または影響を与えることができないことを保証するのはカーネル１５０である。ゾーン境界を強制することに加え、カーネル１５０は他のサービスもいくつでも提供する。これらのサービスは、確実に限定はしないが、非グローバル・ゾーン１４０のネットワーク・インターフェース１８２をコンピュータ・システムの物理ネットワーク・デバイス１２０にマッピングすることや、非グローバル・ゾーン１４０のファイル・システム１８０をコンピュータ・システムの物理ストレージ１１０のファイル・システム全体にマッピングすることを含む。カーネル１５０のオペレーションを後の節でより詳細に説明する。
【００３４】
非グローバル・ゾーン状態
一実施形態では、非グローバル・ゾーン１４０は、（１）構成済み、（２）インストール済み、（３）準備完了、（４）実行中の４つの状態の１つを取ることができる。非グローバル・ゾーン１４０が構成済みの状態にある場合、グローバル・ゾーン１３０の管理者が、非グローバル・ゾーン１４０の構成パラメータのすべてを指定するためにオペレーティング・システムのユーティリティ（一実施形態では、ｚｏｎｅｃｆｇ（１ｍ））を既に呼び出しており、その構成を永続物理ストレージ１１０に既に保存していることを示している。非グローバル・ゾーン１４０を構成する際、管理者は複数の異なるパラメータを指定することができる。これらのパラメータは、限定はしないが、ゾーン名、ファイル・システム１８０のルート・ディレクトリへのゾーン・パス、ゾーンが作成された際にマウントされるべき１つまたは複数のファイル・システムの仕様、０または１つ以上のネットワーク・インターフェースの仕様、ゾーンが作成された際に構成されるべきデバイスの仕様、さらに０または１つ以上の資源プール関連を含む。
【００３５】
ゾーンが一度構成済み状態に入ると、グローバル管理者は、ゾーンをインストール済みの状態にするために別のオペレーティング・システム・ユーティリティ（一実施形態では、ｚｏｎｅａｄｍ（１ｍ））を呼び出すことができる。呼び出された場合、オペレーティング・システム・ユーティリティは、必要なファイルとディレクトリのすべてをゾーンのルート・ディレクトリまたはそのサブディレクトリにインストールするためにカーネル１５０と対話する。
【００３６】
インストール済みのゾーンを準備完了状態にするために、グローバル管理者は、ｚｏｎｅａｄｍｄプロセス１６２を開始させるオペレーティング・システム・ユーティリティ（一実施形態では、再びｚｏｎｅａｄｍ（１ｍ）である）を呼び出す（各非グローバル・ゾーンに関連付けられたｚｏｎｅａｄｍｄプロセスがある）。一実施形態では、ｚｏｎｅａｄｍｄ  １６２はグローバル・ゾーン１３０内で実行され、その関連付けられた非グローバル・ゾーン１４０の管理を担当している。ｚｏｎｅａｄｍｄ  １６２は開始されると、非グローバル・ゾーン１４０を確立するためにカーネル１５０と対話する。非グローバル・ゾーン１４０を作成する際、限定はしないが、ゾーンＩＤを割り当て、ｚｓｃｈｅｄプロセス１６４を開始し（ｚｓｃｈｅｄはカーネル・プロセスだが、非グローバル・ゾーン１４０で実行され、非グローバル・ゾーン１４０に関連付けられたカーネル資源を追跡するために使用される）、ファイル・システム１８０をマウントし、ネットワーク・インターフェース１８２の深さを調べ、デバイスを構成させ、資源制御を設定することを含め、複数のオペレーションを実行する。これらおよび他のオペレーションは、通常のオペレーションに対して備えるために非グローバル・ゾーン１４０を準備完了状態にする。
【００３７】
非グローバル・ゾーン１４０を準備完了状態にすることにより、１つまたは複数のプロセスを実行することのできる仮想プラットフォームが生じる。この仮想プラットフォームは、１つまたは複数のプロセスを、他の非グローバル・ゾーン１４０のプロセスと分離して非グローバル・ゾーン１４０内で実行することを可能にするために必要なインフラストラクチャを提供する。仮想プラットフォームは、非グローバル・ゾーン１４０が仮想のスタンドアロン・コンピュータのように振舞うように、非グローバル・ゾーン１４０内でファイル・システム１８０とネットワーク・インターフェース１８２のような他のエンティティを分離させる。非グローバル・ゾーン１４０が準備完了状態にある場合に、そのゾーン内でユーザまたは非カーネル・プロセスは実行されないことに注意されたい（ｚｓｃｈｅｄはカーネル・プロセスであって、ユーザ・プロセスではないことを想起されたい）。したがって、非グローバル・ゾーン１４０によって提供された仮想プラットフォームは、非グローバル・ゾーン１４０内で実行中のいかなるプロセスからも独立している。別の方法で、ゾーンと、したがって仮想プラットフォームは、ユーザまたは非カーネル・プロセスがそのゾーン内で実行中でない場合でさえ存在する。これは、非グローバル・ゾーン１４０は、そのゾーンまたはＯＳが終了するまでそのゾーンが作成された時点から存在し続けることができるという意味である。非グローバル・ゾーン１４０の寿命を、そのゾーン内で実行中のいかなるユーザまたは非カーネル・プロセスの所要時間に限定する必要はない。
【００３８】
非グローバル・ゾーン１４０は準備完了状態に入った後、そのゾーンで１つまたは複数のユーザ・プロセスを実行することによって実行中状態に遷移することができる。一実施形態では、これは、ｚｏｎｅａｄｍｄ  １６２にその関連付けられたゾーンのｉｎｉｔプロセス１７２を開始させることによって行われる。一度開始されると、ｉｎｉｔプロセス１７２は、どのアプリケーションを実行するかを決定するために非グローバル・ゾーン１４０のファイル・システム１８０を見る。次いでｉｎｉｔプロセス１７２は、１つまたは複数の他のプロセス１７４を生じさせるためにこれらのアプリケーションを実行する。この方法で、アプリケーション環境は非グローバル・ゾーン１４０の仮想プラットフォームで開始される。このアプリケーション環境で、すべてのプロセス１７０は非グローバル・ゾーン１４０内に限定され、したがって、これらは他のゾーンのプロセス、ファイル・システム、またはネットワーク・インターフェースにアクセスし、または影響を与えることができない。アプリケーション環境は、非グローバル・ゾーン１４０内で１つまたは複数のユーザ・プロセスが実行されている限り存在する。
【００３９】
非グローバル・ゾーン１４０が一度実行中状態に入ると、それを管理するためにその関連するｚｏｎｅａｄｍｄ  １６２を使用することができる。複数のゾーン管理タスクを開始し、制御するためにｚｏｎｅａｄｍｄ  １６２を使用することができる。これらのタスクには、例えば非グローバル・ゾーン１４０を一時停止させ、再起動することを含む。非グローバル・ゾーン１４０は一度一時停止させられると、実行中状態からインストール済み状態に後退する。実際には、アプリケーション環境と仮想プラットフォームの両方が終了する。非グローバル・ゾーン１４０は、再起動されせられると、実行中状態からインストール済み状態に後退し、次いでインストール済み状態から準備完了状態を経て実行中状態に遷移する。実際には、アプリケーション環境と仮想プラットフォームの両方が終了し、再開する。正常な動作中に進行中であることを基礎として非グローバル・ゾーン１４０を管理するためにｚｏｎｅａｄｍｄ  １６２によってこれらおよび多くの他のタスクを開始し、制御することができる。
【００４０】
プロセス間通信
ある実施形態では、ゾーンを使用するオペレーティング・システム環境にローカル・プロセス間通信（ＩＰＣ）機能が実装されている。一実施形態では、同じ非グローバル・ゾーンに常駐するプロセスは相互に通信することができる。しかし、異なる非グローバル・ゾーンのプロセスは、通常、別のマシン上で実行するプロセスの場合のようにネットワークＡＰＩを介して通信することになる。グローバル・ゾーンのプロセスは、一実施形態で、非グローバル・ゾーンのプロセスが通信する機構を構築することが許可される。しかし、一実施形態では、グローバル・ゾーンのプロセスの関与なしでは、非グローバル・ゾーンのプロセスによる通信はそれぞれの非グローバル・ゾーン内に分離させられる。
【００４１】
図２Ａは、本発明の一実施形態の図１のオペレーティング・システム環境の通信オブジェクト管理の代表例の機能ブロック図である。図２Ａに示すように、実行中、オペレーティング・システム環境１００は、非グローバル・ゾーン１４０と総称される非グローバル・ゾーンＡ  １４０（ａ）と非グローバル・ゾーンＢ  １４０（ｂ）を含む複数の永続仮想環境を提供する。非グローバル・ゾーン１４０は、それらに関連付けられたプロセスのどれよりも寿命が長いので永続環境である。さらに、非グローバル・ゾーン１４０は、非グローバル・ゾーンＡ  １４０（ａ）内で実行するプロセスＡ１  １７４−１（ａ）とプロセスＡ２  １７４−２（ａ）や、非グローバル・ゾーンＢ  １４０（ｂ）内で実行するプロセスＢ１  １７４−１（ｂ）とプロセスＢ２  １７４−２（ｂ）のようなプロセスの分離された実行をサポートすることができるので、仮想環境を提供する。非グローバル・ゾーン１４０（ａ）と１４０（ｂ）のどちらも単一カーネル１５０の下で存在することができる。プロセスＣ  ２３２が、オペレーティング・システム環境１００のグローバル・ゾーン１３０内で実行することができる。非グローバル・ゾーン１４０のプロセスに対するオブジェクトの可視性とアクセスは、グローバル・ゾーン１３０のプロセスに対するそれらとは異なる。
【００４２】
さらに図２Ａを参照すると、一実施形態の通信管理技術の動作が非グローバル・ゾーンＡ  １４０（ａ）によって示されている。ここではプロセスＡ１  １７４−１（ａ）が第２のプロセスＡ２  １７４−２（ａ）とプロセス間通信を開始する。通信を開始するために、プロセスＡ１  １７４−１（ａ）は破線１１３（ａ）によって示されるような非グローバル・ゾーンＡ  １４０（ａ）内に常駐する通信オブジェクトＸ  ２４４（ａ）に繋ぐことを試みる。オブジェクトＸ  ２４４（ａ）によって、通信パスを確立するためにプロセスが「ランデブー」することができる。図２Ａによって示された代表的実施形態では、プロセスＡ２  １７４−２（ａ）は既にオブジェクトＸ  ２４４（ａ）に繋がれている。
【００４３】
一部の実施形態では、非グローバル境界内へのプロセス間通信の隔離はキー・ベースの名前空間、ファイル・システム、またはこれらの組み合わせを使用して達成することができる。一実施形態では、各非グローバル・ゾーンに対する名前空間を管理するためのデータ構造をカーネル１５０内で割り当てることができる。通信オブジェクトは、ファイル・システム分離技術を使用する一部の実施形態では、トランスポート・エンドポイント、パイプ、ストリーム、ソケット、ポータブル・オペレーティング・システム・インターフェース（ＰＯＳＩＸ）プロセス間通信インターフェース、ドア・インターフェースのどれでもよい。キー・ベースの名前空間技術を利用する一部の実施形態は、ループバック・トランスポート・プロバイダ、セマフォー、共有メモリ・セグメント、メッセージ待ち行列、イベント・チャネルのどれでも使用することができる。一部の実施形態は、分離技術ならびに移送媒体の多くの他のタイプの１つまたは両方を、既存のタイプと将来予想されるタイプのどちらでも使用することができる。
【００４４】
プロセスＡ１  １７４−１（ａ）は非グローバル・ゾーンＡ  １４０（ａ）に割り当てられているので、プロセス間通信に役立つ通信オブジェクトに対するプロセスＡ１の可視性とアクセスは、非グローバル・ゾーンＡ  １４０（ａ）に割り当てられたそれらのオブジェクトに隔離させられている。したがって、プロセスＡ１  １７４−１（ａ）は非グローバル・ゾーンＡ  １４０（ａ）で通信オブジェクトＸ  ２４４（ａ）を監視し、アクセスすることができるが、プロセスＡ１  １７４−１（ａ）は非グローバル・ゾーンＢ  １４０（ｂ）の通信オブジェクトＸ  ２４４（ｂ）を監視し、アクセスすることを禁止されている。同様に、非グローバル・ゾーンＢ  １４０（ｂ）に割り当てられたプロセスＢ１  １７４−１（ｂ）は、例えば通信オブジェクトＸ  ２４４（ｂ）のような非グローバル・ゾーンＢ  １４０（ｂ）に割り当てられた通信オブジェクトを使用して、プロセスＢ２  １７４−２（ｂ）のような非グローバル・ゾーンＢ  １４０（ｂ）内に割り当てられた他のプロセスとのプロセス間通信を確立するように隔離させられている。一部の実施形態では、本発明は、それぞれの非グローバル・ゾーン１４０で同じ名前を有する通信オブジェクトを作成する機能を提供する。したがって、一実施形態では、第１のプロセスは、非グローバル・ゾーン１４０（ａ）でオブジェクトＸ  ２４４（ａ）のようにオブジェクトＸと命名された第１の通信オブジェクトを作成することができ、第２のプロセスでも、干渉なしに非グローバル・ゾーン１４０（ｂ）でオブジェクトＸ  ２４４（ｂ）のようなオブジェクトＸと命名された第２の通信オブジェクトを作成することができる。一部の実施形態が提供する異なる非グローバル・ゾーンに同一名のオブジェクトを持たせる機能は、複数の非グローバル・ゾーンで標準化された名前を有する通信オブジェクトを利用するプロセス間通信機構に対するサポートを可能にする。
【００４５】
一実施形態では、プロセスＡ１とプロセスＢ１は、グローバル・ゾーン１３０におけるゾーン間通信プロセスＣ  ２３２の支援を呼び出さずに、各プロセスの非グローバル・ゾーンの通信オブジェクトを使用して互い間のプロセス間通信を確立することができないように分離されている。一実施形態では、プロセスＣ  ２３２がグローバル・ゾーン１３０に割り当てられているので、プロセスＣ  ２３２は、一点鎖線１１９（ａ）と１１９（ｂ）によって示されるように通信オブジェクトＸ  ２４４（ａ）と通信オブジェクトＸ  ２４４（ｂ）のような非グローバル・ゾーンの通信オブジェクトを監視することができる。一実施形態では、プロセスＣ  ２３２は、ゾーン間通信を確立するために通信オブジェクトＸ  ２４４（ａ）または通信オブジェクトＸ  ２４４（ｂ）にアクセスすることが許可される。ただし、プロセスＣ２３２がそれを行うための適切な特権を持っている場合である。
【００４６】
一部の実施形態でプロセス間通信機能を提供するために様々な機構が使用可能である。検討のためであって限定ではないが、プロセス間通信技術は、使用される分離技術のタイプに基づく２つの分類、名前空間ベースの分離技術とファイル・システム・ベースの分離技術に大きく分類される。
【００４７】
キー・ベースの名前空間分離
図２Ｂは、本発明の一実施形態の図２Ａのオペレーティング・システム環境でのキー・ベースの名前空間を使用した代表的プロセス間通信機構の機能ブロック図である。
【００４８】
図２Ｂに示すように、カーネル・プロセスは非グローバル・ゾーンＡと非グローバル・ゾーンＢの名前空間のオブジェクトに関する情報を、それぞれ構造２５４（ａ）と構造２５４（ｂ）に維持する。一実施形態では、構造２５４（ａ）と構造２５４（ｂ）は共通構造の一部であってよい。しかし図２Ｂによって示される具体的な実施形態では、構造２５４（ａ）と構造２５４（ｂ）は別の構造である。カーネル・プロセスは非グローバル・ゾーンＡ  １４０（ａ）のオブジェクトに関する情報を構造２５４（ａ）に維持しており、その情報には通信オブジェクトＸ  ２４４（ａ）を含み、その構造２５４（ａ）では図２Ｂの代表的な例では通信オブジェクト識別子に「Ｘ」を使用し、ゾーン識別子すなわち「キー」に「Ａ」を使用している。当業者には容易に明らかになるような本発明の他の実施形態では、様々な非グローバル・ゾーンのオブジェクトの一意のインスタンスを識別するための他の機構を使用することができる。
【００４９】
通信オブジェクトＸ  ２４４（ａ）は初期化プロセス（図２Ｂには示さず）によって作成され、一実施形態では通信オブジェクト識別子とゾーン識別子を含んでいるオブジェクトの信任状がカーネル・プロセスに送信される１２３（ａ）。カーネル・プロセスは後で使用するために信任状を構造２５４（ａ）に記憶する。プロセスＡ１  １７４−１（ａ）のようなあるプロセスがプロセス間通信を開始する際、この開始プロセスは、特定移送媒体を使用する別のプロセスとのプロセス間通信を確立するためにカーネル・プロセスの要求１２５（ａ）を作成する。カーネル・プロセスは、通信オブジェクトＸ  ２４４（ａ）のような移送媒体に対応する通信オブジェクトが非グローバル・ゾーンＡ  １４０（ａ）にあるか否か、およびプロセスＡ１  Ａ７４−１（ａ）のキーが通信オブジェクトＸ  ２４４（ａ）のキーと一致するか否かを判定する。カーネル・プロセスは、要求されたオブジェクトが要求側プロセスのゾーンにあるか否かを判定するために構造２５４（ａ）を参照する。カーネル・プロセスが構造２５４（ａ）内で要求されたオブジェクトに関する情報を探し出すと、カーネル・プロセスは応答１２７（ａ）を作成し、この応答１２７（ａ）でカーネル・プロセスは通信オブジェクトＸ  ２４４（ａ）に関係するアドレスまたは他のトークンを要求側プロセスＡ１  １７４−１（ａ）に戻す。
【００５０】
破線１２３（ａ）は、非グローバル・ゾーン１４０（ａ）内のプロセスがオブジェクトＡ  ２４４（ａ）にアクセスできるために、構造２５４（ａ）に通信オブジェクトＸ  ２４４（ａ）を追加するための初期化プロセス（図２Ｂには示さず）による要求を示す。破線１２５（ａ）は、通信オブジェクトＸ  ２４４（ａ）の移送媒体を使用してプロセス間通信を確立するためにプロセスＡ１  １７４−１（ａ）による要求を示している。プロセスＡ１  １７４−１（ａ）は、オブジェクトＸ  ２４４（ａ）によってアクセス可能な移送機構を使用して別のプロセス（図２Ｂには示さず）とのプロセス間通信パスを開始することを求めている。破線１２７（ａ）は、カーネル・プロセスによるプロセスＡ１  １７４−１（ａ）へ適切なトークンでの応答を示す。
【００５１】
一部の実施形態では、非グローバル・ゾーン内のプロセスに対してプロセス間通信を提供するために、キー・ベースの名前空間機構を様々な移送機構と共に使用することができる。キー・ベースの名前空間を使用して非グローバル・ゾーン境界内にプロセス間通信を隔離するために一部の実施形態で使用される選択移送機構の例は、次に実施形態を参照してさらに詳細にそれぞれを説明するループバック移送プロバイダ、Ｓｙｓｔｅｍ  Ｖプロセス間通信プロバイダ、およびイベント・チャネルを含む。
【００５２】
ループバック移送プロバイダ
ループバック移送プロバイダ、すなわちｔｉｃｌｔｓ、ｔｉｃｏｔｓ、ｔｉｃｏｔｓｏｒｄは、プロセス間通信にキー・ベースの名前空間移送機構を用いている。これらの移送機構は、標準の移送と独立したＴＬＩ／ＸＴＩインターフェースを使用してアクセスされる。同じマシンのプロセス間の通信にループバック移送が使用される。一実施形態では、ループバック移送プロバイダは、カーネル常駐ネットワーク接続スタックを伴わずに擬似デバイスとして実装することができる。一実施形態では、移送機構は、オクテットの０よりも大きな長さの任意のシーケンスを含むことのできる所謂「フレックス・アドレス」をサポートする。
【００５３】
ゾーンを使用する一実施形態では、プロセス間の通信をゾーン内に隔離するためにフレックス・アドレス空間を区画する。一実施形態では、各ゾーンは別のフレックス・アドレス名前空間を有している。一実施形態では、これは、バインド（３ＳＯＣＫＥＴ）コールを実行するプロセスのゾーンＩＤに基づいてゾーンＩＤを移送エンドポイントに関連付けることによって達成することができる。接続プロセス（３ＳＯＣＫＥＴ）を呼び出すプロセスは、発呼者のゾーンに関連付けられた一致するアドレスによってエンドポイントに接続する。一部の実施形態は、プロセスが異なる非グローバル・ゾーンにある限り、複数のプロセスを同じアドレスにバインドすることが可能である。したがって、異なる非グローバル・ゾーンでそれぞれアプリケーションが実行するなら、多数のアプリケーションが衝突なしに同じアドレスを使用することができる。これらの技術を使用する一部の実施形態は、アドレス選択のゾーンにまたがる調整の必要性を回避することができる。
【００５４】
Ｓｙｓｔｅｍ  Ｖプロセス間通信
Ｓｙｓｔｅｍ  Ｖプロセス間通信インターフェースは、アプリケーションが、同じシステムに常駐するプロセス間での通信や同期のために、例えば共有メモリ・セグメント、セマフォー、メッセージ待ち行列のような永続オブジェクトを作成する。一実施形態では、これらの通信オブジェクトは、関係ないプロセスの単一オブジェクトを使用することを可能にするユーザ定義キーに関連付けるられた、動的に割り当てられた数値識別子を含んでいる。一実施形態では、オブジェクトを所有者に関連付けることができる。一実施形態では、オブジェクトを所有者に関連付けることは、明示的に変更されない限り作成プロセスの有効なユーザＩＤに基づく。一実施形態では、これらのオブジェクトへのアクセスを制限するために許可フラグをセットすることができる。
【００５５】
異なる非グローバル・ゾーンのプロセス間での共有（作為または無作為に）を避けるために、一実施形態では、通信オブジェクトを作成したプロセスが作成時点で実行されていた非グローバル・ゾーンに基づいてゾーンＩＤが各通信オブジェクトに関連付けられる。非グローバル・ゾーンで実行中のプロセスが、同じゾーンに関連付けられた通信オブジェクトにアクセスし、またはこれを制御することを許可される。グローバル・ゾーンからシステム全体にわたってプロセス間通信オブジェクトをグローバル管理者が管理するために、グローバル・ゾーンで実行するプロセスは、グローバル・ゾーンと非グローバル・ゾーンに関連付けられた通信オブジェクトにアクセスし、制御することを許可される（ユーザＩＤベースの制限を受ける）。一実施形態では、非グローバル・ゾーン間の衝突の可能性を避けるために非グローバル・ゾーンごとに異なるキー名前空間を与える。
【００５６】
一実施形態では、ｉｐｃｓ（１）やｉｐｃｒｍ（１）のようなプロセス間通信機構によって使用される管理コマンドは、グローバル・ゾーンで実行するときに使用するためのゾーン指定オプションを有する。ディフォルトにより、ｉｐｃｓは現行ゾーンからオブジェクトを報告する。しかしグローバル・ゾーンで実行される場合、コマンドに指定されたゾーンからオブジェクトを報告させるために−ｚゾーン・オプションを使用する。それぞれの示されたゾーン関連によってコマンドにすべてのゾーンからオブジェクトを報告させるために−ｚゾーン・オプションを使用する。一部の実施形態では、それらの管理コマンドと共に使用される場合、新しいゾーン指定オプションが、異なるゾーンで同一通信オブジェクト識別子を有するオブジェクトの間で明確にするために使用される。一部の実施形態では、ゾーン内のプロセス間通信オブジェクトの使用へのより良好な可観測性を与えることができる。
【００５７】
ｉｐｃｒｍコマンドは、グローバル・ゾーンで実行しておらず、−ｚゾーン・オプションが与えられていない限り、現行のゾーンでオブジェクトに対して同様に動作する。このオプションで、他のゾーンのオブジェクトを除去することができる。
【００５８】
一実施形態では、１つのゾーンだけカーネル・メモリが枯渇することをゾーン特定資源制御が防止し、または一部の実施形態では管理者がそれを回避することができる。ゾーン特定資源制御は、いくつかの実施形態がＳｙｓｔｅｍ  Ｖプロセス間通信機構を使用できる。そこでは、作成することのできるオブジェクト数に対する静的なシステム幅の制限から事実上解放されている。
【００５９】
イベント・チャネル
イベント・チャネルは、一実施形態で、１つのグローバル・ゾーンと１つまたは複数の非グローバル・ゾーンに既に区画されているオペレーティング・システム環境とともに使用される別のプロセス間通信機構を提供する。イベント・チャネルは、参加しているプロセスによって提供された通信オブジェクト識別子（チャネル名を表すストリング）の使用によりプロセス間ランデブーが確立されるプロセス間通信機構を提供する。一実施形態では、各非グローバル・ゾーンに別のキー・ベースの名前空間を与えることによって、イベント・チャネルを使用してプロセス間通信を非グローバル・ゾーン境界内に隔離することができる。
【００６０】
一実施形態では、各非グローバル・ゾーンで作成されたイベント・チャネルの数を制御するための機構を提供する。一実施形態では、特定のイベント・チャネルが非グローバル・ゾーン境界を横断することができる。一実施形態では、特定タイプのイベントは、イベント・チャネルを使用してカーネルまたはグローバル・ゾーンから非グローバル・ゾーンと通信することができる。一実施形態では、イベント・チャネルを使用して非グローバル・ゾーン間で通信する機能は、障害やエラー・イベントを通信するために使用される指定チャネルに制限される。一実施形態では、非グローバル・ゾーンの間で通信する機能は、専用のＡＰＩを使用して制御する。一実施形態では、イベント・チャネルの使用とイベント・チャネルへのアクセスは、グローバル・ゾーンのプロセスに制限される。
【００６１】
ファイル・システム・ベースの分離
一部の実施形態では、特定のプロセス間通信機構は複数のプロセス間で通信を確立するためにファイル・システムをランデブー・ポイントとして使用する。これらの機構は、例えばパイプ、ストリーム、ソケット・インターフェースを含む。
【００６２】
図２Ｃは、本発明の一実施形態の図２Ａのオペレーティング・システム環境のためのファイル・システム位置を表す機能ブロック図である。図２Ｃに示すように、図１のファイル・システム１８０は階層ツリー状の構造に構成された複数のディレクトリを含んでいる。例えば、非グローバル・ゾーンＡ  １４０（ａ）では、ファイル・システム１８０（ａ）がゾーン・ルート・ディレクトリ２９０（ａ）でマウントされる。オペレーティング・システムの命名法で、ルート・ディレクトリはスラッシュ（「／」）で表される。ルート・ディレクトリ２９０（ａ）はゾーン・ルート・ディレクトリなので、非グローバル・ゾーンＡ  １４０（ａ）内のプロセスにはルート・ディレクトリである。グローバル・ゾーン１３０では、このディレクトリ２９０（ａ）は、プロセスによってアクセス可能なファイル・システム１８０の一部である／ＡＵＸ０ディレクトリ２９１のサブディレクトリである。グローバル・ゾーン１３０のプロセスの観点からすると、ディレクトリ２９０（ａ）はディレクトリ／ＡＵＸ０／ゾーンＡ  ２９０（ａ）である。
【００６３】
一実施形態では、ゾーンのルート・ディレクトリは、ゾーン内のプロセスのためにルート・ディレクトリを確立するためのシステム・コマンドであるｃｈｒｏｏｔによって設定されたディレクトリとは異なる。一実施形態では、プロセスがパス名構成要素をトラバースする際にどちらの制約もチェックされる。これはｃｈｒｏｏｔをゾーン内で使用できるようにするが、プロセスがそのｃｈｒｏｏｔの制約から逃れたとしても、そのプロセスは依然としてゾーン制約から逃れることができない。
【００６４】
ゾーン・ルート・ディレクトリ２９０（ａ）は、一実施形態では、プロセス間通信に対するランデブー・ポイントとして働くファイル・システム位置を含む１つまたは複数のサブディレクトリを含んでいる。ファイル・システム位置は、ストリーム・ファイル・システム位置ｆｉｆｏｓ２９２（ａ）、パイプとドア・ファイル・システム位置ｎａｍｅｆｓ２９３（ａ）、ソケット・ファイル・システム位置ｓｏｃｋｆｓ２９４（ａ）などである。これは網羅的なリストではなく、一部の実施形態ではルート・ディレクトリ２９０（ａ）の他のサブディレクトリに他のファイル・システム位置を含めることもできる。プロセスＡ１  １７４−１（ａ）やプロセスＡ２  １７４−２（ａ）のような非グローバル・ゾーンＡ  １４０（ａ）で実行中の複数のプロセスは、プロセス間通信パス１０３（ａ）を既に確立している。一実施形態では、通信パス１０３（ａ）はｆｉｆｏｆｓ  ２９２（ａ）をランデブー・ポイントとして使用するパイプ移送媒体を使用している。プロセスＡ２  １７４−２（ａ）とプロセスＡ３  １７４−３（ａ）も、ｓｏｃｋｆｓ２９３（ａ）をランデブー・ポイントとして使用するプロセス間通信パス１０６（ａ）を既に確立している。通信パス１０６（ａ）はソケット・タイプの移送媒体を使用している。図２Ｃは、プロセスＡ１  １７４−１（ａ）とプロセスＡ３  １７４−３（ａ）も、ストリームまたはドア移送媒体を使用しているｎａｍｅｆｓ２９３（ａ）を使用して通信パス１０４（ａ）を既に確立していることをさらに示している。
【００６５】
次に図２Ｃの非グローバル・ゾーンＢ  １４０（ｂ）を参照すると、ファイル・システム１８０（ｂ）の別のインスタンスがルート・ディレクトリ２９０（ｂ）にマウントされる。ルート・ディレクトリ２９０（ｂ）は、プロセスＢ１  １７４−１（ｂ）、プロセスＢ２  １７４−２（ｂ）、プロセスＢ３  １７４−３（ｂ）のようなプロセスのデータおよび／またはファイルを記憶している１つまたは複数のサブディレクトリも含んでいる。図２Ｃは、上記のように、非グローバル・ゾーン１４０（ａ）のランデブー・ポイントとして使用されるファイル・システム位置と同じ通信オブジェクト識別子を有するｆｉｆｏｆｓ  ２９２（ｂ）、ｎａｍｅｆｓ  ２９３（ｂ）、ｓｏｃｋｆｓ  ２９４（ｂ）を含めて複数のファイル・システム位置を示している。プロセスＢ１−１７４（ｂ）、Ｂ２  １７４−２（ｂ）、Ｂ３  １７４−３（ｂ）は非グローバル・ゾーンＢ  １４０（ｂ）に含まれているので、これらのプロセスは非グローバル・ゾーン１４０（ａ）の同じ識別子を有する通信オブジェクトによる干渉なしに、非グローバル・ゾーン１４０（ｂ）のｆｉｆｏｆｓ  ２９２（ｂ）、ｎａｍｅｆｓ  ２９３（ｂ）、ｓｏｃｋｆｓ  ２９４（ｂ）に対するファイル・システム位置にバインドすることが許可される。図２Ｃの実施形態では、非グローバル・ゾーンＢ  １４０（ｂ）のファイル・システム１８０（ｂ）のディレクトリと関連付けられた構造は非グローバル・ゾーンＡ  １４０（ａ）のファイル・システム１８０（ａ）の一部に非常に類似しているが、これは常にこのようである必要はなく、実施形態特有の代替形態が存在する。例えば、一部の実施形態では、ファイル・システム１８０（ａ）とファイル・システム１８０（ｂ）を、一実施形態ではループバック・ファイル・システムとして知られている単一物理ストレージにマッピングすることができる。
【００６６】
グローバル・ゾーン１３０は、オペレーティング・システム環境１００のファイル・システム・ルート・ディレクトリ２９０を含む。グローバル・ゾーン１３０のファイル・システムは、例えば／ＰＲＯＣ  ２９２、／ＵＳＲ  ２９３、／ＥＴＣ  ２９４のような１つまたは複数のサブディレクトリも含む。一実施形態では、ルート・ディレクトリ／２９０はサブディレクトリ／ＡＵＸ０  ２９１を含み、このサブディレクトリはゾーン・ルート・ディレクトリ／２９０（ａ）と／２９０（ｂ）を実装するためにそれ自体のサブディレクトリとしてディレクトリ／ＡＵＸ０／ゾーンＡ  ２９０（ａ）とディレクトリ／ＡＵＸ０／ゾーンＢ  ２９０（ｂ）を有する。
【００６７】
一部の実施形態では、非グローバル・ゾーン内でプロセスがプロセス間通信を行うために、様々な移送機構とともにファイル・システム位置機構を使用することができる。ファイル・システム位置をランデブー・ポイントとして使用するプロセス間通信を提供するために、一部の実施形態で使用される選択移送機構の例には、次に実施形態を参照してそれぞれをさらに詳細に説明するパイプ、ストリームおよびソケット、ならびにドア・プロセス間通信が含まれる。
【００６８】
パイプ、ストリーム、ソケット
パイプ、ストリーム、ＵＮＩＸドメイン・ソケットは、ファイル・システム位置をランデブー・ポイントとして使用して管理することのできるプロセス間通信機構の例である。一実施形態では、パイプと通信するプロセスはｆｉｆｏｆｓを介してランデブーし、ストリームと通信するプロセスはｎａｍｅｆｓを介してランデブーし、またＵＮＩＸドメイン・ソケットを使用するプロセスはｓｏｃｋｆｓを介してランデブーする。１つの非グローバル・ゾーンのプロセスは別の非グローバル・ゾーンに関連付けられたファイル・システム位置へのアクセス権を持っていないので、それらのプロセス間通信機構を使用する非グローバル・ゾーンに常駐するプロセスをそれらが常駐する非グローバル・ゾーンの境界内に限定することができる。一実施形態では、グローバル・ゾーン（ファイル・システム階層全体へのアクセス権を持っている）の関与なしにプロセス間通信をプロセスが確立するのを阻止するように、ファイル・システム階層が区画されているので、そのファイル・システム階層を非グローバル・ゾーン境界内でプロセス間通信を分離するために使用することができる。例えば、一実施形態では、異なる非グローバル・ゾーンのプロセスが相互に通信することが許可される場合、接続の他端のプロセスの信任状（ゾーンＩＤを含めて）を決定するために各プロセスにインターフェースを設けることができる。
【００６９】
ドア
ドアは、ファイル・システムを（ｎａｍｅｆｓを介して）ランデブーとして使用するプロセス間通信機構である。ドアを通信移送媒体として使用するクライアント・プロセスは、通常、同じゾーン内のサーバを呼び出すことができる。一実施形態では、ドア・サーバはｄｏｏｒ＿ｕｃｒｅｄ（３ＤＯＯＲ）と呼ばれる信任状検索プロセスを使用して発呼者の信任状を検索することができるので、通信移送機構としてのドアを使用したゾーン横断通信を行うことができる。一実施形態では、ゾーンＩＤを含めるために、および構造からゾーンＩＤ情報を検索するためのｕｃｒｅｄ−ｇｅｔゾーンＩＤ（３Ｃ）インターフェースを追加するために、ｄｏｏｒ＿ｕｃｒｅｄによって戻された専用データ構造が拡張される。一部の実施形態では、これはグローバル・ドア・サーバの作成でき、このグローバル・ドア・サーバでは、グローバル・ゾーンから提供されたサーバを各非グローバル・ゾーンにマウントすることができ、そのサーバは、発呼者が所与のオペレーションを実行することが許可されているか否かをそのゾーンＩＤや他の信任状情報に基づいてチェックすることができる。一部の実施形態では、これは、ドアを通信移送機構として使用するゾーン横断通信用の機構を提供することができる。
【００７０】
動作例
次に、本発明の一実施形態によるオペレーティング・システム１００の動作例を説明する。次の解説では、図２Ａ〜２Ｃのシステム図と図３Ａ〜３Ｉの流れ図を参照する。
【００７１】
図３Ａは、本発明の一実施形態の動作を示す動作流れ図である。図３Ａを参照して検討する実施形態では、ブロック３１２で、図３Ｃでさらに詳細に説明されるように、プロセスを分離するために一意の識別子を有する非グローバル・ゾーンが確立される。ブロック３１４で、第１の要求に応じて、通信オブジェクトが作成される。通信オブジェクトは、図３Ｄを参照してさらに詳細に説明するように、通信オブジェクトを作成することを求める要求を行うプロセスに関連付けられた非グローバル・ゾーン１４０に対応するゾーン識別子を含んでいる。ブロック３１６で、要求に応じて、通信オブジェクトを使用する通信が、図３Ｅおよび３Ｉを参照してさらに詳細に説明するように、通信オブジェクトに関連付けられた同じ非グローバル・ゾーンに関連付けられていると既に決定されている要求側プロセスに対して開始される。
【００７２】
図３Ｂは、本発明の一実施形態の動作を示す動作流れ図である。図３Ｂを参照して検討する実施形態では、ブロック３２２で、プロセスを分離するために非グローバル・ゾーン１４０が確立される。図３Ｆを参照してさらに詳細に説明するように、通信オブジェクトを管理するための複数の位置を伴った１つのファイル・システムを有する各非グローバル・ゾーン１４０が提供される。ブロック３２４で、通信オブジェクト２４４が非グローバル・ゾーン１４０に関連付けられたファイル・システムのファイル・システム位置に作成される。ファイル・システム位置は、図３Ｇを参照してさらに詳細に説明するように通信移送機構に対応する。ブロック３２６で、要求に応じて、通信オブジェクトを使用する通信が、図３Ｈおよび３Ｉを参照してさらに詳細に説明するように、通信オブジェクトに関連付けられた同じ非グローバル・ゾーンに関連付けられると既に判定されている要求側プロセスに対して開始される。
【００７３】
本発明の一実施形態の図３Ａのブロック３１２の動作を示す動作流れ図である図３Ｃを参照すると、ブロック３３２で、１つ以上の非グローバル・ゾーン１４０が作成される。ブロック３３４で、一意のゾーン識別子が各非グローバル・ゾーン１４０に関連付けられる。ブロック３３５で、非グローバル・ゾーン１４０の通信オブジェクトに関する情報を管理するために構造２５４がカーネル１５０で作成される。
【００７４】
本発明の一実施形態の図３Ａのブロック３１４の動作を示す動作流れ図である図３Ｄを参照すると、ブロック３３６で、通信オブジェクトの作成を求める要求が受信される。ブロック３３７で、通信オブジェクトが作成される。ブロック３３８で、非グローバル・ゾーン１４０の通信オブジェクトに関する情報を管理するために、要求側プロセスの通信オブジェクト識別子と一意のゾーン識別子が構造２５４に記憶される。一実施形態では、通信オブジェクト識別子と一意のゾーン識別子は通信オブジェクトに関連付けられた信任状を含んでいる。
【００７５】
本発明の一実施形態の図３Ａのブロック３１６の動作を示す動作流れ図である図３Ｅを参照すると、ブロック３４２で、プロセス間通信を開始することを求める要求がプロセス１７４−１から受信される。ブロック３４４で、要求側プロセス１７４−１のゾーン識別子、要求、さらにデータ構造２５４に基づいて、要求された通信を使用することが要求側プロセス１７４−１に許可されているか否かが判定される。ブロック３４６で、要求側プロセス１７４−１のゾーン識別子（またはキー）が、要求に対応する通信オブジェクト２４４のゾーン識別子（またはキー）と一致するか否かを確認するためのテストが行われる。ゾーンＩＤが一致しない場合、ブロック３４８で、オブジェクト２４４にアクセスするために非グローバル・ゾーン１４０に関連付けられたプロセス１７４−１からの要求が拒否される。一方、ゾーンＩＤが一致する場合、ブロック３５２で、非グローバル・ゾーン１４０に関連付けられたプロセス１７４−１からの要求が許可され、通信オブジェクト２４４へのアクセス権が付与される。
【００７６】
本発明の一実施形態の図３Ｂのブロック３２２の動作を示す動作流れ図である図３Ｆを参照すると、ブロック３５６で、１つ以上の非グローバル・ゾーン１４０が確立される。ブロック３５７で、ファイル・システムがオペレーティング・システム環境１００のファイル・システムに対する各非グローバル・ゾーン１４０にマウントされる。ブロック３５８で、プロセス間通信の確立を求める非グローバル・ゾーン１４０のプロセスに対して１つ以上のランデブー・ポイントを作成するために非グローバル・ゾーン１４０のファイル・システムにファイル・システム位置が確立される。
【００７７】
本発明の一実施形態の図３Ｂのブロック３２４の動作を示す動作流れ図である図３Ｇを参照すると、ブロック３６２で、プロセス間通信を確立することを求めるプロセスに対してランデブー・ポイントとして働くために通信オブジェクトがファイル・システム位置に確立される。ブロック３６４で、ファイル・システム位置に対するアクセス許可が確立される。一実施形態では、非グローバル・ゾーン１４０内のプロセス間通信にアクセスすることを求めるプロセス１７４−１はこれらの許可に準拠する。
【００７８】
本発明の一実施形態の図３Ｂのブロック３２６の動作を示す動作流れ図である図３Ｈを参照すると、ブロック３７２で、通信オブジェクト２４４を使用してプロセス間通信を開始するためのプロセス１７４−１からの要求が受信される。ブロック３７４で、通信オブジェクト２４４にアクセスすることがプロセス１７４−１に許可されているか否かが判定される。ブロック３７６で、要求側プロセス１７４−１のゾーン識別子が通信オブジェクト２４４のゾーン識別子と一致するか否かを確認するためにテストが行われる。ゾーン識別子が一致しない場合、ブロック３７８で、プロセス１７４−１からの要求が拒否される。一方、ゾーン識別子が一致する場合、ブロック３８０で、要求側プロセス１７４−１が、通信オブジェクト２４４を含んでいるファイル・システム位置に対する適切なアクセス許可を有するか否かを確認するためにテストが行われる。要求側プロセスが適切なアクセス許可を有している場合、ブロック３８２で、オブジェクト２４４にアクセスするためのプロセス１７４−１からの要求が許可される。一方、要求側プロセス１７４−１が適切なアクセス許可を有していない場合、ブロック３８４で、プロセス１７４−１からの要求は拒否される。
【００７９】
本発明の一実施形態の図３Ａのブロック３１６と図３Ｂのブロック３２６の動作を示す動作流れ図である図３Ｉを参照すると、ブロック３８６で、非グローバル・ゾーンＢ  １４０（ｂ）に関連付けられたプロセス１７４−１（ｂ）とプロセス間通信を開始するために１つ以上の非グローバル・ゾーン１４０（ａ）に関連付けられたプロセス１７４−１（ａ）からの要求が受信される。ブロック３８８で、ゾーン識別子とプロセス１７４−１（ａ）の信任状とに基づいて、非グローバル・ゾーンＢ  １４０（ｂ）のプロセス１７４−１（ｂ）との要求された通信が許可されるか否かが判定される。ブロック３９０で、別の非グローバル・ゾーンのプロセスとプロセス間通信を開始することが要求側プロセス１７４−１（ａ）に許可されているか否かを確認するためにテストが行われる。要求側プロセス１７４−１（ａ）が許可されている場合、ブロック３９４で、非グローバル・ゾーン１４０（ａ）に関連付けられたプロセス１７４−１（ａ）からの要求が許可され、ゾーン間プロセス間通信パスが確立される。一方、要求側プロセス１７４−１（ａ）が許可されていない場合、ブロック３９２で、プロセス１７４−１（ａ）からの要求は拒否される。
【００８０】
ハードウェア概要
図４は、本発明の一実施形態を実装することのできるコンピュータ・システム４００を示すブロック図である。コンピュータ・システム４００は、情報交換に役立つバス４０２、情報処理のためにバス４０２に結合された１つまたは複数のプロセッサ４０４を含む。コンピュータ・システム４００は、ランダム・アクセス・メモリ（ＲＡＭ）のようなメイン・メモリ４０６、またはプロセッサ４０４によって実行されるべき命令と情報を記憶するためにバス４０２に結合されている他のダイナミック・ストレージ・デバイスも含む。一時的変数またはプロセッサ４０４による命令実行中の他の中間情報を記憶するためにメイン・メモリ４０６を使用することもできる。コンピュータ・システム４００は、読み出し専用メモリ（ＲＯＭ）４０８またはプロセッサ４０４のための静的情報と命令を記憶するためにバス４０２に結合されている他の静的ストレージ・デバイスをさらに含む。磁気ディスクまたは光ディスクのようなストレージ・デバイス４１０が設けられ、情報と命令を記憶するためにバス４０２に結合される。
【００８１】
コンピュータ・システム４００は、情報をコンピュータのユーザに表示するためにバス４０２を介して陰極線管（ＣＲＴ）のようなディスプレイ４１２に結合されている。英数字および他のキーを含む入力装置４１４が、プロセッサ４０４に情報とコマンド選択を通信するためにバス４０２に結合されている。別のタイプのユーザ入力装置は、プロセッサ４０４に方向情報とコマンド選択を通信するため、またディスプレイ４１２上のカーソル移動を制御するためのマウス、トラックボール、またはカーソル指示キーのようなカーソル・コントロール４１６である。この入力装置は、通常、装置が平面上の位置を指定する第１の軸（例えば、ｘ）と第２の軸（例えば、ｙ）の２つの軸で２の自由度を有する。
【００８２】
コンピュータ・システム４００で、バス４０２は、情報、信号、データなどを様々な構成要素間で交換できるいかなる機構および／または媒体であってもよい。例えば、バス４０２は、電気信号を搬送する一組の伝導体であってよい。バス４０２は、構成要素の１つまたは複数の間で無線信号を搬送する無線媒体（例えば、空気）であってもよい。バス４０２は、構成要素の１つまたは複数の間で信号が容量的に交換されることを可能にする媒体（例えば、空気）であってもよい。バス４０２はさらに、構成要素の１つまたは複数を接続するネットワーク接続であってもよい。全体的に、様々な構成要素間で情報、信号、データなどを交換することができるいかなる機構および／または媒体でもバス４０２として使用することができる。
【００８３】
バス４０２は、これら機構／媒体の組み合わせであってもよい。例えば、プロセッサ４０４は、ストレージ・デバイス４１０と無線で通信することができる。このような場合、プロセッサ４０４とストレージ・デバイス４１０の観点からすると、バス４０２は空気のような無線媒体である。さらに、プロセッサ４０４はＲＯＭ  ４０８と容量的に通信することができる。この場合、バス４０２は、この容量通信が行われることを可能にする（空気のような）媒体である。さらに、プロセッサ４０４は、ネットワーク接続を介してメイン・メモリ４０６と通信することができる。この場合、バス４０２はネットワーク接続である。さらに、プロセッサ４０４は一組のコンダクタを介してディスプレイ４１２と通信することができる。この場合、バス４０２は一組のコンダクタである。したがって、様々な構成要素が相互に通信する方法に応じて、バス４０２は異なる形式を取ることができる。バス４０２は、図４に示すように、情報、信号、データなどを様々な構成要素間で交換できる機構および／または媒体のすべてを機能的に表している。
【００８４】
本発明は、本明細書に記載の技術を実装するコンピュータ・システム４００の使用にも関する。本発明の一実施形態によれば、これらの技術は、メイン・メモリ４０６に含まれる１つまたは複数の命令の１つまたは複数のシーケンスを実行するプロセッサ４０４に応じて、コンピュータ・システム４００により実行される。このような命令は、ストレージ・デバイス４１０のような別の機械可読媒体からメイン・メモリ４０６に読み込まれる。メイン・メモリ４０６に含まれる命令シーケンスの実行によって、プロセッサ４０４が本明細書に記載のプロセス・ステップを実施する。代替形態では、本発明を実現するためにソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせてハードワイヤード回路を使用することができる。したがって、本発明の実施形態はハードウェア回路とソフトウェアのいかなる具体的な組み合わせにも限定されるものではない。
【００８５】
本明細書で使用する「機械可読媒体」という用語は、マシンを特定の方法で動作させるデータを提供するのに関与するいかなる媒体をも意味する。コンピュータ・システム４００を使用して実現される実施形態には、例えば実行するためにプロセッサ４０４に命令を提供する様々な機械可読媒体が含まれる。このような媒体は、限定はしないが、不揮発性媒体、揮発性媒体、伝送媒体を含めて多くの形式を取ることができる。不揮発性媒体は、例えばストレージ・デバイス４１０のような光または磁気ディスクを含む。揮発性媒体は、メイン・メモリ４０６のようなダイナミック・メモリを含む。伝送媒体は、バス４０２を含んでいる電線を含めて同軸ケーブル、銅線、さらには光ファイバをも含む。伝送媒体は、電波および赤外線データ通信中に生成されるようなアコースティックまたは光波の形式を取ることもできる。
【００８６】
機械可読媒体の一般的な形式は、例えばフロッピー（登録商標）・ディスク、フレキシブル・ディスク、ハードディスク、磁気テープ、またはいかなる他の磁気媒体、ＣＤ−ＲＯＭ、いかなる他の光媒体、パンチカード、ペーパーテープ、いかなる他の穴のパターンを有する物理媒体、ＲＡＭ、ＰＲＯＭ、およびＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、いかなる他のメモリ・チップまたはカートリッジ、以下で説明する搬送波、またはコンピュータが読み取ることのできるいかなる他の媒体をも含む。
【００８７】
機械可読媒体の様々な形式が、実行するためにプロセッサ４０４に１つまたは複数の命令の１つまたは複数のシーケンスを搬送する際に利用される。例えば、命令は、最初に遠隔コンピュータの磁気ディスクに格納されている。遠隔コンピュータは、そのダイナミック・メモリに命令をロードし、モデムを使用して電話回線を介して命令を送信することができる。コンピュータ・システム４００にローカルなモデムは、電話回線上のデータを受信することができ、そのデータを赤外線信号に変換するために赤外線トランスミッタを使用することができる。赤外線検出器は赤外線信号形式で搬送されたデータを受信することができ、適切な回路がバス４０２上にデータを置くことができる。バス４０２はデータをメイン・メモリ４０６に搬送し、プロセッサ４０４はメイン・メモリ４０６から命令を取り出し、実行する。メイン・メモリ４０６によって受信された命令は、任意選択で、プロセッサ４０４による実行の前または後でストレージ・デバイス４１０に記憶される。
【００８８】
コンピュータ・システム４００は、バス４０２に結合されている通信インターフェース４１８も含む。通信インターフェース４１８は、ローカル・ネットワーク４２２に接続されているネットワーク・リンク４２０に結合されている双方向データ通信を提供する。例えば、通信インターフェース４１８は、電話回線の対応するタイプにデータ通信接続を提供するために、統合デジタル通信サービス網（ＩＳＤＮ）カードまたはモデムであってよい。別の例として、通信インターフェース４１８は、対応したＬＡＮにデータ通信接続を提供するためのローカル・エリア・ネットワーク（ＬＡＮ）カードであってよい。無線リンクを実装することもできる。いかなるこのような実施形態でも、通信インターフェース４１８は、様々なタイプの情報を表すデジタル・データ・ストリームを搬送する電気信号、電磁気信号、または光信号を送信し、受信する。
【００８９】
ネットワーク・リンク４２０は、通常、他のデータ・デバイスに１つまたは複数のネットワーク経由によるデータ通信を提供する。例えば、ネットワーク・リンク４２０は、ホスト・コンピュータ４２４に、またはインターネット・サービス・プロバイダ（ＩＳＰ）４２６が運営するデータ機器にローカル・ネットワーク４２２を介した接続を提供することができる。ＩＳＰ  ４２６は、現在では一般に「インターネット」４２８と称されるワールド・ワイド・パケット・データ通信ネットワークを介してデータ通信サービスを提供する。ローカル・ネットワーク４２２とインターネット４２８はどちらもデジタル・データ・ストリームを搬送する電気信号、電磁気信号、または光信号を使用する。様々なネットワークを介した信号と、コンピュータ・システム４００に／からデジタル・データを搬送する通信インターフェース４１８を介したネットワーク・リンク４２０上の信号は、情報を移送する搬送波の形式の一例である。
【００９０】
コンピュータ・システム４００は、１つ以上のネットワーク、ネットワーク・リンク４２０、通信インターフェース４１８を介して、プログラム・コードを含むメッセージを送信し、データを受信することができる。インターネットの例では、サーバ４３０は、アプリケーション・プログラムに対して要求されたコードをインターネット４２８、ＩＳＰ  ４２６、ローカル・ネットワーク４２２、通信インターフェース４１８を介して送信することができる。
【００９１】
受信したコードは、受信された際にプロセッサ４０４によって実行することができ、かつ／または後で実行するためにストレージ・デバイス４１０または他の不揮発性ストレージに記憶される。この方法で、コンピュータ・システム４００は搬送波形式でアプリケーション・コードを入手することができる。
【００９２】
上記明細書では、一実施形態を参照して本発明を説明したが、この実施形態に限定されるものと解釈されるべきではないということに留意されたい。本発明の趣旨を逸脱せずにこの開示の特典により当業者によって様々な修正形態を行うことができる。したがって、本発明は、本発明を説明するために使用された実施形態によって限定されるべきではなく、首記の特許請求の範囲によってのみ限定されるべきである。明細書および図面は、したがって、限定を目的としたものではなく説明を目的としたものと見なされるべきである。
【図面の簡単な説明】
【００９３】
【図１】本発明の一実施形態を実施することのできる代表的オペレーティング・システム環境の機能ブロック図である。
【図２Ａ】本発明の一実施形態の図１のオペレーティング・システム環境の通信オブジェクト管理の代表例の機能ブロック図である。
【図２Ｂ】本発明の一実施形態の図２Ａのオペレーティング・システム環境でのキー・ベースの名前空間を使用した代表的プロセス間通信機構の機能ブロック図である。
【図２Ｃ】本発明の一実施形態の図２Ａのオペレーティング・システム環境でのファイル・システムを使用した代表的プロセス間通信機構の機能ブロック図である。
【図３Ａ】本発明の一実施形態の動作を示す動作流れ図である。
【図３Ｂ】本発明の一実施形態の動作を示す動作流れ図である。
【図３Ｃ】本発明の一実施形態の動作を示す動作流れ図である。
【図３Ｄ】本発明の一実施形態の動作を示す動作流れ図である。
【図３Ｅ】本発明の一実施形態の動作を示す動作流れ図である。
【図３Ｆ】本発明の一実施形態の動作を示す動作流れ図である。
【図３Ｇ】本発明の一実施形態の動作を示す動作流れ図である。
【図３Ｈ】本発明の一実施形態の動作を示す動作流れ図である。
【図３Ｉ】本発明の一実施形態の動作を示す動作流れ図である。
【図４】本発明の一実施形態の１つまたは複数の構成要素を実施するために使用することのできる代表的コンピュータ・システムのハードウェア・ブロック図である。
【符号の説明】
【００９４】
１１０  物理ストレージ、１２０  物理ネットワーク・デバイス、１３０  グローバル・ゾーン、１４０  非グローバル・ゾーン、１５０  カーネル、１８０  ファイル・システム、１８２  ネットワーク・インターフェース
【図１】
2004334893.tif 000003
【図２Ａ】
2004334893.tif 000004
【図２Ｂ】
2004334893.tif 000005
【図２Ｃ】
2004334893.tif 000006
【図３Ａ】
2004334893.tif 000007
【図３Ｂ】
2004334893.tif 000008
【図３Ｃ】
2004334893.tif 000009
【図３Ｄ】
2004334893.tif 000010
【図３Ｅ】
2004334893.tif 000011
【図３Ｆ】
2004334893.tif 000012
【図３Ｇ】
2004334893.tif 000013
【図３Ｈ】
2004334893.tif 000014
【図３Ｉ】
2004334893.tif 000015
【図４】
2004334893.tif 000016
【外国語明細書】
2004334893.tif 000017
2004334893.tif 000018
2004334893.tif 000019
2004334893.tif 000020
2004334893.tif 000021
2004334893.tif 000022
2004334893.tif 000023
2004334893.tif 000024
2004334893.tif 000025
2004334893.tif 000026
2004334893.tif 000027
2004334893.tif 000028
2004334893.tif 000029
2004334893.tif 000030
2004334893.tif 000031
2004334893.tif 000032
2004334893.tif 000033
2004334893.tif 000034
2004334893.tif 000035
2004334893.tif 000036
2004334893.tif 000037
2004334893.tif 000038
2004334893.tif 000039
2004334893.tif 000040
2004334893.tif 000041
2004334893.tif 000042
2004334893.tif 000043
2004334893.tif 000044
2004334893.tif 000045
2004334893.tif 000046
2004334893.tif 000047
2004334893.tif 000048
2004334893.tif 000049
2004334893.tif 000050
2004334893.tif 000051
2004334893.tif 000052
2004334893.tif 000053
2004334893.tif 000054
2004334893.tif 000055
2004334893.tif 000056
2004334893.tif 000057
2004334893.tif 000058
2004334893.tif 000059
2004334893.tif 000060
2004334893.tif 000061
2004334893.tif 000062
2004334893.tif 000063
2004334893.tif 000064
2004334893.tif 000065
2004334893.tif 000066
2004334893.tif 000067
2004334893.tif 000068
2004334893.tif 000069
2004334893.tif 000070
2004334893.tif 000071
2004334893.tif 000072
2004334893.tif 000073
2004334893.tif 000074
2004334893.tif 000075
2004334893.tif 000076
2004334893.tif 000077
2004334893.tif 000078