JP3554320B2 - オブジエクト指向メモリ保護メカニズムを採用するデータ処理システムで実行環境間の通信を実行するデータ処理システム - Google Patents
オブジエクト指向メモリ保護メカニズムを採用するデータ処理システムで実行環境間の通信を実行するデータ処理システム Download PDFInfo
- Publication number
- JP3554320B2 JP3554320B2 JP33700290A JP33700290A JP3554320B2 JP 3554320 B2 JP3554320 B2 JP 3554320B2 JP 33700290 A JP33700290 A JP 33700290A JP 33700290 A JP33700290 A JP 33700290A JP 3554320 B2 JP3554320 B2 JP 3554320B2
- Authority
- JP
- Japan
- Prior art keywords
- subsystem
- stack
- execution environment
- processor
- procedure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Description
本発明はデータ処理システムに関し、特にメモリの記憶場所を許可なしのアクセスから保護するメモリアクセッシングシステムにおいて使用するためのサブシステム呼出しメカニズムに関する。
[従来の技術および発明が解決しようとする間題点]
最新のコンピュータシステムは、システム内の全ての情報がオブジェクトと呼ばれるハードウエアで認識される、メモリ常駐情報構造によって表わされるように編成されている。これはオブジェクト指向コンピュータアーキテクチャとして知られている。オブジェクトは、論理的に連続しているアドレス指定記億場所セットに維持された関連情報を表示するデータのパッケージである。
オブジェクト指向プログラミングシステムでは、オブジェクトのタイプ、すなわち各クラスは、そのクラスに属しているオブジェクトについて実行を許可された1組のオペレーションを有する。これはオブジユクトベースアクセスメカニズムとして知られている。オブジェクトの内部構造は、プログラマーにはわからない。プログラマーは許可されているオペレーションのみによってオブジェクトを操作することができる。オブジェクトに対するアクセスはアクセス記述子と呼ばれるオブジェクトへのポインタにより行われる。アクセス記述子は、そのオブジェクトに関してアクセス記述子のホルダーにより許可されるオブジェクトへの様々なタイプのアクセスを定義する表示(rep)権利(読み取り権利または書き込み権利など)のタイプを記述する。
関連する米国特許第5,075,842号に記載されているシステムにおいては、オブジェクト指向コンピュータシステムのプログラミングの複雑さは、保護メカニズムが通常データと、保護されているアクセス記述子とを識別できるように、メモリに記憶されるワードにタグ付けすることにより軽減される。この種の保護は、旧来の状態ベース保護メカニズムと区別して、能力ベース保護メカニズムと呼ばれる。状態ベース保護メカニズムは、スーパーバイザモードでのみ実行可能である特権命令を備えたスーパーバイザプログラム状態およびユーザー状態に依存する。旧来のタグなしオペレーティングシステムおよび新たなタグ付けオペレーティングシステムとの互換性を得るために、タグなしオペレーティングシステムのスーパーバイザ呼出しをタグ付げオペレーティングシステムにマッピングできることが望ましい。
従って、本発明の目的は、能力ベース保護メカニズムと、状態ベース保護メカニズムの双方と共に機能できる呼出し/復帰メカニズムを提供することである。
[問題点を解決するための手段]
簡単に言えば、上記の目的は、本発明に従って、第1のドメインオブジェクトと関連する第1の実行環境と、第2のドメインオブジェクトと関連する第2の実行環境とを定義する第1のプロセッサオブジェクトおよび第2のプロセスオブジェクトを設けることにより達成される。第1の環境テーブルオブジェクトは第1のブロセスと関連している。第1の環境テーブルオブジェクトはサブシステムリンケージ情報を記憶するための制御スタックを含み、この制御スタックは、第2の実行環境からの復帰時に再ストアすべき第1の呼び出し側実行環境の状態をセーブする制御スタックエントリのアレイである。
第1のドメインオブジュクトは、サブシステム呼び出しのターゲットである第2の(ターゲット)実行環境の領域0を定義するオブジェクトを参照する領域0アクセス記述子と、サブシステム呼び出しのターゲットである第2の(ターゲット)実行環境の領域1を定義するオブジェクトを参照する領域1のADと、第1のプロセスオブジェクト内で関連する第1の環境テーブル中のサブシステムテーブルの1つのエントリを指示するサブシステムIDとを含む。サブシステムテーブルのサブシステムエントリは、ターゲット実行環境の領域2を定義するオブジェクトと、ターゲット環境における最上位置のスタックフレームのフレームポインタおよびスタックポインタとを指定する。ユーザーモードで新たなフレームを位置決めするためにスーパーバイザ呼び出しを実行するときに(現在フレームのスタックポインタの代わりに)使用されるスーパーバイザスタックに関する線形アドレス(ワード単位)であるスーパーバイザスタツクポインタが設けられている。
第1のドメインオブジェクトは、ターゲット手順のタイプとアドレスを指定する手順エントリを更に含む。それぞれの手順エントリは、スーパーバイザ手順およびサブシステム手順を含むが、それらには限定されない呼び出すべき手順のタイプを指示する手順エントリタイプフィールドと、ターゲット実行環境へのオフセットとを含む。オフセットはターゲット手順の第1の命令を指定する。
本発明の1つの面によれば、環境テーブルオブジェクトはサブシステムテーブルと、制御スタックの2つのデータ構造を有する。サブシステムテーブルは、1つのプロセスに関連する全ての領域2スタックオブジェクトと、それらに対応する最上位置のフレームポインタおよびスタックポインタとを位置決めする。
本発明の別の面によれば、現在サブシステムIDは、第1のプロセスと関連するサブシステムテーブルの現在サブシステムエントリに関する現在サブシステムテーブルオフセットと共に第2のプロセスオブジェクトにセーブされ、最上位置のフレームポインタおよびスタックポインタの線形アドレスは、1つのサブシステムが別のサブシステムへの呼び出し時に励起されたという条件の下でサブシステムエントリにセーブされる。
本発明の上記の目的、特徴および利点と、その他の目的、特徴および利点とは、添付の図面に図示されるような本発明の好ましい1実施例の以下の詳細な説明から明白になるであろう。
[実施例]
オブジェクト指向アーキテクチャは、オブジェクトと呼ばれるハードウエアで認識され、メモリ常駐の情報構造によってシステム中の全ての情報が表わされるように編成されたコンピュータシステムである。オブジェクトは、連続してアドレスされる1組の記憶場所に維持されている関連情報を表示するデータのパッケージである。
オブジェクト指向プログラミングシステムにおいては、オブジェクトの各タイプすなわち各クラスは、そのクラスに含まれているオブジェクトについて実行を許されている1組のオペレーションを有する。これをオブジェクトベースアクセスメカニズムという。オブジェクトの内部構造はプログラマーにはわからない。プログラマーはオブジェクトに許可されているオペレーションによって操作できるだけである。オブジェクトへのアクセスは、そのオブジェクトに対するポインタであるアクセス記述子によって行われる。アクセス記述子は、そのオブジェクトに関するアクセス記述子のホルダーにより許可される様々な種類のそのオブジェクトに対するアクセスを定義する権利(読み取りの権利または書き込みの権利など)の種類を記述している。
1つのプロセスを記述するとき、演算子はオペランドに対して取るべきアクションを指示するものである。オペランドは、通常、命令のアドレス部により識別される。あらゆる命令は演算子と、いくつかのレファレンスとを指定する。演算子はどのようなオペレーションを実行すべきかをプロセッサに指定し、レファレンスは使用または操作すべきオペランドを選択する。命令の中で指定された演算子は、クラスフィールドと、OPコードフィールドの2つのフィールドで符号化される。クラスフィールドは演算子が属する演算子クラスを指定し、OPコードフィールドは、そのクラスの中から実行すべきハードウエアオペレーションを選択する。
実行環境
プロセスは平坦な線形アドレススペースを見て、そこからデータ、命令およびスタックスペースを割り当てる。呼び出し命令は新たなスタックフレームを(活動化レコード)順次割り当てられたスタックに発生させる。スタックフレームの詳細については、Myers他の、名称「Stack Framme Cache on a Microprocessor Chip」による米国特許第4,811,208号を参照のこと。
実行環境は、線形アドレススペースと、1組の大域レジスタおよび浮動小数点レジスタと、命令ポインタと、演算制御レジスタといったオブジェクトから構成される。
大域レジスタは、手順の境界を越えるときに影響を受けない。レジスタの中の1つは現在フレームポインタ(FP)を含み、その他は汎用レジスタである。FPは、現在(最上位置)のスタックフレームに関する現在実行環境に対する線形アドレス(ポインタ)を含む。プロセスと関連する大域レジスタは、そのプロセスが実行中でないときは、プロセス制御ブロックにセーブされる。
プロセスと関連している浮動小数点レジスタは、そのプロセスが実行中でないときは、プロセス制御ブロックにセーブされる。
実行環境は他のシステムにおけるプロセス幅のアドレススペースに相当する。システムはプロセスごとに複数の実行環境を支援するが、各プロセスで一度に活動状態になれる実行環境は1つだけである。
演算制御装置は、数値命令の算術特性および誤り発見特性を制御するとともに、条件コードを記憶するために使用される。プロセスが延期されているとき、演算制御情報はプロセス制御ブロックにセーブされる。新たなフレームに対して呼出しオペレーションが実行されると、現在線形アドレススペース内のスタックフレームに、戻りIPがセーブされる。
命令ポインタ
命令ポインタ(IP)は、現在命令の第1のバイトに対する現在線形アドレススペースへの線形アドレス(ポインタ)である。
レジスタモデルは、手順の境界を越えて保持される16個の大域レジスタおよび4個の浮動小数点レジスタと、それぞれ16個の局所(フレーム)レジスタからなる複数組のレジスタとから構成される。レジスタモデルは、1990年1月2日に許可されたBuddeらの「Register Scoreboading on a Microprocessor」という名称の米国特許第4,891,753号に更に詳細に説明されている。
どの時点でも、1つの命令はレジスタのうち36個を次のようにアドレスすることができる。
レジスタの種類 レジスタ名
大域レジスタ G0...G15
浮動小数点レジスタ EP0..FP8
スタ(浮動小数点オペランド)
局所レジスタ L0...L15
大域レジスタ
1つのプロセスと関連する16個の大域レジスタがあり、それらは、プロセスが実行中でないときは、プロセス制御ブロックにセーブされる。
16個の32ビットレジスタのうち、G15は現在フレームポインタ(FP)を含み、G0からG14は汎用レジスタである。FPは、現在(最上位置)のスタックフレームの線形アドレスを含む。スタックフレームはSALIGN*16バイト境界(SALIGNは特定の実現形態によって決まる値である)にアライメントされているので、FPの下位のNビットは無視され、常に0であると解釈される(NはSALIGN*16=2**Nにより与えられる)。このレジスタは呼出し時に初期設定され、復帰時に再ストアされる。
32ビットより大きいオペランドとしてのレジスタへのレファレンスには、順次大きくなるレジスタ番号を持つレジスタを使用する。
浮動小数点レジスタ
1つのプロセスと関連する4個の浮動小数点レジスタがあり、それらは、プロセスが実行中でないときには、プロセス制御ブロックにセーブされる。
浮動小数点レジスタは、浮動小数点命令のオペランドとしてのみアクセスされる。
局所(フレーム)レジスタ
局所レジスタであるレジスタL0からL15は従来のタイプのレジスタではなく、手順の呼出し時に割り当てられ、復帰時にその割り当てを解除される。
手順の活動化ごとに1バンクずつ、複数の局所レジスタバンクが設けられており、プログラムはレジスタを明示してセーブし且つ再ストアする必要はない。
これらのレジスタをメモリにセーブする必要がないときには、レジスタは関連する手順のスタックフレームの初めの16ワードにセーブされる。それらはスタックフレームの初めの16ワードを表し、レジスタL0は線形アドレスFP+0からFP+3にマッピングされ、レジスタLiは線形アドレスFP+4iからFP+4i+3にマッピングされることになる。その後も同様である。
命令はワード(4バイト)の境界で始まらなければならないので、IPの2つの下位ビットは常に0である。
演算制御装置
演算制御装置(AC)は数値命令の演算特性および誤り発見特性を制御するとともに、条件コードを記憶するために使用される。プロセスが延期されているとき、演算制御装置はプロセス制御ブロックにセーブされる。
演算制御装置(AC)は次のような情報を含む。
条件コード(ビット0から2)。比較(およびその他の)命令によりセットされ且つ条件付き分岐(およびその他の)命令により検査される1組のフラグ。
演算状態(ビット3から6)。このフィールドは標識としてある種の浮動小数点命令により変更される。
整数オーバーフローフラグ(ビット8)。整数オーバーフローが起こり且つマスクがセットされているときに必ずセットされるスティッキーフラグ。このフラグが暗黙にクリアされることはない。
整数オーバーフローマスク(ビット12)。セットされていれば、整数オーバーフローはARITHMETIC誤りを発生しない。Sが宛先サイズであれば、結果のS個の最下位ビットは特に指摘しない限り宛先に記憶される。
不明確な誤り無し(ビット15)。このNIFがセットされていれば、誤りは明確であることを要求される。NIFがクリアされている場合には、特定の誤りは不明確であっても良い。
浮動小数点オーバーフローフラグ(ビット16)。浮動小数点オーバーフローが起こり且つマスクがセットされているときに必ずセットされるスティッキーフラグ。このフラグが暗黙にクリアされることはない。
浮動小数点アンダーフローフラグ(ビット17)。浮動小数点アンダーフローが起こり且つマスクがセットされているときに必ずセットされるスティッキーフラグ。このフラグが暗黙にクリアされることはない。
浮動小数点無効opフラグ(ビット18)。浮動小数点無効動作が起こり且つマスクがセットされているときに必ずセットされるスティッキーフラグ。このフラグが暗黙にクリアされることはない。
浮動小数点0除算フラグ(ビット19)。0による浮動小数点除算が起こり且つマスクがセットされているときに必ずセットされるスティッキーフラグ。このフラグが暗黙にクリアされることはない。
浮動小数点不正確フラグ(ビット20)。不正確な浮動小数点結果が起こり且つマスクがセットされているときに必ずセットされるスティッキーフラグ。このフラグが暗黙にクリアされることはない。
浮動小数点オーバーフローマスク(ビット24)。セットされていれば、浮動小数点オーバーフローはREAL_ARITHMETIC誤りを発生しない。
浮動小数点アンダーフローマスク(ビット25)。セットされていれば、浮動小数点アンダーフローはREAL_ARITHMETIC誤りを発生しない。
浮動小数点無効opマスク(ビット26)。セットされていれば、浮動小数点無効動作はREAL_ARITHMETIC誤りを発生しない。
浮動小数点0除算マスク(ビット27)。セットされていれば、0による浮動小数点除算はREAL_ARITHMETIC誤りを発生しない。
浮動小数点不正確マスク(ビット28)。セットされていれば、不正確な浮動小数点結果はREAL_ARITHMETIC誤りを発生しない。
浮動小数点正規化モード(ビット29)。セットされていれば、実数、長精度実数または拡張精度実数の非正規化数は、演算実行前にまず正規化される。クリアされていれば、非正規化数はREAL_ARITHMETIC誤りを発生しない。
浮動小数点丸め制御(ビット31−32)。このフィールドは、浮動小数点計算に際してどの丸めモードが作用しているかを指示する。
00−最も近い数に丸める(端数はない)
01−(負の無限に向かって)下に丸める
10−(正の無限に向かって)上に丸める
11−切り捨てる(0に向かって丸める)
スタックフレーム
スタックフレームは現在線形アドレススペースの連続する部分であり、データをスタック状に含んでいる。スタックは下位アドレスから上位アドレスへ成長する。活動化される手順ごとに1つのスタックフレームがあり、これは局所変数と、パラメータと、リンケージ情報とを含む。呼出し動作により新たなスタックフレームが獲得され、復帰動作によりそのフレームは解放される。新たなフレームが獲得されると、そのフレームはSALIGN*16バイト境界でアライメントされる。なお、SALIGNはあらかじめ決められている値である。
1つのフレームの初めの64のバイトがマッピングされているページ、すなわち、単純なオブジェクトは局所寿命を有していなければならない。ページ、すなわち、単純なオブジェクトの寿命は呼び出し中に検査される。この制約は、局所レジスタのADの効率よい操作を確保するために必要である。
フレームを局所ページ、すなわち、単純な局所オブジェクトにマッピングするという必要条件に加えて、ページまたはオブジェクト記述子の混合ビットは、タグビットがフレームに書き込まれないとしてもセットされる。この制約は、局所レジスタでの効率よい操作を確保するために必要である。
スタックフレーム内のフィールドは次のように定義される。
パディング領域。この領域はFPを次のSALIGN*16バイト境界にアライメントするために使用される。この領域のサイズは0からSALIGN*16バイトまで変わる。呼び出し動作が実行されると、このフレームに関するFPを形成するために、呼び出し側のSPを次の境界に丸める目的でパディング領域が加えられる。呼出し側のSPが既にアライメントされている場合には、パディング領域はない。
フレーム状態(L0)。フレーム状態は、呼出し後に、フレームからの復帰時に使用すべきフレームと関連する情報を記録する。フレーム状態のフィールドは次のように定義される。
復帰状態、RRR(ビット0−2)。この3ビットフィールドはこのフレームの生成に使用される呼出しメカニズムを記録し、復帰時に使用すべき復帰メカニズムを選択するために使用される。このフィールドは次のように符号化されている。
000 局所
001 誤り
010 スーパーバイザ、呼出し前にトレースはディスェーブルされている
011 スーパーバイザ、呼出し前にトレースはイネーブルされている
100 サブシステム(サブシステム内)
101 サブシステム(サブシステム間)
110 アイドル割り込み
111 割り込み
復帰前トレース、P(ビット3)。復帰前トレースビットが1であるときのフレームからの復帰に際しては、その復帰オペレーションに関連する何らかの動作が実行される前に復帰前トレース事象(イネーブルされているならば)が起こる。このビットは、呼出しトレース事象が起こっていた場合、呼出し時に0に初期設定される。そうでない場合には、ビットは1に初期設定される。
先行フレームポインタ、PFP(ビット4−31)。先行フレームの第1のバイトに対する線形アドレス。フレームは16個以上のバイトの境界にアライメントされているので、FPの最上位置の28ビットのみがセーブされる。
呼出し中、RRRフィールドは次のように初期設定される。
000 局所呼出し、またはスーパーバイザモードからのスーパーバイザ呼出し
001 誤り呼出し
01T ユーザーモードからのスーパーバイザ呼出し
100 サブシステム内呼出し
101 サブシステム間呼出し
110 アイドル状態からの割り込み呼出し
111 実行中状態からの割り込み呼出し
Tはプロセス制御部からのトレース−イネーブルフラグである。
あらゆる復帰時に、PRRRビットは次のように解釈される。
1xxx 復帰前トレースを発生
0000 局所復帰を実行
0001 誤り復帰を実行
001T スーパーバイザモードにおいて、スーパーバイザ復帰を実行。Tビットはプロセス制御部でトレースイネーブルビットに割り当てられ、実行モードビットはユーザーにセットされる。そうでない場合には、局所復帰を実行。
010x サブシステム復帰を実行
0110 アイドル割り込み復帰を実行
0111 割り込み復帰を実行
スタックポインタ、SP(L1)。スタックの最初の自由バイトに対するアドレス。すなわち、スタックの最終バイトのアドレス+1。SPは呼出し動作によりFP+64を指示するように初期設定される。
復帰命令ポインタ、RIP(L2)。新たなフレームに対して呼出し動作が実行されるとき、復帰IPはここにセーブされる。プロセスが延期されているとき、次の命令の命令ポインタがここに記憶される。このポインタは、このフレームへの復帰後に制御が戻ってゆく32ビット線形アドレスである現在フレームのRIPの内容は定義されない。その実施は、手順呼出しがIPを現在フレームのレジスタにセーブすることである。暗黙の手順呼出しが(誤りや、割り込みを原因として)起こりうるので、プログラムはこのレジスタを別の目的に使用するべきではない。
線形アドレススペースの構造
各実行環境は32ビットの線形アドレススペースを定義する。第2図に示すように、線形アドレススペースは4つの領域(領域0から3)に分割される。実行環境の初めの3つの領域は現在プロセスに特有のものである(すなわち、プロセス制御ブロックにより定義される)。プロセス特有領域の構成を、サブシステム呼出し/復帰により変えることができる。実行環境の第4の領域は全てのプロセスが共用する領域(すなわち、プロセッサ制御ブロックにより定義される領域)。システムは、線形アドレススペースのどこに命令、スタックフレームまたはデータが配置されるかという点について何ら制眼を加えない。
16#e000_0000#から16#efff_ffff#までの線形アドレスの物理的アドレスマッピングまた16#2000_0000#から16#2fff_ffff#までの領域3オフセットの物理的アドレスマッピングはシステムにより予約される。それらの記憶場所は、領域3のオブジェクトについて米国特許第5,075,842号に記載されているオブジェクトアドレッシングメカニズムとは無関係に物理的アドレスにマッピングされても良い。
全ての領域が2ページであれば、領域境界が透明である静的線形アドレススペースが得られる。
4つの領域に対するADは、常に、読み取り−書き込みrep権利を有するものと解釈される。ADrep権利を使用してそれぞれの領域を異なるやり方で保護することは不可能である。ページレベル保護を使用して、更に高い保護を実行することができる。また、実施には、領域ADのタグビットを検査することを要求されない(すなわち、ADを要求するか、またはデータを領域ADとして解釈するかのオプションを有する)。
各領域のサイズを互いに独立して変更することができる。1つの領域を定義するために使用されるオブジェクトが1Gバイトより小さい場合、領域の終端にギャップが形成される。
512,1K,2Kまたは4Kバイトのサイズを持つオブジェクトであれば、単純なオブジェクトを使用して、領域を定義することができる。単純領域オブジェクトのベースアドレスは、そのサイズの倍数である物理的アドレス境界にアライメントされなければならない。領域を定義するために単純なオブジェクトを使用するとき、その単純なオブジェクトの長さとベースアドレスは上記の制約を満たすものと想定される。
プロセスの実行中、4つの領域は(それぞれの領域の領域記述子が異なる発生の仕方をしなければならないという意味で)全て一意でなげればならない。
仮想メモリ誤りに関する誤りハンドラがサブシステム誤りハンドラではない場合、次のようなことが起こる。あるプロセスが実行状態、準備完了状態またはブロック状態にあるとき、その領域の記述子は有効とマークされなければならない(すなわち、Vフラグがセットされなければならない)。
命令保護
プロセッサが命令を実行するためには、その命令を含む記憶場所に対する読み取り権利が必要である。
命令キャッシング
システムは命令ストリームの中のいずれかのバイトを非透過モードで読み取り専用キャッシングさせることができる。命令キヤッシングは、命令が位置しているページにあるキヤッシュ可能ビットとは無関係である。自己変更プログラムはシステムにより透過方式で支援されていない。
局所手順メカニズム
ーつの手順は線形アドレススペース中の任意のワードアドレスで始まる。手順呼出しおよび復帰は、第1図に示すように、その線形アドレススペース内の1つのスタックを使用する。
2つのパラメータ通過メカニズムが可能である。
大域レジスタ。呼出し後に、呼出し側によりパラメータを大域レジスタにコピーし、呼び出された側(被呼側)が大域レジスタからパラメータのコピーを取り出す。復帰または結果パラメータは、復帰後、呼出された側により大域レジスタにコピーされ、呼出し側は大域レジスタからパラメータのコピーを取り出す。これは手順に対して少数のパラメータにより最適化される。
引数リスト。スタックの引数リストに対する引数ポインタを使用する。これは、大域レジスタを使用して通過可能である数より多いパラメータが存在するときの拡張メカニズムとして設計されている。
大域レジスタを利用する方式は常に引数ポインタを利用する方式より速い。従って、引数ポインタによる方式は拡張メカニズムとしてのみ使用されるべきであり、唯一無二の方法ではない。
1つの手順が別の手順を全く呼び出さないときには、大域レジスタからスタックフレームへのパラメータのコピーを回避することができる。
命令
局所呼出し
CALL
CALL_EXTENDED
CALLおよびCALL_EXTENDEDは指定されたアドレスで手順を呼び出す。CALLは手順をIP+24ビット符号付き変位として指定する。CALL_EXTENDEDは一般メモリ実行アドレスを使用して手順を指定する。
新たなスタックフレームが呼出し動作中に割り当てられ、制御の流れは指定された手順に移行する。
復帰命令復帰
RETURN命令は制御を呼出し手順に戻し、呼び出された側の手順のスタックフレームを解放する。呼出し側の手順のフレーム中の復帰命令ポインタ(RIP)により指示された命令で、命令の実行が継続される。
雑命令
MODIFY_AC
FLUSH_LOCAL_REGISTERS
CONVERT_ADDRESS
MODIFY_ACは現在演算制御装置を読み取るまたは変更するために使用される。FLUSH_LOCAL_REGISTERSは現在局所レジスタセットを除く全ての局所レジスタセットを関連するメモリ内フレームに書き込む。領域ADは直接にはアクセスできないので、線形アドレスを仮想アドレスに変換するためにCONVERT_ADDRESS命令を使用することができる。
本発明は米国特許第5,075,842に記載されているようなマイクロプロセッサにおいて具現化されても良い。このマイクロプロセッサは命令取り出し装置と、命令デコーダ/マイクロ命令シーケンサと、変換索引バッファと、局所バスシーケンサと、整数実行装置/浮動小数点装置という5つの主要な装置に論理的に細分割されている。
環境間移行
第1図を参照。環境間呼出し/復帰は実行環境間で同期通信を実行させる。2状態(ユーザー状態と、スーパーバイザ状態)保護メカニズムに加えて、システムはオブジェクト指向、サブシステムベース保護メカニズムを支援する。
本発明によれば、本来であればある1つの環境の専用であるようなデータ構造および手順に対するアクセスをプロセスに与えるために、環境の境界を越える手順呼出しを実行する。環境の「公用」インタフェースを表すために、ドメインオブジェクトを使用する。ドメインオブジェクトはドメインベースメカニズムと、スーパーバイザ呼出メカニズムの双方に対するインタフェースとしても使用される。ドメインオブジェクトは、全ての公用手順のアドレスおよびタイプ(サブシステムまたはスーパーバイザ)を内容とする手順テーブルを含む。
「サブシステム移行」という用語は、サブシステム保護メカニズムを表わすために使用される。「スーパーバイザ移行」という用語は、スーパーバイザ保護メカニズムを表すために使用される。
実行モード
ユーザーモードと、スーパーバイザモードの2つの実行モードが起こりうるので、従来のオペレーティングシステムをエミュレートすることができる。システムは特権命令の概念を定義しない。全ての命令をユーザーモードまたはスーパーバイザモードのいずれかで実行できる。プログラムはそのアクセス権利の性質と、それが実行中であるモードとによって特権を獲得する。アクセス権利は読み取り専用、読み取り/書き込みまたはアクセスなしなどの表示権利(rep権利)として表わされる。現在線形アドレススペースにおけるページrep権利の解釈は、実行モードによって異なる。オペレーティングシステムが使用する記憶装置は概してユーザーアクセスを許容しないページrep権利を有するが、スーパーバイザモードでは読み取り専用または読み取り/書き込みであっても良い。
先に挙げた米国特許第5,075,842号に記載されているように、タグ付けがディスエーブルされたシステムでは、データと、アクセス記述子(AD)と呼ばれるデータのポインタとを区別するためにタグを利用できない。全てのオペランドは0のタグビットを有するので、ユーザーモードではADを要求する命令またはオペランド規則子を実行しようとしても、誤りに終わる。スーパーバイザモードでは、誤りはディスエーブルされ、データはADとして処理される。スーパーバイザーモードは、ADを使用する命令をオペランドとして実行させることができる(例えば、SEND命令はポートオブジェクトに対するADを必要とする)。
タグ付けがイネーブルされたシステムにおいては、ユーザーモードとスーパーバイザモードとの唯一の相違点はベージrep権利の解釈である。スーパーバイザモードにおいてデータを自動的にADとして解釈する方式は支援されない。ADを要求する命令は指定されたオペランドがADである場合に実行可能である。
タグなしシステムでは、誤りを発生せずに実行モードをスーパーバイザモードに変更する唯一の方法は呼出しシステム命令である。システムドメインはオペレーティングシステムに関する1組のエントリ手順を含む。
スーパーバイザ手順メカニズム
スーパーバイザ手順呼出しは局所呼出しと同様である。ドメインオブジェクトの手順テーブルでスーパーバイザ手順が指定されると、ドメインオブジェクトは新たなスーパーバイザスタックポインタを指定する。プロセスがユーザーモードにあるとき、スーパーバイザスタックポインタは新たなフレームポインタとして使用される。プロセスが既にスーパーバイザモードである場合には、新たなフレームポインタを形成するために、現在フレームのスタックポインタを次の64ビット境界にアライメントする。これにより、1つのスーパーバイザ手順から複数のスーパーバイザ手順を呼び出すことができる。スーパーバイザスタックは凍結されることが必要である。これは、呼出しの一部としてプロセスの実行モード(およびトレースイネーブル)を変更できるという点を除いて、実行環境内移行である。
復帰状態フィールドは、フレームからの復帰時にスーパーバイザ復帰を報告するために使用される。スーパーバイザ復帰は、プロセスが命令の開始時にスーパーバイザモードにある場合にのみ実行される。さもなければ、局所復帰が実行される。これは、ユーザーモードにある手順によるトレース制御の変更および誤りまたは割り込み復帰の選択を阻止するものである。
スーパーバイザ手順メカニズムは、同じ線形アドレススペースを共用する2つのスタック(ユーザーズタックと、スーパーバイザスタック)と、2つの保護レベルのみを必要とするオペレーティングシステである単純タグなしオペレーティングシステムと共に使用するためのメカニズムである。
サブシステムベース保護
サブシステム転送メカニズムを示す第1図を参照する。実行環境はドメインベース保護メカニズムを使用する。サブシステム呼出しのターゲット実行環境はドメインオブジェクト(100)の内容により定義される。1つのドメインオブジェクトの手順テーブル(102)は同じ実行環境についての別のドメインの手順テーブルとは無関係である。そのため、ドメインで選択されている手順を別のドメインオブジェクトを採用して任意の順序で集合させることができる。この機能は手順変数をも支援する。
1つの環境と関連する公用情報または公用オブジェクトは、他の環境において実行中であるプログラムに対しアクセス可能であっても良い。それらのオブジェクトはドメインオブジェクトを介してアクセス可能であり、これは(他の実行環境による)アクセス可能性をパッケージの公用手順、公用定数および公用変数にのみ限定するために使用される。
1つの環境と関連する専用情報または専用オブジェクトは、他の実行環境からドメインオブジェクトを介して直接にはアクセスできない。ドメインオブジェクトを介してアクセス不可能なオブジェクトとデータをそのドメイン専用であるという。サブシステム呼出し動作の一部として、実行環境を定義するオブジェクトは実行環境の中でアクセス可能とされる。
ドメインオブジェクトを参照するAD(101)のrep権利は、公用読み取り専用情報に対するアクセスと、ドメインの公用変数を含むオブジェクトに対する間接アクセスと、公用手順に対するポインタとを可能にするために、読み取り専用にセットされる。ドメインオブジェクトタイプマネジャを除いて、ドメインオブジェクトAD(101)は書き込み権利を与えられない。さもなければ、ドメインオブジェクトを変更することにより保護をバイパスできるであろう。読み取り専用公用情報が別個のオブジェクトに位置している場合、余分な回り道レベルを回避するために、その情報をドメインオブジェクトで複製することができる。ドメイン実行環境と、ターゲット実行環境(104)の双方が読み取り一書き込み権利を持ってADを有する別個のオブジェクトに変更自在の公用変数が位置している。
ターゲット実行環境
ドメインオブジェクト(100)はサブシステム呼出しのターゲット環境(104)を指定するために使用される。サブシステム移行によって現在実行環境を定義するオブジェクトの中の1つ以上を変更しても良い。静的データ、スタックフレームおよび命令を3つの領域(データオブジェクト、命令オブジェクトおよびスタックオブジェクト)に適切に配置すれば、サブシステム移行が3つの領域全てを同時に変更する必要はない。この情報は3つの領域に次のように配置される。
データオブジェクト。領域0(110)は静的データおよび専用変数のために使用される。サブシステム呼出し/復帰は少なくとも領域0を変化させる。
命令オブジェクト。領域1は命令のために使用される。従って、ページテーブルを共用する必要なく、単一のADをコピーすることにより1つのドメインの命令分を共用することができる。実行環境が同じコンパイルユニット内にあるならば、この領域はサブシステム呼出し/復帰中に変化しないままであっても良い。
スタックオブジェクト。領域2(114)はスタックフレームのために使用される。この領域はプロセスに特有のものであり、プロセス間で共用することは不可能である。実行環境が同じ被保護サブシステム内にあるならばこの領域はサブシステム呼出し/復帰中に変化しないままであっても良い。
仮想メモリ誤りに関する誤りハンドラが誤りテーブルでサブシステムとして指定される場合、このサブシステムの領域のオブジェクトテーブルエントリ(OTE)を有効とマークしなければならない。そのようにしておかないと、システム誤りを招くか、もしくは誤りハンドラが呼び出されたときに不正確なフレームポインタまたはスタックポインタが得られることになる。
サブシステムIDとサブシステムテーブル
ドメイン(100)はターゲット環境(104)の領域2のADを直接指定するのではなく、サブシステムID(106)により間接的に指定する。サブシステムテーブル(108)はプロセスと関連する全ての領域2のスタックオブジェクトと、それに対応する最上位置のフレームポインタおよびスタックポインタとを位置決めする。プロセスの中では、サブシステムIDと領域2のADとは1対1で対応している。サブシステムIDを、それぞれ異なるプロセスと関連している複数の異なる領域2のADにマッピングすることができる。サブシステムIDは、現在プロセスと関連する環境テーブルオブジェクト(第5図)においてサブシステムテーブル(108)の1つのサブシステムエントリ(107)を選択するために使用される。サブシステムエントリ(第6図)自体は領域2のAD(109)と、領域内の最上位置のスタックフレームとを指定する。
サブシステムIDを含むワードはADまたはデータのいずれかである。サブシステムIDを表すためにADを使用する場合、ADのオブジェクトインデックスフィールドはシステム幅の、そのサブシステムにといって一意のIDを構成する。そうでない場合には、ソフトウエアが1つのプロセスの中の各サブシステムに一意のIDを割り当てる。サブシステムIDはサブシステムテーブルと共に次のような機能を実行する。
ドメイン間でのスタックオブジェクトの共用。同じ被保護サブシステムにあるドメインはスタックオブジェクトを共用できるように同じサブシステムIDを使用する。
スタックオブジェクトの再エントリ。別のサブシステムへの呼出し時にサブシステムを出るとき、最上位置のフレームの線形アドレスをサブシステムエントリにセーブする。これにより、サブシステムAを呼び出すサブシステムBをサブシステムAから呼び出すときに、先にサブシステムBに戻る必要はなくなる。
信用サブシステム。0サブシステムIDは、現在スタックオブジェクトが領域2のために使用されていることを示す。このとき、2つの互いに疑い合うサブシステムは同じ信用ライブラリモジュール(例えば、実行時間モジュール)を共用することができる。
保証スタックリソース。1つのサブシステムと関連するスタックリソースを他のサブシステムと共用する必要はないので、状況によっては、スタックリソースが決して使い尽くされることのないようにソフトウエアが保証することが可能である。これにより、いくつかの誤りを周期的に処理することができる。
プロセス間でのドメインオブジェクトの共用。サブシステムIDは異なるプロセスが同じドメインを使用することも可能にするが同じドメインは異なるプロセス特有スタックを使用して異なる領域2のADにマッピングされる。
制御スタック
サブシステム呼出し/復帰メカニズムはサブシステムリンケージ情報に対して制御スタックを(プロセスと関連する環境テーブルオブジェクトの中に)維持している。制御スタックは、復帰時に回復すべき実行環境の状態をセーブする制御スタックエントリのアレイである。
拡張サブシステム環境
サブシステムモデルを使用するとき、実行環境は次のものを含むように拡張される。
環境テーブルオブジェクト。これはサブシステムテーブルと、制御スタックの双方を含む。
現在サブシステムID。プロセスは、現在のサブシステムエントリに関する現在のサブシステムオフセットのような関連情報と共にプロセスオブジェクトにセーブされているサブシステムIDと関連する。
サブシステムモデルを使用しないときは、拡張環境内のフィールドは使用されず、それは存在しなくても良い。
割り込み/アイドル環境
プロセスが割り込み状態にあるとき、またはプロセッサがアイドル状態にあるとき、サブシステム呼出しで割り込み環境テーブルオブジェクトを使用する。割り込み環境テーブルは、ディフォルト割り込みサブシステムIDのための余分のシステム定義エントリを含む。
ドメインオブジェクト
ドメインオブジェクトを示す第3図を参照する。ドメインオブジェクトはアーキテクチャ定義システムタイプを有する。ドメインオブジェクトADにおけるタイプ権利は割り込みをされない。ドメインオブジェクトのフィールドは次のように定義されている。
領域0AD(バイト0から3)。このADは、サブシステム呼出しに当たりターゲット実行環境の領域0を定義するオブジェクトを参照する。タグビットが0であれば、CONSTRAINT.INVALID_AD誤りを起こす。
領域1のAD(バイト4から7)。このADは、サブシステム呼出しに当たりターゲット実行環境の領域1を定義するオブジェクトを参照する。タグビットが0であれば、COSTRAIN.INVAL1D_AD誤りを起こす。
サブシステムID(バイト8から11)。この混合値は、プロセスオブジェクト内の関連する環境テーブルのサブシステムテーブルの中の1つのエントリを選択するために使用されるサブシステムIDである。サブシステムテーブル内の1つのサブシステムエントリはターゲット実行環境の領域2と、環境内の最上位置のスタックフレームのフレームポインタとを定義するオブジェクトを指定する。このフィールドが0のデータワードである場合には、現在領域2が使用され、現在フレームは最上位置のスタックフレームである。サブシステムIDのビット6から31は、サブシステムテーブル内へのハッシュ値を発生するために使用される。
トレース制御、T(バイト12、ビット0)。このビットは、このオブジェクトを介するサブシステムまたはスーパーバイザ呼出し後のプロセストレースイネーブルビットを指定する。このビットを使用して新たな実行環境の内部で追跡をディスエーブルまたはイネーブルすることができる。スーパーバイザモードでスーパーバイザ手順を呼び出すときにはこのビットは無視される。このビットはプロセス制御部の符号化と同じ符号化を有する。
スーパーパイザスタックポインタ(バイト12から15、ビット2から31)。これはスーパーバイザスタックに関する線形アドレス(ワードの形態)である。このフィールドは、ユーザーモードでスーパーバイザ呼出しを実行するときに新たなフレームを位置決めするために(現在フレームのスタックポインタの代わりに)使用される。
プロセスはユーザースタック(ユーザーモードのとき)と、スーパーバイザスタック(スーパーバイザモードのとき)とを識別するだけである。異なるドメインのスーパーバイザスタックポインタが異なる値を有する場合、全てのスタックは全てのスーパーバイザ手順の要求を処理するのに十分なほど大きくなければならない。従って、1つのプロセスにより使用されるスーパーバイザスタックポインタは同じであるべきである。誤りテーブルはプロセッサと関連しているので、同じプロセッサを共用する全てのプロセスはスーパーバイザ誤り処理手順により指定されるスーパーバイザスタックを有していなければならない。そのため、スーパーバイザスタックポインタはシステム幅一定であるべきである。
手順エントリ(バイト48からオブジェクトの終端まで)。第4図に示す手順エントリはターゲット手順のタイプとアドレスを指定する。手順エントリのフィールドは次のように定義されている。
手順エントリタイプ(ビット0から1)。このフィールドは呼び出すべき手順のタイプを示す。このフィールドは次のように符号化されている。
00一局所手順
01一実施特有
10一スーパーバイザ手順
11−サブシステム手順
オフセット(ビット2−81)。この30ビットフィールドはターゲット手順の第1の命令に対するターゲット実行手順べのワードオフセットである。
環境テーブルオブジェクト
第5図に示す環境テーブルオブジェクトはサブシステムテーブル(111)と、制御スタック(113)の2つのデータ構造を含む。このオブジェクトは、1つのプロセスの中の全てのサブシステム移行に必要な情報を含む。すなわち、プロセスオブジェクトと環境テーブルオブジェクトとは1対1で対応している。
これは第5図に更に詳細に示されている。環境テーブルオブジェクトは定義されたシステムタイプを有していない。環境テーブルオブジェクトのフィールドは次のように定義されている。
サブシステムテーブル。この領域については、次の項で説明する。第1のエントリは現在制御スタックポインタと、制御スタック限界と、サブシステムテーブルサイズとを記憶するために使用される。
制御スタック。この領域については、以下の項で説明する。
サブシステムテーブル
サブシステム呼出し中、ドメインオブジェクトは、新たな実行環境を定義する3つのオブジェクトのうち2つのみを直接指定する。ドメインオブジェクトは、新たな実行環境の第3のオブジェクト(114)を間接的に指定するサブシステムID(106)を含む。サブシステムは、サブシステムID(106)を新たな環境の領域2のAD(109)にマッピングさせる環境テーブルオブジェクト内のデータ構造である。領域2は呼出し/復帰時のスタックフレーム割当てのために使用される。すなわち、このオブジェクトを異なるプロセス間で共用することはできない。
第5図のサブシステムテーブルの第1のエントリは次のように定義されたフィールドを有するダミーエントリである。
現在制御スタックポインタ、CCSP(バイト0から3、ビット4から31)。これは、このオブジェクトに関する次に利用可能な制御スタックエントリ(CSE)への4ワードインデックスである。このフィールドはサブシステム呼出し時に増分され、サブシステム復帰時に滅分される。
制御スタック限界、CSL(バイト4から7、ビット4から31)。これは、制御スタックオーバーフロー誤りハンドラのために予約された(すなわち、規則的に使用するためのものではない)第1のCSEに対するこのオブジェクトに関する4ワードインデックスである。第11図に示すように、サブシステム呼出し完了後にCCSP=CSLであるとき、CONTR0L_STACK.OVERFLOW誤りが発生される。
サブシステムテーブルサイズ(バイト12−15、ビット4−29)。このフィールドは、サブシステムのサイズから1を減じたものを含む(サブシステムエントリ数単位)。このサブシステムテーブルのサイズは2の累乗でなければならない。すなわち、このフィールドは最下位ビットに1からなるビットマスクを含んでいる。そうでなければ、動作は予測不可能である。
サブシステムIDからサブシステムエントリへのマッピング
第9図に示すように、サブシステムIDはサブシステムテーブル内の対応するサブシステムエントリを次のように選択する。
指定されたサブシステムIDが0であるかまたは現在サブシステムIDと等しい場合、現在サブシステムIDを使用する。そうでない場合には、以下に指示するようにサブシステムテーブルを探索する。
指定されたサブシステムIDのビット6から31とサブシステムテーフルサイズとの論理積をとり、初期サブシステムエントリインデックスを形成する。
次の動作を繰り返す。
(1)選択したサブシステムエントリのサブシステムIDが0であれば、OPERAT10N_NOT_FOUND誤りを起動すれば良い。
(2)選択したサブシステムエントリが指定されたサブシステムIDと整合するならば(比較_混合)、探索から出る。
(3)先行サブシステムエントリを選択する。すなわち、後戻りして探索する。エントリ0は、システムテーブルサイズにより指示される最終エントリに向かって循環する。
(4)これが初期サブシステムエントリであり且つプロセスが割り込み状態にない場合には、OPERAT1ON.SUBSYSTEM_NOT_FOUND誤りを起こす。プロセスが割り込み状態にあれば現在サブシステムを使用する。
サブシステムエントリ
サブシステムエントリの構造を第6図に示す。サブシステムエントリのフィールドは次のように定義されている。
最上位置フレームポインタ(バイト0から3、ビット6から31)。このフィールドは最上位置スタックフレームのフレームポインタを含む。この環境へのサブシステム呼出しの間、このフィールドは新たなフレームの先行フレームポインタとして使用される。この環境からのサブシステム呼出しの間には、ここに現在フレームポインタがセーブされる。この環境へのサブシステム復帰の間には、これはターゲットフレームポインタとして使用される。この環境からのサブシステム復帰の間には、ここに現在フレーム中の先行フレームポインタがセーブされる。
最上位置スタックポインタ(バイト4から7)。このフィールドは、最上位置のスタックフレームのスタックポインタを含む。この環境へのサブシステム呼出しの間、このフィールドは新たなフレームのフレームポインタを計算するために使用される。この環境からのサブシステム呼出しの間には、ここに現在スタックポインタがセーブされる。この環境からのサブシステム間の復帰の間、ここに現在フレームポインタ(すなわち、先行フレームの丸められたスタックポインタ)がセーブされる。この環境からの他のサブシステム間の復帰の間には、ここに現在フレームポインタから64を引いたもの(すなわち、先行フレームの丸められたスタックポインタ)がセーブされる。この環境への復帰の間には、このフィールドは無視される。
サブシステムID(バイト8から11)。このID(105)は、ターゲット実行環境が関連しているサブシステムを識別する。このIDはサブシステムID(106)を領域2オブジェクト(114)に整合させるためのキーとして使用される。すなわち、これは、サブシステムテーブル内で一意性を有する。0であるサブシステムID値は、このサブシステムエントリが割り当てを受けていないことを示す。全て1のサブシステムIDを伴なうサブシステムテーブルエントリ0は、制御スタック情報を記憶するために使用される。
事象−誤りディスエーブル(バイト8、ビット2)。このサブシステムに入ると、このフラグは事象−誤りディスエーブルビットの現在値を定義する。事象−誤りディスエーブルビットがセットされている場合、事象−誤り要求フラグがセットされていれば、事象・公報メッセージ誤りが起こされる。事象−誤りフラグを0変更するサブシステム間呼出し/復帰の時には、呼出し/復帰後に未決の事象/誤り要求を起こす。
領域2のAD(バイト12から15)。このAD(109)は、このエントリにより部分的に指定されるターゲット実行環境の領域2を定義するオブジェクトを参照する。このADは読み取り/書き込み権利を含んでいなければならない。そうでなければ、PROTECTION.AD_REP_RIGHTS誤りを起こしても良い。
制御スタック
制御スタック(113)の編成を第5図に示す。制御スタックエントリ(第7図)はサブシステム呼出し時に制御スタックに押し込まれ、サブシステム復帰時に制御スタックから飛び出す。制御スタックは予約制御スタックエントリにより下端部で境界限定される。制御スタックの上端部は、制御スタック限界に若干の予約エントリ(制御スタックオーバーフロー誤りハンドラのためのエントリ)を加えたものにより境界が決められる。スタックオーバーフロー誤りハンドラのために予約すべきエントリの数はソフトウェアで定義される。
対応するプロセスが実行中であるとき、制御スタックの一部または前部はプロセッサ内部に保持される(すなわち、メモリイメージは正確でなくとも良く、メモリイメージの読み取り/書き込みは制御スタックに何らかの影響を与えるとは限らない)。L0AD_CONTR0L_STACKポインタ命令を使用して、キャッシュ情報をフラッシュし且つ無効化することができる。
制御スタックエントリ
制御スタックエントリのフォーマットを第7図に示す。制御スタックエントリのフィールドは次のように定義されている。
領域0復帰AD(バイト0から3)。このADは、対応するサブシステム呼出しの呼出し側実行環境の領域0を定義するオブジェクトを参照する。サブシステム復帰時、領域0はこのオブジェクトに再ストアされる。このADは読み取り/書き込み権利を含んでいなければならず、そうでなければPROTECTION.AD_REP_RIGHTS誤りを起こしても良い。
領域1復帰AD(バイト4から7)。このADは、対応するサブシステム呼出しの呼出し側実行環境の領域1を定義するオブジェクトを参照する。サブシステム復帰時、領域1はこのオブジェクトに再ストアされる。このADは読み取り/書き込み権利を含んでいなければならず、そうでなければ、PROTECTION.AD_REP_RIGHTS誤りを起こしても良い。
トレース制御、T(バイト8、バイト0)。このビットは、対応する通常サブシステム呼出し中のプロセス制御部のトレースイネーブルビットを含む。サブシステム復帰中は、トレース制御はこのビットに再ストアされる。
復帰モード、MMM(バイト8、ビット1から3)。この3ビットフィールドはエントリのタイプを示す。このフィールドは次のように符号化されている。
000一正常サブシステム内
001一正常サブシステム間
010一予約(CONTROL_STACK.UNDERFL0W誤り)
011一予約(CONTROL_STACK.UNDERFLOW誤り)
100一誤りサブシステム内
101一誤りサブシステム間
110一予約(CONTROL_STACK.UNDERFLOW誤り)
111一予約(CONTR0L_STACK.UNDERFLOW誤り)
復帰サブシステムエントリオフセット(バイト8から11、ビット4から31)。このフィールドは、呼出し側実行環境の領域2を定義するサブシステムエントリに関する(環境テーブル内の)サブシステムテーブルへのエントリインデックスを含む。
サブシステムテーブルが拡張され且つ再ハッシュされると、サブシステムエントリオフセットは変化し、更新される必要がある。
呼び出された側のドメインAD(バイト12から15)。このAD(120)はこのサブシステム呼出しで使用されるドメインオブジェクトを参照する。これは呼出し中に初期設定されるが、復帰時には使用されない。
ドメイン間CALL/RETURN
CALL_DOMAIN命令
CALL_DOMAIN命令は指定されたドメインオブジェクトにおける手順番号により指定される手順を呼出し、実行環境をドメインオブジェクトにより指定される通りに変化させる。指定されたドメインADは読み取り権利を有していなければならない。手順番号は、手順エントリに関する指定されたドメインオブジェクトの手順テーブルへのワードインテックスとして使用される。
CALL_SYSTEM命令
CALL_SYSTEM命令はシステムドメインの手順を呼び出す。システムドメインはプロセッサ制御ブロックにより参照されるドメインである。タグなしシステムではスーパーバイザ呼出しを可能にすることが必要である。タグ付きシステムでは、システムドメインはタグなしオペレーテインクシステムのスーパーバイザ呼出しをタグ付きオペレーティングシステムにマッピングするために使用される。
第8図から第11図は、CALL_SYSTEM命令のフローチャートである。第10図は、システム呼出し命令のサブシステム間呼出しサブルーチンの詳細を示し、第11図は、システム呼出し命令のサブシステム内呼出しサブルーチンの詳細を示す。
RETURN命令
特定の復帰アクションは、現在フレーム中の先行フレームフィールドにある復帰状態フィールドにより確定される。これにより、異なるアクションを実行するとしても、手順をそれに関連するドメインの内側と、外側の双方から呼び出すことができるようになる。
LOAD_CONTR0L_STACK_POINTER命令
LOAD_CONTROL_STACK_POINTERはプロセスの現在制御スタックボインタを復帰させる。
本発明をその好ましい実施例に関連して特定して図示し且つ説明したが、本発明の形態および詳細の上細の変更とその他の変更が本発明の範囲から逸脱せずに実施可能であることは当業者には理解されるであろう。
【図面の簡単な説明】
第1図は、本発明が具現化されるブロセッサレジスタおよびシステムオブシムクトのブロック線図、
第2図は、第1図の実行環境の線形アドレススペース構造の更に詳細なフロック線図、
第3図は、第1図のドメインオブジェクトの更に詳細なブロック線図、
第4図は、第2図のドメインオブジェクトにおける手順エントリの更に詳細なブロック線図、
第5図は、第1図の環境テーブルオブジェクトの更に詳細なブロック線図、
第6図は、第5図の環境テーブルオブジェクトのサブシステムエントリの更に詳細なブロック線図、
第7図は、第5図の環境テーブルオブジェクトの制御スタックエントリの更に詳細なブロック線図、
第8図および第9図は、システム呼出し命令のフローチャート、
第10図は、第8図および第9図のシステム呼出し命令のサブシステム間呼出しサブルーチンのフローチャート、
第11図は、第8図および簸9図のシステム呼出し命令のサブシステム内呼出しサブルーチンのフローチャートである。
101……ドメインAD,102……手順テーブル、104……ターゲット実行環境、105,106……サブシステムID,107……サブシステムエントリ、108……サブシステムテーブル、109……領域2のAD,110……領域0オブジェクト、112……領域1オブジェクト、114……領域2オブジェクト、120……呼び出された側のドメインAD、122……呼び出された側のドメインオブジェクト。
Claims (1)
- データ処理システムのプロセッサ内に設けられ、メモリスペースと、そのメモリスペース内のオブジェクトの位置を決めるのに使用するためにストアされたベース情報と長さ情報を有するオブジェクト記述子をストアする手段を有するプロセッサレジスタスペースと、
前記プロセッサ内に設けられ、前記メモリスペースと通信する手段と、
前記プロセッサ内に設けられ、命令で特定された演算子手段によってオペレーションを実行する手段と
を有するデータ処理システムにおいて、
前記プロセッサ内に設けられ、前記メモリスペース内にストアされた現在の即ち呼び出し側実行環境と前記メモリスペース内にストアされたターゲット即ち呼び出された側の実行環境との間で通信する第1手段と、
前記プロセッサ内に設けられ、前記第1手段に接続され、現在の実行環境を定義する第1オブジェクトをストアする第2手段と、
を有し、前記現在の実行環境は第2ドメインオブジェクトによってアクセス可能であり、さらに
前記プロセッサ内に設けられ、前記第1手段に接続され、第1ドメインオブジェクトによってアクセス可能なターゲット実行環境を定義する第2オブジェクトをメモリにストアする第3手段と、
前記プロセッサ内に設けられ、前記第1ドメインオブジェクトによってアクセス可能な第1環境テーブルオブジェクトを生成する第4手段と、
を有し、前記環境テーブルオブジェクトはサブシステムリンケージ情報を含む制御スタックを備え、その制御スタックは、サブシステム呼出しのターゲットである前記ターゲット実行環境からの戻りに再ストアされる現在の実行環境の状態を表している制御スタックエントリのアレイであり、さらに
前記プロセッサ内に設けられ、サブシステム呼出しのターゲットである前記ターゲット実行環境の静的データと専用変数のために使用される領域0を定義する領域0オブジェクトを参照する領域0アクセス記述子(AD)を前記第1ドメインオブジェクトにストアする第5手段と、
前記プロセッサ内に設けられ、サブシステム呼出しのターゲットである前記ターゲット実行環境の命令のために使用される領域1を定義する領域1オブジェクトを参照する領域1ADを前記第1ドメインオブジェクトにストアする第6手段と、
前記プロセッサ内に設けられ、前記環境テーブルオブジェクト内のサブシステムテーブルのエントリと、前記ターゲット実行環境のスタックフレームのために使用される領域2を定義する領域2オブジェクトを前記サブシステムテーブル内で指定するサブシステムエントリと、前記ターゲット実行環境の最上位置スタックフレームのフレームポインタとを指すサブシステムIDを前記第2ドメインオブジェクトにストアし、さらに、ユーザモードで現在のフレームのスタックポインタの代わりに新しいフレームの位置を指定するスーパバイザ呼出しを呼び出すときに用いられるスーパバイザスタック用の、リニアアドレスであるスーパバイザスタックポインタを前記第2ドメインオブジェクトにストアする第7手段と、
前記プロセッサ内に設けられ、前記第1ドメインオブジェクト内で、前記ターゲット環境のタイプとアドレスとを指定する手順エントリをストアする第8手段であって、その手順エントリのそれぞれは、少なくともスーパバイザ手順とサブシステム手順とを含む呼び出されるべき手順のタイプを示す手順エントリタイプフィールドと前記ターゲット実行環境の第1の命令を指定する前記ターゲット実行環境へのオフセットを含む第8手段と、
前記プロセッサ内に設けられ、前記第4手段と第7手段とに接続され、前記環境テーブルオブジェクトの前記サブシステムテーブルで新しい領域2のアクセス記述子を含むサブシステムエントリを見つけ、かつ新しいスタックの最上位置フレームポインタと最上位置スタックポインタとを見つけるために、前記第2ドメインオブジェクトの前記サブシステムIDを用いる第9手段と
を有するデータ処理システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US45562689A | 1989-12-22 | 1989-12-22 | |
US455,626 | 1989-12-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH03240134A JPH03240134A (ja) | 1991-10-25 |
JP3554320B2 true JP3554320B2 (ja) | 2004-08-18 |
Family
ID=23809601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP33700290A Expired - Lifetime JP3554320B2 (ja) | 1989-12-22 | 1990-11-30 | オブジエクト指向メモリ保護メカニズムを採用するデータ処理システムで実行環境間の通信を実行するデータ処理システム |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP3554320B2 (ja) |
DE (1) | DE4040992C2 (ja) |
GB (1) | GB2239334B (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2836569B1 (fr) * | 2002-02-28 | 2005-02-25 | Gemplus Card Int | Espace memoire pour donnees d'application telechargees dans une carte a puce |
US8601456B2 (en) | 2006-08-04 | 2013-12-03 | Microsoft Corporation | Software transactional protection of managed pointers |
US8006227B2 (en) | 2007-06-01 | 2011-08-23 | Microsoft Corporation | Efficiently locating transactional code blocks in a transactional memory system |
US8099719B2 (en) | 2007-06-19 | 2012-01-17 | Microsoft Corporation | Transactional debugger for a transactional memory system and detecting conflicts |
US8032870B2 (en) | 2007-06-25 | 2011-10-04 | Microsoft Corporation | Transacting accesses via unmanaged pointers |
US8196123B2 (en) | 2007-06-26 | 2012-06-05 | Microsoft Corporation | Object model for transactional memory |
US7941411B2 (en) | 2007-06-29 | 2011-05-10 | Microsoft Corporation | Memory transaction grouping |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4545012A (en) * | 1981-05-22 | 1985-10-01 | Data General Corporation | Access control system for use in a digital computer system with object-based addressing and call and return operations |
US4811208A (en) * | 1986-05-16 | 1989-03-07 | Intel Corporation | Stack frame cache on a microprocessor chip |
-
1990
- 1990-09-11 GB GB9019821A patent/GB2239334B/en not_active Expired - Lifetime
- 1990-11-30 JP JP33700290A patent/JP3554320B2/ja not_active Expired - Lifetime
- 1990-12-20 DE DE4040992A patent/DE4040992C2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH03240134A (ja) | 1991-10-25 |
GB2239334A (en) | 1991-06-26 |
DE4040992C2 (de) | 2002-10-31 |
DE4040992A1 (de) | 1991-06-27 |
GB2239334B (en) | 1994-07-06 |
GB9019821D0 (en) | 1990-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5157777A (en) | Synchronous communication between execution environments in a data processing system employing an object-oriented memory protection mechanism | |
US7213125B2 (en) | Method for patching virtually aliased pages by a virtual-machine monitor | |
US5075842A (en) | Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism | |
US7330942B2 (en) | Method for efficient virtualization of physical memory in a virtual-machine monitor | |
US5095526A (en) | Microprocessor with improved interrupt response with interrupt data saving dependent upon processor status | |
US5075848A (en) | Object lifetime control in an object-oriented memory protection mechanism | |
US6895491B2 (en) | Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching | |
US7783838B1 (en) | Maintaining coherency of derived data in a computer system | |
US7490216B1 (en) | Methods for accessing multiple page tables in a computer system | |
US7467271B2 (en) | Operating system permitting limited access to a system page | |
JP4608484B2 (ja) | ストレージの無効化、バッファ・エントリの消去 | |
US5075845A (en) | Type management and control in an object oriented memory protection mechanism | |
EP0208428B1 (en) | Direct input/output in a virtual memory system | |
CA2024444C (en) | Process using virtual addressing in a non-privileged instruction to control the copying of a page of data in or between multiple media | |
US20040117539A1 (en) | Methods and systems to control virtual machines | |
US20060036830A1 (en) | Method for monitoring access to virtual memory pages | |
EP0557908A2 (en) | Method and system for avoiding selector loads | |
US7996833B2 (en) | Method and system for replacing instructions and instruction blocks in computer code | |
US7506096B1 (en) | Memory segment emulation model for virtual machine | |
US5187791A (en) | Microprocessor with improved interrupt response with data saving dependent upon processor status using status flag | |
US5339417A (en) | Computer system with two levels of guests | |
US6763328B1 (en) | Method and data processing system for emulating virtual memory utilizing threads | |
JP7445431B2 (ja) | 命令の実行を制御する装置および方法 | |
EP0619899B1 (en) | Software control of hardware interruptions | |
JP3554320B2 (ja) | オブジエクト指向メモリ保護メカニズムを採用するデータ処理システムで実行環境間の通信を実行するデータ処理システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20040115 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040507 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090514 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090514 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100514 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110514 Year of fee payment: 7 |
|
EXPY | Cancellation because of completion of term | ||
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110514 Year of fee payment: 7 |