共有メモリである Natural バッファプールは、一時ストレージエリアとして機能し、そこに Natural カタログ化オブジェクト(プログラムなど)が Natural システムファイルからロードされて後で Natural ランタイムシステムによる実行や Natural コンパイラによるオブジェクトコンパイルに使用されます。
Natural ではリエントラントな Natural オブジェクトコードが生成されるので、Natural オブジェクトの 1 つのコピーを複数のユーザーが同時に実行できます。 この目的のため、各オブジェクトは、呼び出し元が呼び出すたびにロードされるのではなく、Natural システムファイルから Natural バッファプールに 1 回だけロードされます。
このセクションでは、バッファプールオペレーションの基本原理とオブジェクトのロード手順について説明します。
バッファプールへのオブジェクトのロードは、実行可能な Natural オブジェクトの実行が要求されたときに初期化されます。
オブジェクトの実行が要求されると、対応するカタログ化オブジェクトが、該当する Natural システムファイルからバッファプールへロードされ、そこで Natural ランタイムシステムによる実行が可能になります。
実行可能な Natural オブジェクト以外に、タイプがデータエリア(ローカル、グローバル、パラメータ)である非実行可能オブジェクトも、このようなデータエリアを参照する Natural オブジェクトがカタログ化または再カタログ化(コンパイル)されている場合はバッファプールにロードされます。
オブジェクトの実行(「Natural ニュークリアス」の「Natural ランタイムシステム」)
新しいオブジェクトをロードするためのスペースが必要になった場合は、ユーザーから参照されなくなったオブジェクトがバッファプールから削除されます。 これにより、バッファプールで使用可能なストレージスペースを最大限使用できます。
バッファプールキャッシュがある場合は、使用されていないオブジェクトがバッファプールからバッファプールキャッシュにスワップされます。 使用されていないオブジェクトがバッファプールキャッシュからも削除された場合、またはバッファプールキャッシュが存在しない場合に、ユーザーがそのオブジェクトを再び参照すると、オブジェクトは Natural システムファイルから再ロードされます。
次の図は、Natural プログラムをロードして実行するときのプロセスフローを示しています。
ユーザーが、Natural システムコマンド EXECUTE を発行して、プログラムタイプで名前が PGM01 の Natural オブジェクトの実行を要求します。
|
|
Natural コマンドインタープリタが、コマンドを解釈し、要求を Natural ランタイムシステムに渡します。 | |
Natural ランタイムシステムが、要求をオブジェクトローダーに渡します。 |
|
オブジェクトローダーが、バッファプールマネージャに対し、バッファプール(および存在する場合はバッファプールキャッシュ)で PGM01 を探して、バッファプールに保存されている PGM01 のアドレスを特定するよう指示します。 バッファプールマネージャが PGM01 のバッファプールアドレスを見つけた場合は、バッファプールがそのアドレスをオブジェクトローダーに渡します。 の処理に進みます。 |
|
オブジェクトローダーが、該当する Natural システムファイルから PGM01 のカタログ化オブジェクトを取得します。 | |
オブジェクトローダーが、PGM01 のカタログ化オブジェクトをバッファプールマネージャに渡します。 |
|
バッファプールマネージャが、PGM01 をバッファプールにロードします。 |
|
バッファプールマネージャが、PGM01 のバッファプールアドレスをオブジェクトローダーに返します。 | |
オブジェクトローダーが、PGM01 のバッファプールアドレスを Natural ランタイムシステムに渡します。 |
|
Natural ランタイムシステムが、PGM01 のカタログ化オブジェクトのコンパイル済みコードを解釈して実行します。 |
Natural バッファプールについて、『Natural システムアーキテクチャ』ドキュメントでは次のトピックを参照してください。
Natural ランタイムシステム(「Natural ニュークリアス」)
カタログ化オブジェクト(「Natural ニュークリアス」の「Natural コンパイラ」)
その他の Natural ドキュメントでは、次のトピックを参照してください。
Natural バッファプール(『オペレーション』)
Natural ストレージ管理(『オペレーション』)