本書は,OpenVMS Alpha がサポートする 64 ビット仮想アドレッシング,および VLM(Very Large Memory) について説明します。
改訂/更新情報:本書は,OpenVMS Alpha V7.1 の『OpenVMS Alpha 64 ビット・アドレッシング・ガイド』に代わる新しいマニュアルです。
オペレーティング・システム:OpenVMS Alpha バージョン 7.2
UNIX は X/Open カンパニーリミテッドが独占的にランセンスしている米国ならびに他国における登録商標です。
その他の商標および登録商標はすべて該当する商標所有社の所有物です。
原典 | OpenVMS Alpha Guide to 64-Bit Addressing and VLM Features |
Copyright ©1999 Compaq Computer Corporation |
次へ | 目次 | 索引 | DOC HOME |
本書は,OpenVMS ALpha V7.2 による 64 ビット・アドレッシング,および VLM(Very Large Memory)について説明します。
本書での説明は,OpenVMS Alpha システム上のアプリケーションにのみ適用します。OpenVMS VAX システム上のアプリケーションには影響ありません。
本書は,システム・プログラマ,およびアプリケーション・プログラマを対象にしています。また,OpenVMS Alpha プログラミング環境および概念を理解していることを前提としています。
第 1 章では,OpenVMS Alpha の 64 ビット・アドレッシングのサポート,および VLM 機能について簡単に説明します。
第 2 章では,OpenVMS Alpha の 64 ビット仮想メモリ・アドレス空間の概要を説明します。
第 3 章から第 12 章まででは,64 ビット・アドレッシングおよび VLM をサポートする,OpenVMS ALpha プログラミング・ツールや言語について説明します。
付録には,マクロの説明とプログラミング例があります。
本書には,いくつかの項目についてハイレベルな記述が含まれています。詳細は以下に示すドキュメントを参照してください。
本書では次の表記法を使用しています。
表記法 | 意味 |
---|---|
Ctrl/x | Ctrl/x という表記は,Ctrl キーを押しながら別のキーまたはポインティング・デバイス・ボタンを押すことを示します。 |
PF1x | PF1x という表記は,PF1 に定義されたキーを押してから,別のキーまたはポインティング・デバイス・ボタンを押すことを示します。 |
[Return] | 例の中で,キー名が四角で囲まれている場合には,キーボード上でそのキーを押すことを示します。テキストの中では,キー名は四角で囲まれていません。
HTML 形式のドキュメントでは,キー名は四角ではなく,括弧で囲まれています。 |
... | 例の中の水平方向の反復記号は,次のいずれかを示します。
|
. . . |
垂直方向の反復記号は,コードの例やコマンド形式の中の項目が省略されていることを示します。このように項目が省略されるのは,その項目が説明している内容にとって重要ではないからです。 |
( ) | コマンドの形式の説明において,括弧は,複数のオプションを選択した場合に,選択したオプションを括弧で囲まなければならないことを示しています。 |
[ ] | コマンドの形式の説明において,大括弧で囲まれた要素は任意のオプションです。オプションをすべて選択しても,いずれか1つを選択しても,あるいは1つも選択しなくても構いません。ただし,OpenVMS ファイル指定のディレクトリ名の構文や,割り当て文の部分文字列指定の構文の中では,大括弧に囲まれた要素は省略できません。 |
[|] | コマンド形式の説明では,括弧内の要素を分けている垂直棒線はオプションを 1 つまたは複数選択するか,または何も選択しないことを意味します。 |
{ } | コマンドの形式の説明において,中括弧で囲まれた要素は必須オプションです。いずれか 1 つのオプションを指定しなければなりません。 |
太字 | 太字のテキストは,新しい用語,引数,属性,条件を示しています。 |
italic text | イタリック体のテキストは,重要な情報を示します。また,システム・メッセージ (たとえば内部エラーnumber),コマンド・ライン(たとえば /PRODUCER=name),コマンド・パラメータ(たとえばdevice-name) などの変数を示す場合にも使用されます。 |
UPPERCASE TEXT | 英大文字のテキストは,コマンド,ルーチン名,ファイル名,ファイル保護コード名,システム特権の短縮形を示します。 |
Monospace type |
モノスペース・タイプの文字は,コード例および会話型の画面表示を示します。
C プログラミング言語では,テキスト中のモノスペース・タイプの文字は,キーワード,別々にコンパイルされた外部関数およびファイルの名前,構文の要約,または例に示される変数または識別子への参照などを示します。 |
- | コマンド形式の記述の最後,コマンド・ライン,コード・ラインにおいて,ハイフンは,要求に対する引数がその後の行に続くことを示します。 |
数字 | 特に明記しない限り,本文中の数字はすべて10 進数です。10 進数以外 (2 進数,8 進数,16 進数) は,その旨を明記してあります。 |
OpenVMS Alpha オペレーティング・システム V7.0 以降は,64 ビット仮想メモリ・アドレッシングを提供します。これにより OpenVMS Alpha オペレーティング・システムおよびアプリケーション・プログラマは,Alpha アーキテクチャによって定義される 64 ビット仮想アドレス空間を使用することができます。OpenVMS Alpha V7.2 は V7.1 の Very Large Memory (VLM) を発展させ,拡張的な追加メモリ管理 VLM 機能を提供します。
本章では,OpenVMS Alpha の 64 ビット機能および VLM 機能の特徴と長所について説明します。本書のこれ以降の章では,これらの機能を使用することによって,アプリケーション・プログラムを拡張して 64 ビット・アドレスをサポートし,大量の物理メモリを効果的に利用する方法について説明します。
1.1 64 ビット・アドレッシングの使用
(デバッガ,ランタイム・ライブラリ・ルーチン,DEC C を含め) 多くの OpenVMS Alpha ツールおよび言語は,64 ビット仮想アドレッシングをサポートします。入出力操作は,RMS サービス,$QIO システム・サービス,および OpenVMS Alpha システムが提供する多くのデバイス・ドライバを使用して,64 ビットアドレス指定が可能な空間との間で直接行われます。
この基になっているのが新しいシステム・サービスで,これによりアプリケーションは,プロセスがプライベートに使用できる 64 ビット仮想アドレス空間を割り当て,管理することができます。
64 ビット・アドレッシングをサポートする OpenVMS Alpha ツールおよび言語を使用することによって,プログラマは,32 ビット仮想アドレスの制限を越えてデータをマップおよびアクセスするイメージを作成することができます。64 ビット仮想アドレス空間の設計では,64 ビット・アドレスをさまざまな方法で使用できる柔軟性に富む構成が提供され,新たに生じる問題に対処できる一方で,OpenVMS Alpha V7.0 以前のバージョンで稼働するプログラムの上位互換性が確保されます。
非特権プログラムであっても,変更を加えることによって 64 ビット・アドレッシング機能を利用できるようになります。なお,OpenVMS Alpha 64 ビット仮想アドレッシングは,64 ビット・サポートを適用するように明示的に変更されていない非特権プログラムには,影響を与えません。既存の 32 ビット非特権プログラムのバイナリおよびソース・レベルでの互換性は保障されています。
64 ビット・アドレッシングの機能を使用することによって,アプリケーション・プログラムは大量のデータをメモリにマップし,高い性能を実現した上で,Very Large Memory (VLM) システムを利用することができます。さらに,より大きなユーザ・プロセスに加えて,実質的に無制限のスケーラビリティでより多数のユーザおよびクライアント/サーバ・プロセスが使用できるため,システムのリソースをより効率的に使用できます。
1.2 VLM 機能の使用
OpenVMS Alpha のメモリ管理 VLM 機能は,データベース,データ・ウェアハウス,およびその他の大規模データベース (VLDB) 製品に対して拡張的なサポートを提供します。データベース製品およびデータ・ウェアハウス・アプリケーションは,新しい VLM 機能を使用することにより,容量および性能が向上します。
拡張的な VLM 機能を使用すると,アプリケーション・プログラムは,プロセス制限値を増加せずに,大きなメモリ内グローバル・データ・キャッシュを作成することができます。この大きなメモリ常駐グローバル・セクションは共用グローバル・ページでマップできるため,大量のメモリをマップするために必要なシステム・オーバヘッドを大幅に削減できます。
この VLM 機能の利用についての詳細は, 第 4 章 を参照してください。
本章では,OpenVMS Alpha 64 ビット仮想メモリ・アドレス空間のレイアウトと構成要素について説明します。
64 ビット・アドレッシングをサポートする OpenVMS ALpha プログラミング・ツールや言語についての詳細,および 64 ビット・アドレッシングや VLM をサポートするようアプリケーションを拡張する場合の注意点については,本書のこれ以降の章を参照してください。
2.1 従来の OpenVMS 32 ビット仮想アドレス空間レイアウト
以前のバージョンの OpenVMS Alpha オペレーティング・システムの場合,仮想アドレス空間のレイアウトは基本的に,VAX アーキテクチャによって定義される 32 ビット仮想アドレス空間に基づいていました。OpenVMS VAX レイアウトに基づく OpenVMS Alpha レイアウトを 図 2-1 に示します。
図 2-1 32 ビット仮想アドレス空間レイアウト
OpenVMS VAX 仮想アドレス空間の下半分 (アドレス 0 〜 7FFFFFFF16) は,プロセス・プライベート空間と呼ばれています。 プロセス・プライベート空間 この空間はさらに,P0 空間および P1 空間という 2 つの等しい空間に分けられます。各空間とも 1 GB 長です。P0 空間の範囲は 0 から 3FFFFFFF16 です。P0 空間は 0 の位置で始まり,アドレスが増加する方向に向かって拡張します。 一方,P1 空間の範囲は 4000000016 から 7FFFFFFF16 です。P1 は 7FFFFFFF16 の位置で始まり,アドレスが減少する方向に向かって拡張します。
VAX 仮想アドレス空間の上半分は,システム空間と呼ばれています。 システム空間の下半分 (アドレス 8000000016 〜 BFFFFFFF16) は,S0 空間と呼ばれています。S0 空間は 8000000016 で始まり,アドレスが増加する方向に向かって拡張します。
VAX アーキテクチャでは,ページ・テーブルと仮想アドレス空間の各領域を関連付けています。プロセッサは,システム・ページ・テーブルを使用して,システム空間アドレスを変換します。また,各プロセスは,プロセス自身の P0 ページ・テーブルおよび P1 ページ・テーブルを持ちます。なお,VAX ページ・テーブルは,可能な仮想アドレス空間をすべてマップするわけではありません。作成されたそのリージョンの一部だけをマップします。
2.2 OpenVMS Alpha 64 ビット仮想アドレス空間レイアウト
OpenVMS Alpha 64 ビット・アドレス空間レイアウトは,従来の OpenVMS 32 ビット・アドレス空間レイアウトを拡張したものです。
64 ビット仮想アドレス空間レイアウトの設計を 図 2-2 に示します。
図 2-2 64 ビット仮想アドレス空間レイアウト
64 ビット仮想アドレス空間レイアウトは,OpenVMS Alpha オペレーティング・システムおよびそのユーザの,現在の要望,および将来の要望を満たすように設計されています。新しいアドレス空間は,次の基本領域で構成されています。
プロセス・プライベート・アドレス空間は,OpenVMS オペレーティング・システムのメモリ管理設計の中心です。
プロセス・プライベート空間,つまりプロセス空間は,PT 空間以下のすべての仮想アドレスを含みます。 図 2-2 に示すように,プロセス空間のレイアウトは,さらに P0,P1,および P2 空間に分かれています。P0 空間はプログラム領域,P1 空間は制御領域,P2 空間は 64 ビット・プログラム領域です。
P0 および P1 空間 は,VAX アーキテクチャで定義している P0 および P1 領域と同等に定義されています。両者で,0.0000000016 から 0.7FFFFFFF16 の範囲に相当する従来の 32 ビット・プロセス・プライベート領域を含みます。P2 空間 は,P1 空間のすぐ上の 0.8000000016 で始まり,PT 空間の最下位アドレスのすぐ下で終了する残りのプロセス空間をすべて含みます。
単一 64 ビット整数として解釈される場合,P2 空間アドレスは正の値でも負の値でも構いません。
2.2.2 システム空間
64 ビット・システム空間 は,PT 空間を含む範囲よりも高位の 64 ビット仮想アドレス範囲全体の部分に相当します。図 2-2 に示すように,システム空間はさらに S0,S1,および S2 空間に分かれています。
S0 および S1 空間 は,VAX アーキテクチャで定義している S0 および S1 領域と同等に定義されています。両者で,FFFFFFFF.8000000016 から FFFFFFFF.FFFFFFFF16 の範囲に相当する従来の 32 ビット・プロセス・プライベート領域を含みます。S2 空間 は,PT 空間の最高位アドレスと,結合された S0/S1 空間の最下位アドレスとの間に存在する,残りのシステム空間をすべて含みます。
S0,S1,および S2 空間は,すべてのプロセスによって完全に共用されます。S0,および S1 は,上位方向の仮想アドレスに向かって拡張します。S2 空間は,一般に下位方向の仮想アドレスに向かって拡張します。
システム空間内のアドレスを作成および削除できるのは,カーネル・モードで実行されるコードだけです。ただしシステム空間ページのページ保護を設定することによって,特権の少ないアクセス・モードでも読み込みおよび書き込みアクセスを認めることができます。
システム空間ベース は,S2_SIZE システム・パラメータにより制御されます。S2_SIZE は,S2 空間を予約するためのメガバイト数です。省略時の設定の値は,64 ビット(S2) システム空間を使用することが予想される要素が,それぞれ必要とするサイズに基づきます。ブート時に OpenVMS によって設定される利用者は, ページ・フレーム数 (PFN) データベースおよびグローバル・ページ・テーブルです (SYSGEN によるシステム・パラメータの設定についての詳細は,『OpenVMS システム管理ユーティリティ・リファレンス・マニュアル (下巻) 』を参照してください)。
グローバル・ページ・テーブル(GPT),および PFN データベースは,S2 空間の最下位アドレス部分に存在します。GPT および PFN データベースを S2 空間に移動することによって,これらの領域のサイズが,小さな S0/S1 空間の制限をもはや受けることはありません。これにより OpenVMS は,より大容量の物理メモリ,およびより大きなグローバル・セクションをサポートできるようになりました。
次へ | 目次 | 索引 |