日本−日本語 |
|
|
HP OpenVMS Alpha: パーティショニングおよび Galaxy ガイド第18章 共用メモリ・プログラミング・インタフェース |
|
目次 共用メモリ・グローバル・セクション は, 共用コミュニティ内のすべてのインスタンスからアクセスできるメモリをマッピングします。 これらのオブジェクトは Galaxyワイドの共用セクション とも呼びます。このような各オブジェクトには名前,バージョン,保護属性があります。 アプリケーション・プログラムは, Galaxy-wide 共用セクションをマッピングすることで共用メモリにアクセスします。 プログラミング・モデルは標準の OpenVMS グローバル・セクションと同じです。 つまり,共用メモリを使用する各インスタンスで,その共用メモリを作成, マッピング,アンマッピング,削除します。 共用メモリ・グローバル・セクションには次の属性があります。
プログラマの立場から見ると,共用メモリ・グローバル・セクションはメモリ常駐セクションによく似ています。 メモリ常駐セクションを作成するときに使用するシステム・サービスと同じサービスを使用して,Galaxy-wide 共用セクションを作成します。 フラグ SEC$M_SHMGS をセットすると,サービスは共用メモリ・グローバル・セクションに対して動作します。 メモリ常駐セクションと異なり,Galaxy-wide セクションに対して空間を割り当てるために,予約メモリ・レジストリは使用されません。SYSMAN RESERVE コマンドは,ノード固有メモリにのみ影響します。 通常の OpenVMS ページング操作のために共用メモリは使用されないので,共用メモリを予約する必要はありません。 Galaxy-wide セクションに対して共用ページ・テーブルを作成しなければならないかどうかを指定するためのユーザ・インタフェースもありません。 その代わり,Galaxy-wide セクションに対する共用ページ・テーブルの作成は,セクション・サイズによって決定されます。 OpenVMS バージョン 7.2 では,共用ページ・テーブルは 128 ページ (1MB) 以上のセクションに対して作成されます。 Galaxy-wide 共用ページ・テーブルはすべてのGalaxy インスタンス間で共用されます。 ここでは,共用メモリ・グローバル・セクションをサポートする新しいシステム・サービスと,変更されたシステム・サービスについて説明します。 新しい共用メモリ・グローバル・セクション・フラグ SEC$M_SHMGS を認識するように,次のシステム・サービスが強化されました。
次のシステム・サービスは共用メモリを操作できるように強化されていますが, インタフェースは変更されていません。
新しいセクション・フラグ SEC$M_READ_ONLY_SHPT は, SYS$CREATE_GDZRO と SYS$CRMPSC_GDZRO_64 サービスで認識されます。 このビットがセットされている場合は,読み込みアクセスだけが可能な共用ページ・テーブルをセクション用に作成することをシステムに要求します。 この機能は特に,メモリ常駐セクションや Galaxy 共用セクションが多くのプログラムで読み込まれるものの, 書き込むプログラムは 1 つしかない環境で役立ちます。 共用ページ・テーブル・セクションが割り当てられている Galaxy 共用セクションまたはメモリ常駐セクションをマッピングする場合には, データにアクセスするために次のオプションを使用できます。
Galaxy 共用メモリにオブジェクトを作成するには,SHMEM 特権が必要です。 既存のセクションにマッピングする権利は, 通常のアクセス制御機能によって制御されます。 既存のセクションをマッピングするために SHMEM は必要ありません。 通常のメモリ常駐セクションを作成する場合は, VMS$MEM_RESIDENT_USER 識別子が必要ですが, Galaxy-wide セクションの場合は必要ありません。 Galaxy-wide メモリ・セクションの作成とマッピングは, メモリ常駐セクションを作成する場合と同じサービスで実行されます。 現在,次のサービスが SEC$M_SHMGS フラグを認識します。
SYS$CREATE_GDZRO と SYS$CRMPSC_GDZRO_64 は新しい状態コードを返します。
INSTALL LIST/GLOBAL コマンドと SHOW MEMORY コマンドは Galaxy-wide セクションを認識します。 Galaxy-wide セクションはそれぞれ独自のネーム・スペースを使用します。 さまざまな所有者 UIC に対して,システム・グローバル・セクションとグループ・グローバル・セクションを識別するために常に同じ名前を使用できるのと同様に,Galaxy-wide システム・グローバル・セクションと Galaxy-wide グループ・グローバル・セクションで同じ名前を使用できます。 Galaxy-wide セクションにはそれぞれ,セキュリティ・クラスが割り当てられます。
これらのセキュリティ・クラスは $GET_SECURITY と $SET_SECURITY システム・サービス,DCL コマンド SET/SHOW SECURITY で使用されます。 これらの新しいセキュリティ・クラスは Galaxy 環境でのみ有効です。 Galaxy 以外のノードでは認識されません。 Galaxy-wide グローバル・セクションが共用インスタンスに存在する場合は, そのセキュリティ属性を検索し,影響を与えることだけが可能です。 次の例は,Galaxy-wide セクションの監査メッセージを示しています。
“Object name” フィールドに注意してください。 ここに表示されているオブジェクト名は, OpenVMS Galaxy 内のセクションを一意に識別します。 フィールドは次のとおりです。
ユーザはセキュリティ・プロファイルを設定または表示するために, 要求に対してセクション名とクラスだけを指定できます。 UIC は常に現在のプロセスから取得され, コミュニティ識別子はプロセスが実行されているコミュニティから取得されます。 Galaxy-wide システム・グローバル・セクションの出力は, "Object class name" と "Objects name" フィールドでのみ異なります。 このタイプのセクションのオブジェクト名には, グループ識別フィールドが含まれません。
|
|