[ 前のページ ]
[ 次のページ ]
[ 目次 ]
[ DOC Home ]
共用メモリ・グローバル・セクションは,共用コミュニティ内のすべてのインスタンスからアクセスできるメモリをマッピングします。 これらのオブジェクトは Galaxywide共用セクションとも呼びます。 このような各オブジェクトには名前,バージョン,保護属性があります。
アプリケーション・プログラムは,Galaxywide共用セクションをマッピングすることで共用メモリにアクセスします。 プログラミング・モデルは標準のOpenVMS グローバル・セクションと同じです。つまり,共用メモリを使用する各インスタンスで, その共用メモリを作成,マッピング,アンマッピング, 削除します。共用メモリ・グローバル・セクションには次の属性があります。
プログラマの立場から見ると,共用メモリ・グローバル・セクションはメモリ常駐セクションによく似ています。 メモリ常駐セクションを作成するときに使用するシステム・ サービスと同じサービスを使用して, Galaxywide共用セクションを作成します。フラグSEC$M_SHMGSをセットすると, サービスは共用メモリ・グローバル・セクションに対して動作します。
メモリ常駐セクションと異なり,Galaxywideセクションに対して空間を割り当てるために, 予約メモリ・レジストリは使用されません。SYSMAN RESERVEコマンドは,ノード固有メモリにのみ影響します。通常のOpenVMS ページング操作のために共用メモリは使用されないので,共用メモリを予約する必要はありません。
Galaxywideセクションに対して共用ページ・テーブルを作成しなければならないかどうかを指定するためのユーザ・ インタフェースもありません。 その代わり,Galaxywideセクションに対する共用ページ・テーブルの作成は, セクション・サイズによって決定されます。OpenVMSバージョン7.2では, 共用ページ・テーブルは128ページ(1MB)以上のセクションに対して作成されます。Galaxywide 共用ページ・テーブルはすべてのGalaxyインスタンス間で共用されます。
ここでは,共用メモリ・グローバル・セクションをサポートする新しいシステム・ サービスと,変更されたシステム・サービスについて説明します。
新しい共用メモリ・グローバル・セクション・フラグSEC$M_SHMGSを認識するように, 次のシステム・サービスが強化されました。
次のシステム・サービスは共用メモリを操作できるように強化されていますが, インタフェースは変更されていません。
新しいセクション・フラグSEC$M_READ_ONLY_SHPTは,SYS$CREATE_GDZROとSYS$CRMPSC_GDZRO_64 サービスで認識されます。このビットがセットされている場合は, 読み込みアクセスだけが可能な共用ページ・テーブルをセクション用に作成することをシステムに要求します。 この機能は特に,メモリ常駐セクションやGalaxy 共用セクションが多くのプログラムで読み込まれるものの, 書き込むプログラムは1つしかない環境で役立ちます。
共用ページ・テーブル・セクションが割り当てられているGalaxy共用セクションまたはメモリ常駐セクションをマッピングする場合には, データにアクセスするために次のオプションを使用できます。
共用ページ・テーブル | 読み込み専用 | 読み込みと書き込み |
---|---|---|
何も作成されない | マップ要求にSEC$M_WRTフラグをセットしない。
プライベート・ページ・テーブルは,セクションをマッピングする共用ページ・ テーブル領域を指定した場合でも,常に使用される。 |
マップ要求にSEC$M_WRTフラグをセットする。
プライベート・ページ・テーブルは,セクションをマッピングする共用ページ・ テーブル領域を指定した場合でも,常に使用される。 |
書き込みアクセス | マップ要求にSEC$M_
WRTフラグをセットしない。
プライベート・ページ・テーブルが使用されることを確認する。セクションをマッピングする共用ページ・ テーブル領域を指定しない。指定すると, エラー状態S$_IVSECFLGが返される。 | マップ要求にSEC$M_WRT
フラグをセットする。
セクションをマッピングする共用ページ・テーブル領域を指定した場合, マッピングのために共用ページ・テーブル・セクションが使用される。 |
読み込みアクセス | マップ要求にSEC$M_WRT フラグをセットしない。セクションをマッピングする共用ページ・ テーブル領域を指定した場合,マッピングのために共用ページ・ テーブル・セクションが使用される。 | マップ要求にSEC$M_WRT フラグをセットする。プライベート・ページ・テーブルが使用されることを確認する。 セクションをマッピングする共用ページ・テーブル領域を指定しない。 指定すると,エラー状態SS$_IVSECFLGが返される。 |
SYS$CRMPSC_GDZRO_64サービスを使用すると,常にSEC$M_WRTフラグがセットされ, 書き込みのためにセクションをマッピングすることが示されます。 このサービスを使用して,読み込み専用アクセスのために共用ページ・ テーブルを使用するセクションを作成する場合は,プライベート・ページ・ テーブルを使用しなければならず,セクションをマッピングする共用テーブル領域を指定することはできません。
Galaxy共用メモリにオブジェクトを作成するには,SHMEM特権が必要です。 既存のセクションにマッピングする権利は,通常のアクセス制御機能によって制御されます。 既存のセクションをマッピングするためにSHMEM は必要ありません。通常のメモリ常駐セクションを作成する場合は, VMS$MEM_RESIDENT_USER識別子が必要ですが,Galaxywideセクションの場合は必要ありません。
Galaxywideメモリ・セクションの作成とマッピングは,メモリ常駐セクションを作成する場合と同じサービスで実行されます。 現在,次のサービスがSEC$M_SHMGS フラグを認識します。
SYS$CREATE_GDZROとSYS$CRMPSC_GDZRO_64は新しい状態コードを返します。
SS$_INV_SHMEM | 共用メモリが不正である。 |
SS$_INSFRPGS | 空き共用ページまたはプライベート・ ページが不足している。 |
SS$_NOBREAK | Galaxyロックが別のノードによって保有されており, 破棄されていない。 |
SS$_LOCK_TIMEOUT | Galaxyロック・タイムアウトが発生した。 |
$ INSTALL LIST/GLOBALと$ SHOW MEMORYもGlaxywideセクションを認識します。
Galaxywideセクションはそれぞれ独自のネーム・スペースを使用します。 さまざまな所有者UICに対して,システム・グローバル・セクションとグループ・ グローバル・セクションを識別するために常に同じ名前を使用できるのと同様に,Galaxywide システム・グローバル・セクションとGalaxywide グループ・グローバル・セクションで同じ名前を使用できます。
Galaxywideセクションにはそれぞれ,セキュリティ・クラスが割り当てられます。
これらのセキュリティ・クラスは$GET_SECURITY,$SET_SECURITYシステム・ サービス,SET/SHOW SECURITY DCLコマンドで使用されます。
これらの新しいセキュリティ・クラスはGalaxy環境でのみ有効です。 Galaxy以外のノードでは認識されません。
Galaxywideグローバル・セクションが共用インスタンスに存在する場合は, そのセキュリティ属性を検索し,影響を与えることだけが可能です。
次の例は,Galaxywideセクションの監査メッセージを示しています。
%%%%%%%%% OPCOM 20-MAR-1998 10:44:43.71 %%%%%%%% (from node GLX1 at 20-MAR-1998 10:44:43.85) Message from user AUDIT$SERVER on GLX1 Security alarm (SECURITY) on GLX1, system id: 19955 Auditable event: Object creation Event information: global section map request Event time: 20-MAR-1998 10:44:43.84 PID: 2040011A Process name: ANDY Username: ANDY Process owner: [ANDY] Terminal name: RTA1: Image name: MILKY$DKA100:[ANDY]SHM_MAP.EXE;1 Object class name: GLXGRP_GLOBAL_SECTION Object name: [47]WAY____D99DDB03_0$MY_SECTION Secondary object name: <Galaxywide global section> Access requested: READ,WRITE Deaccess key: 8450C610 Status: %SYSTEM-S-CREATED, file or section did not exist; has been created
"Object name"レコードに注意してください。ここに表示されているオブジェクト名は,OpenVMS Galaxy 内のセクションを一意に識別します。フィールドは次のとおりです。
[47] | (グループ・グローバル・セクションの場合のみ) セクションの作成者のUICグループを識別する。 |
WAY____D99DDB03_0$ | 共用コミュニティの識別子。 |
MY_SECTION | ユーザが指定したセクションの名前。 |
ユーザはセキュリティ・プロファイルを設定または表示するために,要求に対してセクション名とクラスだけを指定できます。UIC は常に現在のプロセスから取得され, コミュニティ識別子はプロセスが実行されているコミュニティから取得されます。
Galaxywideシステム・グローバル・セクションの出力は,"Object class name"と"Objects name"フィールドでのみ異なります。このタイプのセクションのオブジェクト名には, グループ識別フィールドが含まれません。
オブジェクト・クラス名: | GLXSYS_GLOBAL_ SECTION |
オブジェクト名: | WAY____D99DDB03_0$SYSTEM_SECTION |
この条件は,この共用コミュニティに参加するすべてのインスタンスを, すべてのノードがセキュリティ関連ファイルを共用する「同種」OpenVMS Clusterに参加させることで実現できます。
特に,保護の変更をGalaxywideセクションに自動的に伝達するには,すべての共用インスタンスで同じ物理ファイル(VMS$OBJECTS.DAT) を使用することが必要です。
インストールしたシステムで,これらのファイルがGalaxy全体で共用されない場合は,Galaxywide 共用セクションの作成者は,セクションが各インスタンスで同じセキュリティ属性を持つようにしなければなりません。 このためには,手動の操作が必要です。
[ 前のページ ]
[ 次のページ ]
[ 目次 ]
[ DOC Home ]